← 返回博客

常驻数据:住在 MFT 里的小文件

· 阅读 1 分钟

每个 NTFS 文件都有一个保存其内容的 $DATA 属性。在绝大多数情况下,$DATA非常驻的 —— 它指向一份位于卷上其他位置的簇运行(cluster run)列表。但当文件足够小时,它的字节就直接住在 MFT 记录里面。

多小才算够小?

一条 MFT 记录为 1024 字节。扣除记录头、$STANDARD_INFORMATION、至少一个 $FILE_NAME 以及其他元数据后,留给 $DATA 的可用空间大约只有 700 字节

小于这个阈值的文件 —— 配置片段、注册表值、快捷方式目标、批处理脚本、某些日志行 —— 经常完整地住在 MFT 内。

这为什么重要

常驻的 $DATA 属性,不需要读取磁盘其余部分就能恢复。如果你手里只有一份 $MFT,你已经拥有:

  • 小型文本文件的完整内容
  • 大量目录的 $INDEX_ROOT 数据
  • 短小的备用数据流
  • 重解析点和符号链接的目标

仅仅一份 200 MB 左右的提取物,所承载的证据数量相当惊人。

常驻并不等于稳定

当一个常驻文件长大到超出记录的剩余空间时,NTFS 会把它转换为非常驻 —— 数据被搬到簇中,$DATA 变成 runlist。反过来也可能发生:当一个文件缩小到阈值以下时,它可以重新变为常驻 —— 不过 Windows 很少主动这么做。

在排查时,一个曾经很大、如今却是常驻的文件不太寻常,值得细看。

外部资源