NTFS 的两组时间
NTFS 文件的主文件表(MFT)里同一个文件有两组时间戳:$STANDARD_INFORMATION(SI)属性中的四时间,和目录索引项 $FILE_NAME(FN)属性中的四时间,各自包含创建、修改、MFT 变更与访问时间。用户态 API(如 SetFileTime、各类时间戳修改工具)能轻易改写 SI,改写 FN 则需要更底层的操作,因此两组时间出现系统性矛盾时,是时间戳被篡改的重要提示。需要注意的是,文件复制、解压、打补丁等常规操作本身也会造成两组时间不一致,异常判定必须结合目录语境。
基本信息
| 适用平台 | Windows 的 NTFS 卷(FAT 系列无此结构) |
|---|---|
| 分析对象 | MFT 条目($MFT)或其提取副本,可由镜像直接解析 |
| 常用工具 | Sleuth Kit 的 fls/istat、MFTECmd、analyzeMFT 等 |
| 四时间含义 | Created(创建)、Modified(内容修改)、MFT Modified(元数据修改)、Accessed(访问) |
| 输出注意 | 时间默认按 UTC 输出,比对前统一时区口径 |
典型使用场景
- 判断入侵者投放的工具文件是否被“时间戳伪造”伪装成系统旧文件
- 区分正常补丁更新与手工替换:批量文件时间被改成同一时刻通常是镜像或工具行为
- 确认可疑文件的真实出现时间,为时间线提供可信锚点
- 识别从介质复制而来的文件:复制会重写创建时间而保留内容修改时间
- 作为报告中的方法说明:解释为什么两个工具看到的时间不同
提取与比对
提取与比对
# 用 TSK 从镜像中查看同一条目的两组属性时间(含 MFT 条目号)
istat -o 2048 -f ntfs /evidence/disk.dd 42
# 批量导出目录条目与时间,便于成批比对
fls -o 2048 -r -m "/" /evidence/disk.dd | head -40
# Windows 侧可用 MFTECmd 导出 $MFT 为 CSV 后按 SI/FN 列对比
MFTECmd.exe -f "C:\case\$MFT" --csv C:\case --csvf mft.csv两组时间的差异读法
| 现象 | 可能原因 | 判断方向 |
|---|---|---|
| SI 创建时间晚于 FN 创建时间 | 时间戳被工具改写,或文件被移动重建 | 结合同目录其他文件与操作日志判断 |
| 四时间高度一致且为整点 | 被批量修改或镜像工具写入 | 重点核查该批文件的来源与用途 |
| SI 修改时间早于创建时间 | 典型的伪造痕迹 | 作为重点线索,但不能单独作为结论 |
| FN 时间晚于 SI 时间 | 目录项后来被更新(重命名、移动) | 重命名行为本身也是线索 |
| 所有文件时间与卷创建时间一致 | 镜像或复制过程写入 | 该类时间不可用于事件排序 |
只提取 SI 或只提取 FN 都无法做完整判断;不同工具默认展示的属性不同,报告里要写清所用工具、命令与导出的是哪一组时间。
时间戳异常只是线索,不是结论。把它与文件内容哈希、进程执行痕迹、网络连接记录、日志事件结合后,才能给出“该文件在某时段出现并被使用”的判断。