$SI 与 $FN 双时间组
NTFS 中每个文件在主文件表 $MFT 里有两处时间组:$STANDARD_INFORMATION 属性里的时间会随文件操作更新,$FILE_NAME 属性里的时间只在文件名相关操作时更新。两组时间对照是时间分析的基础,差异的方向与幅度往往比“有没有差异”更有意义。
基本信息
| $SI 时间 | 创建、修改、MFT 变更、访问四项,多数文件操作会刷新这里 |
|---|---|
| $FN 时间 | 同为四项,但更新时机更少,通常早于 $SI |
| 典型差异 | 复制、重命名、属性修改都会造成两组时间不一致 |
| 解析工具 | MFTECmd 导出 CSV,或 MFT 解析脚本逐条输出 |
| 时间基准 | FILETIME 格式,解析工具一般按 UTC 呈现 |
典型使用场景
- 判断文件是原生的还是被复制、搬移过来的
- 发现时间戳被改写的迹象,作为篡改检测的切入点
- 还原文件在某个目录中的存在时段
- 与日志时间对齐,确定可执行文件的实际落地时刻
- 识别创建时间晚于修改时间等反常规的时间组合
导出与对比
导出与对比
MFTECmd.exe -f 'C:\case\$MFT' --csv C:\out\mft
Import-Csv C:\out\mft\'$MFT.csv' | Select-Object -First 3 FullPath, 'SI Created', 'FN Created', 'SI Modified', 'FN Modified
Import-Csv C:\out\mft\'$MFT.csv' | Where-Object { $_.'SI Created' -ne $_.'FN Created' } | Select-Object -First 10 FullPath, 'SI Created', 'FN Created$SI 与 $FN 对照
| 场景 | $SI 表现 | $FN 表现 |
|---|---|---|
| 常规文件写入 | 随操作更新 | 通常保持较早的值 |
| 文件创建时 | 与创建时刻一致 | 与 $SI 接近,可有毫秒级差异 |
| 重命名或移动 | 一般保持原值 | 可能随文件名变更而刷新 |
| 工具改写时间戳 | 被改成目标值 | 多数工具不会同步触碰 |
两组时间存在差异本身并不等于篡改:复制、改名、归档、杀毒扫描都可能造成差异。判断时看差异的方向与幅度是否与已知操作场景相符,必要时用系统日志或备份副本交叉确认。
只改 $SI 时间是常见工具的能力,$FN 通常不受影响。当 $SI 时间早于 $FN、或创建时间晚于修改时间时,这类反常规组合才值得深挖;同时要排除解析工具版本差异导致字段读错的可能。