← 返回博客

用 $MFT 构建取证时间线

· 阅读 1 分钟

取证时间线只回答一个问题:这台机器上发生了什么,顺序如何?在 NTFS 上,回答这个问题最密集的单一来源就是 $MFT。卷上每一个文件与目录都会产生四到八个带时间戳的事件 —— 而它们全都在一份文件里。

每条记录给你什么

每条 MFT 记录都有两个携带时间戳的属性:

  • $STANDARD_INFORMATION(SI)—— 创建、修改、访问、MFT 修改
  • $FILE_NAME(FN)—— 创建、修改、访问、MFT 修改

每个时间戳都可以单独成为一条时间线事件。单个文件最多产生八行:「SI 创建」「FN 创建」「SI 修改」等等。遍历整个 MFT,每个时间戳输出一行,就能在一次扫描里得到一份覆盖该卷所记得的所有文件事件的「超级时间线」。

输出该长什么样

经典格式是 mactime —— 一行一条事件,按时间戳排序:

2026-05-15T10:23:01Z|FILE|allocated|/Users/alice/notes.txt|SI created
2026-05-15T10:23:01Z|FILE|allocated|/Users/alice/notes.txt|FN created
2026-05-15T10:24:18Z|FILE|allocated|/Users/alice/notes.txt|SI modified

六列 —— 时间戳、类型、状态、路径、属性、事件 —— 就这样,时间线已经可以拿去 grep 或可视化了。

交叉印证以获得上下文

$MFT 本身只告诉你文件何时发生过改变,不告诉你为什么。把它跟下面的一起看:

  • $UsnJrnl —— 文件系统操作的顺序
  • $LogFile —— 崩溃前几秒钟内事务级别的细节
  • Prefetch(.pf)文件 —— 程序执行的证据
  • 注册表事务日志 —— 配置变更

把这些来源合并后的时间线,即使个别日志被清空,也常常能逐分钟重建攻击者的会话。

快速发现异常

时间线一旦排序好,异常就显眼起来:

  • 凌晨 3 点出现一阵文件修改紧接着删除 —— 经典的勒索软件准备阶段;
  • 一个久未触碰的系统文件突然带上新的修改时间 —— 可能是注入持久化;
  • 数百个文件落在同一秒被创建 —— 安装器足迹或批量铺设。

MFT 本身并不解释这些信号,它只是把它们摆出来。解释,是分析师的工作。

外部资源