账户文件的时间落在窗口内就是重点
账户与组信息保存在 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 四个文件里。它们平时很少变化,只有在增删账号、改口令、调整组成员时才被写入。因此一旦某个文件的修改时间落在事件窗口内,就说明这段时间里发生过账号层面的变更,必须进一步查清是谁改的、改了什么。
mtime 与 ctime 一起看
两个时间同时变化说明文件内容被改写;只有 ctime 变化而 mtime 不变,通常说明只是属性调整(权限或属主)。反之,如果内容确实变了但时间看起来很早,要考虑有人用工具回改时间戳,或者文件被设置了不可修改属性后再解除——这些都会在系统日志或审计记录中留下痕迹。
基本信息
| 适用平台 | Linux(/etc 下的账户与组文件) |
|---|---|
| 目标文件 | /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow |
| 查看命令 | stat -c '%n mtime=%y ctime=%z' 文件 |
| 辅助手段 | auditd 对这四个文件设置监视规则 |
| 注意 | 系统升级、批量账号同步同样会更新这些文件 |
典型使用场景
- 排查后门账号:确认账号被创建的大致时间并与登录日志对照
- 核查提权改动:组成员变更同样会更新组文件的时间
- 验证处置结果:删除账号后确认时间戳已更新且内容恢复基线
- 缩小调查范围:多主机对比这些文件的时间,找出共同改动点
- 为报告取证:记录四个文件的属性与哈希,作为证据完整性依据
对比时间与内容
对比时间与内容
# 四个文件的修改与属性变更时间
stat -c '%n mtime=%y ctime=%z' /etc/passwd /etc/shadow /etc/group /etc/gshadow
# 是否有不可修改属性(可被用于阻止清理)
lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow 2>/dev/null
# 记录哈希,作为后续比对的基线
sha256sum /etc/passwd /etc/shadow /etc/group /etc/gshadow > /mnt/ev/account-baseline.txt
# 有审计日志时查谁改过
grep -E '/etc/(passwd|shadow)' /var/log/audit/audit.log 2>/dev/null | tail -20时间变化与含义
| 变化情况 | 含义 | 后续动作 |
|---|---|---|
| mtime 与 ctime 都变 | 内容被改写 | 核对账号与组成员变化 |
| 仅 ctime 变化 | 只有属性调整 | 检查权限与属主是否合理 |
| 四个文件同时更新 | 批量账号操作 | 查配置管理与部署记录 |
| 时间落在事件窗口内 | 账号变更与事件相关 | 与登录日志、审计记录交叉 |
| 时间明显早于内容变化 | 时间戳可能被回改 | 查日志与审计记录佐证 |
文件被设置不可修改属性(lsattr 显示 i)时会阻止写入,这种属性也可能被用于阻止取证人员清理或删除后门账号,检查时应一并查看并记录。
系统升级、批量账号同步、容器镜像构建都会更新这些文件;判定前先确认主机是否处于自动化管理之下,把这类变化排除掉。