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

它通過設置LD_PRELOAD環境變量的值,在程序運行前優先加載惡意動態鏈接庫search.so,search.so在導出函數中劫持了多個庫函數。

Symbiote使用RC4算法加密所有字符串,密鑰為HEX數值“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)
動態調試分析
當調用被search.so文件hook的函數時,內存中才會動態加載惡意so文件,沒有被hook的情況下會在libc-2.13.so中立即填充系統調用號進行syscall系統調用,而hook之后的原ELF進行API調用時會通過一條jmp匯編指令跳轉到search.so的導出函數中執行。

需要攔截的進程名稱列表和文件名稱列表分別存儲在pth和fth變量指向的偏移,使用RC4算法在動態運行中解密并檢驗。

如下圖所示是search.so被加載時動態解密出的隱藏文件名稱,木馬隱藏的所有進程列表和文件列表見附錄部分。

規避技術分析
當使用ldd命令顯示軟件的依賴項時,環境變量LD_TRACE_LOADED_OBJECTS會被設置為1,惡意軟件掛鉤execve函數并通過檢測LD_TRACE_LOADED_OBJECTS的值是否為1,進而決定是否執行攔截ldd命令的代碼,從而在軟件的依賴項中將自身去除達到隱藏目的。

Symbiote在readdir和readdir64中實現了隱藏文件和隱藏進程,之后與動態加載重定向到pth的內存中存儲的進程名稱列表進行比較,如果存在列表中的進程名字,那么readdir和readdir64函數會直接返回。當管理運維人員使用ls命令時,無法查看到惡意so文件,但如果知道文件名稱可以使用find命令暴露其位置。

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

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

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

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

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

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

追溯關聯
在互聯網上可以發現之前作者在開發的Symbiote舊版本文件,名稱分別為kerneldev.so.bkp、mt64_.so。其中還有一個名為certbotx64是開源的DNS隧道工具項目dnscat編譯出的客戶端,使用C語言編寫。dnscat編譯的服務器使用Ruby語言編寫,運行時依賴Ruby和Gem環境。

樣本IOCs列表

附錄

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

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