SAM 本機帳戶¶
SAM 包含的內容¶
Security Account Manager(SAM)登錄區儲存本機帳戶記錄。Juntei 會解碼帳戶名稱、RID、
設定檔/註解欄位、帳戶控制旗標、最後登入/密碼時間戳記、計數器、密碼提示、Microsoft 帳戶連結、
設定檔路徑,以及 Windows 是否在登入介面中隱藏該帳戶。
這有助於找出新建立的本機系統管理員、被啟用的休眠帳戶、密碼變更、隱藏帳戶,以及為橫向移動預先準備的帳戶。
最佳結論:本機 SAM 以所記錄的狀態呈現該帳戶。 它並非完整的驗證歷程,也不描述網域帳戶。
位置與收集¶
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SAM.LOG1
C:\Windows\System32\config\SAM.LOG2
請以足夠的權限/原始存取收集登錄區與記錄檔。主機身分資訊可透過收集資料中對應的 SYSTEM 登錄區加以補充。
分析注意事項¶
- 此命令剖析的是本機帳戶,而非 Active Directory 網域使用者。
- Juntei 刻意不擷取密碼雜湊。
- RID 500 即使被重新命名,仍是內建的 Administrator 帳戶;僅憑名稱並不足夠。
LastLogon與計數器是登錄檔狀態,而非完整的逐工作階段稽核軌跡。HiddenFromLogonUI會將帳戶從登入畫面隱藏;它並不會停用該帳戶。- 內建的
DefaultAccount與WDAGUtilityAccount可能是合理地被隱藏。 - 因
F值損毀/缺漏而得到的 null 帳戶旗標,不可解讀為已啟用。 NamesKeyLastWrittenUTC可近似帳戶名稱的註冊脈絡,但並不保證是建立時間。
使用 Juntei 剖析¶
Usage: juntei parse-registry sam <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SAM hives
-f, --file <FILE> Parse one SAM hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Filtering:
--rid <RID> Parse one decimal RID (example: 500)
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry sam -f SAM -o accounts.csv
juntei parse-registry sam -f SAM --rid 500 -t jsonl | jq .
juntei parse-registry sam -d evidence/ -t jsonl \
| jq 'select(.HiddenFromLogonUi == true or (.AccountFlags | index("disabled") | not))'
輸出欄位¶
| 欄位 | 判讀 |
|---|---|
Host, SourcePath |
主機脈絡與確切的 SAM 登錄區。 |
RID |
相對識別碼。強而有力的帳戶身分交叉比對依據;500 為內建的 Administrator。 |
User |
目前的本機帳戶名稱。可能被重新命名;請依 RID 交叉比對。 |
FullName, Comment, UserComment |
描述性文字;可由攻擊者控制,有助於檢查偽裝行為。 |
AccountFlags |
解碼後的狀態,例如已停用、已鎖定、不需要密碼、一般帳戶、密碼永不過期。 |
AccountFlagsValue |
原始數值旗標,供驗證與未支援的位元使用。 |
CountryCode, CodePage |
帳戶的地區設定/字碼頁中繼資料;通常屬於脈絡資訊,而非歸屬依據。 |
LastLogonUTC, LastLogonWholeSecondsUTC |
相同的最後登入狀態,分別以完整精度與相容用的整秒表示。並非完整歷程。 |
PasswordLastSetUTC |
所記錄的密碼變更時間。請調查非預期的近期/過舊值。 |
AccountExpirationUTC |
有限期時所設定的到期時間。null 可能代表永不到期/未設定。 |
LastFailedLogonUTC |
SAM 狀態中最後一次記錄的本機登入失敗;請以 Security 事件佐證。 |
FailedLogonCount, LogonCount |
累計/狀態計數器,其更新行為依 Windows 而定;請作為脈絡使用,而非精確的事件數量。 |
PasswordHint |
使用者提供的敏感提示;可能暴露密碼模式。請妥善處理。 |
InternetUserName |
若存在,為所連結的 Microsoft 帳戶身分。 |
HiddenFromLogonUI |
介面隱藏狀態。請檢查高 RID/非預期的自訂帳戶;並不代表已停用。 |
HomeDirectory, HomeDrive, ProfilePath, LogonScript |
本機帳戶的環境/登入設定;不尋常的指令碼/UNC 路徑可能表示持續存取。 |
KeyLastWrittenUTC |
RID 帳戶機碼的變更時間。屬於機碼層級,並非特定欄位。 |
NamesKeyLastWrittenUTC |
使用者名稱對應機碼的變更時間;可用來近似帳戶的生命週期。 |
LastLogonFiletime, PasswordLastSetFiletime, AccountExpirationFiletime, LastFailedLogonFiletime |
為驗證與特殊哨兵值處理而保留的原始 64 位元 FILETIME 值。 |
TransactionLogStatus, LogsApplied |
登錄檔重播的脈絡。 |
Problems |
F/V/Names 之間不一致、項目缺漏、位移格式錯誤或解碼損毀。 |
調查策略¶
- 將 RID、名稱、旗標、設定檔路徑與
NamesKeyLastWrittenUTC與主機基準線比較。 - 檢查已啟用的 RID 1000 以上帳戶、不需要密碼、永不過期、隱藏或近期變更的帳戶。
- 與 Security 4720/4722/4724/4732 事件、登入事件、設定檔建立以及遠端活動交叉比對。
- 若帳戶在收集前已被移除,請搜尋登錄檔復原歷程。
- 區分合法的佈建/預設帳戶與攻擊者以互動方式建立的帳戶。