时间戳篡改的迹象
常见迹象有三类:mtime 早于 ctime、同一批文件的时间完全一致、文件时间早于系统安装时间。判定要结合四个时间戳与系统日志的时间线,而不是只看其中一个字段。
分析要在镜像上做
在活系统上检查本身就会更新 atime 与 ctime,等于自己制造新的时间戳噪声。因此时间证据的分析应在只读挂载的镜像副本上进行。
基本信息
| 核心线索 | mtime 早于 ctime、批量相同时间、早于装机时间 |
|---|---|
| 对比方法 | stat 四个时间戳与日志时间线交叉 |
| 批量定位 | find -newermt 圈定改动范围 |
| 分析前提 | 在镜像上进行,避免自身改动时间戳 |
| 字段含义 | atime 访问、mtime 内容、ctime 元数据、birth 创建 |
| 权限要求 | 读取文件属性即可,挂载镜像需 root |
典型使用场景
- 排查木马文件被改时间戳以隐藏自己
- 验证文件时间与日志记录是否矛盾
- 圈定某个时间窗内的文件改动
- 与时间线重建工具配合使用
- 复盘时说明时间证据的可信度
检查时间戳与批量改动
检查时间戳与批量改动
stat -c '%n mtime=%y ctime=%z birth=%w' /www/wwwroot/suspect.php
find /www/wwwroot -type f -newermt '2026-10-01' ! -newermt '2026-10-12' | head -n 30
find /tmp -type f -newermt '2026-10-01' -printf '%T+ %p\n' 2>/dev/null | sort | head
stat -c '%n %y %z' /usr/bin/ls /bin/ps | head
date -u +%FT%TZ四时间戳读法
| 字段 | 含义 | 参考价值 |
|---|---|---|
| atime | 最后访问时间 | 受挂载选项影响,参考价值较低 |
| mtime | 内容最后修改时间 | 最常被篡改的字段 |
| ctime | inode 元数据变更时间 | 无法由用户直接设置,是重要对照 |
| birth | 文件创建时间 | 部分文件系统支持,与 mtime 矛盾时优先怀疑 |
部分文件系统支持 birth time,不支持时只能靠 ctime 与日志交叉判断:单凭一个字段无法支撑结论。
mtime 早于 ctime 只是可疑信号:备份恢复、同步工具与解压操作也会造成类似现象,必须结合文件内容与日志一起判断。
判定流程
- 取四个时间戳并记录
- 与系统日志的关键时间点对齐
- 批量扫描同一时间窗内的文件改动
- 对可疑文件提取样本并计算哈希
- 结论标注为可疑并说明还需要哪些旁证