建立隱藏管理員帳號是滲透測試後門持久化常用技術,也是藍隊需重點監控的指標。本文從入門級 `net user` 到進階註冊表 SAM 資料庫操作,完整揭示隱藏帳號原理與偵測方法。
第一層:CMD 簡易隱藏 (入門級,易被發現)
net user hiddenAdmin$ P@ssw0rd! /add
net localgroup administrators hiddenAdmin$ /add
- 帳號名以 `$` 結尾,`net user` **不顯示**,但 `net user hiddenAdmin$` 可查詢。
- `lusrmgr.msc` (本地用戶和群組)、**完全可見**。
- **結論**:僅能騙過 `net user` 粗略檢查,**非真正隱藏**。
第二層:註冊表 SAM 資料庫深度隱藏 (進階,可隱藏於 lusrmgr.msc)
原理:SAM (Security Account Manager) 資料庫儲存帳號資訊,位於 `HKLM\SAM\SAM\Domains\Account\Users\Names` (名稱映射) 與 `... \Users\` (屬性資料)。將隱藏帳號的 RID 項目**覆寫** Administrator 的 RID 項目,系統即誤認隱藏帳號為 Administrator,反之亦然,達到雙重隱藏。
操作步驟 (需 SYSTEM 權限)
- 取得 SAM 寫入權限:
WinXP/2003:`regedt32.exe` → `HKLM\SAM\SAM` → 安全性 → 權限 → Administrators → 完全控制。
Win7/10/11:`regedit` → 右鍵 `HKLM\SAM\SAM` → 權限 → Administrators → 完全控制。
- 建立目標隱藏帳號** (如 `hiddenAdmin$`),記錄其 RID (如 `0x3F4`)。
- 導出三個註冊檔**:
`hiddenAdmin$.reg` (Names 下隱藏帳號鍵)
`user.reg` (Users\000003F4 隱藏帳號屬性)
`admin.reg` (Users\000001F4 Administrator 屬性)
- 偷梁換柱**:用記事本開啟 `admin.reg`,複製 `F` 二進位值 → 覆蓋 `user.reg` 中的 `F` 值 → 存檔。
- 刪除原隱藏帳號**:`net user hiddenAdmin$ /del` (Names 下鍵值自動刪除,Users\000003F4 殘留)。
- 匯入修改後的註冊檔**:`user.reg` (含 Administrator 的 F 值) → `hiddenAdmin$.reg` (重建 Names 映射)。
- 重開機/重新登入**:`lusrmgr.msc` 將**不再顯示** `hiddenAdmin$`,`net user` 亦不顯示,但該帳號擁有 Administrator 完整權限可正常登入。
偵測與清除 (藍隊視角)
- SAM 資料庫異常**:`Users\000001F4` (Administrator) 的 `F` 值 (含密碼雜湊、登入時間、登入次數等) **與 `Users\<其他 RID>` 完全相同** → 確為隱藏帳號偽裝。
- 工具自動偵測**:`Get-HiddenAccount.ps1` (PowerShell), `HiddenAccountDetector.exe`, `Autoruns` (檢查 SAM 不一致)。
- 清除**:以 SYSTEM 權限還原 `Users\000001F4` 原始 `F` 值 (備份/還原 SAM hive)、刪除偽裝帳號 Names 映射、重置 Administrator 密碼。
現代環境補充
- **Windows 10/11 + VBS (虛擬化安全)**:SAM 隔離於 VTL 1 (Virtual Trust Level),**無法直接修改 SAM 註冊檔**,此技術已失效。
- **替代持久化技術** (紅隊) / **重點監控** (藍隊):
WMI 事件訂閱、COM 劫持、排程任務、服務、啟動資料夾、登錄檔 Run/RunOnce、AppInit_DLLs、Image File Execution Options (IFEO)、SID History、Golden/Silver Ticket、SSP/AP、DLL 搜尋順序劫持、修改主機檔/Proxy 自動設定腳本 (PAC)。
法律警示:未經授權建立隱藏帳號屬非法入侵/竄改電腦資料罪。**本文僅供授權滲透測試、藍隊防禦研究、學術教學使用。**