內(nèi)聯(lián)匯編支持:Rust通過asm!宏支持x64內(nèi)聯(lián)匯編,允許開發(fā)者直接嵌入?yún)R編指令,從而實(shí)現(xiàn)對(duì)硬件的精細(xì)控制。 直接操作內(nèi)存:Rust的unsafe關(guān)鍵字允許開發(fā)者繞過編譯器的安全檢查,直接操作內(nèi)存,這為惡意軟件編寫者提供了更大的靈活性和控制權(quán)。 反編譯難度高:Rust的編譯器優(yōu)化和代碼生成特性使得惡意軟件的反編譯和分析變得更加困難,從而增加了惡意軟件的隱蔽性和防御難度。
隨著技術(shù)的持續(xù)發(fā)展,Rust生態(tài)系統(tǒng)日益成熟,新的惡意軟件樣本類型和攻擊手法也不斷涌現(xiàn)。因此,應(yīng)對(duì)和分析Rust樣本是有必要的。 接下來,本文將從多個(gè)角度剖析Rust在惡意軟件中的具體應(yīng)用,并對(duì)最新捕獲的Rust樣本進(jìn)行詳細(xì)分析。 Rust在惡意軟件中的應(yīng)用場景 Rust通過asm!宏支持內(nèi)聯(lián)匯編(Inline Assembly),允許開發(fā)者直接在代碼中嵌入特定架構(gòu)的機(jī)器指令。這一特性使病毒開發(fā)者在編寫Shellcode時(shí),能夠更加靈活且具有更強(qiáng)的控制力。 Cobalt Strike通過Rust重寫的核心部分在于其通信協(xié)議的實(shí)現(xiàn),主要包括RSA加解密、AES加解密、Base64編解碼及配置文件的加密與解析。其具體流程為:首先提取配置信息,然后利用RSA對(duì)這些信息進(jìn)行加密,其中加密過程涉及用于AES解密協(xié)商的密鑰。 RSA公鑰 RSA加密 隨后,對(duì)回傳的數(shù)據(jù)進(jìn)行AES加解密。 AES-CBC加解密 Rootkit功能圖 斷鏈隱藏驅(qū)動(dòng) 斷鏈隱藏進(jìn)程 內(nèi)核結(jié)束進(jìn)程 內(nèi)核APC Shellcode注入 getAsyncKeyState獲取鍵盤數(shù)據(jù) 摘除進(jìn)程回調(diào)、線程回調(diào)、模塊加載回調(diào)、注冊(cè)表回調(diào)。 摘除進(jìn)程回調(diào)、線程回調(diào)、模塊加載回調(diào)、注冊(cè)表回調(diào) 最新樣本分析 查殺圖 執(zhí)行流程圖如下: main函數(shù) 管理員權(quán)限執(zhí)行 計(jì)劃任務(wù) 通過PowerShell命令創(chuàng)建計(jì)劃任務(wù)。 User-Agent(UA) 隨后,樣本會(huì)在https://fanciful-gelato-78b95c.netlify.app/15429b.bin中下載惡意Shellcode代碼,并將其加載執(zhí)行。 下載惡意Shellcode代碼 接下來,樣本通過申請(qǐng)內(nèi)存空間、復(fù)制惡意代碼并修改內(nèi)存屬性(設(shè)置為可執(zhí)行權(quán)限)的方式,加載并執(zhí)行Shellcode。 分配內(nèi)存 最后,樣本通過創(chuàng)建新線程來實(shí)現(xiàn)執(zhí)行惡意代碼。 線程執(zhí)行use std::arch::asm;//Linuxfn main() {unsafe{asm!("mov rax, 60","mov rdi, 42","syscall", );}}
對(duì)其惡意代碼進(jìn)行分析,其通過CLR(Common Language Runtime公共語言運(yùn)行庫)內(nèi)存加載PE的方式執(zhí)行后門功能。
對(duì)提取的PE文件進(jìn)行分析后,確認(rèn)其為Xworm 5.6遠(yuǎn)控木馬,后門通信地址為154.197.33.29:7000。該變種版本已將所有與"Xworm"相關(guān)的字段抹去,以規(guī)避檢測。
修改版Xworm 5.6
huhu7.26.msi安裝:
在初始版本中通過MSI安裝程序釋放并執(zhí)行惡意代碼,釋放的文件包括:
protector.exe(基于Rust編寫的惡意代碼加載器)。 Firefoxlatest.exe(合法的火狐瀏覽器安裝程序,用于偽裝)。 JPG文件。
MSI釋放文件 通過對(duì)MSI安裝包的CustomAction進(jìn)行分析,可以發(fā)現(xiàn)protector.exe是由aicustact.dll的導(dǎo)出函數(shù)LaunchAPP啟動(dòng)執(zhí)行的。而火狐瀏覽器安裝程序則是通過viewer.exe以命令行方式進(jìn)行安裝的。 MSI主行為 AI_APP_FILE 初始版本的Rust加載器附帶了PDB符號(hào)文件。經(jīng)分析發(fā)現(xiàn),其行為與變種版本基本一致:均通過添加計(jì)劃任務(wù)實(shí)現(xiàn)持久化,并從網(wǎng)絡(luò)地址http://107.167.2.178/15429.bin下載并執(zhí)行惡意代碼。 下載惡意代碼 后續(xù)加載過程與變種版本相同,具體步驟如下:先開辟一塊內(nèi)存空間,再將內(nèi)存的權(quán)限修改為可執(zhí)行,最后創(chuàng)建線程來執(zhí)行下載的惡意代碼。 對(duì)網(wǎng)絡(luò)獲取的惡意代碼Shellcode進(jìn)行分析后,發(fā)現(xiàn)其執(zhí)行方式同樣是通過內(nèi)存加載PE文件。該版本與變種版本的主要區(qū)別在于,其中的Xworm后門為未修改的5.6版本。