在上篇的分析中,我們分析了“隱蜂”挖礦木馬的“Boot劫持”和“內(nèi)核Rootkit”前兩個關(guān)鍵部分,本篇中主要針對Ring3層的挖礦模塊工作機(jī)制展開剖析。
三、R3挖礦插件階段
“隱蜂”挖礦木馬在R3層的框架設(shè)計也是比較復(fù)雜的,整個R3層解壓后的模塊配置文件總數(shù)多達(dá)30+,同時引入LUA腳本引擎實現(xiàn)更靈活的策略控制,并且在隱蔽性、兼容性等細(xì)節(jié)處理上也非常完善,所有一切的目的都是為了在隱藏自身的前提下,充分壓榨系統(tǒng)的CPU、GPU設(shè)備資源用于挖掘“門羅幣”。從R3層整體設(shè)計上劃分,主要包括基礎(chǔ)模塊“subsystem”、引導(dǎo)模塊“ccmain.bin”、外層支持插件包“bsp.lib”以及挖礦插件包“schema.tlb”四大核心部分。
1. 加載R3層基礎(chǔ)模塊“subsystem”
如前文所述,內(nèi)核模塊在鏡像回調(diào)函數(shù)中將模塊“stub.bin”通過APC注入到svchost.exe進(jìn)程,而“stub.bin”是“隱蜂”R3層插件的初始Loader,它會從最初填充的參數(shù)中加載后續(xù)核心模塊 “subsystem”,在修復(fù)重定位和填充IAT后直接跳轉(zhuǎn)到OEP執(zhí)行。“subsystem”模塊負(fù)責(zé)執(zhí)行升級LUA腳本并解析加載R3插件MRFS鏡像;另外作為基礎(chǔ)模塊,與前文內(nèi)核模塊“kernel”類似,通過R3層“mpsi.dll”API接口導(dǎo)出核心功能給后續(xù)模塊使用;除此還會創(chuàng)建Timer定時檢測內(nèi)核映像回調(diào)是否被摘除、刪除dump文件、掛鉤繞過異常內(nèi)存檢測等。

“subsystem”模塊中升級功能由LUA腳本控制完成,“etc/exs.bin”文件是編譯后的luac文件,病毒作者修改了頭特征字段,并且調(diào)整了LUA虛擬機(jī)的opcode表順序防止反編譯,從綁定的函數(shù)來看,腳本exs.bin功能比較簡單,讀取“etc/config.js”中的配置,通過偽DGA(結(jié)果固定)生成URL直接傳參調(diào)用。

最后,“subsystem”模塊會讀取磁盤數(shù)據(jù),解密解壓出一個新的“MRFS”鏡像文件,負(fù)責(zé)注入“/bin/i386/ccmain.bin”到系統(tǒng)進(jìn)程msdtc.exe,進(jìn)一步引導(dǎo)加載真正的挖礦插件包。鏡像文件結(jié)構(gòu)與前文一致,解壓結(jié)果如下:

2. 加載挖礦插件包的引導(dǎo)模塊“ccmain.bin”
“config.js”配置文件中指明引導(dǎo)模塊“cloudcompute.api”,主要負(fù)責(zé)解析將“/bin/i386/ccmain.bin”模塊注入到系統(tǒng)進(jìn)程。注入方法也比較經(jīng)典,掛起創(chuàng)建系統(tǒng)進(jìn)程,映射模塊內(nèi)存到傀儡進(jìn)程,插入APC指向模塊OEP完成注入。比較有特點的是“自動復(fù)活”機(jī)制,在完成注入以后注冊回調(diào)函數(shù)監(jiān)控傀儡進(jìn)程句柄,一旦進(jìn)程結(jié)束會再次觸發(fā)注入過程,并且這個過程是遞歸的。該注入流程作為通用模板在后續(xù)代碼中也會多次用到,細(xì)節(jié)步驟如下:

如上圖,ccmain.bin模塊入口代碼修正重定位和IAT后,拷貝Shellcode對傀儡進(jìn)程入口點Patch,當(dāng)傀儡進(jìn)程恢復(fù)執(zhí)行到OEP時再次獲取控制權(quán),該模塊功能主要負(fù)責(zé)存儲在注冊表中插件包的解析和升級,這個插件包是變異的ZIP格式(修改PK頭特征),主要包含引導(dǎo)模塊、外層支持插件組、挖礦插件組三大部分,隨后病毒會加載模塊“/bin/i386/Kaga.so”繼續(xù)引導(dǎo)外層插件和挖礦插件工作。

3. 外層支持插件包“bsp.lib”
“Kaga.so”模塊作為后續(xù)模塊包的引導(dǎo)模塊,負(fù)責(zé)從支持模塊包“bsp.lib”中解壓相關(guān)模塊進(jìn)行加載, “bsp.lib”采用了另外一種自定義格式,共包含6個核心模塊文件(x86/x64)和2個Lua腳本,文件格式和組成細(xì)節(jié)描述如下:

“Kaga.so”模塊其實是一個引導(dǎo)中轉(zhuǎn)模塊,從傳參來看主要有7個功能分支,核心是加載或注入“/bin/i386/Akagi.bin”,不同分支往下層傳遞不同參數(shù),再由“Akagi.bin”根據(jù)參數(shù)來引導(dǎo)執(zhí)行挖礦插件包、外圍控制腳本等不同分支功能。

如上圖紅色標(biāo)注,主線分支中,“Kaga.so”模塊的調(diào)用分支參數(shù)為3,傳遞給“Akagi.bin”模塊的參數(shù)標(biāo)記為1。“Akagi.bin”是后續(xù)挖礦插件的基礎(chǔ)調(diào)度模塊,其核心功能分支如下圖:

從上圖可以看出,引導(dǎo)邏輯中最關(guān)鍵的兩個分支,一個分支是挖礦插件包“lib/schema.tlb”的引導(dǎo)加載,注入的默認(rèn)進(jìn)程為“WmiPrvSE.exe”,這部分的功能邏輯會在下個小節(jié)中單獨講解;另一個分支默認(rèn)情況下注入目標(biāo)進(jìn)程為“dllhost.exe”,主要用于執(zhí)行外層控制腳本”dispatcher.lua”,這個腳本通過注冊回調(diào)綁定核心模塊通知,主要用于外部環(huán)境的檢測控制,包括常見抓包工具、硬件檢測工具、安全軟件的監(jiān)控探測,保證可以隨時隱藏自身活動痕跡;并且還會同類相殘,針對其他挖礦木馬進(jìn)行對抗屏蔽;除此之外還會監(jiān)控常見的游戲進(jìn)程,并針對性調(diào)整挖礦的策略配置,在這些細(xì)節(jié)上的處理調(diào)整可以說做到了近乎極致,從中不難看出“隱蜂”木馬的隱蔽性和幕后開發(fā)團(tuán)隊的專業(yè)性。
除了前面的的兩大關(guān)鍵分支,外層支持插件包“bsp.lib”中還有“Amagi.bin”和“Taihou.bin”兩個
模塊未被提及,“Amagi.bin”是注入母體模塊,通過掛鉤CsrCreateProcess將“Taihou.bin”注入到
cmd、explorer系統(tǒng)進(jìn)程或常見的游戲進(jìn)程中(匹配簽名列表),但暫未發(fā)現(xiàn)“Amagi.bin”模塊被加載調(diào)
用;而“Taihou.bin”模塊通過LdrRegisterDllNotification注冊模塊加載通知回調(diào),搜索特征對ntdll.dll、
gdi32.dll、nvapi.dll、nvml.dll等模塊中的關(guān)鍵函數(shù)調(diào)用進(jìn)行hook,目的用于隱藏挖礦進(jìn)程對于CPU、
GPU等設(shè)備資源的占用情況。未發(fā)現(xiàn)實際調(diào)用,這部分功能不再過多展開。

4. 引導(dǎo)加載挖礦插件包“schema.tlb”
最后是最核心的挖礦插件包“schema.tlb”,包含頭部引導(dǎo)code和插件包數(shù)據(jù)兩大部分,頭部shellcode負(fù)責(zé)從后續(xù)數(shù)據(jù)中解壓出挖礦包核心模塊“coredll.bin”,插件包文件鏡像格式與前面“bsp.lib”采用的自定義格式一致,包含各類挖礦模塊、腳本共計19個文件,目錄結(jié)構(gòu)如下:

從文件構(gòu)成可以看出這套挖礦插件包的設(shè)計比較復(fù)雜,限于篇幅就不再過多展開,簡單來說,這是一套用于挖取門羅幣的插件包,核心架構(gòu)同時支持CPU和GPU模式,兼容CUDA和OpenGL兩大并行計算庫。其中核心模塊“coredll.bin”負(fù)責(zé)LUA腳本引擎綁定初始化、挖礦算法核心模塊、框架依賴模塊加載,檢測當(dāng)前系統(tǒng)的設(shè)備環(huán)境并開啟挖礦核心機(jī)制運行。另外還有兩個比較關(guān)鍵的LUA腳本文件,其中“config.lua”是挖礦參數(shù)配置腳本,主要包括礦池配置、任務(wù)默認(rèn)參數(shù)等,可以看到“隱蜂”使用的自建礦池“stratum+tcp://data.supportithelp.com:8080”。

另外一個LUA腳本“dispatcher.lua” 通過向核心模塊注冊回調(diào),根據(jù)核心模塊對顯卡設(shè)備狀態(tài)的監(jiān)控通知去動態(tài)調(diào)整挖礦策略參數(shù),非常靈活的一種設(shè)計。

尾言
“隱蜂”Bootkit挖礦木馬的分析到此就告一段落,分析溯源的過程中我們也充分領(lǐng)略了其幕后開發(fā)團(tuán)伙的專業(yè)程度,對我們的安全對抗的改進(jìn)升級也帶來不少啟發(fā)。專業(yè)化、團(tuán)伙化也是近兩年新型木馬發(fā)展的一個重要趨勢,對于安全對抗的雙方來講,這是一種螺旋式上升的過程,Bootkit技術(shù)與挖礦木馬結(jié)合的“隱蜂”只是這條曲線的一個標(biāo)志節(jié)點,虛擬貨幣的熱潮不退,這樣的對抗還會不斷持續(xù)升級下去。
附錄(IOC)
樣本HASH:
無 (攻擊鏈無落地文件,需要樣本的安全廠商或團(tuán)隊可以通過kis_sample#kingsoft.com與我們聯(lián)系)
升級URL:
sstp://*.gatedailymirror.info/upd.pkg
sstp:// *.redteamshop.info/upd.pkg
sstp:// *.wefoundsome.xyz/upd.pkg
sstp:// *.foundrosysquad.info/upd.pkg
sstp://ask.thesupporthelp.com:443/mlf_plug.zip.sig
注冊表:
HKLM\Software\Microsoft\.NETFramework/ RS4
礦池地址:
stratum+tcp://data.supportithelp.com:8080
|