灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2956回复:0

简述LINUX下的ROOTKIT查找

楼主#
更多 发布于:2011-12-18 19:21
感谢修炼中的柳 投递

先介绍下这位大我一岁的蝈蝈,他师出凤姐,计从春哥,可谓是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/


喜欢0 评分0
游客

返回顶部