前天遇到求助,说某服务器大量对外发包,怀疑是中病毒了,已经把网络断开,但是相关的服务也就不可用了。
于是进机房,登录到该服务器上,CentOS 系统,root 弱密码,呵呵呵~理想的“肉鸡”。
先执行 top 看看有什么进程,果然看到有好几个进程,随机名称,而且还过几秒就变一次。好玩~
首先查看定时任务 crontab -l
,有 2 条定时从某 IP 上下载 shell 脚本的任务,干掉。
再到 /etc/init.d 下查看,好几个随机名称的启动项。干不掉,删了又生成新的。一时没了主意。
回到工位,打开 bing,搜索 "process random name virus",找到这个回答,描述的现象很相似。是一个用于发起 DDoS 攻击的木马。
Unknown linux process with random command
I have some experiences about this random 10bit string trojan, It will send lots of packets for SYN flood.
Cut down your network
The trojan has raw file coming from /lib/libudev.so, it will copy and fork again. It will also add cron.hourly job named gcc.sh, then it will add initial script in your /etc/rc*.d (Debian, CentOS may be /etc/rc.d/{init,rc{1,2,3,4,5}}.d)
Use root to run the script below to change the folder privileges: chmod 0000 /lib/libudev.so && rm -rf /lib/libudev.so && chattr +i /lib/
Delete all /etc/rc{0,1,2,3,4,5,6,S}.d files which were created today, The name looks like S01????????.
Edit your crontab, delete the gcc.sh script in your /etc/cron.hourly, delete the gcc.sh file (/etc/cron.hourly/gcc.sh) then add privileges for your crontab: sed '/gcc.sh/d' /etc/crontab && chmod 0000 /etc/crontab && chattr +i /etc/crontab
Use this command to check the latest file changes: ls -lrt
If you find any suspicious files named S01xxxxxxxx (or K8xxxxxxxx), delete it.
Then you should reboot without network.
Then the trojan should be cleaned and you can modify the folder privileges to the original values(chattr -i /lib /etc/crontab).
于是按照所说的方法,确认服务器的确存在相关的文件,逐步删除,重启服务器,清除完毕。
-
chmod 0000 /lib/libudev.so && rm -rf /lib/libudev.so && chattr +i /lib/
,把 /lib/libudev.so 的访问权限去掉,把 /lib/ 目录设为不可修改。 - 把
/etc/init.d
目录下,名字是随机的软链或文件都删掉。原文是说/etc/rc{0,1,2,3,4,5,6,S}.d
这些目录,但其实里面都是软链,都指向/etc/init.d
目录里的真实文件。软链可以之后有空慢慢清理。 - 删掉
/etc/crontab/gcc.sh
。 -
sed '/gcc.sh/d' /etc/crontab && chmod 0000 /etc/crontab && chattr +i /etc/crontab
清掉相关定时任务,并把 /etc/crontab 访问权限全部去掉,设为不可修改。 - 重启服务器,确认没有可疑进程,以及再出现可疑的启动脚本。就可以恢复 2 个目录的可修改属性,
chattr -i /lib /etc/crontab