逆向工程实战手册 第 45 章

第 45 章 反取证与痕迹清理

反取证 = 让调查者"看不到证据"。与第 26 章(内存取证)互为攻防。本章站在分析者视角理解反取证手段——能识别反取证,才知道哪些证据可能缺失,从而换路取证。

📍 知识点地图 | 主题:反取证 | 前置:第26章 | 后续:— | 核心概念:隐藏/破坏/篡改/清除、对抗策略

45.1 反取证分类学(四大面)

1. 数据隐藏: 证据藏在不易被发现的地方
2. 数据破坏: 销毁/覆盖证据
3. 数据篡改: 伪造/修改证据(嫁祸/扰乱)
4. 痕迹消除: 清理操作记录

对抗的核心矛盾: 系统每时每刻都在产生痕迹,反取证是"与时间赛跑"

45.2 数据隐藏(Hide)

文件隐藏

□ 隐藏属性/系统属性
□ ADS(NTFS 备用数据流): file:secret.txt 藏数据
□ 根目录/系统目录混淆(. /.. 后缀、空格后缀)
□ 注册表替代文件存储(RegRipper 时代老手法)
□ 磁盘尾部/坏道区域(物理层)
□ 加密容器(VeraCrypt 隐藏卷)
□ 图片/音频隐写(第 9 章/CTF stego)
□ 云同步目录(实时外带+本地清除)

进程/模块隐藏

□ 进程伪装(进程名仿系统进程: svchost.exe 变体)
□ 注入白名单进程(第 44 章)
□ 内核 DKOM 摘链(进程链表隐藏,第 27 章)
□ rootkit 文件隐藏(VFS hook)

网络隐藏

□ 端口绑定 443/53(伪装正常服务)
□ DNS 隧道(流量像 DNS)
□ 加密流量(内容不可读)
□ 时间错峰(深夜/随机时间通信)

45.3 数据破坏(Destroy)

覆盖与删除

□ 安全删除: 多次覆盖(军方标准 7 遍)
□ 磁盘擦除工具(DBAN、cipher /w)
□ SSD: TRIM 后数据不可恢复(相对 HDD 更彻底)
□ 内存清零: 结束前 memset 敏感数据
□ 日志清空: 清 event logs / 修改时间戳

日志破坏

Windows:
  wevtutil cl Application/Security/System  清事件日志
  修改日志保留策略
  禁用审计策略
Linux:
  清 .bash_history
  清 /var/log/*
  touch -d 改时间戳(时间擦除)

45.4 数据篡改(Forge)

□ 时间戳伪造: touch -t / SetFileTime(误导时间线)
□ 日志伪造: 插入假条目(扰乱归因)
□ 文件元数据修改: 修改创建/修改/访问时间
□ 内存篡改: 修改事件中记录的内存数据
□ 日志链破坏: 删除关键环节使链条断裂

45.5 痕迹消除(Clean)

Windows 痕迹

□ 最近文件列表(Recent)
□ 浏览器历史/Cookie/下载记录
□ 预读取文件(Prefetch,记录执行历史!)
□ 跳转列表(Jump List)
□ 回收站
□ 临时文件
□ USN 日志(NTFS 变更日志)
□ 注册表 MRU(最近使用记录)
□ 页面文件/休眠文件(可能残留)
□ ShimCache/AmCache(程序执行记录!)

Linux 痕迹

□ shell 历史
□ 系统日志(syslog/journald)
□ atime(访问时间)
□ /var/tmp、/tmp 残留
□ 内核 ring buffer
□ 进程残留(/proc 消失但 PID 可用)

网络痕迹

□ ARP 缓存
□ DNS 缓存
□ 网络连接日志
□ 会话记录(RDP 连接记录)

45.6 取证视角:如何对抗反取证(分析者思路)

核心原则: 取证靠"多重证据源"——一处的反取证不能抹掉所有源头

□ 内存优先: 反取证通常先清磁盘 → 内存还热着(第 26 章)
□ 远程/集中日志: 日志上送中心 → 本机清不掉
□ 网络流量: 旁路抓包(本机清不掉流量记录)
□ 文件系统元数据: USN/ShimCache 深挖(清日志≠清 USN)
□ 时间线关联: 多重时间戳交叉验证(伪造一处会暴露另一处)
□ 物理层: 磁盘未覆盖区域(free space 残留)
□ 备份/快照: 系统快照/备份里藏着历史
□ 取证时间窗: 越快取证,被清理的证据越少

45.7 反取证的检测信号(识别对抗行为)

□ 时间线出现"批量删除/批量清日志"事件
□ 日志出现连续空洞(被删除的条目)
□ 大量文件时间被统一修改
□ 事件日志服务被停止/禁用
□ USN 记录与文件列表不一致
□ 系统时间被修改(时间跳跃)
□ 残留工具痕迹(wevtutil/cipher/timestomp 使用记录)

45.8 分析恶意软件反取证的方法论

1. 静态: 找清理相关 API/命令(删除、清日志、改时间)
2. 动态: 观察样本运行时对文件/日志的操作
3. 识别其反取证覆盖范围(磁盘?日志?内存?网络?)
4. 针对性取证: 它没覆盖的证据源(通常内存/网络/远程日志)
5. 报告: 记录样本的完整反取证行为清单

动手练习

  1. 在测试机执行一次"攻击后清理"演练(清日志/删文件/改时间),然后尝试用 USN 记录/ShimCache 还原执行痕迹。
  2. 分析一个样本(或模拟场景)里的反取证行为:列出它清理了什么、遗漏了什么。
  3. 练习时间线交叉验证:伪造一组文件时间,用多重证据源(USN/日志/访问时间)找出破绽。
  4. 在隔离环境验证:删除一个文件后,用取证工具能从哪些地方恢复痕迹。

深入阅读

  • 仓库:skills/attack-chain/SKILL.md(痕迹清理章节——攻击视角)
  • 仓库:skills/malware-analysis/references/anti-analysis-techniques.md(反沙箱/反分析)
  • 仓库:CTF-Sandbox-Orchestrator/competition-forensic-timeline/(取证时间线 CTF)
  • 仓库:CTF-Sandbox-Orchestrator/competition-identity-windows/(Windows 痕迹 CTF)
  • 仓库:skills/field-journal/2026-05-25_pentest-cf-access-sibling-subdomain-cookie-poisoning.md(Cookie 投毒案例)