“殺不掉”的“虛靈礦工”——門羅幣挖礦木馬分析報(bào)告
一、背景概述
近期,新華三態(tài)勢(shì)感知平臺(tái)監(jiān)測(cè)到某機(jī)器發(fā)起過對(duì)挖礦域名(xmr-eu2.nanopool.org
經(jīng)驗(yàn)證,該樣本的確能躲避多款國(guó)內(nèi)外主流殺毒軟件的查殺,通過對(duì)樣本的深入分析,我們發(fā)現(xiàn)該挖礦木馬在文件末尾附加了大量空字節(jié)、使自身大小達(dá)到百M(fèi)B級(jí)別,從而達(dá)到殺軟和沙箱檢測(cè)逃逸的目的。根據(jù)該挖礦木馬的這個(gè)特點(diǎn),我們將其命名為"虛靈礦工"。
二、初步排查
1. 使用ProcessMonitor對(duì)樣本動(dòng)態(tài)行為進(jìn)行監(jiān)測(cè),發(fā)現(xiàn)挖礦網(wǎng)絡(luò)請(qǐng)求由explorer.exe進(jìn)程發(fā)起:
2. 命令行帶有明顯的挖礦程序相關(guān)參數(shù):
--cinit-find-x -B --algo=rx/0 --asm=auto --cpu-memory-pool=1 --randomx-mode=auto --randomx-no-rdmsr --cuda-bfactor-hint=12 --cuda-bsleep-hint=100 --url=randomxmonero.eu-west.nicehash.com:3380 --user=3D8RFKShXUnEygTvd3ZMabw4ARhLu74KZq.Lakys --pass= --cpu-max-threads-hint=30 --nicehash --cinit-stealth
3. 在sysmon記錄中搜索父進(jìn)程id,定位到父進(jìn)程相應(yīng)文件為:
%APPDATA%\gamelauncher.exe。該文件大小為672M,初步可以推測(cè)文件過大是殺毒軟件未檢出原因。
4. 在sysmon中還定位到gamlauncher.exe釋放的一個(gè)驅(qū)動(dòng)文件:%APPDATA%\libs\WR64.sys
根據(jù)gamelauncher.exe的線索,排查啟動(dòng)項(xiàng),發(fā)現(xiàn)一計(jì)劃任務(wù)會(huì)在機(jī)器開機(jī)時(shí)啟動(dòng)gamelauncher.exe。
根據(jù)排查可以定位挖礦木馬和實(shí)現(xiàn)持久化的方法,調(diào)用關(guān)系如下:
三、樣本分析
gamelauncher.exe大小為672M,壓縮后僅8.42M。使用工具查看時(shí)發(fā)現(xiàn)有效內(nèi)容很少,因其實(shí)際Payload后添加了大量的空字節(jié)。
去除空字節(jié)填充之后的文件大小為8.35 MB (8,759,474 字節(jié)),查看區(qū)塊信息,初步確認(rèn)為Themida加殼。
其啟動(dòng)時(shí)會(huì)檢測(cè)監(jiān)控工具、反調(diào)試:
使用ExtremeDumper、AssemblyRebuilder獲取到原始.net程序game.exe,game.exe啟動(dòng)會(huì)先休眠一分鐘,然后對(duì)資源數(shù)據(jù)進(jìn)行AES解密執(zhí)行:
資源段數(shù)據(jù)解密結(jié)果為一個(gè)新的.net程序,文件名為game-miner.dll,但實(shí)際還是exe。
game-miner.dll有變量函數(shù)名混淆,這里簡(jiǎn)單重命名列出功能。
a. 有管理員權(quán)限情況下,創(chuàng)建計(jì)劃任務(wù)實(shí)現(xiàn)持久化,如失敗,則設(shè)置注冊(cè)表項(xiàng)實(shí)現(xiàn)持久化:
b. 如果當(dāng)前路徑不是 %appdata%/gamelauncher.exe,則殺死sihost64進(jìn)程,刪除%appdata%/libs/路徑下的sihost64.log、sihost64-2.log,將自身復(fù)制為%appdata%/gamelauncher.exe并啟動(dòng),自身退出(實(shí)際運(yùn)行時(shí),只要文件名不是gamelauncher.exe,就會(huì)執(zhí)行以上操作)
c. 讀取kumhcdkzhbym資源,解密后寫到%appdata%/libs/WR64.sys
e. 解密挖礦參數(shù),解密資源段數(shù)據(jù)并提取壓縮包中的xmrig.exe文件,開始創(chuàng)建新explorer進(jìn)程并注入惡意代碼執(zhí)行
f. 以掛起方式創(chuàng)建explorer進(jìn)程,第6個(gè)參數(shù)為4,即CREATE_SUSPENDED表示掛起狀態(tài),
g. 寫入explorer進(jìn)程的挖礦程序被加殼,單獨(dú)運(yùn)行調(diào)試,使用Scylla dump并修復(fù)導(dǎo)入表,使用IDA可查看main函數(shù)。
我們從https://github.com/xmrig/xmrig下載挖礦程序與dump出的挖礦程序進(jìn)行對(duì)比,main函數(shù)基本一致
game-miner.dll釋放的WR64.sys pdb路徑為:
"d:\hotproject\winring0\source\dll\sys\lib\amd64\WinRing0.pdb"
證書也和下載的xmrig包含的WinRing0x64.sys一致,使用IDA對(duì)比結(jié)構(gòu)完全相同。
該惡意程序使用xmrig時(shí),默認(rèn)會(huì)將算力的1%貢獻(xiàn)給xmrig項(xiàng)目,相關(guān)域名即態(tài)感平臺(tái)監(jiān)測(cè)到的xmr-eu2.nanopool.org。
根據(jù)樣本分析,可確認(rèn)挖礦木馬執(zhí)行的整個(gè)過程,和態(tài)感監(jiān)測(cè)記錄符合。
四、同源性分析
根據(jù)樣本特點(diǎn),我們關(guān)聯(lián)到github的一個(gè)開源項(xiàng)目SilentXMRMiner:
https://github.com/UnamSanctam/SilentXMRMiner
該項(xiàng)目提供高度可定制化的挖礦程序生成能力,根據(jù)時(shí)間關(guān)系,我們?nèi)ilentXMRMiner v1.4.4版本按相同配置生成挖礦程序new_game.exe,和game.exe進(jìn)行對(duì)比:
從資源段解密得到game-miner.dll, main函數(shù)對(duì)比如下:
此外,通過查看項(xiàng)目代碼,確定樣本分析中提到的sihost64進(jìn)程為守護(hù)進(jìn)程,可在挖礦程序異常時(shí)嘗試恢復(fù)運(yùn)行。
通過以上對(duì)比關(guān)聯(lián)可以確定,"虛靈礦工"正是在該項(xiàng)目生成的程序基礎(chǔ)上,進(jìn)行了加殼和附加空字節(jié)的操作。
五、IOC
* domain:
xmr-eu2.nanopool.org
randomxmonero.eu-west.nicehash.com:3380
* MD5:
974df47a259b9d5477d768871f3cb5a8
六、新華三處置與防御建議
【處置建議】
1) 清除gamelauncher相關(guān)的計(jì)劃任務(wù)和注冊(cè)表中的自啟動(dòng)項(xiàng);
2) 刪除%APPDATA%/gamelauncher.exe %APPDATA%/libs/WR64.sys;
3) 重新啟動(dòng)操作系統(tǒng)。
【防御建議】
1) 盡量在官方下載軟件,謹(jǐn)慎使用各大下載站;
2) 不要點(diǎn)擊來源不明的郵件以及附件;
3) 新華三威脅情報(bào)與特征庫(kù)已能進(jìn)行檢測(cè),建議升級(jí)到相關(guān)最新版本。