一、现象
服务器不停的向外发包,网络流量暴满,且CPU持续100%。远程登录后查看发现有一长度为10的随机字符串进程,kill掉,会重新生成另外长度为10的字符串进程。删除文件也会重复生成
lsof -R | grep “/usr/bin”,发现主进程不变,总是产生几个辅进程,并且一直处于dedeted状态,这说明主进程会快速产生几个子进程,然后这些进程之间相互检测,一旦检测到病毒主体被删除或更改,就会再产生一个ps -ef | grep '字符串' #检索不到用pstree可以看到真实的名字12
二、查看crontab[root@localhost ~]# crontab -l #未发现异常任务[root@localhost ~]# cat /etc/crontab*/3 * * * * root /etc/cron.hourly/cron.sh
*/3 * * * * root /etc/cron.hourly/kill.sh1234
系统级任务就放在 /etc/crontab 下,一般不会去编辑它,用户级任务 crontab -e 在 /var/spool/cron/username里创建一个crontab文件cat /etc/cron.hourly/cron.sh#!/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/binfor 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/debug12345cat /etc/cron.hourly/kill.sh#!/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/binfor 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.612345
单看cron.sh基本能分析出来它的毒害原理了,我的猜测:
/lib/udev/udev是病原体,通过cron.sh每隔3min自动检测一次,如果***程序不存在,就从病原体复制一份儿到/lib/udev/debug
副本/lib/udev/debug执行,生成一个随机命名的程序,丢到/usr/bin/、/boot等目录
同时修改了自启动配置chkconfig –add xxx ,同时修改自启动项/etc/rc.local
三、解决
1、使用 top 查看病毒pid,为 16621,不要直接kill掉程序,否则会再产生,而是停止其运行kill -STOP 166211
2、删除相关病毒文件rm -rf /etc/cron.hourly/kill.sh /etc/cron.hourly/cron.sh
find /etc -name '*mtyxkeaofa*' | xargs rm -frm -f /usr/bin/mtyxkeaofa123
查看 /usr/bin 最近变动的记录,如果是病毒也一并刪除,其他可疑的目录也一样。ls -lt /usr/bin | head1
3、现在杀掉病毒程序,就不会再产生pkill mtyxkeaofa1
4、删除病毒本体rm -f /lib/udev/udev /lib/libudev.so1
四、总结:
1、/proc里面的东西是可以更改的;
2、lsof还比较忠诚,不直接读取/proc里面的信息,ps看到的就不一定真实,pstree和top看到的进程还是正确的。
3、留意/etc/crontab和/etc/cron.*下的几个任务目录
4、***程序的出现,而且是root账号下,应该是之前风靡的redis漏洞引起,redis内部服务器调用,可以监听内网