計算機挖礦病毒是怎么樣通過PowerShell腳本作為載體進(jìn)行傳播的呢?
前言
近日,金山毒霸安全實驗室攔截到一個通過PowerShell腳本作為載體進(jìn)行傳播的挖礦病毒,其通過下拉多個腳本完成一次攻擊行為,使用“永恒之藍(lán)”漏洞、WMIExec滲透工具進(jìn)行自動化傳播,同時所有載荷均寫入WMI進(jìn)行無文件駐留。
該樣本目前仍在活躍中,同時存在其他變種,詳細(xì)分析見正文。
正文母體腳本
如下為捕獲到的樣本,也是一個唯一落地的BAT腳本,功能上算一個較為常見的PowerShell聯(lián)網(wǎng)下拉執(zhí)行腳本。通過判斷WMI的命名空間下是否存在名為的,如果不存在則聯(lián)網(wǎng)下拉腳本。
提供病毒下載的服務(wù)器
其中,
info.vbs 攜帶挖礦程序的vbs腳本,自身會寫入WMI
info3.ps1 攜帶x86平臺挖礦、攻擊腳本
info6.ps1 攜帶x64平臺挖礦、攻擊腳本
攻擊演示圖
info6.ps1主腳本
混淆嚴(yán)重
info6.ps1是一個混淆程度較高的powershell腳本,整體代碼只有兩行,但足有3.9M大小,真是”短小精悍”。
通過對該腳本進(jìn)行2次去混淆并進(jìn)行整理,最終得到一個較為清晰的內(nèi)容,下文是其執(zhí)行過程及其相關(guān)模塊的分析。
執(zhí)行過程
1.初始化數(shù)據(jù)
通過對$fa進(jìn)行分拆得到各個變量的數(shù)據(jù),實際均經(jīng)過base64編碼。
這些數(shù)據(jù)會存儲在中,而的管理類是WMI,實際最終存儲在WMI 中,也即無文件
在取值的時候,則可以通過如下方式取出
2.判斷x64
大多數(shù)機器是x64的,但也有部分x86用戶,需要做兼容,實際功能代碼與info6.ps1一樣。
3. 解代碼
由于fun中有WMIExec和MS17010的攻擊包,還有一些是輔助功能函數(shù),所以這里先引入,至于里面具體是什么請向下看。
4.釋放運行時dll
這些dll是挖礦程序需要用到的,所以這里早點釋放出來吧
5. 刪除其他WMI
6. 寫自己的WMI
其中FilterName與ConsumerName分別為,,間隔5600s執(zhí)行一次”本腳本”功能,通過powershell傳入base64編碼后的腳本內(nèi)容。
7. 善后、開工!
由于母體bat腳本是由ms17010 shellcode寫入temp路徑下的,原始名稱為y1.bat,并且通過寫計劃任務(wù)的形式啟動,所以這里需要刪掉這個計劃任務(wù)以及清理掉這個bat腳本。之后看看哪些powershell進(jìn)程訪問了80端口,由于樣本攜帶的挖礦程序均訪問80端口,所以也以此判斷是否啟動了自己的挖礦程序,如果沒訪問那么就需要執(zhí)行一次,當(dāng)然為了保證工作環(huán)境的干凈,需要干掉疑似挖礦的其他powershell進(jìn)程,通過判斷典型挖礦程序的的3333,5555端口訪問。
8. 攻擊、傳播!
為了保證挖礦效率,需要抓一些”礦工”,由于不會給工資,所以沒人愿意白干。這里需要請WMIExec和MS17010兩位大哥出面協(xié)調(diào)。
通過枚舉網(wǎng)段IP,進(jìn)行攻擊,由于給WMIExec 命令行參數(shù)傳錯,導(dǎo)致這個攻擊徹底廢了,那只好MS17010出馬了,通過調(diào)用C#實現(xiàn)的接口,以及函數(shù)進(jìn)行攻擊。
模塊分析
繼上文說到本樣本使用了WMIExec和MS17010攻擊包,那么這些東西是什么,又是怎么引入的?這也是本節(jié)要說明的。
WMIExec
代碼來自Invoke-TheHash項目,一個基于.Net TCPClient,通過把NTLM hash傳遞給NTLMv2身份驗證協(xié)議來進(jìn)行身份驗證的工具,執(zhí)行時不需要本地管理員權(quán)限,傳送門
樣本作者封裝了一個test-ip函數(shù),其參數(shù)2,4是通過mimikatz抓取的本地用戶hash,參數(shù)1,3分別是目標(biāo)ip和回連web服務(wù)器。WMIExec執(zhí)行的功能是通過寫一個VBS Download,下拉執(zhí)行一個VBS腳本,同時下拉執(zhí)行info6.ps1 (32位為info3.ps1)。
MS17010
雖然這個漏洞目前看來有點”過氣”,但畢竟也是RCE啊!
作者分別引入了掃描和exp模塊,掃描模塊,通過的方式引入源代碼,這樣會在powershell運行過程中調(diào)起C#編譯器動態(tài)編譯,抓取到的命令行如下
exp模塊,已封裝很完整,暫未找到開源代碼。
shellcode,執(zhí)行如下命令
攻擊時截圖如下,
執(zhí)行方式
樣本作者在PowerShell中攜帶的挖礦程序,會通過反射加載的方式進(jìn)行啟動,具體可以用如下代碼模擬啟動
(門羅畢)挖礦程序執(zhí)行后,界面如下
info.vbs腳本
上文說了info6.ps1和其相關(guān)的輔助模塊,同時提到一次WMIExec攻擊成功之后,會下拉一個info.vbs腳本,但是由于傳入?yún)?shù)問題,這個是不會被下拉的,這里簡單分析下。vbs腳本依然存在混淆,通過提取、整理,如下,先將編碼后的另一個挖礦程序?qū)懭氲絎MI中保存起來,使用的時候通過調(diào)用WriteBinary函數(shù)導(dǎo)出
之后取出來,釋放執(zhí)行,開始挖礦
完成寫一個WMI事件過濾器,間隔2h啟動一次,功能當(dāng)然是取挖礦程序,釋放執(zhí)行,這里不再贅述。
檢測&清除
通過代碼分析,本樣本實際傳播途徑主要為ms17010,所以提醒各位還是要及時安裝補丁。
檢測&清除PowerShell腳本代碼如下,請嘗試以管理員權(quán)限運行(請謹(jǐn)慎使用下列代碼,在自身不確定的情況下也可安裝金山毒霸進(jìn)行檢測)
3.金山毒霸可進(jìn)行查殺防御
總結(jié)
通過對本樣本的分析,可以知道樣本自身使用了很多開源代碼,實際由病毒作者編寫的代碼量很小,極大降低了制作難度,這也是現(xiàn)有非PE攻擊的一個普遍特性。
目前來看,非PE攻擊已經(jīng)有白熱化趨勢,隨著js、vbs腳本逐漸被殺軟“圍堵”,以PowerShell為載體的新一輪攻擊已經(jīng)開始,由于PowerShell的特殊性,現(xiàn)有依靠“白名單策略”構(gòu)建的防護(hù)體系存在“坍塌”的風(fēng)險,針對PowerShell的防御,將成為一個新的安全研究方向。
截止完稿,樣本已經(jīng)挖了13個門羅幣了,市值6000多元。
PS:歡迎大家關(guān)注、轉(zhuǎn)發(fā)、點贊、轉(zhuǎn)發(fā)、收藏等方式交流。