前幾天介紹了 Prefetch,它能幫我們找出哪些可執行檔曾在系統上啟動過、啟動次數與所用路徑等線索。但 Prefetch 的適用範圍有限,對於尚未被執行或已改名/偽裝的惡意程式,Prefetch 記錄可能不存在或不可靠。
因此今天會分享什麼是 NTFS ,並利用 NTFS 的特性追蹤檔案與資料夾的建立、移動、改名與刪除等活動。
NTFS 是 Microsoft 為 Windows NT 系列作業系統開發的檔案日誌型檔案系統,會維護交易記錄來確保資料一致性,如果有格式化過硬碟的經驗,應該對 NTFS 有點印象
NTFS 會在每個 Volume 上以系統檔案記錄檔案與目錄的活動,包含建立、修改、刪除等。這個機制能讓 NTFS 在發生停電或系統崩潰時進行復原並保持系統一致性。
因此 NTFS 的 Volume 中會建立許多隱藏的系統檔案,這些檔名都以$
開頭,以下介紹幾個主要的檔案
路徑:<Volume_Root>\$MFT
$MFT 是 NTFS 檔案系統的核心元件,儲存所有檔案和目錄的metadata(如名稱、大小、時間戳、權限等)。
由一系列固定大小的檔案記錄組成,每個記錄包含一個檔案或目錄的所有屬性。
下方圖片是使用 MFT Explorer 把 MFT 內的資料視覺化顯示出來
路徑:<Volume_Root>\$Extend\$UsnJrnl:$J
$UsnJrnl 的主要功能是追蹤 NTFS 上所有文件與目錄的變更。每當文件被創建、修改、刪除、重命名、移動,或其屬性/安全描述符發生變化時,$UsnJrnl 都會記錄一條對應條目。這些條目包括變更類型、發生時間、關聯的 USN(更新序列號)、文件 ID、父目錄 ID、文件名稱、屬性與大小等資訊。
路徑:<Volume_Root>\$LogFile
$LogFile 與 $UsnJrnl 紀錄的內容差不多,但是紀錄的是更底層的操作,其功能是作為 NTFS 的 transaction log,記錄對 metadata 所做的各種操作(如 MFT 新增/修改/刪除、目錄索引更新、Bitmap Allocation、$UsnJrnl 本身的更新等)。在進行 metadata 變更前,系統會先將這些交易寫入 $LogFile,以確保即便系統意外中斷,也可利用日誌進行回滾或重做操作,以保持文件系統的一致性與完整性。
在 NTFS 檔案系統中,每一個 Directory 都維護一個 Index,用來快速查找該目錄下的檔案與子目錄,當目錄內容改變 (如新增、刪除、重命名) 時,對應的 index entry 也會被修改或標記為已刪除 (Flags 欄位),因為是標記的關係,所以可以在$I30
中找到被刪除的檔案。
整體來說這些檔案記錄了從檔案/目錄的建立、修改、刪除、重命名、移動、屬性變更,底層交易操作(如 MFT 重組、索引更新)等所有可供恢復、驗證與時間線重建的線索。
因此這些檔案都是在進行 Disk Forensic 時很重要的檔案,
接下來可以開始使用工具進行分析,首先有一個很方便的工具-NTFS Log Tracker
下載連結: https://sites.google.com/site/forensicnote/ntfs-log-tracker
NTFS Log Tracker 是一款專門用來解析 NTFS 上 $LogFile 和 UsnJrnl:$J 的工具。 它可以從交易日誌與變更日誌中挑出檔案/目錄操作的記錄。
填上對應檔案的路徑
按下右上角的 Parse 之後會先把資料都儲存成一個 DB,這邊幫它取名以及輸出的路徑
選擇好後就會開始進行分析
結束後就會出現 $LogFile 以及 UsnJrnl:$J 的內容
另外也可以把它們匯出成 CSV 檔案
同樣可以使用 Timeline Explorer 或者其他查看 CSV 檔案的軟體查看
而 $I30
檔案可以使用 MFTECmd 分析
下載連結:https://ericzimmerman.github.io/#!index.md
MFTECmd 是由數位鑑識專家 Eric Zimmerman 開發的 Windows command-line 工具,
用來解析 NTFS 檔案系統中由 $MFT 與其衍生紀錄,例如:
並將其轉成 CSV 檔案
首先找到要鑑識的目錄,並提取其 $I30
內容
接下來下指令將它轉換成 CSV 檔案
轉換後可以使用 Timeline Explorer 或者其他查看 CSV 檔案的軟體查看
今天介紹了 NTFS 檔案系統的核心元件,包括 $MFT
、$UsnJrnl
、$LogFile
和 $I30
等系統檔案,這些檔案記錄了檔案系統的各種操作活動。
透過 NTFS Log Tracker 和 MFTECmd 工具,我們可以分析這些系統檔案,重建檔案操作的時間線,獲得更多線索