Jump to content

2023年7月11日,Unit 42研究人員發現了一種新的對等(P2P)蠕蟲,研究人員將其稱之為P2PInfect。對等網絡,即對等計算機網絡,是一種在對等者(Peer)之間分配任務和工作負載的分佈式應用架構,是對等計算模型在應用層形成的一種組網或網絡形式。 “Peer”在英語裡有“對等者、夥伴、對端”的意義。因此,從字面上,P2P(Peer-to-peer)可以理解為對等計算或對等網絡。該蠕蟲使用Rust編寫,Rust是一種高度可擴展且對雲友好的編程語言,能夠跨平台攻擊,並針對Redis,這是一種在雲環境中大量使用的流行開源數據庫應用程序。

Redis實例可以在Linux和Windows操作系統上運行。 Unit 42的研究人員在過去兩週內發現了超過30.7萬個公開通信的獨特Redis系統,其中934個可能容易受到這種P2P蠕蟲變體的攻擊。雖然並非所有Redis實例都會受到攻擊,但蠕蟲仍然會以這些系統為目標並試圖進行攻擊。

P2PInfect蠕蟲通過利用Lua沙盒逃逸漏洞CVE-2022-0543攻擊易受攻擊的Redis實例。雖然該漏洞於2022年被披露,但目前尚不完全清楚其攻擊範圍和目標。然而,它的CVSS得分10.0。此外,P2PInfect利用Redis服務器在Linux和Windows操作系統上運行的優勢,比其他惡意軟件更具可擴展性。 Unit 42研究人員觀察到的P2P蠕蟲是攻擊者利用該漏洞進行嚴重攻擊的一個示例。

P2PInfect利用CVE-2022-0543進行初始訪問,然後釋放建立P2P通信的初始有效負載。一旦建立了P2P連接,蠕蟲就會刪除其他惡意二進製文件,如操作系統特定的腳本和掃描軟件。然後,受攻擊的實例加入P2P網絡,以向未來受攻擊的Redis實例提供對其他有效負載的訪問。

以這種方式利用CVE-2022-0543使P2PInfect蠕蟲在雲容器環境中更有效地運行和傳播。 Unit 42的研究人員就是在HoneyCloud環境中發現蠕蟲的,因為它攻擊了HoneyCloud環境中的Redis容器實例,HoneyCloud是一組蜜罐,用來識別和研究跨公共雲環境的新型基於雲的攻擊。研究人員認為,這次P2P攻擊活動是利用這種強大的P2P命令和控制(C2)網絡的潛在更強大的攻擊的第一階段。 P2PInfect的惡意工具包中存在“挖礦”功能。然而,研究人員沒有發現任何確切的證據表明曾經發生過挖礦。此外,P2P網絡似乎擁有多種C2功能,如“自動更新”,這將允許P2P網絡的控制器將新的有效負載推送到網絡中,從而改變和增強任何惡意操作的性能。

Unit 42於2023年7月11日使用Palo Alto Networks的HoneyCloud環境發現了第一個已知的P2PInfect實例,這是一組蜜罐。

P2PInfect蠕蟲使用P2P網絡來支持和促進惡意二進製文件的傳輸。我們之所以選擇這個名稱,是因為術語P2PInfect出現在洩露的符號中,反映了惡意軟件的結構,如下圖所示。

1.png

Windows版本、名稱和Redis模塊的建構

所有收集到的P2P蠕蟲樣本都是用Rust編寫的,Rust是一種高度可擴展且對雲友好的編程語言。這使得蠕蟲能夠針對Linux和Windows操作系統上的Redis實例進行跨平台攻擊,請注意,Redis不正式支持Windows操作系統。

該蠕蟲使用CVE-2022-0543攻擊Redis。針對該特定漏洞的首次攻擊於2022年3月被發現,導致受攻擊的Redis實例可能與Muhstik殭屍網絡有關。然而,P2PInfect蠕蟲似乎與另一個惡意網絡有關,目前還不知道與Muhstik殭屍網絡是否有關。

通過利用Lua漏洞進行初始攻擊後,執行初始有效負載,該初始有效負載建立與更大的C2殭屍網絡的P2P通信,該殭屍網絡充當P2P網絡,用於向未來攻擊的Redis實例傳播其他有效負載。一旦建立了P2P連接,蠕蟲就會傳播額外的有效負載,例如掃描儀。然後,新攻擊的實例加入P2P網絡的行列,為未來受攻擊的Redis實例提供掃描有效負載。

P2PInfect利用CVE-2022-0543在雲容器環境中實施攻擊。容器的功能減少了,例如,取消了“cron”服務。許多利用Redis的蠕蟲使用cron服務實現遠程代碼執行(RCE)。 P2PInfect結合了CVE-2022-0543的漏洞,旨在覆蓋盡可能多的易受攻擊場景,包括雲容器環境。

由於P2PInfect蠕蟲是新發現的,我們在這裡重點進行樣本分析及其支持的P2P架構。

利用CVE-2022-0543P2PInfect目前利用Lua沙盒逃逸漏洞CVE-2022-0543進行初始訪問。此漏洞已在Muhstik和Redigo等以前的攻擊中被使用,這兩種攻擊都導致受攻擊的Redis實例參與針對其他系統的拒絕服務(DoS)、Flooding攻擊和暴力攻擊。

這種利用向量遵循與之前所看到的類似的模式。然而,P2PInfect的漏洞利用後操作與以前使用該漏洞的操作有很大不同。需要注意的是,此漏洞不是Redis應用程序漏洞,而是Lua沙盒漏洞。

雖然這個活動確實針對易受攻擊的Redis實例並執行類似蠕蟲的操作,但與其他已知的以Redis為目標並部署蠕蟲的組織沒有已知的聯繫,例如Automated Libra(又名PurpleUrchin), Adept Libra(又名TeamTNT), Thief Libra(又名WatchDog), Money Libra(又名Kinsing), Aged Libra(又名Rocke)或Returned Libra(又名8220)。

P2PInfect如何利用CVE-2022-0543攻擊易受攻擊的Redis實例P2PInfect蠕蟲的初始攻擊媒介就是通過CVE-2022-0543利用Redis,這在已知的以Redis實例為目標的其他以加密劫持為任務的蠕蟲中並不常見,例如Adept Libra(又名TeamTnT)、Thief Libra(別名WatchDog)、Money Libra(又稱Kinsing)。

CVE-2022-0543是Lua庫中的一個漏洞,與Debian Linux包管理打包和傳播Redis的方式有關。因此,它只影響使用Debian的Redis用戶。由於專注於操作系統並利用Redis的一個子組件進行攻擊,P2PInfect的攻擊因此很複雜。下圖是捕獲的CVE-2022-0543漏洞的一個示例。

2.png

Debian操作系統上的P2PInfect漏洞利用示例

如上圖所示,可以看到漏洞是如何被攻擊者利用的。通過/dev/tcp使用網絡請求,如第四行所示,攻擊者通過端口60100連接到一個C2 IP地址,寫入IP cnc。端口60100是P2PInfect用於維護C2通信的P2P通信端口之一。第四行中的初始有效負載將GET請求設置到目錄/linux,該目錄是維護P2PInfect蠕蟲核心功能的主要滴管。其他二進製文件分佈在P2P網絡中。

網絡通信行為P2PInfect使用其P2P網絡向新攻擊的系統或云傳播後續惡意軟件。當系統首次受到攻擊時,它將建立到P2P網絡的連接,並下載要使用的自定義協議的樣本。如下圖所示,命令GET/linux之後是核心P2PInfect功能的映像下載。

3.png

顯示P2PInfect下載的網絡通信協議

Linux和Windows操作系統P2PInfect示例以相同的方式進行通信。 linux、miner、winminer和windows以明文形式從P2P網絡下載。

4.png

從P2P網絡中提取的惡意軟件樣本的列表

一旦核心P2PInfect樣本完成執行,有效負載將開始掃描其他主機以進行攻擊。掃描的重點是暴露的Redis主機。然而,研究人員還發現,受攻擊的Redis實例也會在端口22 SSH上執行掃描嘗試。由於P2PInfect沒有已知的攻擊SSH的企圖,目前還不清楚為什麼會發生這種掃描操作,但端口22在被其他已知蠕蟲攻擊後被掃描並不罕見。

節點通信主滴管使用TLS 1.3與當前已配置節點列表上的任何其他偵聽P2P成員進行通信。當受攻擊節點向P2P網絡發送具有所有已知節點的json請求時,C2基礎設施被更新。 C2基礎設施的更新將自動下載。節點更新的示例如下圖所示。

5.png

P2P節點更新

帶有x.x.x.x的值是當前節點IP或新學習的節點。

掃描行為下圖展示了受攻擊主機掃描暴露SSH實例的網絡掃描過程。這些掃描操作發生在P2PInfect功能選擇的隨機網絡範圍內。

6.png

掃描SSH實例

下圖是對暴露的Redis實例的P2PInfect掃描操作。

7.png

掃描Redis實例

P2PInfect的其他觀察結果一些發送到被攻擊系統的初始有效負載p2p樣本包含UPX,而第二階段的惡意軟件樣本miner和winminer沒有包含UPX。

在第一個滴管運行後,它開始解密從命令行接收的配置,以及關於P2P網絡中其他節點的信息。我們發現P2P端口是可變的,這有利於攻擊者發起攻擊。

8.png

P2PInfect的可變端口示例

Unit 42研究人員發現的所有樣本都是用Rust編寫的,有些樣本內部有“洩露的符號”,這可以顯示惡意軟件開發者的項目結構。例如,windows示例主執行線程洩露了項目的名稱以及攻擊者的文件目錄使用情況。

9.png

從核心Windows P2PInfect樣本中提取的分析

研究人員還發現了一個PowerShell腳本,用於在受感染的主機和P2P網絡之間建立和維護通信。 PowerShell腳本利用encode命令來混淆通信啟動。

10.png

混淆PowerShell命令建立P2P網絡連接

PowerShell命令執行的第一個操作之一是配置本地系統防火牆,以阻止對受攻擊Redis應用程序的合法訪問(見下圖的第五行)。然後(從圖11中的第17行開始),腳本打開一個通信端口,供攻擊者訪問受攻擊實例。這是持久性攻擊的一種形式,允許攻擊者保持對受感染主機的訪問並保持其可操作性。

11.png

修改被攻擊Windows實例的網絡流量規則

從解碼的PowerShell中可以看出防火牆配置設置如下:

對等端口為60102,此端口是可變的,因為並非所有節點都使用相同的端口;

Redis端口6379只允許連接已知的C2 IP;

防火牆規則名為Microsoft Sync;

監控進程在Windows操作系統中運行時,初始P2PInfect負載的另一個有趣功能是一個名為Monitor的進程。 Monitor進程的作用是維護受攻擊主機上運行的P2PInfect進程的功能。 Monitor被轉儲到C:\Users\username\AppData\Local\Temp\cmd.exe,Monitor (cmd.exe)枚舉系統運行進程的示例如下所示:

12.png

P2PInfect監控器示例cmd.exe進程樹

啟動Monitor(cmd.exe)後,初始P2PInfect負載從P2P網絡下載其自身的新版本,並將它們以隨機名稱保存到相同原始文件夾中,然後釋放加密配置(.conf)。

13.png

隨機文件名的示例

執行新的P2PInfect下載版本,並啟動掃描操作以查找其他易受攻擊的Redis實例。初始P2PInfect滴管將嘗試刪除自己。

14.png

刪除核心P2PInfect有效負載

總結P2PInfect蠕蟲功能複雜設計先進,其中的關鍵是使用Rust語言,具備了靈活性功能,允許蠕蟲在多個操作系統中快速傳播。

設計和構建P2P網絡來執行惡意軟件的自動傳播,在雲目標或加密劫持領域並不常見。同時,研究人員認為它的目的是在多個平台上攻擊和支持盡可能多的Redis易受攻擊的實例。

研究人員在多個地理區域的HoneyCloud平台上捕獲了幾個樣本,認為P2P節點的數量正在增長。這是由於潛在目標的數量非常多,在過去兩週內,超過30.7萬個Redis實例公開通信,另外,蠕蟲能夠在不同地區危害研究人員的多個Redis蜜罐。目前,研究人員還沒有估計存在多少節點,也沒有估計與P2PInfect相關的惡意網絡的增長速度。

研究人員建議組織監控所有Redis應用程序,包括本地應用程序和雲環境中的應用程序,以確保它們在/tmp目錄中不包含隨機文件名。此外,DevOps人員應持續監控其Redis實例,以確保其維護合法操作和網絡訪問。所有Redis實例也應更新到其最新版本,或更新到redis/5:6.0.16-1+deb11u2, redis/5:5.0.14-1+deb10u2, redis/5:6.0.16-2 and redis/5:7.0~rc2-2。

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...