今天小編分享的互聯網經驗:朝韓網絡攻擊一角:APT37改用LNK檔案大肆傳播RokRAT,歡迎閱讀。
本文是 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 作為其命令和控制(C&C)基礎設施,而另一個則依賴于 Yandex 和 Mediafire。後一個更接近于如今 ROKRAT 的活動方式,依賴雲檔案存儲服務作為一種 C&C 機制。
最初只支持 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。盡管攻擊的性質不同,但研究人員認為所有這些攻擊都是由相同的攻擊者策劃的。
誘餌和感染鏈的時間線
誘餌 LNK 感染鏈
2022 年 4 月,Stairwell 發表了對 GOLDBACKDOOR 的詳細分析,這是一種針對韓國記者的有針對性攻擊中使用的惡意軟體。Stairwell 對利用運行 PowerShell 的大型 LNK 檔案的感染鏈進行了徹底分析,導致在釋放誘餌文檔的同時執行新發現的惡意軟體。這項技術是一個名為 EmbeddExeLnk 的公共工具的獨特實現。
雖然最初與 GOLDBACKDOOR 有關,但對最近與 APT37 相關的誘餌的分析表明,這種技術已經成為一種重要的方法,用于傳播與同一攻擊者相關的另一種工具,即 ROKRAT。ROKRAT 和 GOLDBACKDOOR 加載機制的實現非常相似,只有在檢索有效負載時才能區分。
在過去的幾個月裡,研究人員能夠利用 ZIP 和 ISO 檔案中提供的這種獨特實現來識别多個誘餌。只有其中一些誘餌被證實會導致 ROKRAT 的傳播。所有的誘餌都以韓國國内外事務為主題。
LNK 感染鏈分析
目前已知的所有 LNK 都會導致幾乎相同的感染鏈。下面以 " 利比亞項目 " 中描述的一個感染為例進行說明:
" 利比亞項目 " 誘餌的感染鏈
點擊惡意 LNK 檔案會觸發 PowerShell 的執行,并啟動以下感染鏈:
1.PowerShell 從 LNK 中提取文檔檔案,将其放入磁盤,然後打開它。這個檔案是一個誘餌,欺騙用戶以為他們只是打開了一個普通的 PDF 或 HWP 檔案。
2.PowerShell 從 LNK 中提取 BAT 腳本,将其放入磁盤并執行。
3.BAT 腳本執行一個新的 PowerShell 實例,該實例從 OneDrive 下載有效負載,通過将有效負載的第一個字節作為密鑰對其進行解碼,并将其與有效負載的其餘部分進行異或。
4. 生成的有效負載以反射方式注入 PowerShell,使其作為新線程運行。
5.shellcode 使用四字節異或密鑰對有效負載的 ROKRAT 部分進行解碼并執行它。
典型的 ROKRAT 感染鏈
ROKRAT 運營商在采取新的行為同時,仍夾雜了一些舊習慣,比如,ROKRAT 仍然使用惡意 Word 文檔進行部署。
2022 年 12 月,有人向 VirusTotal 提交了一份惡意的 Word 文檔,命名為 ".doc"(Case fee_Payment request.doc)。該檔案本身包含一個輸入個人和銀行信息的簡短表格。然而,對該檔案的仔細檢查顯示,其中提到了韓國的統一部。
一旦用戶打開惡意文檔并允許宏執行,就會觸發以下感染鏈:
1. 宏通過設定 AccessVBOM 系統資料庫項以加載其他代碼來檢查并确保它可以訪問 Visual Basic 項目。
2. 宏解碼一個新的 VBA 腳本,将其寫入宏中的一個新模塊,然後執行它。這是在不将任何代碼釋放到磁盤的情況下完成的。
3. 第二個 VBA 腳本運行 notepad.exe 并将 shellcode 注入其中。
4.shellcode 在 notepad.exe 中運行,并進入 OneDrive 下載 ROKRAT 有效負載并在内存中執行它。
這裡描述的感染鏈與 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 的背景類似。
" 安全郵件 " 誘餌的感染鏈,打開這些 LNK 中的任何一個都會產生惡意流程:
1.PowerShell 命令從 LNK 中提取一個誘餌 HTML 檔案,并将其放入磁盤,其方式與 ROKRAT 感染鏈類似:
2. 這個 PowerShell 還從包含 DLL 的 LNK 中提取一個 ZIP 檔案。然後将 DLL 作為 mfc100.dll 放入磁盤。
3.PowerShell 最終也從 LNK 中提取了一個 BAT 腳本,将其放到磁盤上并執行。
4.BAT 腳本運行帶有 rundll32.exe 的 DLL 并删除自身。
對 DLL 檔案的初步分析顯示,它包含了商業代碼保護解決方案 Themida。在分析了它執行的内存轉儲後,我們能夠确認這實際上是 Amadey。誘餌 HTML 檔案中包含一個偽造的 Kakao 銀行的登錄頁面,Kakao 是韓國一家受歡迎的銀行。對 HTML 的進一步分析表明,它不是用于密碼釣魚,而是用來隐藏攻擊者的意圖。
偽造 Kakao 銀行登錄頁面
ROKRAT 技術分析
ROKRAT 只是 APT37 使用的許多自定義工具之一,但它絕對是通用且強大的。ROKRAT 主要側重于運行額外的有效負載和大量的數據竊取。它的 C&C 功能依賴于雲基礎設施,包括 DropBox、pCloud、Yandex cloud 和 OneDrive。ROKRAT 還收集有關計算機的信息,以防止被其他競争者再次感染。
雖然在過去幾年中,ROKRAT 并沒有發生重大變化,但其破壞力依然不容小觑,這可以歸因于它巧妙地使用内存執行,将 C&C 通信偽裝成潛在的合法雲通信,以及額外的加密層,以阻礙網絡分析和逃避網絡籤名。因此,最近發表的關于 ROKRAT 的文章并不多。
通用惡意軟體結構
ROKRAT 的大多數樣本都有一個非常簡單的 WinMain 函數。到目前為止分析的所有樣本都包含一個數據收集功能(CollectMachineData,如下圖所示),該功能在主 RAT 線程(MainRATThread)執行之前執行。這個線程初始化 RAT 并運行一個循環,以嘗試從 C&C 獲取命令,然後解析并執行它們。
WinMain 函數中嵌入了兩個額外的功能,我們只在樣本的一個子集中觀察到了這兩個功能。第一個檢查 RAT 是否能夠寫入 TEMP 目錄(CheckTemp,如下圖所示)。第二個創建了一個線程(KillCertainProcessesThread),用于停止與以前利用 Hancom Office 漏洞的感染載體相關的某些進程。
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 下創建用于寫入的檔案。
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 沒有為這些進程名稱使用硬編碼或加密的字元串,而是包含一個簡單的哈希算法,該算法基于整數值确定進程名稱。它的工作方式如下:
C&C 通信
在我們分析的每個 ROKRAT 樣本中,惡意軟體配置包含一個代表雲基礎設施的 ID 号,以及使用它的 API 令牌。ID 号可以具有以下值,以對應不同的雲提供商,以及允許 RAT 與本地計算機通信的測試模式:
1 - 本地計算機(無雲)
3 - Dropbox
4 - pCloud
5 - Yandex
雲存儲提供商的 Switch case 語句
進一步的分析表明,通常有兩種 C&C 配置,一種用作主要基礎設施,另一種用作備份。在我們發現的最新樣本中,主要的 C&C 是 pCloud,次要的是 Yandex Cloud。
ROKRAT 從初始化令牌開始,然後從 C&C 獲取檔案夾内容,以确保它具有訪問權限并且令牌有效:
列出 pCloud 中檔案夾目錄的 GET 請求标頭
ROKRAT 使用的檔案的名稱是基于 GetTickCount API 和 rand API 的随機值生成的,并以執行時間作為依據。
ROKRAT 向伺服器上傳一個檔案,其中包含有關受害計算機的以下信息:
硬編碼值 0xBAADFEDE –稍後在 C&C 通信中使用;
IsDebuggerPresent 值;
之前保存到以下路徑的惡意軟體的螢幕截圖:%TEMP%
進程數據—每個工作進程的 pid:
Tick Count;
XOR 密鑰–用于解密 C&C 中的命令和有效負載;
生成的檔案名 - 稍後用于下載和執行某些命令中的有效負載;
IsWow64Process 标識;
Windows 版本;
計算機名;
用戶名;
計算機類型—通過查詢 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesmssmbiosData 下的 SMBiosData 系統資料庫值獲得;
VMware 工具版本數據;
系統 BIOS 版本;
為了進一步隐藏其蹤迹,ROKRAT 将收集到的有關計算機的數據标記為 MP3:
将從受害計算機收集的加密數據發送到 pCloud 的 POST 請求标頭
首先,使用一個随機的四字節密鑰對數據進行異或運算。由于這個原因,數據以硬編碼的四字節值 0xBAADFEDE 開始。由于攻擊者知道硬編碼的值,他們可以通過使用 0xBAADFEDE 對異或數據的前四個字節進行異或來獲得異或密鑰。然後用 AES-CBC 對異或數據進行加密。最後,使用硬編碼的 RSA 公鑰對 AES 密鑰進行加密,以确保只能使用 RSA 私鑰對有效負載進行解密。
盡管 C&C 通信已經在 HTTPS 流量中加密,但 ROKRAT 通過使用 AES 加密上傳到 C&C 的數據進一步進行了加密。當惡意軟體初始化時,它會生成兩個随機的 16 字節值,作為用于加密命令和有效負載的 AES 密鑰的基礎。惡意軟體還附帶了一個硬編碼的 16 字節值,然後對兩個随機值進行異或。結果是兩個 AES 密鑰,一個用于加密和解密命令,另一個用于加密和解密有效負載。
ROKRAT 命令
每個命令都由一個字元标識。有些命令采用參數,并且這些參數是在命令 ID 字元之後提供的。在識别出正确的命令後,代碼會根據命令的類型解析參數。下表列出了研究人員在 ROKRAT 中發現的命令,以及它們預期的參數和操作:
在收到清理命令(d)後,ROKRAT 運行以下命令來删除惡意軟體最初未使用的持久性機制。它們可能與感染後的活動有關。
在接收到命令 1-4 後,ROKRAT 創建一個名為 out.txt 的檔案,其中包含有關系統的信息:
總結
我們介紹了臭名昭著的 APT37 的最新活動,介紹了幾種不同的感染鏈,其中大多數導致 ROKRAT 有效負載。這些感染鏈表明,自 2022 年以來,該組織已經不再嚴重依賴惡意檔案來傳播惡意軟體,而是開始将有效負載隐藏在超大的 LNK 檔案中。這種方法可以通過簡單的點擊觸發同樣有效的感染鏈,這比 n 天漏洞或需要額外點擊才能啟動的 Office 宏更可靠。
雖然 ROKRAT 功能最近沒有太大變化,但用于傳播它的加載程式确實發生了變化。事實上,這是我們第一次看到 ROKRAT 帶有 LNK 感染鏈,類似于用于傳播 GOLDBACKDOOR 的 LNK 感染鏈。值得注意的是,這并不意味着 APT37 不再使用惡意文檔,因為研究人員在 2023 年 4 月就發現了此類使用的證據。
們還分析了幾個新的 ROKRAT 樣本,并介紹了它接受的命令,這有助于我們了解惡意軟體的内部機制和功能。