← 返回博客

NTFS MFT 与 FAT 的对比:改变了什么,以及为何取证人员要在意

· 阅读 1 分钟

FAT(File Allocation Table)与 NTFS 解决的是同一个问题 —— 跟踪每个簇属于哪个文件 —— 但解答方式天差地别。对取证分析师来说,两者的差距,是「我们知道某个文件曾经存在」与「我们依然几乎对它一清二楚」之间的差距。

FAT 的工作方式

FAT 维护一张表,其中每个表项把一个簇映射到下面之一:

  • 文件的下一个簇
  • 链结束标记
  • 0,表示「空闲」

由一个单独的目录项把文件名和第一个簇关联起来。读文件时沿着链走;删除文件时,FAT 把所有簇表项清零,并把目录项里文件名的首字符替换为 0xE5。剩下的还在 —— 但只剩剩下:链本身已被破坏。你可以找回第一个簇和部分文件名,但通往后续簇的连接已不复存在。

正因如此,FAT 恢复工具在处理碎片化文件时举步维艰。它们能找到碎片,却拼不回去。

NTFS 的工作方式

NTFS 用主文件表代替了分配表 —— 这是一个单一文件,其中其他每个文件都至少有一条 1024 字节的记录来描述它。每条记录是一个带类型属性的小型容器:$STANDARD_INFORMATION$FILE_NAME$DATA$INDEX_ROOT 等等。

关键在于:$DATA 并不是只指向第一个簇,而是带着一个完整的 runlist —— 一串 (起始簇, 长度) 的对,覆盖了文件的每一个碎片。删除一个文件并不会破坏这张表。

这对取证带来什么变化

  • 被删除文件的 runlist 一直保留,直到 MFT 槽位被复用为止 —— 即使是高度碎片化的文件也能被重建。
  • 每条记录八个时间戳(SI 四个、FN 四个),提供了 FAT 给不了的相互佐证。
  • 小文件的常驻数据意味着,可以在完全不触碰数据区的情况下完成恢复。
  • 日志($UsnJrnl$LogFile)留下了 FAT 根本不记录的审计痕迹。

如果同一事件的 FAT 镜像和 NTFS 镜像摆在面前任你选,NTFS 几乎总能回答更多问题。

你仍然会遇到 FAT 的地方

FAT 并未消亡。你依然会在以下地方碰到它:

  • 工厂格式化的 U 盘;
  • 大多数 Windows 安装的 EFI 系统分区;
  • 相机和嵌入式设备的 SD 卡。

但在任何一台现代 Windows 机器的系统卷上,你面对的就是 NTFS —— 而 $MFT 就是你的起点。

外部资源