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