痕迹清理干完活之后怎么把日志清干净"

admin 2026-10-16 02:51:37 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

痕迹清理干完活之后怎么把日志清干净

原创

围巢安全笔记
围巢安全笔记

围巢安全笔记

2026年10月9日 09:00
北京

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

WEB 漏洞精讲 · 第 31 篇

上次打一个靶场,拿到了服务器权限,执行了一堆命令,结果第二天管理员就发现了,因为我没清日志。后来才知道,干完活之后第一件事不是庆祝,是清日志——不然你干了啥,管理员看日志就全知道了。痕迹清理这东西,是渗透测试最后一步,也是最容易被忽略的一步。

这篇把痕迹清理的常见方法讲清楚,分Windows和Linux两部分,约 3200 字,附 2 个冷门干货。

01|为什么要清日志

简单说,日志就是服务器的\"监控录像\"。你在服务器上干了啥——登录了、执行了什么命令、上传了什么文件、修改了什么配置——全都记录在日志里。管理员只要一看日志,就知道你干了啥,甚至能追溯到你的IP。

所以干完活之后,一定要清日志。不是说清了日志就一定不会被发现,而是至少能增加管理员排查的难度,拖延时间。

清日志的原则:

  • 不要全删

——全删日志太明显了,管理员一看日志没了,就知道被黑了。最好是只删自己的操作记录,保留其他正常日志
* 清完之后恢复原样

——日志文件的大小、修改时间都要恢复,不然管理员一看日志文件大小不对,就知道被改过了
* 所有地方都要清

——不只是系统日志,还有Web日志、FTP日志、SSH日志、数据库日志、bash历史记录,都要清

02|Windows日志清理

  1. 一键清空所有日志

最简单粗暴的方式,直接用wevtutil命令清空所有日志。

# 查看所有日志列表
wevtutil el

# 清空单个日志
wevtutil cl System
wevtutil cl Security
wevtutil cl Application

# 一键清空所有日志(用for循环)
for /F \"tokens=*\" %a in ('wevtutil el') do wevtutil cl \"%a\"

# 注意:在批处理文件里要用%%a代替%a
# 在cmd命令行里直接用%a

# 还有个更简单的工具:MetaSploit的meterpreter
# 直接运行 clearev 命令,一键清空所有日志
meterpreter > clearev
[*] Wiping 5 records from Application...
[*] Wiping 12 records from System...
[*] Wiping 8 records from Security...

Windows事件查看器里右键清除日志

  1. 精准删除指定日志(更隐蔽)

全删日志太明显了,最好是只删自己的操作记录。可以用wevtutil导出日志,然后过滤掉自己的记录,再导入回去。

# 导出安全日志为evtx格式
wevtutil epl Security C:\\temp\\security.evtx

# 导出为XML格式(方便编辑)
wevtutil epl Security C:\\temp\\security.xml /f:xml

# 然后用文本编辑器打开XML,删掉自己的登录记录
# 比如Event ID 4624(登录成功)、4634(注销)、4672(管理员登录)
# 找到包含你IP的记录,删掉

# 清空原日志
wevtutil cl Security

# 导入修改后的日志
wevtutil il C:\\temp\\security.evtx

# 注意:导入之后日志的时间戳可能会变
# 而且这种方式比较麻烦,一般不推荐
# 除非你有特殊需求,必须保留其他日志
  1. 清除其他痕迹
# 清除最近打开的文件记录
del /f /q %APPDATA%\\Microsoft\\Windows\\Recent\\*

# 清除运行对话框的历史记录
reg delete \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU\" /f

# 清除搜索历史
reg delete \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\WordWheelQuery\" /f

# 清除远程桌面连接历史
reg delete \"HKCU\\Software\\Microsoft\\Terminal Server Client\\Default\" /f
reg delete \"HKCU\\Software\\Microsoft\\Terminal Server Client\\Servers\" /f

# 清除回收站
rd /s /q C:\\$Recycle.Bin

# 清除预读取文件(记录程序运行记录)
del /f /q C:\\Windows\\Prefetch\\*

# 清除临时文件
del /f /q %TEMP%\\*
del /f /q C:\\Windows\\Temp\\*

# 清除DNS缓存
ipconfig /flushdns

# 清除ARP缓存
arp -d *

干货修改文件时间戳:让管理员看不出文件被改过

清完日志之后,还要修改文件的时间戳,不然管理员一看文件修改时间不对,就知道被改过了:

# Windows修改文件时间戳(用PowerShell)
# 修改创建时间
(Get-Item \"C:\\path\\to\\file\").CreationTime = \"2026-01-01 00:00:00\"

# 修改最后修改时间
(Get-Item \"C:\\path\\to\\file\").LastWriteTime = \"2026-01-01 00:00:00\"

# 修改最后访问时间
(Get-Item \"C:\\path\\to\\file\").LastAccessTime = \"2026-01-01 00:00:00\"

# 批量修改一个目录下所有文件的时间戳
Get-ChildItem \"C:\\path\\to\\dir\" -Recurse | ForEach-Object {
    $_.CreationTime = \"2026-01-01 00:00:00\"
    $_.LastWriteTime = \"2026-01-01 00:00:00\"
    $_.LastAccessTime = \"2026-01-01 00:00:00\"
}

# 还有个更简单的工具:touch(Linux命令,Windows也有对应工具)
# 把文件时间戳改成和另一个文件一样
touch -r reference.txt target.txt

# 注意:NTFS文件系统还有个MFT(主文件表)
# 里面记录了文件的真实创建时间
# 即使你改了文件属性里的时间,MFT里的时间还是原来的
# 专业的取证工具能从MFT里读出真实时间
# 所以修改时间戳只能骗骗普通管理员,骗不了专业取证

修改时间戳是痕迹清理里很重要的一步,很多人只清日志,忘了改文件时间,结果被管理员发现。

03|Linux日志清理

  1. 常见的日志文件
# Linux常见的日志文件(很重要,都要清):

# /var/log/wtmp —— 登录成功记录(用last命令查看)
# /var/log/btmp —— 登录失败记录(用lastb命令查看)
# /var/log/utmp —— 当前登录用户(用who命令查看)
# /var/log/lastlog —— 每个用户最后一次登录时间(用lastlog命令查看)
# /var/log/auth.log —— 认证日志(Debian/Ubuntu)
# /var/log/secure —— 认证日志(CentOS/RHEL)
# /var/log/messages —— 系统日志
# /var/log/syslog —— 系统日志(Debian/Ubuntu)
# /var/log/kern.log —— 内核日志
# /var/log/cron —— 计划任务日志
# /var/log/maillog —— 邮件日志
# /var/log/httpd/ —— Apache日志
# /var/log/nginx/ —— Nginx日志
# ~/.bash_history —— bash命令历史记录
# ~/.mysql_history —— MySQL命令历史记录
# ~/.python_history —— Python命令历史记录
  1. 一键清空所有日志
# 最简单的方式:直接清空日志文件内容(不删除文件)
# 用 > 符号重定向,把文件内容清空
> /var/log/wtmp
> /var/log/btmp
> /var/log/utmp
> /var/log/lastlog
> /var/log/auth.log
> /var/log/secure
> /var/log/messages
> /var/log/syslog
> /var/log/kern.log
> /var/log/cron
> /var/log/maillog

# 清空Web日志
> /var/log/httpd/access_log
> /var/log/httpd/error_log
> /var/log/nginx/access.log
> /var/log/nginx/error.log

# 清空当前用户的bash历史
> ~/.bash_history
history -c  # 清除当前会话的历史记录

# 一键清空所有日志(用for循环)
for log in /var/log/*; do > $log; done

# 注意:不要用rm删除日志文件
# 因为删除之后日志服务可能不会自动重建
# 而且删除文件会留下文件删除的记录
# 用 > 清空内容,文件还在,只是内容没了
# 这样更隐蔽
  1. 精准删除指定日志(更隐蔽)
# 从auth.log里删除包含你IP的记录
grep -v \"你的IP\" /var/log/auth.log > /tmp/auth.log
mv /tmp/auth.log /var/log/auth.log

# 从wtmp里删除你的登录记录(wtmp是二进制文件,不能直接编辑)
# 用utmpdump工具导出为文本,编辑后再导入
utmpdump /var/log/wtmp > /tmp/wtmp.txt
# 编辑/tmp/wtmp.txt,删掉你的记录
utmpdump -r /tmp/wtmp.txt > /var/log/wtmp

# 清除lastlog里你的记录
# lastlog也是二进制文件,用lastlog命令查看
# 可以直接清空:
> /var/log/lastlog

# 清除bash历史里的指定命令
# 方法1:直接编辑~/.bash_history文件,删掉你的命令
# 方法2:用sed删除包含关键字的行
sed -i '/你的关键字/d' ~/.bash_history

# 更骚的操作:执行命令的时候不记录到历史
# 在命令前面加个空格,bash就不会记录这条命令
# (需要设置HISTCONTROL=ignorespace,默认就是这个设置)
 whoami  # 前面有空格,不会被记录

# 或者临时关闭历史记录
set +o history  # 关闭
# 执行你的命令
set -o history  # 重新开启

干货Linux文件时间戳修改和日志服务重启

清完日志之后,还要修改文件时间戳,并且重启日志服务,不然日志服务可能还在缓存里写:

# 修改文件时间戳(Linux用touch命令)
# 把文件时间戳改成指定时间
touch -t 202601010000.00 /var/log/auth.log
# 格式:YYYYMMDDhhmm.ss

# 把文件时间戳改成和另一个文件一样
touch -r /var/log/syslog /var/log/auth.log

# 批量修改一个目录下所有文件的时间戳
find /var/log -exec touch -t 202601010000.00 {} \\;

# 重启日志服务(清空之后要重启,不然服务可能还在写)
# Debian/Ubuntu:
systemctl restart rsyslog
# CentOS/RHEL:
systemctl restart rsyslog
# 或者:
service rsyslog restart

# 重启auditd(审计服务)
systemctl restart auditd

# 注意:有些日志服务会在重启的时候记录一条\"服务已重启\"的日志
# 这条日志是正常的,不用删
# 管理员看到也不会觉得奇怪

# 还有个更隐蔽的方式:不重启服务,直接用日志轮转
# logrotate -f /etc/logrotate.conf
# 这会强制轮转日志,旧日志会被压缩归档,新日志开始记录
# 这样看起来就像是正常的日志轮转,不是被人为清空的

用logrotate强制轮转日志,比直接清空更隐蔽,因为看起来就像是正常的日志轮转。

痕迹清理这东西,核心原则就是——不要留下任何你来过的证据。日志要清,文件时间戳要改,命令历史要删,临时文件要删,回收站要清。而且要清得自然,不要全删,全删太明显了。最好是只删自己的操作记录,保留其他正常日志,让管理员看不出异常。

但是要记住,痕迹清理只能拖延时间,不能完全消除痕迹。专业的取证人员能从很多地方恢复出你删除的痕迹——比如内存、磁盘未分配空间、网络设备日志、云平台审计日志等等。所以不要以为清了日志就万事大吉了。

下一篇我们聊横向移动——拿到一台服务器之后,怎么控制整个内网。我们下篇见。

围巢安全笔记

不生产焦虑,只分享踩过的坑和挖过的洞

你还有什么痕迹清理的小技巧?评论区聊聊 👇

有想聊的话题,后台留言告诉我

往期回顾

  • 权限维持:拿到服务器之后,怎么留后门,下次还能进来
  • WAF绕过:你的payload一提交就被拦?这10个冷门技巧让它畅通无阻
  • 域渗透:Kerberos攻击的几种姿势
  • 端口转发:拿到webshell之后,怎么把内网的端口转到本地来

痕迹清理干完活之后怎么把日志清干净" 网络安全文章

痕迹清理干完活之后怎么把日志清干净"

本文介绍渗透测试中痕迹清理的方法,强调清日志是渗透测试最后一步且最易被忽略。文章分Windows和Linux两部分,讲解清空日志、精准删除指定日志、修改文件时间戳等技巧,并附两个冷门干货:修改文件时间戳和用logrotate强制轮转日志。核心原则是不要全删日志、清完恢复原样、所有地方都要清,但痕迹清理只能拖延时间,不能完全消除痕迹。
AI黑客连袭7家韩国金融机构,为何惊动李在明?" 网络安全文章

AI黑客连袭7家韩国金融机构,为何惊动李在明?"

韩国7家金融机构遭AI辅助黑客攻击,约6.8万人资料泄露,惊动总统李在明。攻击入口涉及贷款查询和移动办公系统,Crowdstrike发现攻击者使用Artex与ClaudeCode配合。事件暴露AI降低攻击门槛,引发对后续诈骗风险的担忧。政府要求彻查并加强安全体系,银行需明确资料泄露入口及补救措施。
借GitHub一首诗把C2藏起来:PoeLLM凭啥11次绕过NDR/EDR还感染3400台AI服务器" 网络安全文章

借GitHub一首诗把C2藏起来:PoeLLM凭啥11次绕过NDR/EDR还感染3400台AI服务器"

PoeLLM是LumenBlackLotusLabs披露的Linux挖矿僵尸网络,利用对抗性诗歌与文学隐写技术将C2IP藏于GitHub仓库诗歌中,通过关键词查词典拼出真实地址,11次轮换C2均无流量特征变化。其利用LiteLLM漏洞链(CVE-2026-42271+CVE-2026-48710)实现未认证RCE,已感染3400+台AI服务器,峰值日活800台。该技术击穿NDR白名单策略、EDR合法进程判据及SOC威胁情报体系,代表红蓝对抗新范式。
评论:0   参与:  0