Linux下隨機10字元病毒的清除
一、現象
伺服器不停的向外發包,網路流量暴滿,且CPU持續100%。遠端登入後檢視發現有一長度為10的隨機字串程序,kill掉,會重新生成另外長度為10的字串程序。刪除檔案也會重複生成
lsof -R | grep “/usr/bin”,發現主程序不變,總是產生幾個輔程序,並且一直處於dedeted狀態,這說明主程序會快速產生幾個子程序,然後這些程序之間相互檢測,一旦檢測到病毒主體被刪除或更改,就會再產生一個
ps -ef | grep '字串' #檢索不到
用pstree可以看到真實的名字
二、檢視crontab
[root@localhost ~]# crontab -l #未發現異常任務
[root@localhost ~]# cat /etc/crontab
*/3 * * * * root /etc/cron.hourly/cron.sh
*/3 * * * * root /etc/cron.hourly/kill.sh
系統級任務就放在 /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/bin
for 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/debug
cat /etc/cron.hourly/kill.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/libkill.so /lib/libkill.so.6 /lib/libkill.so.6
單看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 16621
2、刪除相關病毒檔案
rm -rf /etc/cron.hourly/kill.sh /etc/cron.hourly/cron.sh
find /etc -name '*mtyxkeaofa*' | xargs rm -f
rm -f /usr/bin/mtyxkeaofa
檢視 /usr/bin 最近變動的記錄,如果是病毒也一併刪除,其他可疑的目錄也一樣。
ls -lt /usr/bin | head
3、現在殺掉病毒程式,就不會再產生
pkill mtyxkeaofa
4、刪除病毒本體
rm -f /lib/udev/udev /lib/libudev.so
四、總結:
1、/proc裡面的東西是可以更改的;
2、lsof還比較忠誠,不直接讀取/proc裡面的資訊,ps看到的就不一定真實,pstree和top看到的程序還是正確的。
3、留意/etc/crontab和/etc/cron.*下的幾個任務目錄
4、木馬程式的出現,而且是root賬號下,應該是之前風靡的redis漏洞引起,redis內部伺服器呼叫,可以監聽內網