管理员
|
阅读:2956回复:0
简述LINUX下的ROOTKIT查找
楼主#
更多
发布于:2011-12-18 19:21
![](http://www.atcpu.com/themes/extres/ithread/images/8A.gif) | | ![](http://www.atcpu.com/themes/extres/ithread/images/8C.gif) | ![](http://www.atcpu.com/themes/extres/ithread/images/8.gif) | 感谢修炼中的柳 投递 先介绍下这位大我一岁的蝈蝈,他师出凤姐,计从春哥,可谓是90后非主流脑残黑客复兴的希望所在 啃爹啊,我等了四个月的文章九这质量,唉。。答应不鄙视他。。 永远找不到MM疼的可怜的蝈蝈。。。 图片:115_3710_1fedc762a670096.jpg 最近关注了下linux 下的rootkit. linux下的rk分应用层和kernel层. 呃, 简单的看了下rkhunter.应用层的检查通常 都是些sshd后门.bind shell 和reverse shell. 这类东西都比较好检查. 首先是要保证被检查的机器环境是否干 净. rpm -qV 或者md5sum来检查下netstat ,ps ,lsof 什么的是否有被修改就好. 闲着蛋疼的最后去用busybox 编译个静态tool kit来检查. 接着可以分下情况检查了.port: 检查port是最容易发现问题的, 最后是nmap -p1-65535 localhost 和netstat -anp 对比着看. 发现netstat没有而nmap有得端口就很确定是有问 题的了. 可以直接telnet or nc进去看看.一般国内流行的ddrk ,shv5 和那些sshd后门都会无所遁形. 他们都要bind 个port 来等待连接嘛. 如果netstat有问题的最后还是替换回个干净的再继续. 接着可以看看reverse shell.通过netstat -antp可以看到端口和某个进程相关的. 对于端口我们可以用lsof -i:[port] 来看看那个port的详细的东西.. 往 往可以很2b 发现些文件. 然后就是lsof -p [pid] 检查那个进程用到的文件. 我们可以strings 下那个文件看看详细内容. 一般的检查完了,我们可以用些2b点得检查.. 当你看了rkhunter的应用层rk特征的时候. 就会发现那些rk都是存放在些很2b目录中. find / -name "..."find / -name " "find / -name ".. "find / -name ".. "find / -name ".bashrc" // check if in other dirs 不解释. 然后就是些敏感的目录自己手工看看. /lib/.* /usr/lib/.* /bin/.log /usr/lib/.lib /usr/bin/.system /dev/.* /dev/proc/.* 默认那些目录见到以 ”.” 隐藏的都很可疑..嘿嘿接着rkhunter会检查常见目录的/bin /sbin /usr/bin /usr/sbin 等文件中是否有敏感文件被sh 文件替换.所以现在的很多情况都会误报/sbin/ifup和ifdown :) 貌似现代的rk都不用这种方法了吧:( 还 有一种就是曾经,或者现在貌似都很流行的sshd backdoor. 这种后门是替换了我们最爱的sshd然后通过万能密码登陆. 这种方法其实是相当 不错的. 不过 做过这种后门的同学都知道, 这种后门是在用户登陆的时候检查passwd前先把用户输入的密码跟个字符串比较(sb点得会用明文密码, 聪明点的会用des加密了.). 而且有些坏同学还会考虑用它来盗取别人输入的密码(通常做法是open一个文件再把密码写进去), 基于这两点,我们可 以先用strings `which sshd` 分析下sshd,一般看到某些敏感的字符串就证明出事了.当然rpm -V 也能检查,还有就是md5dum. 另外就是strace `which sshd` 2>;1|grep open看看系统调用什么的都能很方便查出问题. 其实还有udp door,icmp door,irc bot的.. 不过现实中比较少见.呃,有兴趣的同学可以找我.. 在深层就是kernel级别的rk了深 层的rk现在很少见了,但kernel级别的rk都是杀伤力巨大的.有这种rk的存在,前面应用级的检查差不多都是徒劳的.中了这种rk最好的解决方法还 是重装.因为技术的问题.像我这样的小菜一般都是见识过几种adore和knark. 其他的基本都是编译不过的.(没有kernel head等等的原 因.我也不太懂,求赐教). 我就瞎扯下我了解的lkm的技术, rkhunter 检查lkm 很是蛋疼, 居然是直接比较lsmod 输出 和/proc/modules 两个文件中的module是否相同. 貌似adore就能绕过这个检查了. 好点的检查貌似是能利用kstat. 一般 的lkm rk都是通过读取并修改syscall 来隐藏自身,隐藏端口,端口复用什么的.通过kstat我们可以来检查kernel 的syscall 是否被修改. 呃,现在最好的办法貌似就是这个了. ps:http://www.reddit.com/r/linux/comments/9zqm5/what_is_the_most_advanced_rootkit_for_linunix/
| | ![](http://www.atcpu.com/themes/extres/ithread/images/8G.gif) | | ![](http://www.atcpu.com/themes/extres/ithread/images/8I.gif) |
|