上一篇我們用 Volatility 3 從 Memory Image 裡找 Process、Network Connections,這一篇把視角拉回硬碟。
前面第 8 篇介紹過:
Bit
↓
Byte
↓
Sector
↓
Cluster
↓
File
但還沒有介紹:
NTFS 是怎麼管理這些 File 和 Cluster 的?
如果想深入做 Windows 磁碟鑑識,就不能只看一般使用者看到的檔案。
NTFS 本身也有一些重要的 Metadata Files,其中最重要的幾個就是:
$MFT
$Boot
$Bitmap
$LogFile
NTFS(New Technology File System) 是 Windows 常見的檔案系統。
它負責管理:
File
Directory
File Name
File Metadata
Cluster
Permissions
File System 狀態
可以把它想成硬碟上的「管理系統」。
NTFS
│
┌─────────┼─────────┐
↓ ↓ ↓
Files Directories Metadata
│ │
│ ┌─────────┼─────────┐
│ ↓ ↓ ↓
│ $MFT $Bitmap $LogFile
│
└────────────── $Boot
而這些 $ 開頭的檔案,是 NTFS 用來管理檔案系統本身的重要 Metadata Files。
$MFT(Master File Table) 就像是 NTFS 的檔案總表。
在 NTFS 中,每個 File 至少會對應一個 MFT Record。
MFT Record 裡可以找到與 File 有關的資訊,例如:
File Name
File Size
Timestamp
Permissions
File Attributes
File Data 的相關資訊
所以當我們想知道:
「這個檔案是什麼?」
MFT 就是很重要的資料來源。
NTFS Volume 的 Boot Record。
它位於 NTFS Volume 的開頭區域,包含與 Volume 和 Boot 相關的重要資訊。
例如:
Bytes Per Sector
Sectors Per Cluster
NTFS 版本相關資訊
MFT 相關位置資訊
$Boot 裡的資訊能幫助我們理解這個 Volume 的基本配置。
它是一個 Bitmap,用來表示 Volume 上的 Cluster 使用狀態。
像是:
Cluster
1 2 3 4 5 6 7 8
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1 1 0 1 0 0 1 1
1 = 已使用
0 = 尚未使用
NTFS 的 Transactional Log File,負責記錄檔案系統操作,幫助 NTFS 維持一致性。
例如系統在進行檔案系統操作時,如果突然當機,導致操作沒有完整完成。
NTFS 可以利用 Logging 機制協助維持 File System 的一致性。
$MFT
「檔案是誰?」
$Boot
「Volume 怎麼配置?」
$Bitmap
「哪些 Cluster 被使用?」
$LogFile
「File System 的操作記錄?」