阿里云CentOS木马查杀--/lib/udev/udev 进入全屏
一、背景
这两天发现自己的阿里云
服务器上CPU基本都是打满的,$> top
查看了一下,尽是些乱七八糟命名的进程,也是醉了:
再$> ll /proc/22303
看了一下,擦,我啥时候在/usr/bin/
下放过这东西了。。。
且杀之:
kill 22303
rm -f /usr/bin/lrzzxgbatw
以为一切都好了,过了两分钟再$> top
看了一下,尼玛,又一个不认识的东西出来了,CPU又吃满了,重复之前的方式,再杀了一次。。。
repeat。。。repeat。。。repeat。。。
二、排查
写了一个简单的crontab
程序来监控CPU占用最多的程序,都是啥:
#! sh
mail_to="xxx@xxx.com"
virus_found=1
log_path="/home/work/what-virus.log"
# 白名单进程
process_white_list="svn node mysql memcache redis nginx"
# 找到CPU占用最大的进程
process_result=$(ps auxw --sort=-%cpu | head -n 2 | tail -n 1 | awk '$3>50{print $0"\n"}')
for $w in $process_white_list;do
gpr=$(echo $process_result | grep $w)
if [[ x"$gpr" != x ]];then
virus_found=0;
break;
fi
done
# 发现真的有异常进程,则邮件报警
if [[ $virus_found == 1 ]];then
echo $process_result >> $log_path
echo $process_result | mail -s "virus found!" $mail_to
fi
的确,短短的时间内,报警一直在持续,而且,从报警内容中能看到,真正在执行的命令,都太简单:
root 24000 63.7 0.0 21316 468 ? Ssl Jan13 275:03 pwd
root 24000 63.7 0.0 21316 468 ? Ssl Jan13 275:03 su
root 24000 63.7 0.0 21316 468 ? Ssl Jan13 275:03 ls
好吧,就是这些简单的命令,大批量执行,搞挂了。。。
三、重启
想着,实在懒得花时间去跟到底了,试一试万能的重启
吧,结果,事不遂人愿
,重启了还尼玛一个样,那没办法,我只能猜测,这玩意儿已经是自动启动
了,于是检查了一下这两个东西:
1、chkconfig --list
lrzzxgbatw 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭
qzaclxgbjwo 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭
果然发现多出来这两个,什么鬼东西,果断chkconfig --del
掉!
2、vi /etc/rc.local
cp /lib/udev/udev /lib/udev/debug && /lib/udev/debug
这又是什么东西,也不是我亲自加的啊,陌生的东西都删掉!
这尼玛一定有鬼,看来,是必须要花时间继续分析的了。。。
四、定位
猜测应该是用crontab
定时拉起来的一堆木马
,于是查了下crontab的内容,果然:
1、/etc/crontab
*/3 * * * * root /etc/cron.hourly/cron.sh
*/3 * * * * root /etc/cron.hourly/kill.sh
这两个定时任务,并非我亲自加的,那就应该有鬼了,继续看这两个*.sh
文件
2、/etc/cron.hourly/cron.sh
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
cp /lib/udev/udev /lib/udev/debug
/lib/udev/debug
3、/etc/cron.hourly/kill.sh
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
cp /lib/libkill.so /lib/libkill.so.6
/lib/libkill.so.6
为毛别的系统都没有这两个东西,而且内容还这么古怪,单看cron.sh
基本能分析出来它的毒害
原理了,我的猜测:
/lib/udev/udev
是病原体- 通过
cron.sh
每隔3min
自动检测一次,如果木马程序不存在,就从病原体复制一份儿到/lib/udev/debug
- 副本
/lib/udev/debug
执行,生成一个随机命名
的程序,丢到/usr/bin/
、/boot
等目录 - 同时修改了自启动配置
chkconfig --add xxx
- 同时修改自启动项
/etc/rc.local
五、解决
问题定位了,就好解决了
- 删除病原体
/lib/udev/udev
以及其副本`/lib/udev/debug
- 删除
/usr/bin/
、/boot/
下可疑的程序 - 删掉自启动配置中可疑的item:
chkconfig --del xxx
- 删掉可疑的自启动项:
vi /etc/rc.local
- 删除
/etc/crontab
下可疑的任务 - 删除
/etc/cron.hourly/
下可疑的sh
脚本 - 重启,这一步可能只是一个心理安慰
六、回头再想想
木马程序为毛会出现,而且是root
账号下,应该是之前风靡的redis
漏洞引起的吧,只怪我修复的太晚!
另外,从/var/log/sercure
日志也能分析出来,系统的确存在root
账号暴力破解,算了,root
太危险,索性禁用掉吧!