Symbiote介紹
Symbiote是主要針對(duì)Linux系統(tǒng)的惡意軟件,在2021年11月首次被發(fā)現(xiàn),主要針對(duì)拉丁美洲的金融部門,業(yè)界普遍描述“幾乎不可能被檢測到”。該惡意軟件可通過“寄生感染”系統(tǒng)感染所有正在運(yùn)行的進(jìn)程,并為威脅參與者提供rootkit功能、遠(yuǎn)程訪問等。
由于Symbiote隱藏了所有文件、進(jìn)程,因此在受感染的機(jī)器上執(zhí)行實(shí)時(shí)取證可能不會(huì)發(fā)現(xiàn)任何問題。除了Rootkit之外,Symbiote還為攻擊者提供了一個(gè)后門,攻擊者可以使用硬編碼密碼以機(jī)器上的任何用戶身份登錄,并以最高權(quán)限執(zhí)行命令。目前,天融信EDR、自適應(yīng)安全防御系統(tǒng)、過濾網(wǎng)關(guān)系統(tǒng)、僵尸網(wǎng)絡(luò)木馬和蠕蟲監(jiān)測與處置系統(tǒng),以及新版本的入侵檢測系統(tǒng)、入侵防御系統(tǒng)等產(chǎn)品均可精準(zhǔn)檢測并查殺該惡意軟件,防止威脅事件發(fā)生,提高終端環(huán)境安全。
接下來,一起揭曉Symbiote是如何隱藏自己的~
樣本分析
靜態(tài)樣本分析
Symbiote是一種疑似針對(duì)拉丁美洲金融部門的Linux平臺(tái)rootkit,其使用了多種hook技術(shù)藏匿自身行為,具有較好的免殺性,主要功能是竊取登錄憑據(jù)并在受感染機(jī)器上植入后門。
經(jīng)歷長時(shí)期的開發(fā)演進(jìn),目前Symbiote較新的版本是名為search.so的64位ELF共享目標(biāo)文件。

它通過設(shè)置LD_PRELOAD環(huán)境變量的值,在程序運(yùn)行前優(yōu)先加載惡意動(dòng)態(tài)鏈接庫search.so,search.so在導(dǎo)出函數(shù)中劫持了多個(gè)庫函數(shù)。

Symbiote使用RC4算法加密所有字符串,密鑰為HEX數(shù)值“030F1513081609061C0A1A0D120217”,硬編碼在ELF的固定位置中。

所有被RC4加密的字符串的解密python3代碼如下:
DEFAULT_KEY = "\x03\x0f\x15\x13\x08\x16\x09\x06\x1c\x0a\x1a\x0d\x12\x02\x17"
def rc4(data, key=DEFAULT_KEY, skip=0):
x = 0
box = list(range(256))
x = 0
for i in list(range(256)):
x = (x + box[i] + ord(key[i % len(key)])) % 256
tmp = box[i]
tmp2 = box[x]
box[i] = box[x]
box[x] = tmp
x = 0
y = 0
out = []
if skip > 0:
for i in list(range(skip)):
x = (x + 1) % 256
y = (y + box[x]) % 256
box[x], box[y] = box[y], box[x]
for char in data:
x = (x + 1) % 256
y = (y + box[x]) % 256
box[x], box[y] = box[y], box[x]
k = box[(box[x] + box[y]) % 256]
out.append(chr(ord(char) ^ k))
return ''.join(out)
if __name__ == '__main__':
data = "\x24\xa3\x8a\x5a\xe7\x58\x82\x82\xf7\x2c\x44\xf1\x20\x67"
result = rc4(data, DEFAULT_KEY, 0)
print(result)
動(dòng)態(tài)調(diào)試分析
當(dāng)調(diào)用被search.so文件hook的函數(shù)時(shí),內(nèi)存中才會(huì)動(dòng)態(tài)加載惡意so文件,沒有被hook的情況下會(huì)在libc-2.13.so中立即填充系統(tǒng)調(diào)用號(hào)進(jìn)行syscall系統(tǒng)調(diào)用,而hook之后的原ELF進(jìn)行API調(diào)用時(shí)會(huì)通過一條jmp匯編指令跳轉(zhuǎn)到search.so的導(dǎo)出函數(shù)中執(zhí)行。

需要攔截的進(jìn)程名稱列表和文件名稱列表分別存儲(chǔ)在pth和fth變量指向的偏移,使用RC4算法在動(dòng)態(tài)運(yùn)行中解密并檢驗(yàn)。

如下圖所示是search.so被加載時(shí)動(dòng)態(tài)解密出的隱藏文件名稱,木馬隱藏的所有進(jìn)程列表和文件列表見附錄部分。

規(guī)避技術(shù)分析
當(dāng)使用ldd命令顯示軟件的依賴項(xiàng)時(shí),環(huán)境變量LD_TRACE_LOADED_OBJECTS會(huì)被設(shè)置為1,惡意軟件掛鉤execve函數(shù)并通過檢測LD_TRACE_LOADED_OBJECTS的值是否為1,進(jìn)而決定是否執(zhí)行攔截ldd命令的代碼,從而在軟件的依賴項(xiàng)中將自身去除達(dá)到隱藏目的。

Symbiote在readdir和readdir64中實(shí)現(xiàn)了隱藏文件和隱藏進(jìn)程,之后與動(dòng)態(tài)加載重定向到pth的內(nèi)存中存儲(chǔ)的進(jìn)程名稱列表進(jìn)行比較,如果存在列表中的進(jìn)程名字,那么readdir和readdir64函數(shù)會(huì)直接返回。當(dāng)管理運(yùn)維人員使用ls命令時(shí),無法查看到惡意so文件,但如果知道文件名稱可以使用find命令暴露其位置。

在readdir和readdir64中同樣實(shí)現(xiàn)了反跟蹤。如果在進(jìn)程中的cmdline中發(fā)現(xiàn)包含sh -c strace或者strace -s等與strace有關(guān)的命令參數(shù),即啟用了追蹤功能,函數(shù)直接返回0。

通過hook一些Linux可插入身份驗(yàn)證模塊(PAM)的函數(shù)如pam_authenticate、pam_set_item和pam_acct_mgmt實(shí)現(xiàn)對(duì)被感染機(jī)器的遠(yuǎn)程訪問。當(dāng)用戶嘗試使用PAM服務(wù)(比如SSH遠(yuǎn)程服務(wù))進(jìn)行身份驗(yàn)證時(shí),惡意軟件會(huì)判斷提供的密碼是否為硬編碼的數(shù)值而選擇對(duì)應(yīng)的處理方式。

隱藏流量的第一種方法:hook fopen和fopen64函數(shù)。
當(dāng)應(yīng)用程序嘗試打開/proc/net/tcp文件時(shí),惡意軟件創(chuàng)建一個(gè)臨時(shí)文件,讀取文件內(nèi)容時(shí)會(huì)按行匹配是否存在特定端口:43253、43753、63424、26424。如果匹配到就會(huì)跳過,否則,該行內(nèi)容會(huì)被寫入臨時(shí)文件。當(dāng)文件被掃描處理完時(shí),惡意軟件就會(huì)關(guān)閉臨時(shí)文件句柄并將臨時(shí)文件的文件描述符作為返回結(jié)果。從本質(zhì)上講,這樣實(shí)現(xiàn)了通過hook fopen或fopen64的調(diào)用過程,隱藏了惡意軟件想要隱藏的所有網(wǎng)絡(luò)端口的連接條目。

隱藏流量的第二種方法:hook函數(shù)pcap_loop和pcap_stats。
Symbiote通過hook函數(shù)pcap_loop和pcap_stats來完成這個(gè)任務(wù),過濾掉包含列表中域名子字符串的UDP流量。該方法用于過濾掉 UDP 數(shù)據(jù)包,而以下的eBPF機(jī)制寫字節(jié)碼的方法用于過濾掉 TCP 數(shù)據(jù)包。
隱藏流量的第三種方法:eBPF機(jī)制。
eBPF(extended Berkeley Packet Filter)起源于BPF,它提供了內(nèi)核的數(shù)據(jù)包過濾機(jī)制。BPF的基本思想是對(duì)用戶提供兩種SOCKET選項(xiàng):SO_ATTACH_FILTER和SO_ATTACH_BPF,允許用戶在sokcet上添加自定義的filter,只有滿足該filter指定條件的數(shù)據(jù)包才會(huì)上發(fā)到用戶空間。SO_ATTACH_FILTER插入的是cBPF代碼,SO_ATTACH_BPF插入的是eBPF代碼。eBPF是對(duì)cBPF的增強(qiáng),目前用戶端的tcpdump等程序還是用的cBPF版本,其加載到內(nèi)核中后會(huì)被內(nèi)核自動(dòng)的轉(zhuǎn)變?yōu)閑BPF。Linux 3.15 開始引入eBPF。其擴(kuò)充了BPF的功能,豐富了指令集。它在內(nèi)核提供了一個(gè)虛擬機(jī),用戶態(tài)將過濾規(guī)則以虛擬機(jī)指令的形式傳遞到內(nèi)核,由內(nèi)核根據(jù)這些指令來過濾網(wǎng)絡(luò)數(shù)據(jù)包。
如下為在內(nèi)核編譯后的 eBPF匯編代碼:

如下為以太網(wǎng)幀格式數(shù)據(jù)。正常情況下數(shù)據(jù)幀是從DST開始算起,12個(gè)字節(jié)(0xc)后即是長度或類型,ldabsh 0xc匯編指令即是將數(shù)據(jù)幀的類型字段加載到寄存器中。接下來jeq r0,0x86dd即判斷協(xié)議類型是否為IPv6。

最后結(jié)合IPv6和IPv4的數(shù)據(jù)報(bào)格式,我們可以得知, eBPF匯編程序的最終目的是要通過校驗(yàn)數(shù)據(jù)幀中IP協(xié)議的源端口和目的端口是否為43253、43753、63424、26424之一,有的話則過濾結(jié)果特殊處理。
Symbiote通過使用所有這三種方法,惡意軟件可確保隱藏所有流量。
綜上所述,Symbiote的rootkit隱藏技術(shù)點(diǎn)可以歸納如下:

追溯關(guān)聯(lián)
在互聯(lián)網(wǎng)上可以發(fā)現(xiàn)之前作者在開發(fā)的Symbiote舊版本文件,名稱分別為kerneldev.so.bkp、mt64_.so。其中還有一個(gè)名為certbotx64是開源的DNS隧道工具項(xiàng)目dnscat編譯出的客戶端,使用C語言編寫。dnscat編譯的服務(wù)器使用Ruby語言編寫,運(yùn)行時(shí)依賴Ruby和Gem環(huán)境。

樣本IOCs列表

附錄

防護(hù)建議
及時(shí)更新軟件和系統(tǒng)以及打漏洞補(bǔ)丁,降低被Symbiote病毒通過漏洞入侵的風(fēng)險(xiǎn)。
加強(qiáng)訪問控制,關(guān)閉不必要的端口,禁用不必要的連接,降低資產(chǎn)風(fēng)險(xiǎn)暴露面。
更改系統(tǒng)及應(yīng)用使用的默認(rèn)密碼,配置高強(qiáng)度密碼認(rèn)證,并定期更新密碼,防止弱口令攻擊。
可安裝天融信安全產(chǎn)品加強(qiáng)防護(hù),天融信EDR系統(tǒng)、自適應(yīng)安全防御系統(tǒng)、過濾網(wǎng)關(guān)系統(tǒng)、僵尸網(wǎng)絡(luò)木馬和蠕蟲監(jiān)測與處置系統(tǒng),以及新版本的入侵檢測系統(tǒng)、入侵防御系統(tǒng)等產(chǎn)品均可精確檢測并查殺該惡意軟件。
# 天融信EDR系統(tǒng)防御配置
1、開啟文件實(shí)時(shí)監(jiān)控功能,有效預(yù)防和查殺該惡意軟件;
2、通過任務(wù)周期性查殺,阻斷惡意攻擊行為,防護(hù)病毒攻擊威脅;
3、通過內(nèi)置的Webshell后門庫,對(duì)網(wǎng)站后門專項(xiàng)查殺,降低橫向傳播風(fēng)險(xiǎn)。
# 天融信自適應(yīng)安全防御系統(tǒng)防御配置
1、開啟病毒實(shí)時(shí)監(jiān)控功能,可有效預(yù)防和查殺該惡意軟件;
2、支持精準(zhǔn)定位系統(tǒng)漏洞,事前及時(shí)修補(bǔ),降低橫向感染風(fēng)險(xiǎn);
3、通過風(fēng)險(xiǎn)發(fā)現(xiàn)功能掃描系統(tǒng)弱口令,降低安全風(fēng)險(xiǎn)、減少資產(chǎn)暴露。
# 天融信過濾網(wǎng)關(guān)防御配置
1、升級(jí)到最新病毒特征庫;
2、開啟HTTP、POP3、SMTP、FTP、IMAP等協(xié)議的病毒掃描檢測;
3、配置病毒檢測處置策略;
4、開啟日志記錄和報(bào)警功能。
# 天融信僵尸網(wǎng)絡(luò)木馬和蠕蟲監(jiān)測與處置系統(tǒng)檢測配置
1、升級(jí)威脅情報(bào)庫版本;
2、開啟威脅情報(bào)-惡意文件檢測功能,可有效檢測該惡意軟件。
# 天融信入侵檢測系統(tǒng)新版本檢測配置
1、購買威脅情報(bào)庫功能模塊;
2、開啟威脅情報(bào)-惡意文件檢測功能,可有效檢測該惡意軟件。
# 天融信入侵防御系統(tǒng)新版本防護(hù)配置
1、購買威脅情報(bào)庫功能模塊;
2、開啟威脅情報(bào)-惡意文件檢測功能,可有效防御該惡意軟件。

產(chǎn)品獲取方式
● 天融信EDR系統(tǒng)企業(yè)版、天融信自適應(yīng)安全防御系統(tǒng)、天融信過濾網(wǎng)關(guān)、天融信僵尸網(wǎng)絡(luò)木馬和蠕蟲監(jiān)測與處置系統(tǒng)、天融信入侵檢測系統(tǒng)、天融信入侵防御系統(tǒng)試用:可通過天融信全國分支機(jī)構(gòu)獲?。ú樵兙W(wǎng)址:
http://gdxsl.cn/contact/)
● 天融信EDR系統(tǒng)單機(jī)版下載地址:http://edr.topsec.com.cn
● 天融信過濾網(wǎng)關(guān)系統(tǒng)病毒庫下載地址:ftp://ftp.topsec.com.cn/防病毒網(wǎng)關(guān)(Top-Filter)/病毒庫脫機(jī)升級(jí)包/
● 天融信威脅情報(bào)庫下載地址:ftp://ftp.topsec.com.cn/天融信下一代入侵防御系統(tǒng)(NGIDP)/威脅情報(bào)庫/ ti-v2022.09.05.005.tor
TOPSEC
惡意軟件影響數(shù)據(jù)及程序的安全性,對(duì)各政企單位網(wǎng)絡(luò)安全及社會(huì)秩序造成嚴(yán)重危害。作為中國網(wǎng)絡(luò)安全、大數(shù)據(jù)與云服務(wù)提供商,天融信多年深耕網(wǎng)絡(luò)安全防護(hù)領(lǐng)域,積淀豐富的技術(shù)與產(chǎn)品能力,并不斷推陳出新,持續(xù)助力國家網(wǎng)絡(luò)安全健康發(fā)展。
天融信諦聽實(shí)驗(yàn)室
諦聽實(shí)驗(yàn)室是天融信科技集團(tuán)的病毒分析和響應(yīng)團(tuán)隊(duì),匯聚專業(yè)病毒分析與研究人員,致力于終端惡意代碼的逆向分析、威脅預(yù)警、追本溯源、反病毒技術(shù)等安全研究和威脅發(fā)現(xiàn),為集團(tuán)全系產(chǎn)品提供全面的技術(shù)支撐和漏洞分析響應(yīng)。
- 關(guān)鍵詞標(biāo)簽:
- 天融信EDR 自適應(yīng)安全防御系統(tǒng) 過濾網(wǎng)關(guān)系統(tǒng) 僵木蠕系統(tǒng) 精準(zhǔn)查殺Symbiote