Jump to content

微信截图_20230507224157.png

本文是Check Point根據其2022年7月首次發現的一個RokRAT樣本來做的深入分析。

早在2022 年7 月,APT37(Inky Squid、RedEyes、Reaper或ScarCruft)就開始試驗使用超大LNK 文件傳播RokRAT活動,企圖利用不受信任來源的宏發起攻擊,巧的是,同月微軟開始默認阻止跨Office 文檔的宏。與以前一樣,攻擊的目標還是韓國的目標。

研究結果表明,用於最終加載ROKRAT的各種多階段感染鏈被用於其他攻擊,導致傳播與同一攻擊者相關的其他工具。這些工具包括另一個自定義後門,GOLDBACKDOOR和Amadey。

在前幾年,ROKRAT感染鏈通常涉及帶有漏洞的惡意朝鮮文字處理器(HWP,韓國流行的文檔格式)文檔或帶有宏的Microsoft Word文檔。雖然一些ROKRAT樣本仍然使用這些技術,但傳播方式上還是進行了改進,即使用偽裝成合法文檔的LNK文件傳播ROKRAT。這種轉變並不是ROKRAT獨有的,而是代表了2022年非常流行的更大趨勢。

ROKRAT的背景介紹Talos於2017年4月首次報導了APT37開發的ROKRAT(也稱為DOGCALL),這個工具被用來針對韓國的政府部門,記者、活動人士和脫北者。根據最初的報告,其中一個ROKRAT樣本使用Twitter作為其命令和控制(CC)基礎設施,而另一個則依賴於Yandex和Mediafire。後一個更接近於如今ROKRAT的活動方式,依賴雲文件存儲服務作為一種CC機制。

最初只支持Windows,多年來ROKRAT已經適應了其他平台,在野外發現了macOS和Android版本。 macOS版本,也稱為CloudMensis,於2022年7月由ESET首次描述。雖然Android版本的ROKRAT已經存在了很長時間,但InterLab和S2W都在Android上推出了一個更新版本的ROKRAT,稱為RambleOn(Cumulus)。所有這些都表明,這種惡意軟件仍在迭代中。

APT37的許多工具都是自定義編寫的工具,如ROKRAT,包括(但不限於)最近報導的M2RAT、Konni RAT、Chinotto和GOLDBACKDOOR。然而,攻擊者也會使用Amadey等普通惡意軟件。使用普通惡意軟件使得將攻擊歸因於特定組織變得更加困難,因為它廣泛可用,任何人都可以獲得它。

今年2月,AhnLab報告了一種名為Map2RAT(簡稱M2RAT)的新RAT。這種RAT利用隱寫術技巧,將可執行文件隱藏在JPEG文件中以逃避檢測。今年3月,Sekoia和ZScaler都發布了APT37使用釣魚網站和PowerShell後門的報告,ZScaler導致了另一個名為Chinotto的植入程序的傳播。

誘餌和感染鏈在過去的四個月裡,我們觀察到多個感染鏈導致了ROKRAT的傳播。在大多數情況下,LNK文件會啟動攻擊,儘管在少數情況下,DOC文件被用於相同的目的(以前的ROKRAT攻擊中的方法)。在分析ROKRAT感染鏈的過程中,研究人員發現了導致Amadey傳播的攻擊鏈,Amadey是一種在地下論壇上出售的商業RAT。儘管攻擊的性質不同,但研究人員認為所有這些攻擊都是由相同的攻擊者策劃的。

1.png

誘餌和感染鏈的時間線

誘餌LNK感染鏈2022年4月,Stairwell發表了對GOLDBACKDOOR的詳細分析,這是一種針對韓國記者的有針對性攻擊中使用的惡意軟件。 Stairwell對利用運行PowerShell的大型LNK文件的感染鏈進行了徹底分析,導致在釋放誘餌文檔的同時執行新發現的惡意軟件。這項技術是一個名為EmbeddExeLnk的公共工具的獨特實現。

雖然最初與GOLDBACKDOOR有關,但對最近與APT37相關的誘餌的分析表明,這種技術已經成為一種重要的方法,用於傳播與同一攻擊者相關的另一種工具,即ROKRAT。 ROKRAT和GOLDBACKDOOR加載機制的實現非常相似,只有在檢索有效負載時才能區分。

在過去的幾個月裡,研究人員能夠利用ZIP和ISO檔案中提供的這種獨特實現來識別多個誘餌。只有其中一些誘餌被證實會導致ROKRAT的傳播。所有的誘餌都以韓國國內外事務為主題。

LNK感染鏈分析目前已知的所有LNK都會導致幾乎相同的感染鏈。下面以“利比亞項目”中描述的一個感染為例進行說明:

7.png

“利比亞項目”誘餌的感染鏈

點擊惡意LNK文件會觸發PowerShell的執行,並啟動以下感染鏈:

1.PowerShell從LNK中提取文檔文件,將其放入磁盤,然後打開它。這個文件是一個誘餌,欺騙用戶以為他們只是打開了一個普通的PDF或HWP文件。

2.PowerShell從LNK中提取BAT腳本,將其放入磁盤並執行。

8.png

3.BAT腳本執行一個新的PowerShell實例,該實例從OneDrive下載有效負載,通過將有效負載的第一個字節作為密鑰對其進行解碼,並將其與有效負載的其餘部分進行異或。

4.生成的有效負載以反射方式註入PowerShell,使其作為新線程運行。

5.shellcode使用四字節異或密鑰對有效負載的ROKRAT部分進行解碼並執行它。

9.png

典型的ROKRAT感染鏈ROKRAT運營商在採取新的行為同時,仍夾雜了一些舊習慣,比如,ROKRAT仍然使用惡意Word文檔進行部署。

2022年12月,有人向VirusTotal提交了一份惡意的Word文檔,命名為“.doc”(Case fee_Payment request.doc)。該文件本身包含一個輸入個人和銀行信息的簡短表格。然而,對該文件的仔細檢查顯示,其中提到了韓國的統一部。

10.png

“利比亞項目”誘餌的感染鏈

一旦用戶打開惡意文檔並允許宏執行,就會觸發以下感染鏈:

1.宏通過設置AccessVBOM註冊表項以加載其他代碼來檢查並確保它可以訪問Visual Basic項目。

2.宏解碼一個新的VBA腳本,將其寫入宏中的一個新模塊,然後執行它。這是在不將任何代碼釋放到磁盤的情況下完成的。

3.第二個VBA腳本運行notepad.exe並將shellcode注入其中。

4.shellcode在notepad.exe中運行,並進入OneDrive下載ROKRAT有效負載並在內存中執行它。

11.png

這裡描述的感染鏈與MalwareBytes在2021年1月報告的非常相似,MalwareBytes也通過將shellcode注入notepad.exe並將RAT加載到內存中來傳播ROKRAT。然而,MalwareBytes研究中描述的樣本的編譯日期是從2019年開始的,而checkpoint發現的新ROKRAT樣本似乎是在2022年12月21日編譯的,距離文件提交給VirusTotal只有六天時間。

此外,在2023年4月發現的另一個文件似乎是同一感染鏈的一部分,只是這次注入的目標進程是mspaint.exe,該文件以朝鮮的核武器為主題。不幸的是,在我們進行分析時,URL不再響應下載負載的請求。但是,這份文件很有可能也是為了傳播ROKRAT。

與Amadey的關聯2022年11月初,一個名為securityMail.zip的文件被提交給了VirusTotal。這個ZIP包含兩個LNK,它們的大小都不到5MB,令人懷疑。 PowerShell命令在兩個LNK中的實現是唯一的,並且僅與ROKRAT和GOLDBACKDOOR LNK感染重疊。然而,這個特定的感染鏈最終傳播了Amadey,這是一種可在網絡犯罪論壇上出售的惡意軟件。 Amadey過去曾被認為是Konni開發的,Konni組織與APT37的背景類似。

12.png

“安全郵件”誘餌的感染鏈,打開這些LNK中的任何一個都會產生惡意流程:

1.PowerShell命令從LNK中提取一個誘餌HTML文件,並將其放入磁盤,其方式與ROKRAT感染鏈類似:

13.png

2.這個PowerShell還從包含DLL的LNK中提取一個ZIP文件。然後將DLL作為mfc100.dll放入磁盤。

3.PowerShell最終也從LNK中提取了一個BAT腳本,將其放到磁盤上並執行。

4.BAT腳本運行帶有rundll32.exe的DLL並刪除自身。

13.png

對DLL文件的初步分析顯示,它包含了商業代碼保護解決方案Themida。在分析了它執行的內存轉儲後,我們能夠確認這實際上是Amadey。誘餌HTML文件中包含一個偽造的Kakao銀行的登錄頁面,Kakao是韓國一家受歡迎的銀行。對HTML的進一步分析表明,它不是用於密碼釣魚,而是用來隱藏攻擊者的意圖。

15.png

偽造Kakao銀行登錄頁面

ROKRAT技術分析ROKRAT只是APT37使用的許多自定義工具之一,但它絕對是通用且強大的。 ROKRAT主要側重於運行額外的有效負載和大量的數據竊取。它的CC功能依賴於雲基礎設施,包括DropBox、pCloud、Yandex cloud和OneDrive。 ROKRAT還收集有關計算機的信息,以防止被其他競爭者再次感染。

雖然在過去幾年中,ROKRAT並沒有發生重大變化,但其破壞力依然不容小覷,這可以歸因於它巧妙地使用內存執行,將CC通信偽裝成潛在的合法云通信,以及額外的加密層,以阻礙網絡分析和逃避網絡簽名。因此,最近發表的關於ROKRAT的文章並不多。

通用惡意軟件結構ROKRAT的大多數樣本都有一個非常簡單的WinMain函數。到目前為止分析的所有樣本都包含一個數據收集功能(CollectMachineData,如下圖所示),該功能在主RAT線程(MainRATThread)執行之前執行。這個線程初始化RAT並運行一個循環,以嘗試從CC獲取命令,然後解析並執行它們。

WinMain函數中嵌入了兩個額外的功能,我們只在樣本的一個子集中觀察到了這兩個功能。第一個檢查RAT是否能夠寫入TEMP目錄(CheckTemp,如下圖所示)。第二個創建了一個線程(KillCertainProcessesThread),用於停止與以前利用Hancom Office漏洞的感染載體相關的某些進程。

16.png

ROKRAT中WinMain函數的示例

受害目標分析ROKRAT在執行時調用的第一個函數旨在收集有關受感染計算機的數據。在初始攻擊階段,這可能有助於攻擊者區分這是否是一個期望的目標,然後採取相應的行動。

在這個函數(以及許多其他函數)中,ROKRAT使用加密字符串來防止靜態分析看不到使用的一些技術。此處收集的信息包括程序是否在WOW64上運行(表示32位應用程序在64位窗口上運行)、vmtoolsd.exe的版本(VMWare Tools Daemon,如果已安裝)、註冊表中的SMBIOS數據以及註冊表中的系統BIOS版本。

RAT還收集用戶名、計算機名和RAT正在執行的可執行文件的完整路徑。後者很重要,因為感染鏈通常涉及將ROKRAT PE文件注入現有進程的內存。換言之,這使攻擊者能夠查看ROKRAT是否在預期的進程中執行,如powershell.exe或notepad.exe。最後,該函數檢查可執行文件是否有權在C:\Windows下創建用於寫入的文件。

17.png

CollectMachineData收集有關受感染計算機的各種信息

雖然在上述函數中收集了大量目標的數據,但在ROKRAT開始接受命令之前,還有另一個數據收集函數在主RAT線程的上下文中運行。第二個函數檢查調用IsDebuggerPresent API,將結果存儲為字符(0或1)。此外,它還調用了一個函數來獲取計算機的屏幕截圖。

將執行在主線程中執行的數據收集,每次ROKRAT嘗試獲取命令時發送收集的數據。

在同一函數中,一些示例還檢查是否有一個名為360Tray.exe的正在運行的進程,該進程是名為360 Total Security的防病毒軟件的一部分。結果存儲在一個全局布爾變量中,並在用於執行shellcode有效負載的單獨函數中訪問。有趣的是,如果找到了進程,ROKRAT會將等待shellcode完成運行的超時時間從24秒增加到48秒。如果shellcode運行超過超時時間,並且之前未檢測到360Tray.exe,ROKRAT將嘗試終止shellcode線程。

如前所述,一些ROKRAT示例執行一個名為KillCertainProcessesThread的線程。這個線程阻止了兩個進程:gbb.exe和gswin32c.exe,它們負責解析Hancom Office中的postscript數據。過去,ROKRAT樣本來自惡意的HWP文檔,這些文檔利用這些進程來獲取代碼執行。最有可能的是,這是在試圖清除之前活動中的任何利用痕跡時留下的代碼。

ROKRAT沒有為這些進程名稱使用硬編碼或加密的字符串,而是包含一個簡單的哈希算法,該算法基於整數值確定進程名稱。它的工作方式如下:

18.png

CC通信在我們分析的每個ROKRAT樣本中,惡意軟件配置包含一個代表云基礎設施的ID號,以及使用它的API令牌。 ID號可以具有以下值,以對應不同的雲提供商,以及允許RAT與本地計算機通信的測試模式:

1 -本地計算機(無雲)

3 - Dropbox

4 - pCloud

5 - Yandex

19.png

雲存儲提供商的Switch case語句

進一步的分析表明,通常有兩種CC配置,一種用作主要基礎設施,另一種用作備份。在我們發現的最新樣本中,主要的CC是pCloud,次要的是Yandex Cloud。

ROKRAT從初始化令牌開始,然後從CC獲取文件夾內容,以確保它具有訪問權限並且令牌有效:

20.png

列出pCloud中文件夾目錄的GET請求標頭

ROKRAT使用的文件的名稱是基於GetTickCount API和rand API的隨機值生成的,並以執行時間作為依據。

ROKRAT向服務器上傳一個文件,其中包含有關受害計算機的以下信息:

硬編碼值0xBAADFEDE–稍後在CC通信中使用;

IsDebuggerPresent值;

之前保存到以下路徑的惡意軟件的屏幕截圖:%TEMP%\

進程數據—每個工作進程的pid:

Tick Count;

XOR密鑰–用於解密CC中的命令和有效負載;

生成的文件名-稍後用於下載和執行某些命令中的有效負載;

IsWow64Process標識;

Windows版本;

計算機名;

使用者名稱;

計算機類型—通過查詢HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mssmbios\Data下的SMBiosData註冊表值獲得;

VMware工具版本數據;

系統BIOS版本;

為了進一步隱藏其踪跡,ROKRAT將收集到的有關計算機的數據標記為MP3:

21.png

將從受害計算機收集的加密數據發送到pCloud的POST請求標頭

首先,使用一個隨機的四字節密鑰對數據進行異或運算。由於這個原因,數據以硬編碼的四字節值0xBAADFEDE開始。由於攻擊者知道硬編碼的值,他們可以通過使用0xBAADFEDE對異或數據的前四個字節進行異或來獲得異或密鑰。然後用AES-CBC對異或數據進行加密。最後,使用硬編碼的RSA公鑰對AES密鑰進行加密,以確保只能使用RSA私鑰對有效負載進行解密。

儘管CC通信已經在HTTPS流量中加密,但ROKRAT通過使用AES加密上傳到CC的數據進一步進行了加密。當惡意軟件初始化時,它會生成兩個隨機的16字節值,作為用於加密命令和有效負載的AES密鑰的基礎。惡意軟件還附帶了一個硬編碼的16字節值,然後對兩個隨機值進行異或。結果是兩個AES密鑰,一個用於加密和解密命令,另一個用於加密和解密有效負載。

ROKRAT命令每個命令都由一個字符標識。有些命令採用參數,並且這些參數是在命令ID字符之後提供的。在識別出正確的命令後,代碼會根據命令的類型解析參數。下表列出了研究人員在ROKRAT中發現的命令,以及它們預期的參數和操作:

22.1.png

22.2.png

在收到清理命令(d)後,ROKRAT運行以下命令來刪除惡意軟件最初未使用的持久性機制。它們可能與感染後的活動有關。

23.png

在接收到命令1-4後,ROKRAT創建一個名為out.txt的文件,其中包含有關係統的信息:

24.png

總結我們介紹了臭名昭著的APT37的最新活動,介紹了幾種不同的感染鏈,其中大多數導致ROKRAT有

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...