踏雪无痕—linux入侵痕迹清理指南

  • A+
所属分类:安全文章

旧文重发:修正及补充一些内容

踏雪无痕—linux入侵痕迹清理指南
0x00 前言
前段时间做项目遇到了一次翻车的情况——留的计划任务后门被管理员发现了,但是好在经过一番缠斗,权限还是比较稳的留住了。

而且还有意外的收获,从管理员执行的排查命令中了解到自己做痕迹清理还有哪些欠缺之处,索性整理一下Linux入侵痕迹清理的要点,水一篇文章。

0x01 清除登陆日志
我是通过ssh密码复用登陆目标的linux主机,那不可避免的会留下ssh登陆的痕迹,首先要清除的就是登陆日志这部分。

查看登陆记录有两条命令:lastlastlog,分别使用的是/var/log/wtmp/var/log/lastlog 日志文件。
踏雪无痕—linux入侵痕迹清理指南
两个文件都是二进制形式存储,之前分享过一个小工具可以很方便地修改这两个文件:
《小工具 | Linux登陆日志修改脚本》

除此之外,还有下面的日志会记录登陆信息(明文存储):
/var/log/messages
/var/log/secure
/var/log/auth.log
/var/log/audit/*
踏雪无痕—linux入侵痕迹清理指南
用vi或sed直接修改即可。

如果你登陆成功前做过几次失败的尝试,别忘记清除下面的登陆失败日志(二进制存储):
/var/log/btmp
踏雪无痕—linux入侵痕迹清理指南用echo全部清除,或者用utmpdump导出成文本文件,修改后再导入回去:
utmpdump /var/log/btmp >/var/log/btmp.file
vi /var/log/btmp.file
utmpdump  -r < /var/log/btmp.file/var/log/btmp

注意二进制文件不能用vi或sed修改,否则可能出问题。


附带两条用sed清除日志会用到的命令。

# 删除所有匹配到字符串的行

sed  -i '/192.168.108.33/'d  /var/log/messages

# 全局替换登录IP地址

sed -i  's/192.168.166.85/192.168.1.1/g' /var/log/secure


0x02 清除服务日志
一般是指清除拿权限过程中使用的服务,或留后门过程使用的服务。

比如你是通过webshell拿到的权限,记得清除web日志,不同的web容器日志在不同的位置,比如apache的可能在/var/log/httpd下面。

如果是通过数据库漏洞,要清除数据库的日志,一般在数据库软件根目录下,或/var/log目录下。

计划任务getshell,清除计划任务日志/var/log/cron

以此类推……

比较容易忽略的是,当你把一些后门软件注册成服务运行时,会在/var/log/messages里留下软件相关信息和启动记录。(比如打隧道)
踏雪无痕—linux入侵痕迹清理指南

0x03 清除历史命令
这个很重要啦,如果不清除自己在入侵后执行的命令history:
1、很容易被管理员发现入侵痕迹。
2、被发现后管理员可以理清楚你的入侵路径和后门位置,导致权限丢失。

查看历史命令的命令:history
踏雪无痕—linux入侵痕迹清理指南
记录历史命令的文件:~/.bash_history
踏雪无痕—linux入侵痕迹清理指南
有时你会发现,为什么文件记录和直接history查看的结果不一样,直接history能看到的命令似乎更多一点?

其实当前登陆用户执行过的命令会记录在一个缓冲区里,直到该用户退出登陆之后才会写入文件。而history命令能查看到缓冲区的内容,所以能看到的命令更多一点,缓冲区的内容只有自己可见。

了解这个原理,那清除历史命令的方法也很简单:每次退出使用【kill -9 $$】命令退出,不给当前的shell留时间去处理后事,缓冲区的命令也就没时间写入到文件了。

如果已经写入的怎么办,vi或sed修改~/.bash_history文件删除掉命令就好了。不建议全部清除,有种此地无银三百两的感觉。

0x04 不要用vim
修改或查看一些文件的时候,不要用vim。

否则你会在~/.viminfo文件中看到你打开过哪些文件,在vim里执行过什么命令(搜索哪些字符串),删除过什么内容。当然管理员也能看到。
踏雪无痕—linux入侵痕迹清理指南

0x05 文件时间
追求完美的话,一些敏感的文件或者你留下的后门要修改文件时间,不然可能会被管理员根据时间看出来文件被修改过。

ls -al命令可以查看文件时间。
踏雪无痕—linux入侵痕迹清理指南
touch -r命令修改文件时间——touch -r A B,使B文件时间变得和A文件相同。
踏雪无痕—linux入侵痕迹清理指南

一般来说这样就可以了,但是防不住管理员用stat命令查看。
踏雪无痕—linux入侵痕迹清理指南

stat命令可以看到三个时间:
最近访问时间(atime):只要文件的内容被读取,访问时间就会更新。
最近更改时间(mtime):当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变。
最近改动时间(ctime):当文件的状态(权限or属性)发生变化,就会相应改变这个时间。

后两个看名字可能不太好区分,它们还可以翻译成:数据修改时间,状态修改时间。

我们先改动一下passwd文件,用stat查看时间,发现三个时间全部更改了,这很容易被发现。
踏雪无痕—linux入侵痕迹清理指南

赶快用touch -r修改passwd文件的时间,再次查看
踏雪无痕—linux入侵痕迹清理指南
踏雪无痕—linux入侵痕迹清理指南
发现一个很严重的问题,touch -r只能同步最近访问和最近更改时间,但最近改动时间反而会更新到当前时间。有经验的管理员用stat命令只要重点看最近改动时间就会发现入侵痕迹。

怎么解决这个问题?了解了原理其实解决办法也很简单:
1、先修改系统时间。
date -s "20140712 18:30:50"
2、再修改文件时间即可。
踏雪无痕—linux入侵痕迹清理指南
3、最后别忘了把系统时间恢复:hwclock --hctosys
踏雪无痕—linux入侵痕迹清理指南

0x06 后记
踏雪无痕—linux入侵痕迹清理指南
VX公众号:《小黑的安全笔记》
这周总算没拖更,欢迎师傅们指点补充~

0x07 参考文献
https://mp.weixin.qq.com/s/i2WvFmF1qQjbx-BaStXb1Q
https://www.linuxprobe.com/linux-simple-2.html
https://www.cnblogs.com/pacino12134/p/11481258.html
https://www.cnblogs.com/morganchen/p/9437066.html


END.


喵,点个赞再走吧~

本文始发于微信公众号(小黑的安全笔记):踏雪无痕—linux入侵痕迹清理指南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: