iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0
Security

那些留在電腦裡的證據:從零開始認識數位鑑識系列 第 13 篇

[DAY 13] NTFS 裡的檔案都記在哪?認識 $MFT

  • 分享至 

  • xImage
  •  

昨天講到 Sector、Cluster 和 File Slack,知道檔案最後會被放進一個個 Cluster 裡。

但這時候還有一個問題:

磁碟底層明明只有一堆 Cluster,Windows 怎麼知道哪些資料屬於 report.docx,哪些又屬於 photo.jpg?

因為一個檔案不只有真正的 File Data,系統還需要記錄檔名、大小、資料位置,以及其他和這個檔案有關的資訊。

負責管理這些資訊的,就是 File System。

今天從 Windows 很常見的 NTFS(New Technology File System) 開始,看它怎麼管理一個個 File 和 Folder。

從 File System 到 NTFS

平常打開 Windows Explorer,我們看到的可能是:

C:\
└─ Users
   └─ User
      └─ Desktop
         └─ report.docx

但這其實已經是 File System 整理過後的結果。

磁碟底層真正存放的是 Bytes、Sector 和 Cluster,本身並不知道哪些資料屬於 report.docx。

File System 會負責管理 File 和 Folder 的資訊,再把底層資料組織成我們平常看到的檔案結構。

Physical Storage
Sector / Cluster / Raw Bytes
        ↓
File System
        ↓
File / Folder

Windows 常見的 File System 包括 FAT、exFAT 和 NTFS,今天我們先聚焦在 NTFS。

NTFS 裡還有一些用來管理 File System 的特殊 System File,名稱通常會以 $ 開頭,例如 $MFT、$MFTMirr、$LogFile、$Volume 等。

其中在 Digital Forensics 裡很重要的一個,就是 $MFT。

$MFT 和 MFT Record

$MFT 的全名是 Master File Table,是 NTFS 用來記錄 File 和 Directory 資訊的重要資料表。

NTFS 中的 File 和 Directory 都會有對應的 MFT Record。

例如:

report.docx
photo.jpg
Projects\

在 Windows Explorer 裡看到的是兩個 File 和一個 Folder,而在 NTFS 裡,背後都會有各自的 MFT Record。

$MFT
│
├─ MFT Record → File
├─ MFT Record → File
├─ MFT Record → Directory
├─ MFT Record → File
└─ ...

$MFT 本身也是 NTFS 的 System File,而且前面幾筆 Record 會用來描述 NTFS 自己的重要 System File,例如 $MFT、$MFTMirr、$LogFile 和 $Volume。

在常見的 NTFS 結構中,一筆 MFT Record 通常是 1024 Bytes,整個 $MFT 會由一筆筆固定大小的 Record 組成。

$MFT

┌────────────────────┐
│ Record 0           │
│ 1024 Bytes         │
├────────────────────┤
│ Record 1           │
│ 1024 Bytes         │
├────────────────────┤
│ Record 2           │
│ 1024 Bytes         │
├────────────────────┤
│ ...                │
└────────────────────┘

所以 $MFT 並不是單純存放 File Content,而是 NTFS 管理 File 和 Directory 時非常重要的結構。

MFT Record 裡有什麼?

一個 File 除了真正的內容,還會有描述它的 Metadata。

例如檔案名稱、基本資訊,以及 File Data 本身,都會透過不同的 Attribute 記錄在 MFT Record 裡。

其中後面很常碰到的包括:

Attribute Type 大致用途
$STANDARD_INFORMATION 0x10 File 的基本 Metadata
$FILE_NAME 0x30 File Name 與相關 Metadata
$DATA 0x80 和 File Data 有關的資訊

一筆 MFT Record 會包含 Record Header 和多個 Attribute:

MFT Record
│
├─ Record Header
├─ $STANDARD_INFORMATION
├─ $FILE_NAME
├─ $DATA
└─ ...

$STANDARD_INFORMATION 負責保存 File 的基本資訊,$FILE_NAME 和檔案名稱及相關 Metadata 有關,而 $DATA 則和真正的 File Content 有關。

所以我們平常在 Windows Explorer 裡看到的 report.docx,到了 NTFS 底下,其實會有一整筆 MFT Record 來描述它。

其中 $DATA 還有一個比較特別的地方,就是File Content 不一定全部用相同的方式存放,有些 File 的 Data 可以直接放在 MFT Record 裡,有些則會放在其他 Cluster。

為什麼 $MFT 對 Digital Forensics 來說很重要?

DAY 12 看的是磁碟底層怎麼存放資料:

Disk
 ↓
Sector
 ↓
Cluster
 ↓
File Data

今天再往上一層,看 NTFS 怎麼管理這些資料:

NTFS
 ↓
$MFT
 ↓
MFT Record
 ↓
Attribute
 ↓
File / Directory 的相關資訊

Sector 和 Cluster 告訴我們資料實際放在哪裡,而 $MFT 則記錄這些資料屬於哪一個 File,以及和這個 File 有關的 Metadata。

所以在 NTFS Forensics 裡,看的不只有 File Content。

描述 File 的 Metadata,本身也是很重要的線索。

而 $MFT 就是分析這些資訊時非常重要的入口。


上一篇
[DAY 12] 5 KB 的檔案,為什麼會佔掉 8 KB?從 Sector、Cluster 到 File Slack
下一篇
[DAY 14] $MFT 實戰:判斷檔案狀態與檔案時間
系列文
那些留在電腦裡的證據:從零開始認識數位鑑識 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言