1. 程式人生 > >Linux伺服器被挖礦程式sustse和kworkerds感染後續處理

Linux伺服器被挖礦程式sustse和kworkerds感染後續處理

在上一篇博文Linux系統發現佔用CPU達100%的程序並處理 裡面以為已經把挖礦程式sustse處理乾淨了,可是沒過兩天又收到阿里雲簡訊提醒,說伺服器有問題,難道還有後門嗎?也多虧阿里雲給出提示“出現了可疑安全事件:Linux共享庫檔案預載入配置檔案可疑篡改”。網上查了查相關內容,原來這個後門是動態連結庫預載入機制造成的。
動態連結庫預載入機制是系統提供給使用者執行自定義動態連結庫的一種方式,在可執行程式執行之前就會預先載入使用者定義的動態連結庫的一種技術。這種技術可以重寫系統的庫函式,只需要在預載入的連結庫中重新定義相同名稱的庫函式,程式呼叫該庫函式時,重新定義的函式即會遮蔽掉正常的庫函式。
動態連結庫預載入機制有兩種方式:LD_PRELOAD環境變數和/etc/ld.so.preload配置檔案。趕緊檢視下LD_PRELOAD環境變數:
#echo LD_PRELOAD
環境變數


未見異常,再看看/etc/ld.so.preload配置檔案:
ld.so.preload檔案
果然有異常的庫,這裡的cat或ls命令最好使用靜態編譯的,或者使用busybox工具,否則可能因為惡意庫被隱藏而發現不了:
ldd.so庫異常
從時間上看,這個庫和阿里雲檢測到的問題時間是一致的,趕緊清空ld.so.preload檔案並刪掉lbb.so庫。使用top再檢視一下:
top隱藏程序
原來top查不到的kworkerds程序終於出現了,而且啟動了很多。看來不單單top命令沒異常就代表檢視是真實的資訊,還要記得檢查預載入庫。
使用ps命令再檢視下:
ps命令顯示
原來/var/tmp/目錄下的kworkerds檔案又出現了,這次好好找找吧,發現/tmp目錄下也有這個檔案,看來是會相互複製的。為了快速刪除得寫個刪除指令碼了,執行指令碼刪除完,top再檢視,沒有發現kworkerds程序,可是再看/usr/local/lib/目錄,lbb.so庫又出現了。
還是沒能徹底清除,肯定還有定時任務,crontab -e命令刪除的只是root建立的定時任務,而使用者建立的定時任務在/var/spool/cron/目錄下,檢視/var/spool/cron目錄:
/var/spool/cron/目錄

果然還有定時任務,將其刪除,再看/usr/local/lib/目錄,還是被恢復了。陰魂不散啊,再看/etc/cron.d目錄下檔案:
/etc/cron.d目錄
還有那個定時任務,將其也刪除,這下終於不再復發了。最後整理我的刪除指令碼如下:

echo "" > /etc/ld.so.preload
chattr +i /etc
rm -rf /var/spool/cron/*
rm -rf /etc/cron.d/*
chattr +i /var/spool/cron/
rm -f /usr/local/lib/*
chattr +i /usr/local/lib
killall kworkerds
rm -f /var/tmp/kworkerds*
rm -f /var/tmp/1.so
rm -f /tmp/kworkerds*
rm -f /tmp/1.so
rm -f /var/tmp/wc.conf
rm -f tmp/wc.conf

其中chattr +i命令是給資料夾加鎖,刪除完趕緊上鎖,防止惡意檔案再複製進去,這下終於安靜了。。。