那些年我和痕迹赛跑的日子
说实话,每次聊到渗透测试日志清除这个话题,我这心里就五味杂陈,你别看网上那些教程写得冠冕堂皇的,什么“干净利落不留痕”,真到了实战环境里,那才叫一个手忙脚乱呢!今天我就掏心窝子跟大家唠唠这事儿,顺便把我踩过的坑、流过的汗都抖搂出来,希望能帮到刚入行的兄弟姐妹们。

为啥日志清除这事儿这么要命?
哎,你先别急着学技术,咱得先搞明白为啥要干这事儿,渗透测试嘛,说白了就是模拟黑客攻击,但你毕竟是“授权”的呀!可问题是——日志它不认授权啊!你登录服务器留下的每一条记录、执行的每一条命令、访问的每一个目录,全都乖乖地躺在系统日志里,测试结束要是不清理,客户那边安全团队一审计,好家伙,你的操作记录比黑客还扎眼,这像话吗?
我第一次做渗透测试日志清除的时候,那叫一个紧张,手心全是汗,老师说“记得清日志啊”,我嘴上答应着,心里直打鼓:清哪些?怎么清?清完了会不会把系统搞崩?现在回头想想,那时候真是又菜又爱玩,哈哈!
我踩过的那些坑,你可别再踩了
说到渗透测试日志清除的具体操作,我得先吐槽一下自己早期的蠢事,有一回我图省事,直接把 /var/log/ 目录下的文件全给 rm -rf 了,结果呢?系统服务直接报错,客户运维一个电话打过来:“兄弟你干啥了?日志服务起不来了!”我当时那个尴尬啊,恨不得找个地缝钻进去,所以啊,日志清除不是删文件,是精细活儿,你得知道哪些能碰、哪些碰不得。
一般来说呢,Linux 环境下重点关注这几个地方:/var/log/auth.log(认证日志,你登录的记录全在这儿)、/var/log/secure(CentOS 系的宝贝)、/var/log/wtmp 和 /var/log/btmp(登录成功和失败的记录)、还有 ~/.bash_history(哎呀这个最容易被忽略,你敲过的命令全在里面躺着呢),Windows 那边就更讲究了,事件查看器里的安全日志、系统日志、应用日志,一个都跑不了。
我现在的习惯是,测试之前先做个快照,测试完了对照着清,心里踏实,你要问我为啥?害,还不是被坑怕了嘛!
日志清除的正确姿势,咱得讲究点
好,接下来上干货。渗透测试日志清除这事儿,我总结下来就三个字:稳、准、狠,稳是指操作要稳,别一上来就大删大改;准是指目标要准,别误伤无辜;狠是指……呃,该清的必须清干净,别留尾巴。
具体操作上,我一般会分三步走,第一步,先看日志文件的时间和大小,心里有个数;第二步,用 sed、awk 或者 grep -v 把包含自己 IP 或者用户名的行给过滤掉,这招比直接删文件温柔多了;第三步,对于 wtmp、btmp 这类二进制日志,得用 utmpdump 导出再处理,或者干脆用 echo > 清空——不过清空前记得备份啊,万一客户要留档呢!
对了,还有个细节特别容易被忽略:时间戳,你把日志清了,但文件修改时间变了,运维一眼就能看出来“这日志被动过”,所以啊,清完之后用 touch -r 把时间戳还原回去,这招我用了好几年了,屡试不爽,当然啦,这些操作都得在授权范围内进行,咱可不能干违法的事儿,对吧?
Web 日志和数据库日志,也别放过
哎呀差点忘了说,渗透测试日志清除可不光是系统日志的事儿,你打 Web 应用的时候,Apache 的 access.log、Nginx 的 access.log,那记录得叫一个详细,你的 SQL 注入 payload、XSS 测试语句,全在里面明晃晃摆着呢,数据库那边,MySQL 的 general_log、slow_query_log,SQL Server 的错误日志,也都是重点照顾对象。
我一般会先用 tail -f 实时盯着日志看,测试完了一段一段地清,这样既不会漏,也不会误删客户的正常业务记录,说实话,这活儿考验的就是耐心,急性子真干不来,哈哈!
最后唠叨几句心里话
写了这么多,其实我最想说的是:渗透测试日志清除是门手艺,不是耍小聪明,你得懂系统、懂日志机制、懂业务场景,才能清得干净又不惹麻烦,我见过太多新手上来就是一顿猛操作,结果客户系统出问题,最后背锅的还是自己。
所以啊,兄弟们,动手之前多想一步,操作之前多问一句,清完之后多检查一遍,这行当里,谨慎永远比炫技重要,好了,今天就唠到这儿,我得去给客户写报告了——对了,报告里千万别提日志清除的细节啊,你懂的!😉
(本文涉及的技术操作请在合法授权范围内进行,切勿用于非法用途。)
延伸阅读: 想了解更多渗透测试实战技巧?可以看看我之前的文章 渗透测试入门指南,里面有不少踩坑经验分享哦!