勒索軟體即服務 RaaS 遠端存取木馬 惡意軟體

看似安裝掃Port工具其實已中招 改造再進化威脅加倍

惡意程式舊瓶新裝 開源軟體成駭客攻擊武器

2025-06-24
RaaS威脅組織Hunters International近期開始使用新的遠端存取木馬SharpRhino,該木馬偽裝成合法軟體,以獲取受害者電腦的遠端存取權限,讓攻擊者能夠執行不同的命令並進一步傳播惡意軟體。本文將詳細剖析SharpRhino的安裝及執行過程。

知名的勒索軟體即服務(RaaS)威脅組織Hunters International近期開始使用新的遠端存取木馬(RAT),這款惡意軟體最早於2024年8月被發現,因其使用C#開發,因此被命名為SharpRhino。該木馬偽裝成合法軟體,以獲取受害者電腦的遠端存取權限,使攻擊者能夠執行不同的命令並進一步傳播惡意軟體。

SharpRhino概述

被分析的樣本透過Nullsoft Scriptable Install System(NSIS)打包為安裝程式,並帶有Angryip.org描述及有效的數位簽章,但該公司名稱是虛構的,如圖1所示。

圖1  SharpRhino透過Nullsoft Scriptable Install System(NSIS)打包為安裝程式。

如圖2所示,該安裝程式包含:

圖2  SharpRhino安裝程式內容。

‧額外的安裝程式

‧受密碼保護的壓縮檔案

‧其他在惡意軟體執行過程中使用的文件

安裝過程

當執行時,樣本會將所有內嵌文件投放至「C:\ProgramData\Microsoft\WindowsUpdate24」目錄,並執行ipscan-3.9.1-setup.exe(合法的Angry IP Scanner安裝程式),如圖3所示。

圖3  透過合法的Angry IP Scanner安裝程式進行安裝。

在受害者分心的同時,惡意軟體會從受密碼保護的UpdateFull.zip解壓縮文件,使用內嵌的7za.exe進行解壓縮,並使用以下指令:

C:\ProgramData\Microsoft\ WindowsUpdate24\7za.exe x C:\ProgramData\Microsoft\ WindowsUpdate24\UpdateFull. 7z -pTG98HJerxsdqWE45 -o C:\ProgramData\Microsoft\ WindowsUpdate24

解壓後的文件內容,如圖4所示。

圖4  解壓後的文件內容。

樣本會在解壓縮後建立新目錄「C:\ProgramData\Microsoft\LogUpdateWindows」,並將解壓縮的文件複製到該新目錄。利用兩個不同的安裝目錄,可以幫助攻擊者提高持久性,即使其中一個目錄被刪除,惡意軟體仍可繼續運行,因為這些目錄內的文件在執行過程中具有相似的作用。

接下來,樣本會在Windows註冊表添加新的啟動鍵值,路徑為「HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run」,該鍵值指向Microsoft.AnyKey.lnk,此快捷方式指向以下目標:

C:\ProgramData\Microsoft\ LogUpdateWindows\Microsoft.AnyKey. exe abnormal c\programdata \%username%0 cmd /c C:\ProgramData\ Microsoft\LogUpdateWindows\ LogUpdate.bat

Microsoft.AnyKey.exe也是從壓縮檔案中釋放出來的,它實際上是一個合法的程式,屬於Node.js Tools for Visual Studio,其原始名稱為Microsoft.NodejsTools.PressAnyKey.exe。

執行階段

惡意腳本LogUpdate.bat和WindowsUpdate.bat具有相同功能,但加載不同的文件,如圖5所示。

圖5  惡意腳本加載不同的文件。

「Wiaphoh7um.t」和「kautix2aeX.t」這兩個文件皆包含混淆數據。這些文件的原始數據與密鑰不同,但解碼後的結果數據相同。解碼過程完成後,樣本將此數據定義為.NET程式集(Assembly),並調用其中的一個方法,傳遞一些參數進行執行,如圖6所示。

圖6  惡意文件內容。

在轉儲腳本中的所有數據後,可以觀察到以下的變數:

‧$var1、$var2、$var3這些變數用於確定所引用的程式集(Assembly),當它們串聯在一起時,形成字串「System.Drawing.dllSystem.Web.Extensions.dllSystem.Windows.Forms.dll」。 ‧$var4在每個文件中都不同,並包含C2伺服器地址。

表1是用於.NET程式集調用的參數對應表。

$fjwZrHB1k2RF代表被加載至記憶體的.NET程式集(Assembly)。在轉儲數據後,可以觀察到C#程式碼。該PowerShell腳本會調用Bzxmlpi命名空間中OyrWkb類別的某個函數。如圖7所示,在該類別的開頭,可以看到一些額外的引用載入(Imports),以及難以辨識的變數名稱。

圖7  該PowerShell腳本會調用Bzxmlpi命名空間中OyrWkb類別的某個函數。

事實上,這個文件是開源專案ThunderShell的修改版本,原始專案經過了多項更改(圖8):

圖8  該文件是開源專案ThunderShell的修改版本。

‧移除了鍵盤側錄器(Keylogger)、螢幕截圖及.NET程式集(Assembly)加載功能,同時刪除了伺服器端對應的相關指令。

‧所有類別、函數和變數名稱均被重新命名。

‧新增預設值,使其在未提供參數的情況下仍能執行惡意負載(Payload)。

SharpRhino程式碼與ThunderShell程式碼的比較

此函數首先生成一個16位元的隨機字串。在初始化Random類別時,樣本使用當前日期、時間和進程ID作為隨機種子。接下來,它會獲取一些環境變數,例如COMPUTERNAME、USERDOMAIN和USERNAME,並對這些數據進行格式化處理,如圖9所示。

圖9  SharpRhino程式碼內容。

最終,生成的字串如圖10所示。

圖10  最後生成的字串。

接下來,樣本將此字串傳遞給一個函數,該函數會將其發送至伺服器。在此過程中,數據會使用RC4加密演算法進行加密,並且加密密鑰來自於傳遞的第二個參數,如圖11所示。

圖11  樣本將此字串傳遞給一個函數,該函數會將其發送至伺服器。

RC4加密流程

在加密過程完成後,樣本會向請求中添加額外的數據,並將加密後的字串轉換為Base64格式,如圖12所示,所有這些數據最終會被發送至伺服器。

圖12  樣本會向請求中添加額外的數據,並將加密後的字串轉換為Base64格式。

在首次連線時,樣本會忽略來自伺服器的回應。當樣本進入循環時,它會再次連線至伺服器,但兩個參數均為null。接著,它會將伺服器的回應儲存下來,並與先前儲存的數據進行比對。

‧若接收到delay指令,樣本會取得額外的參數,並調整傳遞給sleep函數的時間值。

‧若接收到exit指令,樣本則會終止循環並結束執行。

‧若接收到的數據不是delay或exit,樣本將建立新線程(Thread),並使用該數據作為函數參數執行。

所有這些操作都會以95秒的間隔進行重複執行,如圖13所示。

圖13  樣本執行過程。

來自伺服器的回應會被傳遞至zWxFlnVASjHYb類別中的反序列化(Deserialization)函數,該函數會擷取並儲存成數據,包括UUID、ID和Data,如圖14所示。

圖14  來自伺服器的回應會被傳遞至zWxFlnVASjHYb類別中的反序列化函數。

C2伺服器

雖然範例中提供的連結已經下線,但可以使用來源專案中的伺服器來了解通訊是如何運作的。首先,需要更改伺服器配置,該配置包含多個欄位,包括伺服器IP地址、加密金鑰、GUI設定以及HTTP和HTTPS設定。接著,需要更改callback-url、gui-host和encryption-key參數。這裡將從SharpRhino範例中提取加密金鑰參數,如圖15所示。

圖15  更改伺服器配置、callback-url、gui-host以及encryption-key參數。

這個伺服器是Python應用程式,並需要一個正在運行的Redis伺服器。啟動後,它會輸出一些有關伺服器的資訊,如圖16所示。

圖16  輸出與伺服器相關的資訊。

這包括一個網頁GUI地址。當打開時,用戶必須先登錄。雖然輸入什麼用戶名稱並不重要,但密碼必須使用配置文件中的密碼。登錄後,將顯示儀表板部分。它包含有關會話和日誌的資訊,如圖17所示。

圖17  登錄之後顯示儀表板,包含有關會話和日誌的資訊。

有效負載可以在網頁GUI中建構。必須提供服務器的IP地址,以及有效負載類型,如圖18所示。

圖18  設定負載資訊。

選擇會話後,攻擊者可以與之互動。輸入「help」,會顯示會話中所有支援的命令,如圖19所示。

圖19  輸入「help」就會顯示會話中所有支援的命令。

C2通訊命令

這些命令有預定義的字串,會附加到攻擊者輸入作為參數的數據上,如圖20所示。例如,使用「shell [command]」將在發送的字串開頭附加「cmd.exe /c」。另一個例子是「ps」命令,它將發送PowerShell腳本到客戶端。

圖20  C2命令有預定義的字串,會附加到攻擊者輸入作為參數的數據上。

該命令以RC4加密並以Base64格式編碼的方式傳送到客戶端。如圖21所示,它包含ID和UUID參數,其中ID是客戶端ID,而UUID是命令ID。

圖21  該命令以RC4加密並以Base64格式編碼的方式傳送到客戶端。

所有這些數據都被傳遞到新線程中,這個線程中的函數使用PowerShell模組來執行給定的命令,如圖22所示。

圖22  所有數據都被傳遞到新線程中。

透過管道,樣本獲得執行命令的輸出,然後這些數據將被加密並返回到伺服器,如圖23所示。

圖23  透過管道,樣本獲得執行命令的輸出。

結語

ThunderSharp是一個最後更新於近四年前的舊開源項目,被Hunters International用來向受害者傳遞惡意軟體。它作為一個AngryIP掃描器工具的安裝程式,並丟下及執行惡意的PowerShell腳本。透過PowerShell功能,這些腳本執行編碼的.NET組件,因此不需要帶來任何額外的已編譯可執行檔(惡意程式碼在記憶體中被調用和執行)。雖然原始程式碼經過修改,但它保留了主要功能:在目標系統上遠程執行命令,這就是這類開源項目的危險。它們通常是為了教育或滲透測試目的開發,但卻被用於真正的攻擊。

<本文作者:王榮信Acronis大中華區首席技術顧問。專精外對內之資安技術防護措施、內對外之機敏資料外洩保護、資安事件關連分析及進階勒索軟體防護,透過企業資訊安全風險評估及框架,規劃符合需求的安全策略及架構。曾輔導多個大金融機構建立資料外洩防護架構、進階惡意程式防護架構及ATM與伺服器系統防駭解決方案。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!