很久以前的一次意外发现,记录一下。

a) 发现

ps aux无意间发现有个进程在cat resolv.conf,由于是新机器,我也没有加脚本,一会ifconfig 一会cat resolv.conf,觉得奇怪,四处看了下,没有发现是哪个进程在运行,systemctl -l|grep running在看的时候发现cron,觉得会不会是cron有我不知道的任务,果然,cat /etc/crontab发现最后一行

1
/3 * * * * root /etc/cron.hourly/gcc.sh

cat一下

1
2
3
4
5
6
$ cat /etc/cron.hourly/gcc.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/libudev.so /lib/libudev.so.6
/lib/libudev.so.6

b) 处理

通过关键词 cron gcc libudev的google搜索,确定这是一个病毒程序,会随机生成一个10位字符的进程,不停向外发包,鬼知道我怎么没有发现流量有异常

1
2
$ file /lib/libudev.so
/lib/libudev.so: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped

竟然是一个32位ELF程序
top查看到有一个名字奇怪的进程就是它了,我的是叫efpyfexmrl

1
2
$ top -p 6818
6818 root 20 0 25592 688 408 T 0.0 0.1 15:35.97 efpyfexmrl

在crontab下把最后一行删掉后,设置无法修改crontab,防止再次出现gcc.sh

1
$ rm -f /etc/cron.hourly/gcc.sh ; chattr +i /etc/crontab

这时不能直接kill进程,不然会再次生成新进程

1
$ kill -STOP 6818

删除rc.d init.d下相关文件

1
$ find /etc/ -name "*efpyfexmrl*"|xargs rm -f

删除/usr/bin下程序并且检查有没有最近出现的可疑程序

1
2
$ rm -f /usr/bin/efpyfexmrl
$ ls -lt /usr/bin | head

现在删除掉元凶/lib/libudev.so,并kill掉之前的进程

1
2
$ rm -f /lib/libudev.so*
$ kill -9 6818

最后,自觉这次事故的元凶还是弱口令,赶紧重新设置了一个新的密码,千万不能存在侥幸心理,太吓人了

c) 总结

这次的事情,完全是误打误撞解决掉的,发现问题定位没有方向,连top都没有第一时间想到,必须引以为戒,不可大意

d) 参考

感谢两位大大的文章,让我解决了这个问题

Linux 10字符串命令病毒的处理记录

Linux之在CentOS上一次艰难的木马查杀过程