USN 日誌 ($UsnJrnl:$J)¶
什麼是 USN 日誌¶
NTFS 會在 Update Sequence Number(USN)變更日誌中記錄檔案與目錄的變更。一筆記錄可以描述建立、 資料延伸/覆寫、屬性或安全性變更、重新命名、關閉以及刪除。它會儲存檔案參照、父參照、名稱、原因、屬性、 時間戳記,以及單調遞增的 USN。
此日誌非常適合用來重建攻擊者短時間內大量的檔案操作,特別是在檔案已遭刪除時。它記錄的是中繼資料/內容發生了變更, 而非變更的位元組。
最佳結論:NTFS 在該時間戳記為所參照的檔案記錄了所述的變更原因。
原因通常會持續累積,直到出現 CLOSE 記錄為止。
位置與收集¶
$J 是 NTFS 中繼資料的具名資料流。請使用支援原始存取的鑑識工具收集。同時請收集同一磁碟區的 $MFT,
因為 USN 記錄儲存的是父檔案參照,而非完整路徑。
分析注意事項¶
- 此日誌為循環式且大小有限,舊記錄會被覆寫。
FILE_DELETE表示 NTFS 已處理刪除;內容仍可能在其他地方可供復原。- 像
DATA_OVERWRITE這樣的原因,並不會揭露相關的位元組、程序或使用者。 - 一筆記錄中可能合併多個原因;
CLOSE通常標示累積變更的結束。 - 路徑是重建出來的。父目錄可能已被重新命名、刪除或重複使用。
- 檔案參照的序號很重要。僅憑項目編號可能會連結到錯誤的世代。
- 擷取(carving)可以復原有效記錄,但不含其原始日誌脈絡;請在報告中說明此區別。
使用 Juntei 剖析¶
Usage: juntei parse-ntfs usn-journal <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find $J files
-f, --file <FILE> Parse one $J, or any file with --carve
-m, --mft <FILE> Use the matching volume's $MFT for paths
--carve Search a disk image/unallocated file for records
Output:
-o, --output <PATH> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-ntfs usn-journal -f 'C/$Extend/$J' -m 'C/$MFT' -o usn.csv
juntei parse-ntfs usn-journal -d evidence/ -o usn-jsonl -t jsonl
juntei parse-ntfs usn-journal -f unallocated.bin --carve -o carved-usn.csv
CSV 輸出欄位¶
| 欄位 | 判讀 |
|---|---|
Name |
此 USN 記錄中儲存的檔案/目錄名稱,並非完整路徑。 |
Extension |
為方便起見從 Name 剖析出的副檔名;請勿將其視為可信的內容類型。 |
EntryNumber, SequenceNumber |
檔案的 NTFS 參照。請同時使用兩者來識別記錄的世代。 |
ParentEntryNumber, ParentSequenceNumber |
變更當時父目錄的 NTFS 參照。 |
ParentPath |
Juntei 考量時間因素所重建的父路徑。出現未知標記表示無法解析其上層路徑。 |
UpdateSequenceNumber |
USN 排序值。可用於穩定排序以及在 Amcache/MFT 之間交叉比對。 |
UpdateTimestamp |
V2/V3 記錄中儲存的時間戳記。對於擷取所得脈絡中的時間戳記,請與其他記錄一樣進行驗證。 |
UpdateReasons |
一個或多個具名的變更旗標,以 | 連接。請將組合與 CLOSE 一併判讀。 |
FileAttributes |
變更當時記錄的 NTFS 屬性;未知的位元會維持十六進位表示。 |
OffsetToData |
在輸入中的位元組位移。對驗證與擷取所得的記錄至關重要。 |
SourceFile |
輸入的日誌/映像檔;用以區分主機與磁碟區。 |
SourceInfo |
描述變更如何進入日誌的來源旗標。通常屬於脈絡資訊,而非歸屬依據。 |
SecurityID |
該記錄的 NTFS 安全性識別碼索引,而非使用者 SID。 |
Version |
USN 記錄版本。Juntei 會將 V2/V3 寫入 CSV;JSON 則保留 V4 範圍追蹤的 extent。 |
JSON/JSONL 能正確表示 128 位元的 V3 參照,並保留 V4 範圍追蹤記錄及其 extent。 當低階、與版本相關的欄位很重要時,請使用 JSON/JSONL。
調查策略¶
- 依時間、名稱、副檔名、父路徑或檔案參照進行篩選。
- 除了時間之外,也依
UpdateSequenceNumber排序,以查看確切的日誌順序。 - 將
RENAME_OLD_NAME與RENAME_NEW_NAME配對,以找出移動/重新命名。 - 使用
$MFT驗證記錄狀態、路徑、大小與時間戳記。 - 從事件記錄、EDR、Prefetch、服務/工作或 Defender 交叉比對程序歸屬。