<b>前言</b>
從2013年的誕生,到2016爆發,挖礦(MiningCryptocurrency) 的高回報率,使其成為了一把雙刃劍。據外媒去年的統計,比特币的算力(Hash Rate)已在半年内翻了一翻。
當比特币全網算力已經全面進入P算力時代,也就意味着需要有相應計算能力的裝置高速運轉,不間斷地暴力驗證和工作,來支撐礦工們的“野心”。
自2017年11月以來,阿裡雲安全監控中心成功捕獲到一系列的同源挖礦事件,被感染的主機中發現了名為F-Scrack-Jexboss的惡意檔案,用于執行挖礦任務,并對外掃描擴散。本次受害主機以Jboss服務為主,我們将其命名為“JbossMiner”。
通過監控JbossMiner相關情報,阿裡雲安全團隊發現,JbossMiner挖礦蠕蟲在18年初爆發式增長,随後增速迅猛,近期稍有回落。

本文将以“JbossMiner”的核心代碼為基礎,分别從掃描、入侵、利用、挖礦等功能進行展開,完整分析并還原整個過程:希望研究者,和非安全專業領域的讀者們,能從全局角度看到,挖礦木馬如何瞄準“宿主”,擴張木馬僵屍網絡,并可持續利用。為企業和機構的入侵 - 挖礦防範,提供新的視角。
注:JbossMiner中用到的漏洞,阿裡雲上已預設可攔截,并且,安騎士已可以檢測JbossMiner中的惡意程式,和執行的惡意指令。建議及時關注威脅提示,如有異常事件可盡快處理。
<b>解構JbossMiner:核心代碼分析</b>
阿裡雲安全團隊在蜜罐中捕獲到該二進制樣本,該樣本由py2exe打包,解包反編譯後是一套由Python編寫的完整攻擊程式,包含源碼及依賴類庫等數十個檔案,核心功能代碼檔案清單如下圖所示:
其核心功能分為四大部分,分别為:掃描、入侵、惡意代碼植入、挖礦。通過這幾部分的分工協作,完成整個入侵 - 植入 - 持續擴張流程。相關邏輯由Python和Shell腳本實作。
下圖為“JbossMiner”完整的傳播及利用路徑:
下面,本文将對上述四大功能部分進行詳細分析。
<b>尋找目标:JbossMiner的掃描過程</b>
内網掃描:讀取本機網絡位址并據此生成C段進行掃描。
公網掃描:從指定位址拉取IP和子網路遮罩,并解析成對應的IP清單。
`u.swb.one`會在每次請求時生成一段目标位址,如下所示:
随後JbossMiner對目标IP進行ICMP探活,随後對存活主機的指定端口進行掃描,并根據端口對應的服務啟動攻擊子產品。
<b>攻陷“宿主”:JbossMiner的入侵子產品分析</b>
JbossMiner蠕蟲用戶端内置的入侵子產品有以下幾種。
首先是Jboss利用子產品
Jboss是一款開源的企業級Java中間件,用于實作基于SOA架構的web應用和服務。2015年,安全研究人員披露Java反序列化漏洞利用方案,Jboss首當其沖,直至今日仍有相當數量存在漏洞的伺服器暴露在公網。JbossMiner複用了開源自動化入侵工具Jexboss,該工具由Python編寫,支援多種Jboss指令執行漏洞的檢測和利用。
Struts2是當下流行的Java網絡應用架構,針對該架構的指令執行漏洞層出不窮。據阿裡雲态勢感覺觀測,目前Struts架構漏洞仍為黑色産炙手可熱的入侵手段。JbossMiner内部內建了從S2-005到S2-053的全部漏洞利用代碼,入侵成功後通過系統指令控制目标伺服器遠端拉取檔案進行挖礦和持久化。
永恒之藍(EternalBlue)是美國國家安全局開發的漏洞利用程式,于2017年4月14日被黑客組織公開,并催生了以WannaCry為首的諸多蠕蟲變種。目前很多機器已經修複該漏洞,暴露在公網的影響面有限,但仍不失為一種内網傳播的有效手段。
MySQL服務的攻擊面主要集中在SQL注入、弱密碼及未授權通路。JbossMiner中的MySQL利用子產品對系統及MySQL版本進行了簡單适配,通過以下兩種方式穿透到主機。
通過outfile/dumpfile導出檔案,加載為UDF,執行系統指令。
UDF以16進制的方式存在于Python代碼中,對Windows、Linux進行适配。
落盤檔案IOC
檔案名
lib_mysqludf32_sys.dll
lib_mysqludf64_sys.dll
lib_mysqludf32_sys.so
lib_mysqludf64_sys.so
該木馬攜帶的`lib_mysqludf32/64`動态連結庫,其核心功能就是為了執行MySQL指令,以便運作惡意腳本,該木馬作者将執行指令的代碼放在了`sys_bineval`函數中,其中線程函數StartAddress負責執行使用者傳入的參數。
代碼截圖如下(Linux版本的代碼類似):
通過開啟查詢日志,并設定日志檔案路徑在crontab目錄下,可以向定時任務寫入惡意代碼,除此之外MySQL中還有其他類似的日志配置檔案可被利用。
Redis服務的攻擊面以未授權通路和弱密碼為主,利用該服務穿透到主機進行後續滲透的方法五花八門,如利用資料導出功能将惡意代碼寫入系統的指定位置(如web後門、計劃任務、SSH密鑰等)。
JbossMiner首先探測目标Redis服務是否存在未授權登入,随即使用内置字典爆破密碼,并将成功後的資訊回傳到黑客控制的回顯平台。
其中`make_crontab`函數通過寫crontab的方式穿透到系統,接入後續挖礦代碼。
<b>最後是Tomcat/Axis利用子產品</b>
JbossMiner針對Tomcat/Axis服務的入侵方式為WEB層弱密碼爆破。
成功登入後,通過Tomcat上傳功能部署後門,war包代碼以hex格式存于Python代碼中。
随後通過HTTP請求連接配接後門,依次下發後續利用的指令。
對Axis服務的利用方式與之相同,不再贅述。
部署的後門位址IOC如下:
服務
後門位址
Axis
http://%s/axis2/services/Cat/exec?cmd=
Tomcat
http://%s/is/cmd.jsp?pwd=futuresec&&cmd=
<b>持續擴張:JbossMiner的後續利用方式</b>
JbossMiner在成功攻破的伺服器中執行系統指令以完成後滲透利用,具體指令如下:
使用 SchTasks.exe、wmic、bitsadmin來實作在Windows平台的自啟動,除此之外,并針對Windows和Linux執行不同的腳本,後續所有的惡意行為都由這兩個腳本來完成,主要實作持久化、蠕蟲傳播、挖礦、竊取浏覽器敏感資訊等。
文章後面部分内容,将針對這兩部分詳細分析。
針對Windows系統的利用程式(vbs腳本)
http://enjoytopic.esy.es/ps3.txt
Linux系統的利用程式(Shell腳本)
https://lnk0.com/VhscA1
針對Windows系統,JbossMiner在攻擊成功後将使用mshta指令執行名為ps3.txt的vbs腳本,ps3.txt中的shellcode執行流程簡圖如下:
ps3.txt檔案的部分内容截圖如下:
10
解密後的vbs中嵌入了一段powershell指令,解密後,var_code即為最終要執行的代碼(base64編碼)如下:
var_code是為一段shellcode,shellcode内自己實作LoadLibrary和GetProcAddress邏輯,動态加載wininet.dll,擷取wininet.HttpOpenRequestA等相關API來實作http的通路。
它會請求d1uga3uzpppiit.cloudfront.net/dCrC檔案,該檔案是一個加密後的DLL,MZ頭經過精心構造,可直接當作代碼執行。解密後的dll中包含導出函數ReflectiveLoader,負責reload自身并執行。從結構上來看,這部分payload由Metasploit生成,與上文中提到的Mettle類似。
該dCrC檔案主要作用就是接受伺服器下發的powershell指令并運作,其核心代碼截圖如下:
在dCrC檔案與swb.one伺服器互動,接收其powershell指令并執行,完成自啟動和下發其他惡意程式(挖礦、蠕蟲、竊密)。
powershell指令經過解密後如下:
除了上述的下發powershell指令外,還下發了兩條下載下傳指令:
分别下載下傳svthost.exe的後門程式和svshost.exe橫向滲透傳播程式,其中svshost.exe橫向滲透傳播程式也是由python腳本打包而成的exe程式,于運作時釋放運作所需檔案,其檔案清單截圖如下:
下面再來看看這個svthost.exe的後門程式是如何盜取浏覽器使用者名和密碼資訊的 — 我們在測試環境下作了驗證。
後門程式不僅盜取Chrome浏覽器中存儲的賬号和密碼,還盜取Firefox浏覽器中存儲的賬号和密碼。其上傳盜取資料的接口是:https://u.swb.one/upload/win,相關代碼截圖如下:
Chrome浏覽器将通路網站的相關使用者名和密碼,加密儲存在一個SQLite資料庫中,路徑為:%APPDATA%\..\Local \Google\Chrome\User Data\Default\Login Data"。svthost.exe後門程式首先周遊程序檢查被攻擊者的電腦是否運作了Chrome浏覽器(chrome.exe),之後再去擷取Chrome浏覽器賬号和密碼儲存的資料庫檔案,解密後上傳到黑客的外部伺服器。
檢查chrome浏覽器儲存密碼的資料庫路徑:
其中sub_417C10函數拿到解密後的賬号和密碼,發送到外部伺服器。
同樣,svthost.exe後門程式也是先确認該使用者是否安裝了Firefox浏覽器,然後利用NSS的開源庫,對沒有設定浏覽器設定主密碼的攻擊對象(一般會預設為空)進行破解,提取全局hash,獲得它與空密碼做hash後的運算結果,然後使用該結果破譯SDR密鑰,再用破譯的SDR密鑰危害證書,最後拿到Firefox浏覽器中儲存的賬号和密碼。
檢測是否安裝了Firefox浏覽器代碼片段:
加載NSS開源庫的nss.dll,然後利用其提供函數進行運算:
最後拿到被攻擊者的網站,以及其對應的使用者名和密碼,并上傳到伺服器,其代碼片段如下:
針對Linux系統,JbossMiner在攻擊成功後将指令寫入crontab來實作後續利用,主控端将定期下載下傳指定shell腳本執行。
對該shell進行進一步分析,首先從遠端拉取名為`hawk`的檔案并執行。
該檔案實為MetaSploit中的Mettle元件,根據預設的DNS(cs.swb.one)查找控制端反彈shell,其中swb.one域名下多次發現黑客資産,分别用于檔案服務、接收爆破成功後回傳的資訊、接收反彈shell。