Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86380943

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

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。