❝⚠️ 免责声明:本文仅供网络安全从业者、渗透测试人员及系统管理员进行合规授权的红蓝对抗演练或安全研究使用。未经授权利用本文涉及的技术清理入侵痕迹、掩盖犯罪行为属于违法行为。
在红队行动(Red Team Operation)或渗透测试中,“后渗透阶段”(Post-Exploitation) 的一个关键环节就是痕迹清理(Track Covering)。高明的攻击者不仅能攻破防线,更能在撤退时像“幽灵”一样消失,不留下一丝由于操作失误而产生的日志或文件残留,从而增加蓝队(防御方)溯源取证的难度。linux内网渗透中常见的痕迹清理技巧
本文将深入剖析 Linux 环境下常见的痕迹清理技巧。
Linux 系统的日志机制非常成熟,主要依赖于 Shell 历史记录、文本日志(Syslog)和二进制日志(Accounting Logs)。清理的核心在于:只删除与自己相关的记录,而不是暴力清空所有日志(那样反而会引起管理员警觉)。
一、Shell 历史记录清理(Bash History)
这是最容易暴露行踪的地方。当你输入命令时,它们通常会被记录在内存中,并在注销时写入 ~/.bash_history。
当前会话不记录历史: 在执行敏感命令前,设置当前 Shell 不记录历史。
1、设置 HISTSIZE 为 0
export HISTSIZE=0
image-20260123155931928如图所示,history在当前终端中已经不再奏效,查看不到历史执行过的命令了
2、将历史记录指向空设备
export HISTFILE=/dev/null
image-20260123160006831结果显示此方法同样适用
清除当前会话历史: 如果你已经操作了一半,想清除当前缓存:
history -c
image-20260123155110421针对性删除特定命令: 如果只想删除刚才输入的某条敏感命令(例如whoami命令):
# 假设该命令是历史记录中的第 2 条
history -d 2
image-20260123155243725隐蔽执行(空格大法): 在大多数默认配置的 Linux 发行版中,在命令前加一个空格,该命令就不会被记录到 history 中。
whoami <-- 注意前面的空格
image-20260123155321713二、系统日志清理(文本日志)
主要涉及 /var/log/ 目录下的文件,如 auth.log(认证日志)、syslog(系统日志)、messages 等。
切忌直接 rm 删除日志文件: 这会造成服务报错,且蓝队监控系统会立刻报警“日志文件丢失”。
使用 sed 进行针对性“隐身”: 假设你的攻击 IP 是 192.168.1.100,或者是特定的用户名 hacker,你应该只过滤掉包含这些特征的行。
# 清理包含特定 IP 的日志行,并覆盖原文件
sed -i '/192.168.1.100/d' /var/log/auth.log
sed -i '/192.168.1.100/d' /var/log/syslog
image-20260123161403906三、Linux 计划任务(Cron)痕迹清理
计划任务是留后门最常见的方式,因此也是蓝队排查的重点。清理不仅要删任务,还要删“任务运行过的证据”。
根据你创建计划任务的方式不同,清理位置也不同:
如果是通过 crontab -e 创建的(用户级): 这些文件通常位于 /var/spool/cron/crontabs/用户名 或 /var/spool/cron/用户名。
有下面两种清理方式,一种是直接清除当前用户的所有计划任务,第二种是删除某一个计划任务
# 删除当前用户的所有计划任务
crontab -r
# 或者进入编辑模式手动删除那一行
crontab -e
image-20260123170234184隐蔽痕迹(如果需要): 蓝队正在监控 crontab 命令的调用,你可以操作此文件(需要 root 权限):
# 删除对应的任务文件
rm /var/spool/cron/crontabs/root
image-20260123170337051如果是写入系统目录的(系统级): 你可能在 /etc/crontab,/etc/cron.d/,或者 /etc/cron.daily/ 等目录留下了文件
如何清理? 我们可以删除上传或者创建的文件,比如你创建了一个每天执行的计划任务名称叫my_backdoor,那么你就可以执行如下命令删除这个计划任务
rm /etc/cron.d/my_backdoor
注意事项(时间戳): 如果你修改了 /etc/crontab 文件,文件的“修改时间”会更新。
image-20260123171744628记得用 touch -d 伪造时间戳,将其改回修改前的时间,或者参考邻近文件的时间。
touch -d "2025-08-05 17:14:01" /etc/crontab
image-20260123191325311第二种伪造时间方法,修改系统时间
# 停止时间同步服务
systemctl stop systemd-timesyncd
# 设置时间
date -s "2025-10-08 06:22:44"
# 查看是否设置成功
date
# 编辑文件
vi /etc/crontab
# 查看文件编辑时间
stat /etc/crontab
# 开启时间同步服务用于恢复系统默认设置,以及恢复当前时间
systemctl start systemd-timesyncd
# 查看是否恢复成功
date
image-20260123192106644通过如上操作,我们已经成功的将文件的Access、Modify、Change、Birth时间给修改到了原来文件时间
四、文件安全删除与时间伪造
安全删除(防止数据恢复): 上传的工具包用完必须删,但 rm 只是解除了引用。
# 覆盖文件内容 3 次并删除
shred -f -u -z -v /tmp/exploit.py
image-20260123192441023时间戳伪造(Timestomping): 如果你修改了系统配置文件(如 /etc/passwd),文件修改时间会变,很容易被发现。你可以参考一个旧文件的时间戳来掩盖。
# 将 /etc/passwd 的时间戳修改得和 /etc/hosts 一样,但是无法改变change时间还有birth、Access时间
touch -r /etc/hosts /etc/passwd
image-20260123193022529linux中除了这些,还有其他的痕迹清理方式,比如web访问日志,mysql写入日志,等等,这里就不细讲了,可以等待后期实战文章细讲,接下来是windows痕迹清理
五、总结
对于红队而言,目标是最大化隐藏;对于蓝队恰恰相反,需要最大化的发现渗透痕迹,本文介绍的技巧并不是鼓励攻击,而是为了学习渗透的同时赋能蓝队防守的技能学习。
六、🎁文末福利
分享本文到朋友圈,点赞+在看+关注,一键三联,可以凭截图找老师领取
上千学习资料+工具+交流群哦
22919c6e4ef945aa9a9cbf0f6df4f6ff分享后扫码加我!