挖礦木馬簡要技術分析
時間 : 2021年10月15日 來源: 安天CERT
此文為哈工大安天聯合CERT實驗室發布的針對挖礦木馬的簡要技術分析,首發于”高校信息化應用“公眾號,安天官網現對其進行轉載,以便讀者進一步了解挖礦木馬,同時為讀者提供處置建議。
1. 挖礦木馬概述
互聯網的虛擬貨幣,如比特幣(BTC)、門羅幣(XMR)等,是一種由開源的P2P軟件產生的網絡電子虛擬貨幣。主要用于互聯網金融投資,也可以作為新式貨幣直接在生活中使用。
比特幣挖礦機是獲取比特幣的方式之一,挖礦機工作要讓顯卡長時間滿載,功耗會相當高,電費開支也會越來越高。由于挖礦成本過于高昂,一些不法分子通過各種手段將礦機程序植入受害者的計算機中,利用受害者計算機的運算力進行挖礦,從而獲取非法收益。這類非法侵入用戶計算機的礦機程序被稱作挖礦木馬。
挖礦木馬進行超頻運算時占用大量CPU資源,導致計算機上其他應用無法正常運行。不法分子為了使用更多算力資源,一般會對全網主機進行漏洞掃描、SSH爆破等攻擊手段。部分挖礦木馬還具備橫向傳播的特點,在成功入侵一臺主機后,嘗試對內網其他機器進行蠕蟲式的橫向滲透,并在被入侵的機器上持久化駐留,長期利用機器挖礦獲利。
經過多年的演進,越來越多的挖礦木馬利用多種方式入侵系統,意圖感染更多的機器,提高挖礦的效率和收益,其中主要入侵方式如下:
1. 漏洞利用:利用系統漏洞快速獲取相關服務器權限,植入挖礦木馬是目前最為普遍的傳播方式之一。常見的漏洞包括Windows系統漏洞、服務器組件插件漏洞、中間件漏洞、web漏洞等。
部分攻擊者選擇直接利用永恒之藍漏洞,降低了利用漏洞攻擊的難度,提高了挖礦木馬的傳播能力。例如傳播較廣的WannaMine挖礦家族,利用了永恒之藍漏洞在內網蠕蟲式傳播,給不少公司和機構帶來巨大損失。
2. 弱口令:弱口令指的是僅包含簡單口令、有規律的鍵盤組合或歷次泄漏過的密碼,例如“qwe123”、“666666”及“p@ssw0rd”等,攻擊者通常會針對redis、ssh、3389、mssql、IPC$等服務進行爆破弱口令攻擊。爆破成功后,嘗試獲取系統權限,植入挖礦木馬并設置持久化。
3. 偽裝正常軟件:攻擊者將挖礦木馬偽裝為游戲軟件、娛樂社交軟件、安全軟件、游戲外掛等進行傳播,欺騙用戶下載并執行。由于多數游戲對顯卡、CPU等硬件性能要求較高,故挖礦木馬通常偽裝成游戲輔助外掛,通過社交群、網盤等渠道傳播,感染大量機器。
挖礦木馬有很多控制機器挖礦的方式,主要分為三種:
1. 可執行文件:存儲在機器上的典型惡意程序,通常通過設置計劃任務或修改注冊表項實現持久化,長期進行加密貨幣的挖礦作業。
2. 基于瀏覽器的挖礦木馬:使用JavaScript(或類似技術)的挖礦木馬是在瀏覽器中執行。只要瀏覽器打開被植入挖礦木馬的網站,就會執行挖礦執行,持續消耗資源。
3. 無文件挖礦木馬:利用如PowerShell等合法工具在機器的內存中執行挖礦作業,具有不落地、難檢測等特點。
挖礦木馬能在各種平臺上運行,包括:Windows、Mac、Linux、Android、物聯網(IoT)設備。
2. 如何檢測挖礦木馬
挖礦木馬行為特征
挖礦木馬顯著的行為特征就是極大的占用CPU及GPU資源主要包括:高 CPU 和 GPU 使用率、響應速度慢、 崩潰或頻繁重新啟動、系統過熱、異常網絡活動(例如,連接挖礦相關的網站或 IP 地址)。其次是在網絡流量中,挖礦木馬通信過程采用專門的通信協議,因此存在一定的網絡通信特征。
檢測方法
方法1 網絡側檢測
在網絡側檢測可分為通信內容檢測和礦池地址域名請求(DNS請求歷史記錄)檢測。
挖礦木馬感染主機和礦池的通信過程使用的通信協議是最常用的stratum協議,該協議內容為JSON數據格式。stratum協議的JSON數據格式存在多個固定的特征字段,在檢測通信內容時,可根據這些特征設置告警規則,并應用于suricata、snort和其他通信檢測軟件或設備。
方法示例:使用wireshark抓包并分析TCP通信內容。
礦池主要有公開礦池和私有礦池,對應域名也就有公開的礦池地址和私有的礦池地址。其中部分公有的礦池地址如下表所示:
私有礦池地址一般有域名+端口或IP地址+端口的形式,域名可能也和公有的礦池地址一樣存在一些特殊字符串,如:pool、xmr、mine等。在檢測過程中都可結合威脅情報和對應通信內容進行綜合判定。
如采用使用威脅情報(VirusTotal等)進行關聯查詢,綜合域名、對應IP、關聯樣本進行判定礦池地址威脅性。示例中域名雖然在VT上顯示無檢測結果,可進一步分析關聯。
進一步排查IP地址,關聯樣本,最終發現多個Linux平臺的挖礦木馬腳本。
方法2 主機側檢測
挖礦木馬的主機側檢測主要依據的就是對應進程CPU使用率長時間居高不下,部分挖礦木馬采用多方式隱藏進程,且具備多種持久化駐留方式。
針對不具備隱藏進程功能的挖礦木馬檢測場景:
? Windows:使用任務管理器查看
? Linux:使用命令top -c查看
針對具備隱藏進程功能的挖礦木馬檢測場景(即系統CPU使用率高,但未發現存在CPU使用率高的進程):
? Windows:使用ProcessExplorer、ProcessHacker、PcHunter等軟件查看系統所有進程及其進程關系,依據CPU使用率篩選可疑進程,進一步在主機上排查該可疑進程的網絡連接,計算可疑進程對應文件hash,通過公開的威脅情報(Virustotal等)進行查詢,綜合判定結果。
? Linux系統挖礦木馬進程隱藏方式存在多種方式:
1. 篡改預加載的配置(/etc/ld.so.preload),寫入惡意so文件路徑,加載惡意的so文件,使得ls、top、ps等命令在查詢可疑進程時執行結果被挖礦木馬的動態鏈接庫屏蔽,無法獲得挖礦木馬進程相關的信息。
通過以下命令恢復相關命令的正常執行:
> /etc/ld.so.preload && rm -rf 惡意so文件路徑
2. 通過其他手段修改Linux系統常用命令。
a. 針對這種隱藏方式,可以查看系統版本(uname -a),將其他相同版本的Linux系統的top命令文件重名了,導入該受害系統中,使用新的文件名命令進行排查。
b. 安裝busybox程序,使用內置的Linux常用命令(top、ps、ls等)對系統進行排查。
除以上排查方法外,還可采用自動化腳本排查,腳本排查思路主要源于挖礦木馬為了競爭CPU資源而在相關腳本中設置查找并刪除其他挖礦木馬的代碼。收集整理其中的查找挖礦木馬的代碼,形成一定功能的挖礦木馬進程排查腳本。此種方式的腳本排查誤報率高,需要結合人工分析判定。
3. 如何處置挖礦木馬
針對獨立運行的挖礦木馬感染場景處置
獨立運行的挖礦木馬無其他附加功能,重復利用目標主機上的系統資源進行挖礦。此種挖礦木馬通常利用垃圾郵件或捆綁軟件進行傳播,主要針對的是Windows系統終端,因此對于這種挖礦木馬在處置上較為簡單,依據系統資源使用率在主機側排查可疑進程,結合網絡連接情況,綜合判定該進程為挖礦木馬后,即可結束該挖礦木馬進程,而后刪除對應的挖礦木馬文件。
針對集成化的挖礦木馬感染場景處置
在當前活躍挖礦木馬家族大多數都是集成化的挖礦木馬,集成多種功能,組建相應挖礦木馬僵尸網絡。集成化的挖礦木馬主要有傳播、挖礦、控制、持久化駐留、更新等功能,攻擊者依據這些功能收獲巨大的利益。
在傳播上使用端口掃描工具、漏洞利用工具、暴力破解,對內網或外網的其他目標進行滲透并傳播挖礦木馬。
傳播行為 |
具體工具/漏洞 |
處置 |
端口掃描 |
masscan pnscan |
這些傳播行為在網絡上主要體現對外頻繁連接多個指定端口(22、3389、7001、6379等) 排查方法: 網絡抓包分析 特別注意:~/.ssh/authorized_keys,該文件若存在非法的SSH公鑰,可將該文件刪除。 初步處置方法利用Windows和Linux系統的防火墻功能配置規則,阻斷傳播行為。 Windows:新建出站規則,設置阻斷對外指定端口的網絡連接。 Linux:通過iptables命令進行設置 iptables -A OUTPUT -p tcp –dport 目標端口 -j DROP 記錄相關行為對的進程和文件路徑 |
針對挖礦程序進程,初步處置以屏蔽對礦池的連接為主,記錄挖礦進程信息和對應文件路徑。
具體方法(該方法同樣使用于挖礦木馬控制功能中投放的遠控木馬以及更新功能中更新腳本或程序):
系統 |
排查方向 |
方法 |
Windows |
計劃任務 |
使用autorun工具進行查詢分析,同時參考前期發現的相關路徑(挖礦木馬進程、端口掃描進程等) |
自啟動項 |
||
注冊表/服務 |
||
敏感路徑 |
%tmp% %appdata% %programdata% C:\Windows\temp C:\windows\Fonts |
|
Linux |
計劃任務 |
查看計劃任務 more /etc/cron.*/* 查看當前用戶計劃任務 crontab -l 查看所有用戶計劃任務 ls -al /var/spool/cron/ |
自啟動目錄 |
ls -alr /etc/init.d ls -alr /etc/rc* |
|
服務 |
排查服務: chkconfig –list systemctl list-unit-files 關閉服務: chkconfig 服務名 off systemctl disable 服務名 |
|
敏感路徑 |
/tmp/ /root/ |
針對持久化駐留功能,主要在系統敏感路徑上排查相關文件。
系統 |
方法 |
Windows |
新建出站規則,設置阻斷對外指定IP的網絡連接。 |
Linux |
通過iptables命令進行設置:(可疑地址包括礦池地址、C2地址、挖礦木馬更新地址) iptables -A INPUT -s 可疑地址 -j DROP iptables -A INPUT -s 可疑地址 -j DROP |
4. 挖礦木馬相關文件處置方法
1. 統計收集前期排查發現的挖礦木馬相關文件和進程信息;
2. 分析挖礦木馬相關文件執行和依賴關系;
3. 按順序刪除挖礦木馬的挖礦程序、傳播工具、釋放的遠控木馬等文件。
處置過程通常的順序為:(具體操作主要以刪除文件、結束進程為主)
a. 刪除計劃任務
b. 刪除自啟動項
c. 停止服務
d. 結束進程 (Linux:kill -9 進程pid)
e. 刪除文件
4. Windows系統在結束進程時遇到任務管理器無法結束進程,可使用如ProcessExplorer、PcHunter、ProcessHacker結束挖礦木馬相關進程。
5. Linux系統在刪除文件時,如遇到“Operation not permitted”告警:
可使用如下命令,修改文件屬性,并刪除文件。
以上處置方法,根據實際情況可編寫成相關腳本進行自動化處置。
5. 防護建議
發現機器可能感染了挖礦木馬,可以通過以下步驟清除:
1. 從內網DNS服務器、DNS防火墻、流量審計設備等設備獲取惡意域名信息,根據域名查詢威脅情報確定木馬類型;
2. 查看系統CPU、內存、網絡占用情況,獲取異常進程相關信息;
3. 根據進程名或部分字符串獲取進程號或進程相關的命令行命令;
4. 根據進程號查看由進程運行的線程;
5. 結束挖礦進程及其守護進程;
6. 通過挖礦進程的相關信息,定位到文件的具體位置,刪除惡意文件;
7. 查看啟動項,如果發現非法開機自啟服務項,停止并刪除對應數據;
8. 查看定時任務,多數挖礦木馬會在受感染機器中寫入定時任務完成程序的駐留。如果只結束挖礦木馬進程并刪除挖礦木馬文件,定時任務會再次從服務器下載挖礦進程或直接執行挖礦腳本,導致挖礦進程清除失敗;
9. 溯源挖礦木馬入侵途徑,查找系統漏洞,打上對應補丁,完成漏洞修復,防止再次入侵。
針對挖礦木馬的防護要做到以下幾點:
1. 規范上網行為,不安裝來歷不明的軟件、工具;
2. 不打開來歷不明的文檔,以及帶有圖片、文件夾、文檔、音視頻等圖標的文件;
3. 進行嚴格的隔離,有關系統、服務盡量不要開放到互聯網,在內網中的系統也要通過防火墻、VLAN或網閘等進行隔離。對于系統要采取最小化服務的原則,只提供必要的服務無關的服務必須要關閉,同時采用本機防火墻進行訪問要進行訪問控制;
4. 及時安裝系統補丁,修復系統應用漏洞、中間件漏洞、組件、插件等相關漏洞;
5. 加強密碼策略,增加密碼復雜度并進行定期修改,開啟相關登錄失敗處理功能。