在跟踪分析Earth Lusca時,研究人員在攻擊者的服務器上發現了一個有趣的加密文件,即一個基於Linux的惡意程序,它似乎源於開源的Windows後門Trochilus,由於其快速的活動和SOCKS的實現,研究人員稱之為SprySOCKS。
早在2021年初,研究人員就發表了一篇研究論文,討論了一個與已有攻擊組織有關的運作,當時,研究人員追踪到該組織名為Earth Lusca。自研究人員進行初步研究以來,該組織一直保持活躍,甚至在2023年上半年還擴大了其攻擊範圍,目標是對世界各國都發起攻擊。
為此,研究人員還設法獲得了一個有趣的加密文件,該文件託管在攻擊者的傳播服務器上。研究人員在VirusTotal上找到了該文件的原始加載程序,並成功解密了它。有趣的是,解密後的有效負載是一個研究人員從未見過的以Linux為目標的後門。主執行例程及其字符串表明,它源於開源的Windows後門Trochilus,其中一些功能正在Linux系統中重新實現。研究人員將這個新的Linux變體命名為SprySOCKS,指的是Trochilus的快速行為和後門內的新套接字安全(SOCKS)實現。
對SprySOCKS後門的分析揭示了一些有趣的發現。後門包含一個引用後門版本號的標記。研究人員已經確定了兩個包含兩個不同版本號的SprySOCKS有效負載,這表明後門仍在開發中。此外,研究人員注意到交互式shell的實現可能受到了Derusbi惡意程序的Linux變體的啟發。
同時,SprySOCKS的命令和控制(CC)協議的結構與RedLeaves後門使用的協議類似,RedLeaves是一種遠程訪問木馬(RAT),針對Windows設備發起攻擊。它由兩個組件組成,加載程序和加密的主負載。加載程序負責讀取、解密和運行主負載。
與Windows版本類似,本文中分析的Linux變體也由這兩個組件組成。根據分析,RedLeaves也是基於Trochilus的公開源代碼構建的。
到目前為止,研究人員只觀察到了Earth Lusca使用的SprySOCKS。我們將在本文介紹更多關於Earth Lusca惡意程序的背景,以及對其組件和功能的全面分析。
最近的Earth Lusca活動Earth Lusca在2023年上半年仍然活躍,其攻擊主要集中在東南亞、中亞和巴爾幹半島的國家(對拉丁美洲和非洲國家的一些零星攻擊)。該組織的主要目標是涉及外交、技術和電信的政府部門。
Earth Lusca現在又將受害者面向公眾的服務器作為攻擊對象。此外,研究人員看到他們經常利用基於服務器的N天漏洞,包括(但不限於)以下漏洞:
CVE-2022-40684,Fortinet FortiOS、FortiProxy和FortiSwitchManager中存在身份驗證繞過漏洞;
CVE-2022-39952 ,Fortinet FortiNAC中存在未經驗證的遠程代碼執行(RCE)漏洞;
CVE-2021-22205 ,GitLab CE/EE中存在未經驗證的RCE漏洞;
CVE-2019-18935 ,ASP的Progress Telerik UI中存在未經驗證的遠程代碼執行漏洞.NET AJAX;
CVE-2019-9670/CVE-2019-9621 ,Zimbra協作套件中未經驗證的RCE的兩個漏洞;
ProxyShell(CVE-2021-34473、CVE-2021-3 4523v、CVE-202 1-31207),在Microsoft Exchange中執行未經身份驗證的RCE的一組三個漏洞。
Earth Lusca利用服務器漏洞滲透到受害者的網絡中,之後它將部署一個webshell並安裝Cobalt Strike進行橫向移動。該組織將洩露文件和電子郵件帳戶憑據,並進一步部署ShadowPad和Linux版本的Winnti等高級後門,對其目標進行長期間諜活動。
“mandibule”加載程序組件調查之初,研究人員觀察到一個名為libmonitor.so.2的文件託管在Earth Lusca的交付服務器上。在沒有先前上下文的情況下,這似乎是一個只包含隨機字節的二進製文件,這表明它很可能是一個加密的有效負載。研究人員使用唯一的文件名在VirusTotal上執行搜索,這使研究人員能夠識別相關的ELF文件(SHA256:65b27e84d9f22b41949e42e8c0b1e4b88c75211cbf94d5fd66edc4ebe21b7359),並將其命名為“mkmon”。 ELF文件可用於解密libmonitor.so.2文件並恢復其原始負載,從而證明“mkmon”是與libmonitor.so.2捆綁的加載程序。
加載程序並不是從零開始開發的,它的開發人員使用了一個公開的Linux ELF注入器,名為“mandible”(法語中下顎的意思)。最初的ELF注入器項目是一個命令行工具,能夠將有效負載進行自註入或註入另一個項目中。作為一個典型的命令行工具,它打印列出支持參數的用法文本。原始注入器還打印各種調試消息,以通知用戶有關注入的進度。
攻擊者使用mandibule項目作為其惡意程序加載程序的基礎。項目創建者刪除了使用屏幕和注入到其他進程的能力,然後添加了一個函數來加載和解密第二階段。研究人員認為這項工作做得很草率,因為開發人員沒有完全刪除調試消息,加載程序也沒有被利用,也就是說,它是用調試符號傳播的。事實上,攻擊者似乎只為使其能夠裝載有效負載而對原始注入器進行了最少的修改。
傳播調試信息的加載程序,請注意,存在“.debug*”部分
運行加載程序時顯示的調試消息
圖2中顯示的調試消息有兩個不同的標記。 “”標記來自原始mandibule項目,而“[+]”或“[-]”標記是由攻擊者添加到加載程序的調試消息。
加載程序進程的名稱由prctl命令設置為“kworker/0:22”。通常,kworker是內核工作線程的佔位符進程。然而,在這種情況下,“kworker”名稱與內核工作線程無關。相反,當用戶通過ps或top等命令列出所有正在運行的任務時,加載程序濫用這個名稱只是為了避免懷疑。
進程名稱設置為“kworker/0:22”
受感染設備上的“kworker*”進程列表,突出顯示的進程是分析的加載程序
加載器接受兩個命令行參數,加密的第二階段文件的路徑和自刪除標誌。第二階段使用AES-ECB密碼進行加密,密碼在加載器中進行硬編碼。
用於解密第二階段的函數
加載器還負責設置持久性。它將自己和加密的第二階段複製到/usr/sbin/目錄,請參閱調試說明“[+] rename loader ok” and “[+] rename server ok”。然後,它使用chkconfig或systemd將加載程序作為服務啟動。如果自刪除標誌設置為“1”,則最初執行的加載程序和加密的階段文件都將被刪除。
SprySOCKS組件在檢查解密的第二階段時,可見的字符串顯示它是用HP Socket項目靜態編譯的,這是一個源自中國的高性能網絡框架。
可見字符串中的HP Socket引用
初始化過程顯示了一個硬編碼的AES-ECB密碼,用於加密與CC服務器的通信。
用於CC通信的AES密碼
CC地址和端口也在模塊中進行了硬編碼,但它們沒有加密,並且以純文本形式可見。
CC服務器和端口配置
CC通信由通過TCP(傳輸控制協議)發送的數據包組成。數據包的標頭由0x12字節組成,後面是base64編碼的AES ECB加密消息。與之前對RedLeaves惡意程序的分析中的表B-2類似,標頭部分包含一些隨機和硬編碼的值,加上有效負載的長度(下圖中用藍色突出顯示)。
從受害者的設備發送到CC服務器的數據包示例
0xACACBCBBC的固定值,發生在偏移量為4-7的發送數據包中
原始Trochilus中使用的固定值為0xAFAFBFBF,而在RedLeaves變體中使用的是0xBFD9CBAE。
在解碼和解密消息後,它會顯示諸如“__handler”, “__msgid”, “__serial”和“clientid”之類的關鍵字。其中一些關鍵字可以在Trochilus中找到,但更重要的是,這些消息與RedLeaves通信協議非常相似。
解碼和AES ECB解密消息
RAT實現了幾個標准後門命令,包括收集系統信息、啟動交互式shell、列出網絡連接、創建SOCKS代理、上傳和下載文件以及其他基本文件操作(列出、刪除、重命名和創建目錄)。下圖顯示了消息ID以及與消息相關的函數的大致描述。
已處理消息列表及其函數說明
獲取設備信息(CollectInfo)
客戶端信息結構類似於Trochilus使用的原始client_INFO結構,其中一些參數與研究人員分析的惡意程序相同。還值得注意的是參數“cpufrep”,它可能是“cpufreq”(CPU頻率)的拼寫錯誤。
“ClientInfoCallbacks.h”中的CLIENT_INFO結構,它是Trochilus RAT
在ClientInfoManager.cpp(Trochilus RAT)中,你可以看到CLIENT_INFO結構中參數的內部名稱。請注意,它們中的大多數具有與上圖中列出的參數相同的值。此外,“cn”、“ip”、“groups”、“vercode”、“priv”、“lang”、“mem”、”os“、”x64“和”cpufrep“是相同的。
“ClientInfoCallbacks.h”中的CLIENT_INFO結構,它是Trochilus RAT
SprySOCKS的CLIENT_INFO結構中的字段列表
交互式shell當客戶端被請求創建交互式終端時,它首先與偽終端(PTY)子系統(/dev/ptmx)的主終端進行交互。然後,在/dev/pts目錄中創建一個具有唯一設備節點名稱的新從屬PTY。
之後,將啟動一個execve命令,其中包含參數“[diskio]”、指示其不保存會話歷史記錄的環境變量(HISTFILE=/dev/null)以及包含當前用戶名(u)、計算機主機名(h)和工作目錄(w)-(PS1=\\u@\\h:\\w\\$)的提示字符串(PS1)。
交互式shell的創建
在搜索上述字符串時,可以找到與Linux版本的Derusbi匹配的YARA規則的引用。攻擊者很可能是從其他惡意程序使用的技術中獲得靈感,甚至可能直接訪問了Derusbi源代碼本身。
客戶端ID生成器
環境ID(客戶端ID)由兩個組件組成。第一部分是第一個列出的接口的MAC地址,長度為6字節,惡意程序獲得第一個列出接口,但如果該接口是“環回接口(loopback interface)”,則跳過該接口並考慮下一個接口,當轉換為十六進製字符串時,其長度為12字節。第二部分對應處理器函數,由使用“CPUID_GETFEATURES”參數調用的CPUID指令返回。生成結果的長度為8個字節,當轉換為十六進製字符串時,其長度為16字節。因此,生成的客戶端ID具有14個字節,並且在轉換為十六進製字符串之後,它具有28個字節。
幕後組織
研究人員在2023年6月初觀察到託管在傳播服務器207[.]148[.]75[.]122上的加密SprySOCKS有效負載。該服務器由Earth-Lusca攻擊者運營,還向目標傳播了Cobalt Strike和Linux版本的Winnti的可執行文件。
SprySOCKS有效負載包含版本號(1.3.6)和CC域lt76ux[.]confenos[.]shop。研究人員在VirusTotal上發現其他用戶上傳的另一個SprySOCKS有效負載,版本號為1.1,它連接到CC域2e6veme8xs[.]bmssystemg188[.]us。值得注意的是,同級域rvxzn49eghqj[.]bmssystemg188[.]us被解析為38[.]60[.]199[.]208,與793tggz7mw91[.]itcom666[.]live重疊。 itcom666[.]live域是一個已知的CC域,由Earth Lusca開發。
總結我們在本文介紹了Earth Lusca使用的新後門SprySOCKS,它擴展了該組織的Linux武器庫。最近,攻擊者通過利用已知漏洞,攻擊了受害者面向公眾的服務器。
所以,各類組織應主動管理其攻擊面,最大限度地減少進入其係統的潛在入口點,並降低被成功突破的可能性。企業應定期應用修復程序並更新其工具、軟件和系統,以確保其安全性、功能性和整體性能。