前天遇到求助,说某服务器大量对外发包,怀疑是中病毒了,已经把网络断开,但是相关的服务也就不可用了。
于是进机房,登录到该服务器上,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 *, It will send lots of packets for SYN flood.
Cut down your network
The * 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 * 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