警惕新型僵尸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: Goldoon Loader在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當前支持攻擊的指令集架構如下表所示:
由于Goldoon目前還處在構建擴張階段,我們根據已知的攻擊手法和投遞樣本等特點,梳理它的攻擊流程如下所示:

攻擊者針對Linux和Windows平臺分別設計了模塊分離的方式降低耦合度從而減少被檢測風險,包括漏洞掃描、腳本執行、Loader、Dropper等模塊。從目前捕獲到的樣本代碼來看,尚未發現漏洞掃描模塊,猜想該模塊應被設計用于在C2服務器中執行以避免泄露漏洞POC和情報資源。入侵成功后,攻擊者進一步利用腳本或Loader程序下載執行最終的僵尸程序(Dropper)。
為了確認攻擊者是否在進行免殺測試,我們統計了這批樣本中存在編譯時間的PE樣本并與上傳VT平臺的時間進行比較,從下表可以看出樣本的編譯時間與上傳時間間隔通常在數分鐘內,非常接近。因此基本可以判斷這部分樣本是由攻擊者自行上傳并用于測試免殺效果,以下是部分PE樣本的時間信息:
之后,我們針對這批樣本進行了多維度的溯源和分析,包括與常見僵尸家族的代碼相似度、同源性等比對分析后,確認這是一款新出現的物聯網僵尸網絡。這批樣本最早的活躍時間在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:Shell腳本
3.1.2 Loader
Loader主要是用于加載后續的惡意模塊Dropper,相較Shell腳本加載Dropper的方式,會增加部分對抗檢測的機制及功能,這里以Debug版Loader為例介紹。
圖5:Loader核心代碼
在Loader和Dropper中,Goldoon的多個樣本均包含initkiller函數或是保留該函數未調用,類似的初始化和對抗功能較多,由于這些版本更迭的時間非常接近且不同功能版本的數量很多,因此不做更細的版本區分,一些重要功能例如:獨占設備,程序通過禁用CVE-2017-17215漏洞端口(37215)、禁用telnet端口(23)以及禁用SSH端口(22)等方式來嘗試獨占設備。

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

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

Start函數中則是程序核心的代碼部分,包括初始化配置、上線機制、心跳機制、控制指令解析等。
(1)初始化配置
包括初始化異常處理、初始化隨機種子、初始化DNS解析、初始化攻擊管理等,其中還初始化了wolfSSL_Init的加密庫,wolfSSL是一個輕量級、可移植、基于C語言面向嵌入式的TLS 庫,不過從目前掌握的情況來看,攻擊者還沒有實際調用該庫來加密通信流量,但是后期可能會通過wolfSSL加密以增強流量隱匿性。

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

圖11:反調試代碼

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

通過分析,我們將上線數據包格式進行解析,解析后的具體結構如下表所示。
程序創建單獨的線程用于發送心跳包,每間隔60秒發送”Time”及時間戳,相關代碼和上線數據包如下:

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

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

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

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

圖18:控制指令數據包結構體
攻擊指令由Packet結構體中的type決定,共包含五類:
攻擊指令的數據包(模擬數據包)如下圖所示。

攻擊指令數據解析如下表所示。
結構體數組args[]中value值會根據數組成員依序從下標0至3進行相應的數據提取,具體數據內容如下圖所示。
圖20:結構體數組內容
Linux版樣本目前共發現28種攻擊方式,其中http_exploit、http_xflow、http_pps函數內功能代碼為空,攻擊者未來可能會繼續擴展相關功能。

圖21:Linux版樣本攻擊方式代碼
3.2 Windows平臺樣本
3.2.1 powershell腳本
Windows版的powershell腳本相對較簡單,從指定地址下載并執行下一階段的惡意模塊。同時該腳本在VT檢測率也極低,結果顯示僅1家報毒。

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

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

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

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

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

通過分析我們發現,Windows版與Linux版的上線機制、心跳機制以及控制指令解析等通信協議相同,因此我們便不再進行贅述。
但在攻擊模式方面,Windows版Goldoon目前總共僅包括15種攻擊模式,且其中有4種攻擊模式暫未實現,具體如下圖所示。

四、總 結
本文披露了近期新出現的物聯網僵尸網絡Goldoon,重點針對其攻擊活動特點、各獨立模塊的功能代碼以及控制協議等進行了深入分析和介紹,并分別對Linux平臺和Windows平臺的樣本進行了技術分析,包括其中涉及的功能迭代、兼容性、免殺性等特性。
Goldoon在設計之初就已適配了超過18種指令集架構,這在大多數物聯網僵尸中是較為少見的,也可能成為未來僵尸網絡擴張的一個新方向。通常來說,存在安全隱患的設備往往可能被不同的僵尸網絡重復多次入侵,而當前越來越多的僵尸都開始嘗試禁用漏洞端口以獨占設備,這就造成大量易入侵的 “肉雞”資源在海量的僵尸攻擊下越來越稀缺。與此同時,對于一些小眾指令集架構來說,由于大多數僵尸網絡并沒有做適配支持,那么即使其中存在安全隱患的設備被入侵也很可能未成功植入惡意代碼。因此,針對這些“漏網之魚”定制攻擊可能成為未來僵尸網絡控制者快速擴大網絡規模的一種相對高效的方式,需要格外警惕。未來我們也會持續關注和追蹤Goldoon的最新版本迭代變化和攻擊動態。
五、IOC
94.228.168.60
185.106.94.51
Shell腳本:
6ddd5789e2ed4d071a17f6aaeba61f3a7c4844168a3cb02fb4cebdbaee183b49
Loader:
48130a7c09a5c92e15b3fc0d2e1eb655e0bd8f759e01ba849f7734e32dbc2652
Dropper: