🌀 鱼油のB10g

✦ 不定期更新技术随想

✦ 分享奇妙发现

📌 近期动态:

探索AI和工具使用...

第12章 第116课

内网痕迹清理实战指南:像特工一样消失

大家好,今天我们来聊聊渗透测试中最容易被忽视但至关重要的环节——痕迹清理。就像你偷偷溜进图书馆禁区查阅资料后,得记得擦掉指纹和监控记录一样 ( ̄ω ̄;)


1. 痕迹清理:渗透测试的"消尸灭迹"

(1) 为什么要清理痕迹?

想象这样一个场景:

  • 你通过漏洞拿到了某台服务器的Webshell
  • 管理员发现异常后开始调查日志
  • 如果看到你的IP和操作记录,分分钟封杀+溯源

类比大学生活
就像你半夜溜进实验室用设备,如果忘记清理门禁记录,第二天导师查监控就知道是谁干的了...

(2) 清理的核心目标

1. 删除直接证据(如爆破记录、上传的马儿)
2. 干扰调查方向(伪造正常日志掩盖异常)
3. 争取更多时间(让管理员难以判断入侵时间点)

2. Windows日志清理实战

(1) Windows日志体系解析

1. **Security**:登录/权限变更记录(最危险!)
- 事件ID 4624:成功登录
- 事件ID 4625:失败登录
2. **System**:服务/驱动加载记录
3. **Application**:软件运行记录
4. **IIS/FTP**:Web访问日志(如果存在)

(2) 手动清理方法

# 查看日志统计(先摸清战场)
wevtutil gli Security
# 输出示例:
# creationTime: 2023-10-01T00:00:00.000Z
# lastAccessTime: 2023-10-15T08:30:00.000Z
# fileSize: 2048000

# 清空单个日志(最暴力但明显)
wevtutil cl Security

# 更隐蔽的方式(按ID删除)
# 需要管理员权限
Clear-EventLog -LogName Security -InstanceId 4624,4625

实战技巧

  • 优先清理最近1小时的记录(减少全量清理的异常)
  • 保留一些正常日志避免起疑

(3) 日志伪造术

# 伪造一条"正常"登录记录
$log = New-Object System.Diagnostics.EventLog("Security")
$log.Source = "Microsoft-Windows-Security-Auditing"
$log.WriteEntry("An account was successfully logged on", "Information", 4624)

注意
企业级SIEM系统可能会检测日志时间戳异常,慎用!


3. Linux痕迹清理:从Bash到隐身

(1) 基础清理命令

# 清空当前用户的历史命令
history -c && history -w

# 更彻底的做法(所有用户的记录)
echo "" > ~/.bash_history
echo "" > /root/.bash_history

# 删除最近使用的文件记录
echo "" > ~/.local/share/recently-used.xbel

(2) 隐藏文件操作痕迹

# 查看文件访问记录(需root)
cat /var/log/audit/audit.log | grep "open"

# 使用libeatmydata绕过文件系统同步(高危操作)
LD_PRELOAD=libeatmydata.so rm -rf /tmp/malware

风险提示
这种操作可能导致文件系统损坏,测试环境慎用!

(3) SSH登录记录清理

# 定位auth.log位置(不同发行版可能不同)
ls /var/log/auth.log* /var/log/secure*

# 删除特定IP记录
sed -i '/192.168.1.100/d' /var/log/auth.log

# 更隐蔽的方式(整行替换)
sed -i 's/192.168.1.100/8.8.8.8/g' /var/log/secure

4. Web服务日志清理

(1) IIS日志清理

# 定位日志路径(默认在C:\inetpub\logs)
Get-ChildItem C:\inetpub\logs\LogFiles\* -Recurse | Where-Object { $_.LastWriteTime -gt (Get-Date).AddHours(-1) }

# 删除特定IP记录
Select-String -Path "C:\inetpub\logs\*.log" -Pattern "192.168.1.100" | ForEach-Object { $_.Path } | Remove-Item

(2) Apache/Nginx清理

# 定位访问日志
find /var/log/{apache2,nginx} -name "access.log*"

# 使用logrotate伪造日志(需要root)
logrotate -f /etc/logrotate.d/nginx

高级技巧
修改系统时间后生成"合法"日志,再改回正确时间(需极快操作)


5. 防御与反制措施

(1) 企业级防护建议

1. **日志外发**:配置syslog实时发送到远程服务器
2. **文件监控**:使用inotify监控关键日志文件变动
3. **完整性校验**:定期检查日志文件hash值

(2) 管理员检测命令

# Linux下检查日志文件完整性
sha1sum /var/log/*.log > /tmp/log_hashes.txt

# Windows下检测日志服务异常
Get-WinEvent -LogName Security -MaxEvents 1 | FL *

6. 痕迹清理流程图

graph TB A[渗透完成] --> B{目标系统} B -->|Windows| C[清理事件日志+Web日志] B -->|Linux| D[清除history+auth.log] C & D --> E[检查临时文件] E --> F[验证清理效果]

最后忠告

  • 在授权测试中谨慎清理日志
  • 某些行业(如金融)有严格的日志留存法规
  • 没有完美的清理方法,最好的防御是不留痕操作 (╯°□°)╯︵ ┻━┻

下次我们聊聊如何在操作过程中实时规避日志记录,想深入了解的同学可以留言~

posted on 2025-08-08 12:07  鱼油YOU  阅读(141)  评论(0)    收藏  举报