警惕新型僵尸Goldoon:一款指令集覆蓋最廣的零檢出率僵尸家族

發布時間 2024-04-29

一、概 述


近期,啟明星辰ADLab監測到一批VT平臺零檢出率的新物聯網僵尸,我們對僵尸程序的二進制代碼和通信協議做了深入同源性分析,并判斷該系列僵尸為一款從未出現過的新型僵尸家族。該僵尸的文件命名、代碼特征中常常包含” Goldoon“的字符串,因此我們將此僵尸網絡家族命名為“Goldoon“。此外該僵尸具有極強的平臺兼容性,是目前支持指令集最全的僵尸家族(目前已發現的支持指令集多達18種),除了支持主流的x86、arm、mips、mipsel、powerpc、sparc、riscv、sh4、m68k等指令集外,其還支持一些非常罕見的指令集alpha、hppa等。值得注意的是,alpha指令集目前除了我國某國產處理器(主要用于我國超級計算機)在使用外,其他國家幾近絕跡,其可能造成的威脅值得我們重視。


我們最初于2024年4月8日發現Goldoon僵尸,起初,我們對這些零報毒的ELF文件進行了快速分析確認,發現其存在惡意行為,但對于這些文件安全軟件在近兩周時間內都未能檢測預警,這引起了我們的濃厚興趣并進一步對其追蹤分析,最后我們發現了80多個樣本。通過逆向工程這些樣本發現,該僵尸通過模塊化設計和分階段作業的方式降低被檢測的風險,比如將入侵掃描、遠程下發、本地加載及僵尸守候等功能設計成獨立模塊。此外相比于常規的物聯網僵尸,Goldoon僵尸的攻擊設備類型可覆蓋超過18種處理器架構,并且幾乎支持包括windows、unix/linux以及所有POSIX標準的系統,除此之外,其還將“魔爪”伸向了一些相對小眾的指令集架構,這對于物聯網設備尤其是一些長期未遭遇攻擊的小眾架構設備來說可能構成嚴重的威脅。


目前,大量新出現的被各大廠商重新命名的物聯網僵尸網絡大部分還是基于開源僵尸框架如Mirai、Gafgyt等進行定制開發,此次我們發現的Goldoon則是完全重新設計和開發的新僵尸程序,目前,攻擊者還在持續針對多階段樣本進行功能的更迭和測試。截止本文發布,尚未發現控制者發起大規模攻擊活動,不過我們已經監測到其發出的一些零星的指令用于測試攻擊,這說明Goldoon當前可能處于快速構建階段,需要高度警惕其后續的擴張和攻擊活動。本文將具體介紹Goldoon僵尸網絡并針對其攻擊活動特點、功能代碼以及控制協議等進行深入分析。


圖片1.png

圖1: Goldoon Loader在VT的檢測情況


圖片2.png
圖2: Goldoon dropper在VT的檢測情況

二、攻擊威脅分析


通過我們的物聯網威脅數據平臺及相關情報的交叉印證,目前共發現和關聯到Goldoon相關樣本80余個。從這批樣本的攻擊目標來看,Goldoon僵尸網絡除了針對傳統的PC端設備如Windows、Linux(x86、x64)實施攻擊外,還盯上了物聯網設備這塊肥肉,包括arm、mips、mipsel、powerpc、sparc、riscv、sh4、m68k等常見處理器架構的設備都在其攻擊范圍之內。Goldoon共計支持18種處理器架構,有意思的是其中還涉及到s390x、alpha、hppa等相對小眾的指令集,這些指令集雖然普及率較低,但仍有不少小眾設備、舊設備或是基于相關指令集自研升級的國產設備在使用,比如IBM zSystems服務器(s390x)、某國產處理器(alpha)等,該國產處理器目前主要用于我國超級計算機,涉及到國家算力安全。因此不能僅僅因為設備小眾、潛在攻擊少就放松警惕,高枕無憂,同樣需要重視其中可能隱藏的安全風險。Goldoon當前支持攻擊的指令集架構如下表所示:


表1:Goldoon支持的指令集架構

表1.png


由于Goldoon目前還處在構建擴張階段,我們根據已知的攻擊手法和投遞樣本等特點,梳理它的攻擊流程如下所示:


圖片3.png
圖3:Goldoon攻擊流程圖


攻擊者針對Linux和Windows平臺分別設計了模塊分離的方式降低耦合度從而減少被檢測風險,包括漏洞掃描、腳本執行、Loader、Dropper等模塊。從目前捕獲到的樣本代碼來看,尚未發現漏洞掃描模塊,猜想該模塊應被設計用于在C2服務器中執行以避免泄露漏洞POC和情報資源。入侵成功后,攻擊者進一步利用腳本或Loader程序下載執行最終的僵尸程序(Dropper)。


為了確認攻擊者是否在進行免殺測試,我們統計了這批樣本中存在編譯時間的PE樣本并與上傳VT平臺的時間進行比較,從下表可以看出樣本的編譯時間與上傳時間間隔通常在數分鐘內,非常接近。因此基本可以判斷這部分樣本是由攻擊者自行上傳并用于測試免殺效果,以下是部分PE樣本的時間信息:


表2:PE樣本時間信息

表2.png



之后,我們針對這批樣本進行了多維度的溯源和分析,包括與常見僵尸家族的代碼相似度、同源性等比對分析后,確認這是一款新出現的物聯網僵尸網絡。這批樣本最早的活躍時間在4月8日,可以初步判斷幕后的控制者應該在4月初完成了僵尸代碼的開發布局,目前已經處于功能測試和擴張的前期階段。我們從中提取到攻擊者使用的兩個C2服務器:185.106.94.51(奧地利)和94.228.168.60(德國)。在持續監測其活躍動向的過程中,曾監控到2次攻擊者發送的指令,其采用udp_legit的攻擊方式分別針對位于荷蘭和伊朗的IP發起DDoS攻擊,判斷可能是用于小規模的測試活動。截止目前尚未發現有大規模的攻擊活動發生,我們也會持續關注和追蹤Goldoon的最新版本變化和攻擊動態。


三、攻擊樣本分析


3.1 Linux平臺樣本


目前,監測到Goldoon基于Linux平臺的樣本約50個,其中絕大部分樣本做了符號剝離處理。同時,相同架構平臺的樣本間也大多存在功能相異的情況,不過由于這些功能變化間隔時間較短且多屬于獨占設備、反調試、持久化等對抗性功能的變化,整體代碼框架和通信協議等并未改變,因此不做版本的細分。此外,我們還從中發現了個別保留符號的調試版樣本(猜測屬于作者誤傳),同樣能夠佐證Goldoon處于測試功能及免殺的版本快速更迭階段。


3.1.1 Shell腳本


在相關攻擊中已發現了超過5種不同代碼格式的腳本文件,代碼實現的基本功能類似,均是通過wget、curl、ftp等方式下載執行不同架構的惡意模塊Dropper,之后刪除自身和下載的模塊以清除痕跡。更進一步的,攻擊者通過改變一些代碼因子,如不同的命令執行參數、函數封裝、循環嵌套、結構亂序、換行符、引號包裹等方式來嘗試對抗靜態特征檢測,目前相關腳本在VT上依然是0報毒的狀態。部分腳本示例如下圖:


圖片4.png

圖4:Shell腳本


3.1.2 Loader


Loader主要是用于加載后續的惡意模塊Dropper,相較Shell腳本加載Dropper的方式,會增加部分對抗檢測的機制及功能,這里以Debug版Loader為例介紹。


圖片5.png

圖5:Loader核心代碼


在Loader和Dropper中,Goldoon的多個樣本均包含initkiller函數或是保留該函數未調用,類似的初始化和對抗功能較多,由于這些版本更迭的時間非常接近且不同功能版本的數量很多,因此不做更細的版本區分,一些重要功能例如:獨占設備,程序通過禁用CVE-2017-17215漏洞端口(37215)、禁用telnet端口(23)以及禁用SSH端口(22)等方式來嘗試獨占設備。


圖片6.png
圖6:獨占設備


在Start_dropper函數中,程序會從指定C2下載惡意代碼,并在修改文件權限后執行惡意程序。


圖片7.png
圖7:下載執行后續惡意代碼(Dropper)


3.1.3 Dropper


首先,后續下載執行的惡意代碼(Dropper)會通過SetInjectMethod函數獲取程序執行參數來設置BOT_INFECT_METHOD值,此值應指設備被感染的方式(如入侵使用的漏洞或爆破類別),該值之后在上線包中會作為系統信息回傳。


圖片8.png
圖8:獲取設備被感染方式


Start函數中則是程序核心的代碼部分,包括初始化配置、上線機制、心跳機制、控制指令解析等。


圖片9.png

圖9:核心代碼部分


(1)初始化配置


包括初始化異常處理、初始化隨機種子、初始化DNS解析、初始化攻擊管理等,其中還初始化了wolfSSL_Init的加密庫,wolfSSL是一個輕量級、可移植、基于C語言面向嵌入式的TLS 庫,不過從目前掌握的情況來看,攻擊者還沒有實際調用該庫來加密通信流量,但是后期可能會通過wolfSSL加密以增強流量隱匿性。


圖片10.png
圖10:初始化配置


在初始化配置的基礎上,Goldoon的一些版本還在測試增加不同的功能,例如反調試、持久化等對抗功能。


圖片11.png

圖11:反調試代碼



圖片12.png

圖12:持久化代碼


(2)上線機制


在open_connection函數中,程序會獲取系統信息,包括用戶名、主機名、操作系統信息、受感染方式、CPU核心數、是否支持IPV6、內存、系統版本等,并組包發送至C2。相關代碼及上線數據包如下所示:


圖片13.png
圖13:上線機制代碼


通過分析,我們將上線數據包格式進行解析,解析后的具體結構如下表所示。


表3:上線數據包格式

表3.png


(3)心跳機制

程序創建單獨的線程用于發送心跳包,每間隔60秒發送”Time”及時間戳,相關代碼和上線數據包如下:


圖片14.png
圖14:心跳包機制代碼


心跳包數據解析如下表所示。


表4:心跳包數據格式

表4.png


抓取的上線包和心跳包流量數據如下圖所示。


圖片15.png
圖15:上線包和心跳包流量數據


(4)控制指令解析


這里需要注意的是,在read_packet函數中,程序首先會接收兩次(4字節/每次)數據,該數據分別為type和args_length,且在成功接收后進行判斷,若值不為-1時再繼續接收其他數據。


圖片16.png
圖16:接收數據代碼


在handle_packet函數中,程序解析控制指令如下:


圖片17.png
圖17:控制指令代碼


攻擊指令數據包所對應的結構體如下所示。


圖片18.png

圖18:控制指令數據包結構體


攻擊指令由Packet結構體中的type決定,共包含五類:


表5:攻擊指令

表5.png


攻擊指令的數據包(模擬數據包)如下圖所示。


圖片19.png
圖19:攻擊指令數據包


攻擊指令數據解析如下表所示。


表6:攻擊指令數據解析

表6.png


結構體數組args[]中value值會根據數組成員依序從下標0至3進行相應的數據提取,具體數據內容如下圖所示。


圖片20.png

圖20:結構體數組內容


Linux版樣本目前共發現28種攻擊方式,其中http_exploit、http_xflow、http_pps函數內功能代碼為空,攻擊者未來可能會繼續擴展相關功能。


圖片21.png

圖21:Linux版樣本攻擊方式代碼


3.2 Windows平臺樣本


3.2.1 powershell腳本


Windows版的powershell腳本相對較簡單,從指定地址下載并執行下一階段的惡意模塊。同時該腳本在VT檢測率也極低,結果顯示僅1家報毒。


圖片22.png
圖22:powershell腳本


3.2.2 Loader


Windows版與Linux版本的Loader功能相比,僅具有下載并執行下一階段惡意程序的功能。


圖片23.png
圖23:Loader部分代碼


3.2.3 Dropper


當Dropper完成初始化異常處理、初始化隨機種子、初始化DNS解析以及初始化攻擊管理等配置后,其會開啟單獨的線程來遍歷當前運行的進程,并從中查找”taskmgr.exe”和”debugg”進程,若存在則關閉該進程,以達到隱藏自身和反調試目的。


圖片24.png
圖24:反調試代碼


通過控制臺命令查找正在監聽3389端口(通常用于遠程桌面連接)的進程,若存在則結束該進程,隨后再綁定和監聽該端口。


圖片25.png
圖25:端口監聽代碼


設置當前進程優先級為實時以及當前線程優先級為最高級別。具體代碼如下圖所示。


圖片26.png
圖26:設置進程和線程優先級


將自身文件復制到啟動項文件夾路徑下和Windows系統文件夾中,并添加到注冊表自啟動項,以實現其持久性。


圖片27.png
圖27:實現持久化


通過分析我們發現,Windows版與Linux版的上線機制、心跳機制以及控制指令解析等通信協議相同,因此我們便不再進行贅述。


但在攻擊模式方面,Windows版Goldoon目前總共僅包括15種攻擊模式,且其中有4種攻擊模式暫未實現,具體如下圖所示。


圖片28.png
圖28:Windows版攻擊模式代碼

四、總 結


本文披露了近期新出現的物聯網僵尸網絡Goldoon,重點針對其攻擊活動特點、各獨立模塊的功能代碼以及控制協議等進行了深入分析和介紹,并分別對Linux平臺和Windows平臺的樣本進行了技術分析,包括其中涉及的功能迭代、兼容性、免殺性等特性。


Goldoon在設計之初就已適配了超過18種指令集架構,這在大多數物聯網僵尸中是較為少見的,也可能成為未來僵尸網絡擴張的一個新方向。通常來說,存在安全隱患的設備往往可能被不同的僵尸網絡重復多次入侵,而當前越來越多的僵尸都開始嘗試禁用漏洞端口以獨占設備,這就造成大量易入侵的 “肉雞”資源在海量的僵尸攻擊下越來越稀缺。與此同時,對于一些小眾指令集架構來說,由于大多數僵尸網絡并沒有做適配支持,那么即使其中存在安全隱患的設備被入侵也很可能未成功植入惡意代碼。因此,針對這些“漏網之魚”定制攻擊可能成為未來僵尸網絡控制者快速擴大網絡規模的一種相對高效的方式,需要格外警惕。未來我們也會持續關注和追蹤Goldoon的最新版本迭代變化和攻擊動態。


五、IOC


C&C :


94.228.168.60

185.106.94.51


Shell腳本:


3f0e0c2f929d2e8ed24efac137fba2100a9afa317b5e74cb9a98b306e36d38bd
53acad3c3017049c5b02bbbb39118198d22c494d21fd2a528eccc8ea7feb6c33
f25f235823386935504b91e74f34a581c8c66982e51d0d94b9af2fb9e528aac7
35ad992121d507477793fc3cd555fbabf38b399a282bd6a29e4361f0b42ebbe8

6ddd5789e2ed4d071a17f6aaeba61f3a7c4844168a3cb02fb4cebdbaee183b49


Loader:


b48afb4e5fed1a42e2d60709329f2ac1009aae5fb18a6ec23917e64872ed540f
8eb9c1eaecd0dcdd242e1bc8c62a1052915b627abe2de8ce147635fb7da3bfcc

48130a7c09a5c92e15b3fc0d2e1eb655e0bd8f759e01ba849f7734e32dbc2652


Dropper:


e7cd7305eeb4b26b36648febbed3ed5bfebf0345464f73deefa54d366bbbb6a1
cd416d8ef5c1274a5e77dfd4830d495a29f02442fb5ccaa9842824d70a43c640
a60b505d0d42c334901fb4972b004a4bcb78de5035ed4f8c3f27b16df35429c3
df8d88ff3e138be09c921058265e07df98ad50121dd70d9a292f223b19f456ac
26737091fe62098ec80bf03ae1377bafd85c6796fffd538519689fd663649af7