Jump to content

2023年11月,IPStorm基礎設施被FBI拆除,同時對與IPStorm惡意軟件有關的相關個人進行了定罪。這是當前打擊網絡威脅工作中的一個重要里程碑。

本文將對IPStorm惡意軟件的變體和功能進行深入介紹。

2019年5月,來自anomaly的研究人員發現了一種新的針對Windows的Golang惡意軟件,他們將其命名為IPStorm。 IPStorm是一種殭屍網絡,它濫用名為星際文件系統(IPFS)的合法點對點(p2p)網絡作為掩蓋惡意流量的手段。據發現,該惡意軟件允許攻擊者在受害者的Windows計算機上執行任意PowerShell命令。

研究人員最近確定了針對各種Linux架構(ARM, AMD64, Intel 80386)和平台(服務器,Android, IoT)的IPStorm新Linux變體並檢測到一個macOS變體。在本文發佈時,macOS變體和大多數Linux樣本在VirusTotal中完全未被檢測到。 IPStorm是用Golang編寫的,這使得Intezer能夠檢測到Linux樣本和由anomaly首先報告的Windows惡意軟件之間的跨平台代碼連接。

linux變體比Windows變體有更多的功能,比如使用SSH暴力破解來傳播給更多的受害者,以及濫用Steam遊戲和廣告平台的欺詐性網絡活動。 linux變體調整了一些功能,以解釋該操作系統和Windows之間存在的根本差異。

接下來將介紹IPStorm Windows和Linux樣本之間的代碼關係圖,分析其中一個Linux變體的行為,並將其功能和功能與舊的Windows樣本進行比較,以跟踪其演變。

IPStorm技術分析大多數IPStorm Linux樣本在我們將它們提交給Intezer進行分析之前是完全未被檢測到的。

在這篇文章中,我們將重點關注658638c6bef52e03e6aea4b6c1b2b3b8d81ad40144b56b2122d96e6957c33117 Linux樣本。

1.png

658638c6bef52e03e6aea4b6c1b2b3b8d81ad40144b56b2122d96e6957c33117在VirusTotal中未檢測到樣本

由於IPStorm是用Golang編寫的,我們不僅可以觀察到不同Linux變體之間的強代碼連接,還可以識別到2019年上傳至Intezer的IPStorm Windows樣本的連接。

2.png

由Intezer分析分類的IPStorm惡意軟件家族樣本

下圖強調了不同版本和操作系統之間的代碼相似性。節點表示單個樣本,線條表示它們之間的代碼關係,所有的樣本都以某種方式相互聯繫。

3.png

不同樣本間的IPStorm代碼相似性圖。節點表示單個樣本,線條表示它們之間的代碼關係

該圖描繪了三個主要的集群,每個集群都包含具有強代碼連接的樣本:

PE, intel 80386架構;

ELF, intel 80386架構;

ELF和x86-64架構;

你還會注意到ELF集群和ELF和PE intel 80386架構集群之間存在共享代碼。

你可以使用這個GitHub存儲庫中的cluster_directory.py API腳本來創建你自己的集群圖。

IPStorm Linux變體活動流程去除Linux的變體符號,使用插件IDAGolangHelper,我們檢索了文件的符號,並準確地看到了惡意軟件包含哪些包。在Go語言中,包是一群組成特定功能的Go源文件,每個Go源文件都屬於一個包。

Linux惡意軟件的主要邏輯是在一個名為storm_starter的包中實現的,這是一個Windows變體中沒有的新包。所有的邏輯都是通過Windows變體的main函數實現的。

這兩個版本在實現主要流程的方式上有相似之處,但是,由於兩個操作系統之間存在差異,Linux實例具有額外的功能並調整了一些邏輯。

Linux迭代首先禁用內存不足(OOM)殺手程序,以防止它終止惡意軟件,隨後繼續檢查以防止病毒或其他惡意軟件進一步執行與安全工具有相關的任何進程。接下來,惡意軟件生成公鑰將其保存在一個名為strom.key的文件中。這個密鑰保存的位置是基於惡意軟件被執行時的權限。如果惡意軟件以root權限執行,密鑰將存儲在/etc/storm.key;否則,將保存在/tmp/storm.key下。然後,惡意軟件試圖與點對點網絡中的其他節點建立連接。

惡意軟件向不同的服務發送HTTP請求,如diagnostic[.]opendns[.]com/myip, ifconfig[.]io/ip和myip[.]dnsomatic[.]]com接收受害服務器的外部IP地址。如果惡意軟件以root身份運行,它將在systemd下創建一個服務來實現持久化,並將自己複製到/usr/bin/storm,否則將被拷貝到/tmp/storm目錄下;然後,惡意軟件將從新的安裝路徑重新啟動。

這個新進程負責執行IPStorm惡意軟件的主要功能,包括之前在Windows變體中看到的逆向shell,維護與P2P網絡中其他對等節點的連接,以及將惡意軟件傳播給其他受害者的新功能。

4.png

IPStorm Linux輸出非特權用戶

Linux與Windows比較比較IPStorm linux變體0.2.05a和Windows變體0.0.2m可以發現,開發者添加了一些功能,並修改了現有的功能來攻擊Linux平台。

包比較該惡意軟件由不同的Golang包組成,每個包提供不同的功能。下表對兩個版本之間的包比較進行了分類:

5.1.png

5.2.png

5.3.png

注:我們將linux變體0.2.05a與Windows變體0.0.2m進行了比較,將後者在anomaly的報告中進行了分析。然而,惡意軟件經常被更新,我們已經觀察到多個不同的版本,它們之間的功能也可能不同。

功能比較掃描工具:Android和SSH暴力破解Linux變體試圖通過SSH暴力破解在互聯網上傳播和感染其他受害者。一旦建立連接,惡意軟件將通過比較受攻擊服務器的主機名和字符串“svr04”(這是corie SSH蜜罐的默認主機名)來檢查受害服務器是否是蜜罐。如果惡意軟件識別到蜜罐,它將關閉連接,否則它將繼續下載有效載荷並感染服務器。

6.png

驗證服務器是否為蜜罐

linux變體特有的另一種傳播方法是搜索潛在的Android受害者,惡意軟件檢查連接ADB (Android Debug Bridge)到受害節點的設備。一旦識別出來,它就會將之前從P2P網絡下載的Android版本的IPStorm上傳到設備上。

7.png

來自storm服務日誌的屏幕截圖,顯示下載的文件

繞過殺毒軟件IPStorm Windows和linux變體都實現了與檢測逃避相關的功能,每個版本使用不同的技術。在linux變體中,負責此邏輯的包稱為storm_malware_guard。該文件遍歷所有當前運行的進程,以便找到並終止可能檢測到惡意軟件活動的進程。

storm_malware_guard包中實現此技術的函數稱為KillSuspiciousProcesses。這個包中的其他函數負責獲取有關CPU和內存使用情況、I/O端口數量以及返回有關進程和線程信息的函數的信息。

在Windows變體中,逃避邏輯是在一個名為avbypass的包中實現的。該技術基於隨機睡眠時間和多個函數調用,此方法的目的是使反病毒解決方案更難跟踪原始進程。

似乎由於不同的操作系統,每個版本的IPStorm都有自己的逃避檢測的方法。

逆向shell兩個版本的IPStorm都使用backshell這個名稱來指代逆向shell的功能,Linux變體的backshell功能與Windows變體相同。

Windows變體有一個名為powershell的包,其中包含實現逆向shell的函數。 linux變體中也有相同的包,但它只包含一個函數:storm_powershell__ptr_Backend_StartProcess。該函數用於獲取受感染系統的逆向shell。

逆向shell的實現是兩個IPStorm變體之間代碼重用連接的一個清晰樣本。下面的截屏顯示了兩個版本中文件名的變化和相同的函數名:

Linux:

8.png

windows:

9.png

持久性linux變體只有在以root權限執行時才會嘗試獲得持久性,另一方面,Windows變體總是希望獲得持久性。惡意軟件的每個變體,Linux和Windows,都使用不同的技術來獲得持久性,因為它們針對的操作系統根本不同。

Windows變體通過將自身複製到隨機位置並將程序添加到HKCU:SoftwareMicrosoftWindowsCurrentVersionRun註冊項來實現持久性。

linux變體通過在/etc/systemd/system/storm.service下創建systemd服務來實現持久化。

10.png

/etc/systemd/system/storm.service

11.png

在Linux變體中實現持久性的函數

另一個區別是文件被複製到的位置。 Windows變體使用隨機文件路徑,linux變體使用固定路徑。

網絡流量除了創建逆向shell之外,我們還發現IPStorm的Linux變體利用其廣泛傳播的優勢在backshell執行不同的欺詐活動,濫用遊戲和廣告盈利。由於它是殭屍網絡,惡意軟件利用來自不同可信來源的大量請求,因此不會被阻止或追踪。

在Windows變體中沒有觀察到這種活動。

Steam遊戲欺詐Steam是Valve公司推出的一款受歡迎的遊戲服務,在全球擁有數億用戶,它還為想要在自己的網站上使用Steam數據的開發者提供了一個API。

作為遊戲開發者盈利過程的一部分,Steam用戶可以購買和出售不同的道具,如裝備、皮膚和其他遊戲內元素。這個平台非常受歡迎,已經成為網絡罪犯的熱門目標。

攻擊者使用的一種已知方法是創建網絡釣魚網站,引誘用戶提交他們的Steam登錄憑證,通過訪問用戶的憑據,攻擊者可以完全訪問該帳戶,包括API密鑰。

IPStorm生成了大量的流量到Steam的API,查詢各種Steam用戶的數據,並使用多個有效的API密鑰。

12.png

目前懷疑這些被盜賬戶是被監控的虛假交易騙局的一部分。

廣告欺詐該惡意軟件生成模仿虛假廣告點擊的請求。我們追踪到的所有廣告都與色情網站有關,惡意軟件在不同的預定義網站上爬行,搜索廣告iframe,並通過瀏覽iframe來模仿用戶的“點擊”。

13.png

惡意軟件向廣告平台生成請求的樣本

14.png

惡意軟件爬過的網站

IPStorm檢測受攻擊系統檢測可以通過以下步驟檢查系統是否被IPStorm惡意軟件攻擊。

1.執行pstree | grep storm,檢查系統是否啟動IPStorm進程。

15.png

IPStorm通常使用多線程運行。

2.執行sudo systemctl status strom.service命令,檢查系統上運行的服務,因為如果惡意軟件以root權限執行,它將創建一個用於持久化的服務。

16.png

3.檢查系統中是否存在IPStorm的文件。

執行sudo find/-name “storm*” -type f命令

3.1在非root執行的情況下,輸出將類似於下面的屏幕截圖:

17.png

3.2如果惡意軟件以root權限執行,輸出將類似於下面的屏幕截圖:

18.png

4.檢查系統上開放的端口以及與之關聯的進程。執行sudo ss -tulpn命令,在下面的屏幕截圖中,屬於IPStorm惡意軟件的許多進程監聽特定端口。

19.png

5.免費使用Intezer Protect社區測試版來識別系統上正在運行的進程。下面的屏幕截圖來自服務器上執行的IPStorm警報,系統提供的信息包括惡意軟件家族名稱,可執行文件的完整路徑,進程ID,執行時間,以及到Intezer的鏈接,你可以在此惡意軟件中觀察到普遍的代碼重用。

20.png

系統受攻擊後如何終止IPStorm1.如果惡意軟件作為服務運行,則應執行sudo systemctl stop storm.service命令停止該服務:

2.刪除所有與IPStorm惡意軟件相關的文件。

3.執行sudo pkill -9 storm命令終止該進程

IPStorm響應我們提供了一個YARA規則,旨在針對內存中的工件運行,以便能夠檢測這些植入程序。

系統安全加固1.確保SSH連接是安全的。使用密鑰代替密碼或使用多因素身份驗證,瀏覽此處獲取有關SSH加固的更多提示。

2.確保系統更新到最新的軟件,並與最新的安全最佳實踐保持一致。

3.使用運行時雲工作負載保護解決方案,如Intezer Protect。 Protect提供了對系統中代碼的完整運行時可見性,並對偏離安全基線的任何可疑或未經授權的代碼發出警報。

總結IPStorm背後的攻擊者非常活躍,頻繁發布具有新功能和改進的更新版本,以及擴展到幾個不同的平台和架構,現在帶有Linux惡意軟件的IPStorm是在Golang開發的跨平台惡意軟件的最新樣本。被IPStorm攻擊的平台不僅暴露於其服務的後門,而且還被添加到IPStorm殭屍網絡中,試圖傳播給其他受害者。在過去的六個月裡,人們發現了越來越多的Golang ELF惡意軟件攻擊服務器,IPStorm是其中的一部分,其他惡意軟件還有Kaiji、Kinsing和FritzFrog。

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...