← 返回博客

MFT 的四个时间戳与时间篡改的痕迹

· 阅读 1 分钟

每条 MFT 记录都在两个独立的属性 —— $STANDARD_INFORMATION$FILE_NAME —— 中分别保存四个时间戳,记录的是同样的四个时刻:

  • 创建 —— 文件首次写入卷的时刻
  • 修改 —— 内容最近一次变化的时刻
  • 访问 —— 文件最近一次被读取的时刻
  • MFT 修改 —— 记录本身最近一次被改动的时刻

也就是说,每条记录有八个值。它们并不总是同步的。

为什么会有两组

$STANDARD_INFORMATION(SI)在每一次常规文件操作时都会被更新。$FILE_NAME(FN)最初是为 POSIX 兼容性而引入,更新频率要低得多 —— 通常仅在创建、重命名或跨目录移动时才会变动。

实务上,SI 时间戳会持续跳动,而 FN 时间戳保持稳定。

时间篡改会留下指纹

修改时间戳的工具通常调用 Windows 的 SetFileTime API。它写入的是 SI,会改动 FN。

经过 timestomping 之后,SI 显示的是攻击者所选择的值 —— 通常会回拨数年 —— 而 FN 仍保留真正的创建时间,有时差距相当大。

在取证排查中要留意的两种模式:

  1. SI 创建时间早于 FN 创建时间。文件不可能在被命名之前就存在,这在自然情况下不会发生。
  2. 对于明显没有被重命名或移动过的文件,SIFN 的修改时间相差超过几秒。

任一现象都是元数据被操纵的强烈信号。

时间精度也能告诉你更多

NTFS 以 100 纳秒精度保存时间戳,而许多 timestomping 工具会四舍五入到整秒。一个以 .0000000 UTC 结尾的时间戳值得怀疑 —— 真实的 Windows 活动通常会保留秒以下的精度。

外部资源