后渗透阶段的日志清理技术如何规避检测?
TOPIC SOURCE
kali linux系统使用koadic作为命令与控制(C2)服务器
在后渗透阶段,攻击者往往需要在不触发安全监控的前提下抹除操作痕迹。日志清理并非单纯的wevtutil cl,而是一套与系统审计、日志轮转机制、以及日志聚合平台交互的综合手段。若仅凭蛮力删除,SIEM 仍可能捕获异常的日志写入或文件属性变更;因此,真正的规避策略必须在清理前后保持系统行为的“自然”。
日志清理的攻击路径
常见的入口包括本地管理员权限、系统服务账户以及通过 DLL 注入获得的系统上下文。攻击者往往先利用提权模块获取 NT AUTHORITYSYSTEM,随后才能对 C:WindowsSystem32winevtLogs 目录进行写入或删除操作。值得注意的是,Windows 10 1903 之后引入的日志完整性校验(Log File Signature)使得直接篡改文件会触发事件 ID 1102。
规避检测的关键技术
- 利用 Windows Event Forwarding (WEF) 将目标日志实时转发到离线服务器,再在本地执行
wevtutil cl,因为转发过程已经产生了合法的写入记录。 - 在日志轮转窗口期(默认 7 天)内执行清理,配合修改
MaxSize参数,使得日志文件在达到阈值前被截断,系统不会记录异常的“日志被清空”事件。 - 通过
PowerShell的Clear-EventLog并加入-Confirm:$false参数,利用EventLog的内部缓存刷新机制,避免触发EventLog.Clear事件。 - 在清理脚本前后插入无害的日志写入,例如
Write-EventLog -LogName Application -Source "microsoft-Windows-TaskScheduler",用合法记录掩盖异常行为。 - 针对集中式 SIEM,先在
Windows Event Collector上禁用对应的过滤规则,再执行本地清理,事后恢复规则,确保审计链路中没有“规则被修改”的告警。
实战脚本示例
# 1. 暂停 Event Log 服务(仅在本地可行)
sc stop eventlog
# 2. 清除常见日志
wevtutil cl Security
wevtutil cl System
wevtutil cl Application
# 3. 重新启动服务并写入伪装记录
sc start eventlog
Write-EventLog -LogName System -Source "Microsoft-Windows-Eventlog" -EventId 6005 -Message "The event log service has started."
“清除日志的瞬间,往往也是最容易留下痕迹的时机。” —— 红队经验

参与讨论
这个技术点确实容易忽略,转发到离线服务器再清理是个思路。
Windows 10 1903之后的校验是个大坑,之前没注意就触发了警报。