APT & 針對式目標攻擊
專門攻擊亞太地區的網路間諜集團 Earth Hundun , 火力再升級的兩大武器
這份報告藉由 2024 年的一起攻擊行動來說明 Earth Hundun 網路間諜集團的兩大武器:Waterbear 與 Deuterbear 如何運作。
摘要
- Earth Hundun 已知專門攻擊亞太地區,現在更運用了新的感染、散播與通訊手法。
- 這份報告說明 Waterbear 和 Deuterbear 的運作方式,包括:感染階段、幕後操縱 (CC) 通訊,以及惡意程式元件的行為。
- Deuterbear 在許多方面都類似 Waterbear,但能力似乎更上層樓,例如它支援 shellcode 擴充元件、省掉了與遠端存取木馬程式 (RAT) 的交握動作,以及使用 HTTPS 作為 CC 通訊。
- 若比較這兩者的惡意元件,Deuterbear 的惡意元件採用 shellcode 形式、具備記憶體掃描反制功能,並與其下載器共用同一把網路通訊金鑰,這些都有別於 Waterbear。
- 從 Waterbear 演化至 Deuterbear 意味著 Earth Hundun 一直在持續開發反制分析及躲避偵測的工具。
簡介
趨勢科技在上一份報告介紹了 Earth Hundun 精密的網路間諜行動,該集團已知使用 Waterbear 惡意程式以及其最新版本 Deuterbear 來攻擊亞太地區。我們最早觀察到 Earth Hundun 使用 Deuterbear 惡意程式是在 2022 年 10 月,並且從那時起便一直是該集團後續行動不可或缺的要素。
我們的分析詳細說明其下載器的複雜運作、感染程序、網路通訊行為、反制分析技巧,以及未來的演化預測。
本文將根據 2024 年 Earth Hundun 的一起攻擊行動來檢視我們最近從其 CC 伺服器下載到的最終遠端存取木馬程式 (RAT) 的行為。
上一篇,我們主要探討 Waterbear 的下載器 (第一階段) 並檢視其網路行為。這份報告藉由個案研究來說明駭客如何在第二階段當中使用 Waterbear RAT 與擴充元件 (plugin),以及 Waterbear 下載器如何散播至其他電腦,使它更難被偵測和追蹤。
除此之外,我們也檢視了 Deuterbear 的一些重大更新,包括:能夠使用 shellcode 形式的擴充元件,以及 RAT 在運作時甚至不需交握動作。
最後,我們會分享 Earth Hundun 如何透過 Waterbear 和 Deuterbear 惡意程式與其受害者互動,藉此彰顯該集團手法之精密。
Waterbear 個案研究
下圖顯示該集團先前某起行動的攻擊流程,圖中可看到 Waterbear 如何在受害環境內部活動,並將 Waterbear 下載器散播到網路上的更多電腦。
第一階段
在攻擊的第一階段,Waterbear 通常使用一組 (三個) 檔案來執行下載 (如上一份報告所說),包括:修改過的合法執行檔、載入器,以及加密的下載器。
第二階段
- 我們在連上駭客的 CC 伺服器之後,下載了記憶體中的 Waterbear RAT (A),它可支援多種指令 (參見表 1 來查看完整的 RAT 指令清單)。在這個案例中,Waterbear RAT (A) 僅用來經由 RAT 指令 1010 下載 Waterbear 擴充元件,並呼叫擴充元件的第一個匯出函式「Start」來將程式碼注入指定的處理程序。
- Waterbear 擴充元件含有 Waterbear 下載器 0.27 與 0.28 版本,兩者都未加密,差別在其處理程序的位元版本。如果處理程序是 32 位元版本,那就會執行 0.27 版的 Waterbear 下載器。反之,如果處理程序是 64 位元版本,就會執行 0.28 版來下載其他檔案。
Waterbear 下載器 0.27 與 0.28 兩個版本都是我們所知的最新版本,其行為與 2020 年以前的版本相同。 - 此案例中,Waterbear 擴充元件是注入到 64 位元的處理程序,因此會使用 0.28 版的 Waterbear 下載器來試圖連上新的 CC 伺服器 IP 位址 (由 Waterbear RAT (A) 所指定),並且下載 Waterbear RAT (B),該檔案與前一個檔案幾乎相同,只有內部包含的 RSA 金鑰不一樣。
- Waterbear RAT (B) 會蒐集被感染電腦的資訊 (包括磁碟機與檔案清單),並且將 Waterbear 下載器散播到其他電腦上。有趣的是,Earth Hundun 集團在下載了新階段的 RAT 或下載器之後,就會將 CC 伺服器字串替換成一個內部 IP 位址。這應該是為了抹除其活動痕跡,或是為了連上位於受害者環境內部的其他 CC 伺服器,顯示出駭客可以隨意切換連線目標。
Waterbear RAT 指令
自從我們上一篇部落格討論了 Waterbear 的功能之後,它又增加了更多指令,下表是目前的最新版本:
指令群 | 指令碼 (16 進位) | 指令碼 (10 進位) | 功能 |
---|---|---|---|
檔案管理 | 2 | 2 | 列出磁碟機。 |
3 | 3 | 列出檔案。 | |
4 | 4 | 上傳檔案至 CC 伺服器。 | |
5 | 5 | 從 CC 伺服器下載檔案。 | |
6 | 6 | 將檔案重新命名。 | |
7 | 7 | 建立資料夾。 | |
8 | 8 | 刪除檔案。 | |
A | 10 | 執行檔案。 | |
B | 11 | 移動檔案。 | |
C | 12 | 偽裝檔案的 metadata。 | |
D | 13 | 檔案作業。 | |
其他 | 326 | 806 | 取得系統語言、系統時間以及 Windows 安裝日期。 |
視窗管理 | 327 | 807 | 列出視窗。 |
329 | 809 | 隱藏式窗。 | |
32A | 810 | 顯示視窗。 | |
32B | 811 | 關閉視窗。 | |
32C | 812 | 將視窗最小化。 | |
32D | 813 | 將視窗最大化。 | |
32F | 815 | 螢幕截圖。 | |
330 | 816 | 設定螢幕截圖事件訊號。 | |
331 | 817 | 遠端桌面。 | |
處理程序管理 | 332 | 818 | 列出處理程序。 |
333 | 819 | 終止處理程序。 | |
335 | 821 | 暫停處理程序 (以 pID 來指定)。 | |
336 | 822 | 繼續執行處理程序 (以 pID 來指定)。 | |
337 | 823 | 取得處理程序模組資訊。 | |
338 | 824 | 取得處理程序模組資訊 (使用 Authenticode 政策提供者的檔案或物件)。 | |
網路管理 | 339 | 825 | 取得延伸 TCP 表格。 |
33A | 826 | 使用 SetTcpEntry 將 TCP 連線狀態設定為 MIB_TCP_STATE_DELETE_TCB。 | |
服務管理 | 33B | 827 | 列出服務。 |
33C | 828 | 操控服務。 | |
33D | 829 | ||
33E | 830 | ||
33F | 831 | ||
340 | 832 | ||
組態管理 | 341 | 833 | 取得下載器組態設定中的 CC 伺服器。 |
342 | 834 | 設定下載器組態設定中的 CC 伺服器。 | |
遠端指令列介面 | 3EE | 1006 | 啟動遠端指令列介面。 |
管理 | 3EF | 1007 | 結束遠端指令列介面。 |
3F0 | 1008 | 取得遠端指令列介面的 PID。 | |
3F2 | 1010 | 下載擴充元件並執行其匯出的「Start」函式。 | |
不明 | 514 | 1300 | 不明 |
系統登錄管理 | 7DB | 2011 | 列出系統登錄。 |
7DC | 2012 | 列出系統登錄數值。 | |
7DD | 2013 | 建立系統登錄機碼。 | |
7DE | 2014 | 設定系統登錄數值。 | |
7DF | 2015 | 刪除系統登錄機碼。 | |
7E0 | 2016 | 刪除系統登錄數值。 | |
基本控制 | 1F41 | 8001 | 取得當前視窗。 |
1F44 | 8004 | 在以下系統登錄機碼中設定感染印記:HKCU\Console\Quick\Edit。 | |
1F45 | 8005 | 終止連線以及 RAT 處理程序。 | |
代理器 (Proxy) | 2332 | 9010 | 更新 CC 伺服器 IP 位址。 |
2333 | 9011 | 經由代理器將資料傳送至連線的伺服器。 | |
2334 | 9012 | 關閉所有連線。 | |
2335 | 9013 | 關閉指定的連線。 | |
2336 | 9014 | 監聽連接埠。 | |
2337 | 9015 | 經由代理器來傳送某 socket handle 的資料。 | |
2338 | 9016 | 關閉指定的 socket handle。 | |
2339 | 9017 | 關閉某個 socket handle 的傳送與接收。 | |
233A | 9018 | 經由代理器將來自 socket 的資料傳回給 CC 伺服器。 |
表 1:Waterbear RAT 指令。
在接收後門指令之前,RAT 會先透過指令碼 8002 傳送受害者的資訊給 CC 伺服器,其結構如下:
資料位移 | 資料大小 | 資料內容 |
---|---|---|
0x00 | 0x01 | IsUserAnAdmin |
0x01 | 0x9C | GetVersionExA |
0x9D | 0x10 | gethostbyname |
0xAD | 0x44 | gethostname |
0xF1 | 0x18 | GetUserNameA |
0x109 | 0x04 | GetLastInputInfo |
0x10D | 0x50 | GetWindowTextA |
0x15D | 0x12 | GetAdaptersInfo |
0x16F | 0x10 | 下載器版本。 |
0x17F | 0x30 | 當前處理程序中的磁碟資訊。 |
0x1AF | 0x04 | 系統登錄 HKCU\Control Panel\Colors 中的感染標記。 |
0x1B3 | 0x04 | GetCurrentProcessId |
0x1B7 | 0x01 | RAT 版本。 |
表 2:Waterbear 傳送給 CC 伺服器的受害者資訊結構。
下節說明 Earth Hundun 如何使用 Deuterbear,並提供有關 Deuterbear RAT 的完整分析。
圖 3 顯示 Deuterbear 的安裝流程,請注意,它與 Waterbear 相似,都是採用二階段方式來安裝後門程式。
在第一階段,載入器運用了一個基本的 XOR 運算來將下載器解密,並從 CC 伺服器取得第一階段 RAT。接著,駭客利用第一階段 RAT 來檢查受害系統,找到一個適合用來常駐的資料夾。這就是 Deuterbear 第二階段元件接下來要安裝的位置,包括採用 CryptUnprotectData 加密的載入器、加密的下載器,以及相關的系統登錄 (解密流程在上一篇部落格已經討論過)。
在大多數被感染的系統中只會看到 Deuterbear 的第二階段元件。根據我們的監控資料顯示,所有 Deuterbear 的第一階段元件在「常駐安裝」完成之後就會全部移除。Earth Hundun 似乎偏愛使用 CryptUnprotectData 加密來保留載入器,即使 Deuterbear 第一階段已安裝成功。這樣的策略可有效掩蓋其足跡,避免威脅研究人員能夠輕易分析其惡意程式,尤其是在模擬環境而非受害者的真實環境。
Deuterbear RAT
Deuterbear RAT 直接繼承了下載器的一些特性,包括:
- 所有反制分析的技巧 (細節請參閱我們上一份報告)。
- HTTPS 通道。
- 接收與傳送資料的程式碼。
- 網路通訊加密與解密的 RC4 金鑰。
- 函式加密與解密的程式碼。
- 函式加密與解密的金鑰。
由於使用了相同的 HTTPS 通道與 RC4 通訊加密金鑰,Deuterbear RAT 就不需與 CC 伺服器進行交握 (handshake) 來更新通訊協定。這樣一來,駭客對用戶端的控制就能無縫銜接,不論處理程序是處於下載器或 RAT 狀態。在執行後門指令之前,Deuterbear RAT 會先透過 RAT 指令 975 傳送受害者的資訊到 CC 伺服器,其結構 (表 3) 直接令人聯想到 Waterbear RAT (表 2)。
資料位移 | 資料大小 | 資料內容 |
---|---|---|
0x00 | 0x04 | 下載器組態設定的特徵碼 (00 00 01 00)。 |
0x04 | 0x01 | IsUserAnAdmin |
0x05 | 0x20 | GetUserNameA |
0x25 | 0x80 | 作業系統版本。 |
0xA5 | 0x04 | gethostbyname |
0xA9 | 0x46 | gethostname |
0xEF | 0x50 | GetWindowTextA |
0x13F | 0x04 | GetLastInputInfo |
0x143 | 0x26 | GetAdaptersInfo |
0x169 | 0x04 | GetCurrentProcessId |
0x16D | 0x01 | RAT 版本。 |
0x16E | 0x04 | 系統登錄 HKCU\Control Panel\Colors 中的感染標記。 |
0x172 | 0x08 | 系統資料夾中的暫存資料夾上次寫入時間。 |
表 3:Deuterbear 傳送給 CC 伺服器的受害者資訊結構。
Deuterbear RAT 指令
如果比較 Deuterbear 和 Waterbear 就會發現有許多功能都是直接從 Waterbear RAT 移植而來,例如:處理程序管理、檔案管理、遠端指令列介面等功能。
儘管 Deuterbear 簡化了一些功能,只保留了 20 個 RAT 指令 (表 4),反觀 Waterbear 有超過 60 個功能 (表 1),但 Deuterbear RAT 可支援更多擴充元件來提高彈性並容納更多功能,包括:兩個 shellcode 和一個 PE 格式的 DLL (經由 RAT 指令 979)。在擴充元件安裝完成之後,駭客會再傳送一個訊息來決定要啟動哪一個擴充元件,有三種可能情況:
- 執行第一個 shellcode 以及 PE (DLL) 的第一個匯出函式。
- 執行第二個 shellcode 以及 PE (DLL) 的第一個匯出函式。
- 僅執行 PE (DLL) 的第一個匯出函式。
指令群 | 指令碼 (16 進位) | 指令碼 (10 進位) | 功能 |
---|---|---|---|
檔案管理 | 0x27 | 39 | 列出檔案 (日期、大小、名稱)。 |
0x28 | 40 | 上傳檔案至 CC 伺服器。 | |
0x29 | 41 | 從 CC 伺服器下載檔案。 | |
0x2A | 42 | 將檔案重新命名。 | |
0x2C | 44 | SHFileOperationA | |
0x2E | 46 | 執行檔案。 | |
處理程序管理 | 0xE7 | 231 | 列出處理程序。 |
0xE8 | 232 | 終止目標處理程序。 | |
組態設定管理 | 0x1FF | 511 | 蒐集下載器組態設定中的資料。 >CC 字串。 >執行時間。 |
0x200 | 512 | 更新下載器組態設定中的資料。 >CC 字串。 >執行時間。 |
|
遠端指令列介面管理 | 0x2FC | 764 | 啟動遠端指令列介面。 |
0x2FD | 765 | 結束遠端指令列介面。 | |
0x2FE | 766 | 取得遠端指令列介面的 PID。 | |
基本控制 | 0x3CE | 974 | 取得當前視窗。 |
0x3D1 | 977 | 設定系統登錄 HKCU\Control Panel\Colors 中的感染標記。 | |
0x3D2 | 978 | 終止連線以及 RAT 處理程序。 | |
擴充功能管理 | 0x3D3 | 979 | 從 CC 伺服器下載擴充功能: >PE (DLL) >第一個 shellcode (使用下載器組態設定中的金鑰來加密) >第二個 shellcode (使用下載器組態設定中的金鑰來加密) |
0x3D4 | 980 | 解除安裝擴充功能。 | |
0x3E8~0x578 | 1,000~1,400 | 執行擴充功能: >第一個 shellcode >PE (DLL) 的第一個匯出函式 |
|
> 0x578 | > 1,400 | 執行擴充功能: >第二個 shellcode >PE (DLL) 的第一個匯出函式 |
|
其他 | 其他 | 執行擴充功能:
>PE (DLL) 的第一個匯出函式
|
表 4:Deuterbear RAT 指令。
圖 4 至 6 舉例說明 Waterbear 與 Deuterbear 後門指令之間的相似之處。
比較
比較 Waterbear 與 Deuterbear 的下載器可看出其 RAT 之間的差異 (表 5):
屬性 | Waterbear RAT | Deuterbear RAT |
---|---|---|
形式 | PE 檔案 | Shellcode |
記憶體掃描反制 | 無 | 有 |
CC 通訊 | HTTP | HTTPS |
封包標頭大小 | 10 | 5 |
與下載器共用相同的通訊金鑰 | 否 | 是 |
擴充功能形式 | PE 檔案 | PE 檔案與 shellcode |
感染標記系統登錄 | HKCU\Console\Quick\Edit | HKCU\Control Panel\Colors |
後門指令數量 | 超過 60 | 20 |
後門指令功能 | 檔案管理 處理程序管理 組態設定管理 遠端指令列介面管理 視窗管理 系統登錄管理 服務管理 網路管理 代理器 (Proxy) |
檔案管理 處理程序管理 組態設定管理 遠端指令列介面管理 擴充功能管理 |
表 5:Waterbear RAT 與 Deuterbear RAT 之間的差異。
結論與建議
Waterbear 歷經不斷的演變之後,最後終於誕生了新的惡意程式:Deuterbear。有趣的是,Waterbear 和 Deuterbear 目前仍各自獨立發展當中,而非單純地由後者取代前者。
根據 2024 年 4 月的下載器分析,我們仔細研究了它的 RAT,由於其連接埠開放時間短暫,這是一個很少能從 CC 伺服器下載到的元件。經過有系統地比對 Deuterbear 和 Waterbear 的載入器、下載器、RAT 以及行為之後,我們深入掌握了 Earth Hundun 所用的技巧如何演變。Waterbear 和 Deuterbear 家族只不過是該集團的武器之一,我們相信他們也會持續加強其他惡意程式的分析反制與躲避偵測能力,特別是關於網路通訊與檔案處理的部分。
要防範 Earth Hundun 的攻擊,企業可執行記憶體掃描來尋找系統上是否有 Waterbear 和 Deuterbear 下載的檔案及 RAT。此外,也可偵測是否有用來解密 Deuterbear 下載器的系統登錄,這同樣也有助於掃描系統上是否有它的足跡。
MITRE ATT&CK
手法 | 技巧 | 編號 | 說明 |
---|---|---|---|
執行 | 共用模組 | T1129 | 藉由 shellcode 動態載入 DLL。 |
原生 API | T1106 | 藉由 shellcode 動態載入 API。 | |
常駐 | 挾持執行流程:DLL 側載 | T1574.002 | 使用被修改過的合法執行檔來載入惡意 DLL。 |
開機或登入自動執行:列印處理程序 | T1547.012 | Deuterbear 濫用列印處理程序來執行惡意 DLL。 | |
提升權限 | 處理程序注入 | T1055 | Waterbear 和 Deuterbear 會將程式碼注入目標處理程序。 |
躲避防禦 | 解密/解碼檔案或資訊 | T1140 | 使用 RC4 或 CryptUnprotectData 來解開加密的下載器。 |
執行限制 | T1480 | 瞄準受害環境中的特定路徑/系統登錄。 | |
躲避虛擬化/沙盒模擬分析:以時間為基礎的躲避技巧 | T1497.003 | Deuterbear 會使用 API、Sleep 等正常操作來檢查是否處於沙盒模擬環境。 | |
躲避除錯器 | T1622 | Deuterbear 會使用處理程序時間來檢查是否在除錯模式。 | |
搜尋 | 檔案與目錄搜尋 | T1083 | Waterbear 和 Deuterbear RAT 會搜尋某些檔案和目錄,或者搜尋特定位置。 |
系統網路組態搜尋:網際網路連線搜尋 | T1016.001 | 下載器會檢查受害系統的網際網路連線。 | |
系統網路連線搜尋 | T1049 | Waterbear 和 Deuterbear RAT 會透過網路查詢資訊,列出正在進出受害系統或者來自遠端系統的網路連線。 | |
處理程序搜尋 | T1057 | Waterbear 和 Deuterbear RAT 會搜尋特定處理程序。 | |
系統資訊搜尋 | T1082 | Waterbear 和 Deuterbear RAT 會取得有關作業系統與硬體的詳細資訊,包括:版本、使用者名稱及架構。 | |
查詢系統登錄 | T1012 | 從系統登錄查詢資料來解開下載器。 | |
橫向移動 | 遠端服務:Windows 遠端管理 | T1021.006 | Waterbear 和 Deuterbear RAT 會控制遠端指令列介面。 |
蒐集 | 來自本機系統的資料 | T1005 | 蒐集受害者的基本資訊。 |
資料外傳 | 透過幕後操縱 (CC) 管道將資料外傳 | T1041 | 將蒐集到的資料傳送至 CC 伺服器。 |
幕後操縱 | 應用程式層次的通訊協定:網站通訊協定 | T1071.001 | 下載器透過 HTTP/HTTPS 來與 CC 伺服器通訊。 |
加密管道 | T1573 | 使用 RC4/RSA 來隱藏幕後操縱通訊。 | |
資料編碼:非標準編碼 | T1132.002 | 採用非標準的 RC4 將通訊編碼,讓網路通訊更難被偵測。 |
入侵指標資料
如需本文提到的入侵指標,請點選此連結。