清理痕迹的识别是什么
攻击者清理日志、删除工具与样本、清空命令历史时,清理动作本身也会留下痕迹:日志文件大小与时间戳自相矛盾、时间跨度不连续、目录时间戳被更新但文件消失、历史文件为空而账号当天有登录。这些痕迹反过来能定位对手最后活动的时间与使用的账号。
基本信息
| 用途 | 把清理行为本身当成证据 |
|---|---|
| 可查痕迹 | 日志缺口、删除记录、历史清空、文件消失 |
| Linux 侧线索 | 日志文件大小与时间戳、auditd 删除事件 |
| Windows 侧线索 | 1102 日志清空、Sysmon 23/26、预取断档 |
典型使用场景
- 日志里出现一段完全没有记录的空白期,需要判断是轮转还是人为清理
- 同一目录的日志文件大小与前一日相比骤减
- 命令历史文件为空,但该账号当天有登录记录
- 响应中怀疑对手已进入收尾阶段,评估还剩多少可分析数据
- 本地日志被删,向集中平台求证转发副本是否仍在
Linux 侧检查
Linux 侧检查
ls -l --time-style=full-iso /var/log/auth.log* # 大小与修改时间是否矛盾
stat /var/log/secure # 文件元数据与 inode 变更时间
last -f /var/log/wtmp | tail -20 # 登录记录与 wtmp 是否能对上
ls -l ~/.bash_history; echo $HISTFILESIZE # 历史文件是否被清空或截断
grep -i 'histentry' /var/log/secure | head # RHEL 系会记录历史清空动作
ausearch -m unlink -ts recent # 删除审计(需 auditd 已启用)
# 与集中日志平台、远端 syslog 同时间段记录交叉核对Windows 侧检查
Windows 侧检查
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=1102} # 安全日志被清空
Get-WinEvent -LogName 'Microsoft-Windows-Sysmon/Operational' |
Where-Object {$_.Id -in 23,26} # 文件删除与归档删除
Get-ChildItem C:\Windows\Prefetch | Sort-Object LastWriteTime -Descending # 预取断档
# 关注事件日志服务重启、日志文件大小骤变、记录数断崖清理动作与对应痕迹
| 清理动作 | 留下的痕迹 | 证据位置 |
|---|---|---|
| 删除日志文件 | 文件消失但目录时间戳被更新 | 文件系统元数据、auditd |
| 截断日志内容 | 大小与前一天不符、时间跨度不连续 | 日志文件元数据、集中副本 |
| 清空命令历史 | 历史文件为空或与登录记录不符 | histentry 记录、shell 审计 |
| 删除工具与样本 | 进程记录存在但文件已不存在 | EDR 遥测、预取、MFT |
清理很少彻底:本地删掉的内容往往在集中日志平台、备份、SIEM、代理与防火墙侧留有副本。先查转发链路,再断言数据不可得。
logrotate 正常轮转同样会造成断档。判断前先读轮转配置与保留周期,把正常轮转和恶意清理区分开,避免在报告里写成「攻击者删除了日志」。