← 返回博客

如何从正在运行的 Windows 系统中提取 $MFT

· 阅读 1 分钟

$MFT 位于每个 NTFS 卷的起始处,但只要该卷处于挂载状态,Windows 就会对它持有独占锁。你不能用 xcopy 简单复制它。你需要一个绕过文件系统锁、直接读取原始卷的工具。下面是三种可靠选项。

fsutil(系统内置)

Windows 自带的命令可以定位 $MFT 在磁盘上的位置:

fsutil file queryextents C:\$Mft > mft-extents.txt

你会得到 $MFT 所占的簇运行(cluster runs)。对这些簇做原始读取就能复原该文件。该方法在任何现代 Windows 上都可用,需要管理员权限,且不会在目标上留下副作用。

缺点是:你还得自己把这些簇运行拼起来。对于大多数调查人员来说,它只是积木,而不是最终答案。

FTK Imager

FTK Imager 是取证采集中最常用的免费工具。要拿到 $MFT:

  1. File → Add Evidence Item → Physical Drive
  2. 选择磁盘
  3. 在树中导航到 NTFS 卷的根目录,找到 $MFT
  4. 右键 → Export Files

这样会输出 $MFT 的一份普通文件副本,可以直接带走。FTK Imager 同样能读取磁盘镜像(.dd.E01),所以同一套流程也适用于离线证据。

KAPE

如果要做更大范围的采集,KAPE(Kroll Artifact Parser and Extractor)可以把整个取证物清单自动化。KAPETargets 库中包含一个 MFT 目标,可一次性把 $MFT$LogFile$UsnJrnl 及相关佐证物一同打包:

kape.exe --tsource C: --target MFT --tdest C:\triage

KAPE 会在底层处理文件被锁定的问题,保留所采集文件的时间戳,并写出一个整洁的目录,方便你带去做分析。对任何应急响应采集任务,这都是首选路径。

从磁盘镜像中读取

如果你已经有了磁盘镜像,那么锁的问题根本不会出现。把镜像以只读方式挂载,或使用能够直接消费原始镜像的解析器。$MFT 就靠在每个 NTFS 卷的开头 —— 偏移 0 处的引导扇区会指向它。

关于完整性

不论选哪种路径,采集结束后立刻对 $MFT 计算 SHA-256,分析开始前再算一次。文件体积很大,分析工具偶尔会截断。事前的哈希比对能让你免于在错的证据上花数小时调试。

外部资源