某天,到公司,查看服务器。其中一台服务器的对外流量暴涨到了20Mbps(买的带宽最大值),而这台服务器平时的流量都只是1Mbps之内。通过ssh,由于带宽完全被占满,几乎连不进去了。只能找通过机房人员,让他们把服务器流出带宽限定在一定范围内。服务器为CentOS6.5
查看历史执行脚本,发现多了以下一些奇怪的脚本执行:
46 ethtool eth0
47 /etc/init.d/iptables stop
48 service iptables stop
49 SuSEfirewall2 stop
50 reSuSEfirewall2 stop
51 echo "nameserver 8.8.8.8" >> /etc/resolv.conf
52 chmod 0777 2444
53 chmod u+x 2444
54 ./2444 &.
55 chmod 0777 2444
56 chmod u+x 2444
57 ./2444 &
进去服务器之后,通过top命令,发现了几个异常的进程,名字很奇怪,如ypyvjyodov等:
最开始,用kill -9 PID,杀掉这些进程,但是这些进程消失之后,top查看,重新又出现了好几个类似的进程。mygod,这是完全kill不掉的节奏!
接下来,尝试了第二种方式,就是通过whereis ypyvjyodov 查找命令所在,然后到相应目录下删除之,结果还是和kill一样!直接修改命令文件,对这些进程都没有影响!
之后,我尝试了对服务器的的启动服务检测:chkconfig --list,发现多了很多的服务:如abrt-ccpp ,abrtd ,acpid ,atd ,autofs ,blk-availability ,certmonger ,cgconfig ,cgred ,cpuspeed ,cups ,haldaemon ,irqbalance ,kdump ,lhpoeizkfw ,libvirt-guests ,lvm2-monitor ,mcelogd ,mdmonitor ,nfs ,nfslock ,ntpd ,numad ,oddjobd ,portreserve ,psacct ,quota_nld ,rngd ,rpcbind ,rpcgssd ,rpcsvcgssd ,sssd ,smartd ,svnserve ,wbtsabcfvm ,winbind ,xvvywwwsnr ,xvzzwtskrd ,ypbind
对这些服务的文件进行检查,进入/etc下,多了一堆的配置文件:
abrt acpi alsa at.deny certmonger cgconfig.conf cgrules.conf
cgsnapshot_blacklist.conf cups drirc elinks.conf foomatic ghostscript
gssapi_mech.conf hal ipa java jvm jvm-commmon kdump-adv-conf kdump.conf
latrace.conf latrace.d libreport libvirt lsb-release lsb-release.d ltrace.conf lvm
mailcap mail.rc maven mcelog mime.types nanorc netconfig nfsmount.conf ntp.conf
numad.conf oddjob oddjobd.conf oddjobd.conf.d pm-utils-hd-apm-restore.conf
portreserve prelink.cache prelink.conf prelink.conf.d quotagrpadmins quotatab
readahead.conf redhat-lsb request-key.conf request-key.d samba scl setuptool.d sssd
subversion Trolltech.conf updatedb.conf warnquota.conf yp.conf
发现这些之后,心里有些小激动,然后就是删除服务、文件、重启服务器,以为一切都是那么的顺理成章。然而,服务器重启之后,并没有发现奇迹!这些服务确实不存在了,但是类似的进程,还是好好的!重新看了一下自启动服务:
这之后,我在想,是不是有定时任务在执行呢,然后执行了命令:ls -l /etc/cron.*,发现了很多任务在跑:
执行命令:cat /etc/crontab,发现2个定时脚本在跑:/etc/cron.hourly/kill.sh,/etc/cron.hourly/gcc4.sh
难道就是这些任务的原因?清理掉这些任务之后,重新kill异常的进程,发现还是衍生了其他的进程!
再重新看这/etc/cron.hourly下的这两个文件,又重新生成了!那是不是这个病毒不但监听了kill信号,同时还监听了remove信号!
最后我在想,既然无法把你删除,那我干脆就把你修改了:修改了/etc/cron.hourly/kill.sh的脚本,同时修改这个脚本里面相关的/lib/libkill.so的信息,让其成为一个错误程序,并把他们的执行权限去掉:
这么修改之后,再kill掉那些进程,这次奇迹出现了:那些进程没有再启动了。
最后,这些病毒并没能完全清理,等把环境和数据都部署好了,还是需要重装服务器。
结语:虽然这次没有弄清楚这个病毒的原理,也没能完全消除它,但通过这些方式,希望能帮助遇到同样问题的人。