时间戳篡改识别
时间戳篡改(timestomp)指刻意改写文件时间以误导分析。可以直接改的是访问与修改时间,元数据变更时间只能通过改动元数据间接影响,创建时间则要动文件系统结构。因此「mtime 明显早于 ctime」这类内部矛盾,正是识别改写的主要线索。
基本信息
| 可直接改写 | atime 与 mtime,用 touch、touch -t 或参考文件方式 |
|---|---|
| 难以直接改写 | ctime 与 crtime 无法用常规命令设置 |
| 常见矛盾 | mtime 早于 ctime,或 crtime 晚于 mtime |
| 辅助线索 | shell 历史、审计日志、包安装记录 |
| 检查范围 | 文件与所在目录项都要看 |
| 权限要求 | 改写属主文件需要相应权限 |
典型使用场景
- 识别被刻意回拨时间的文件
- 解释同一批文件时间戳高度一致的现象
- 判断落地时间与时间戳不一致的样本
- 为时间线结论标注可信度
- 筛出需要优先核对的异常文件
最小示例
最小示例
stat -c '%n mtime=%y ctime=%z' /usr/bin/* | head # 批量查看时间对
find /usr/local/bin -xdev -type f -newerct '2026-01-01' -printf '%p %CY-%Cm-%Cd\n' | head
find /tmp /var/tmp -xdev -type f -newermt '2026-01-01' -printf '%p %TY-%Tm-%Td\n' | head
stat -c '%n B=%w M=%y C=%z' suspect.bin # 含创建时间的完整对比
ls -l --time-style=full-iso suspect.bin现象与判断方向
| 现象 | 含义 | 判断方向 |
|---|---|---|
| mtime 早于 ctime | 内容时间早于元数据时间 | 常见于回拨,但复制与还原也会造成 |
| crtime 晚于 mtime | 创建时间晚于内容修改时间 | 几乎必然存在时间改写 |
| 同目录文件时间完全一致 | 时间被批量设置 | 需与解压和同步工具行为区分 |
| ctime 与 mtime 相同 | 刚发生过元数据操作 | 可能刚改名或改过权限 |
mtime 早于 ctime 并不必然代表篡改:复制时保留属性、还原备份与解压归档都会产生同样现象,必须结合其它证据。
目录的 mtime 会随子项增删更新,检查目录时间有助于判断文件是何时被放进该目录的。
时间异常要落到具体文件上,并把异常清单与判定依据一并写进报告,避免只给结论不给依据。
不要用 touch 或改名的方式做实验来对照结果:这些操作会改写原始时间戳,破坏后续比对基础。