簡介

研究報告針對威脅集群 UAT-8302 所使用的工具集與操作手法進行深入技術分析。自 2024 年底以來,該組織展現了高度的技術能力,部署多款自製惡意軟體家族,包含 NetDraft、CloudSorcerer v3 以及 VSHELL。分析重點在於這些植入程式的技術架構、其對合法 cloud API 的依賴以進行命令與控制 (C2) 操作,以及用於繞過現代防禦邊界的多階段感染鏈。透過檢視底層程式邏輯與網路協定,此報告目的在闡明進階持續性威脅 (Advanced Persistent Threat, APT) 的演進趨勢,以及它們轉向「濫用合法的雲端服」(living-off-the-cloud) 戰術的現象 [1] 。此趨勢象徵網路間諜活動的典範轉移,攻擊者不再依賴可疑的新註冊網域,而是利用全球 cloud 基礎設施提供者固有的信任。UAT-8302 的技術成熟度也進一步體現在其能夠透過隱密的 persistent 機制維持長期存取,並使用模組化、跨平台的 stagers,目的在規避靜態動態分析工具。本報告將詳細剖析這些元件,以提供對該組織技術能力的全面理解。

SNOWLIGHT vs SNOWRUST:為何 UAT-8302 從 C# 轉向 Rust 與 LexiCrypt? | 資訊安全新聞

1. 多階段感染架構

UAT-8302 使用複雜的 side-loading 機制來執行其主要 payload。此技術涉及使用一個良性的可執行檔,並操縱它來載入一個惡意的動態連結程式庫 (Dynamic Link Library, DLL)。這個 DLL 接著扮演 loader 的角色,從一個加密的 Data 檔案中解碼並執行最終的 implant。這三要素分析法(Triad-based approach)在 CloudSorcerer v3 與 NetDraft 的部署中尤其明顯 [1]

graph TD A[Benign Executable] -->|Loads| B[Malicious DLL Loader] B -->|Decrypts| C[Encrypted Data File] C -->|Executes| D[Final Implant/Backdoor] D -->|Establishes| E[Covert C2 Channel]

使用 side-loading 是一項刻意為之的策略,目的在規避利用特徵碼的偵測系統,因為初始的程序執行源自一個受信任的、經數位簽章的執行檔。例如,CloudSorcerer v3 曾被觀察到使用合法執行檔,像是 Yandex.exe VMtools.exe 來啟動感染鏈 [1] 。此技術能有效欺騙傳統的端點偵測與回應 (Endpoint Detection and Response, EDR) 系統,這些系統可能優先監控未知或未簽章程序的行為。透過在受信任應用程式的記憶體空間內執行,惡意 DLL 可以在不觸發即時警報的情況下執行敏感操作(例如記憶體注入或網路通訊)。此架構的模組化特性也允許威脅攻擊者替換個別元件(例如 loader 或加密的 payload),以適應不同的目標環境或繞過特定安全更新。這種靈活性是現代 APT 操作的特點,其中感染鏈會針對受害組織的特定防禦態勢量身定制。此外,對最終 implant 使用加密資料檔案可確保惡意程式碼在執行的最後階段於記憶體中解密之前,不會被靜態檔案掃描器發現。

1.1 CloudSorcerer v3 執行邏輯

CloudSorcerer v3 的執行通常是透過命令列參數觸發,這些參數指定了包含加密 payload 的 Configuration 檔案。以下命令說明了 side-loading 三要素(Triad)的典型呼叫方式:

  1. // Invoking the benign executable with parameters to load the malicious configuration
  2. Yandex.exe -r -p:test.ini -s:12
  3. /*
  4. Annotation:
  5. -r: Likely a flag for recursive or resident execution.
  6. -p:test.ini: Specifies the Path to the encrypted initialization file containing the shellcode.
  7. -s:12: A parameter possibly defining the injection target or sleep interval.
  8. */

2. NetDraft:使用 .NET 的隱蔽通訊

NetDraft(亦被追蹤為 NosyDoor)代表了使用 C# 的惡意軟體的重大演進。它是一個 .NET 變種,屬於 FinalDraft/SquidDoor 家族,專門設計用來利用 Microsoft Graph API 作為其 C2 基礎設施 [1] 。這種方法允許惡意軟體將其惡意流量與合法的 Office 365 和 OneDrive 通訊混合,使得傳統網路監控難以識別 [2]

2.1 Microsoft Graph API 整合

NetDraft 的核心創新在於將 Microsoft Graph API 用作隱蔽通道。該 implant 並非與攻擊者控制的專屬伺服器通訊,而是與合法的 cloud 服務(如 OneDrive)互動,以擷取命令並上傳竊得的 Data。這種「濫用合法的雲端服」(Living Off the Cloud, LotC) 技術確保流量經由 TLS 加密,並導向受信任的 Microsoft 網域 [1] 。透過利用 Microsoft Graph API,NetDraft 可以執行多種動作,包括在作為虛擬 C2 伺服器的 OneDrive 資料夾中建立、讀取和刪除檔案。此方法特別有效,因為許多組織不會限制對主要 cloud 供應商的流量,且流向這些服務的大量合法流量為惡意軟體的通訊提供了充足的掩護。其技術實作涉及使用 OAuth 2.0 Token 來向 API 進行身分驗證,這些 Token 通常嵌入在惡意軟體中或在初始 staging 階段擷取。這種整合程度展現了對 cloud 服務架構以及如何將其用於惡意目的的深刻理解。使用合法的 API 也簡化了攻擊者的基礎設施管理,因為他們不再需要維護易於被列入黑名單或被執法機關關閉的大量 C2 伺服器,而是可以依賴全球 cloud 平台的高可用性和彈性。

Component Technical Function
Loader DLL 從 Data 檔案解碼 NetDraft,並在主機 process 的環境中呼叫它。
FringePorch 一個用於端點測量及 Data 收集的壓縮 .NET helper 程式庫。
C2 Protocol 使用 RESTful 呼叫 Microsoft Graph API,以管理利用 OneDrive 的 C2 中的檔案。

2.2 Persistence 機制

為了在遭入侵的主機上維持長期存在,NetDraft 經常透過建立排程工作來建立 persistence。這通常是 C2 在成功初始執行後發出的首批命令之一 [1]

  1. # Creating a persistent scheduled task for the malware loader
  2. schtasks /create /ru system /tn Microsoft\Windows\Maps\{a086ff1e-d6dc-45f7-b3e4-6udknw82sa} /sc hourly /mo 1 /tr "C:\Path\To\Benign.exe"
  3. <#
  4. Annotation:
  5. /ru system: Runs the task with SYSTEM privileges.
  6. /tn: Names the task to mimic a legitimate Windows Map service update.
  7. /sc hourly /mo 1: Ensures the malware is re-executed every hour.
  8. /tr: Points to the benign executable used in the side-loading triad.
  9. #>

3. 自動化偵察與橫向移動

在建立立足點後,UAT-8302 會結合開源工具與客製化腳本進行廣泛的偵察。該組織經常使用 Impacket 進行橫向移動,並使用 whatpc.ps1 (一個客製化 PowerShell 腳本)進行自動化系統資訊收集 [1]

3.1 自動化網路掃描

該組織利用多種掃描引擎,包括 gogo (一個使用 Go 的自動化網路掃描器)。以下批次腳本展示了一個用於發現目標網路內活動端點的自動化 ping 掃描:

  1. # Automated ping sweep for network discovery
  2. cmd.exe /Q /c (for /l %i in (1,1,254) do @ping -n 1 -w 300 192.168.1.%i | find "TTL=" && echo 192.168.1.%i - Ping Success) >> C:\Windows\Temp\ping_scan.bat
  3. <#
  4. Annotation:
  5. /Q /c: Executes the command quietly and then terminates.
  6. (for /l %i in (1,1,254)): Iterates through the IP range of the local subnet.
  7. ping -n 1 -w 300: Sends a single ICMP echo request with a 300ms timeout.
  8. find "TTL=": Filters for successful responses.
  9. >>: Appends the results to a temporary log file for exfiltration.
  10. #>

此外,該組織利用 adconnectdump.py 從 Azure AD Connect(現為 Entra ID Connect)擷取 Credential,從而促成對 cloud 整合式環境的入侵 [1]

4. SNOWLIGHT 與 SNOWRUST Stagers

UAT-8302 採用模組化的 stagers 來傳遞 VSHELL 惡意軟體。SNOWLIGHT 是一個通用 stager,而該組織最近引入了 SNOWRUST,這是一個以 Rust 編寫的變種 [1] 。向使用 Rust 的工具轉移是技術精湛的攻擊者中的一個成長趨勢,因為與傳統的 C++ 或 C# 實作相比,Rust 提供了更好的效能、記憶體安全性以及較低的偵測率 [3]

graph TD A[SNOWRUST Stager] -->|Decodes| B[LexiCrypt Obfuscation] B -->|Extracts| C[SNOWLIGHT Shellcode] C -->|Downloads| D[VSHELL Payload] D -->|Executes| E[In-Memory Backdoor]

SNOWRUST 使用 LexiCrypt 混淆器,為靜態分析提供了強大的保護層。stager 的主要角色是解碼內嵌的 SNOWLIGHT shellcode,然後由後者從遠端伺服器下載最終的 VSHELL payload [1] 。選擇 Rust 作為此 stager 的語言特別值得關注。Rust 嚴格的記憶體安全性保證以及它能夠產生高度最佳化、獨立的執行檔,使其成為開發既隱蔽又可靠的惡意軟體的理想語言。與用 C++ 或 C# 等更常見語言編寫的程式相比,Rust binary 本質上也更難進行逆向工程,這是由於編譯器處理抽象和中繼資料的方式。這種增加的複雜性為安全研究人員和自動化分析沙箱設置了重大障礙。SNOWRUST 與 LexiCrypt 混淆器的整合進一步增強了其迴避能力,它會加密 stager 的核心邏輯,確保其僅在預期環境中執行時才揭示其真正目的。這種多層次的混淆與傳遞方法清楚地表明 UAT-8302 可用的技術資源,以及它們在整個行動中維護操作安全性的承諾。使用此類進階 stagers 使該組織能夠以高度的信心部署其主要後門,確保初始感染不會被察覺。

結論

對 UAT-8302 的技術分析揭示了一個高度適應性的威脅攻擊者,其優先考量是隱蔽性與持久性。透過將其 C2 基礎設施與合法的 cloud 服務整合,並採用多階段、跨語言(C#、Rust、Go)的工具包,他們有效地繞過了傳統的安全措施。對 side-loading 與「濫用合法的雲端服」戰術的依賴強調了防禦者必須超越單純使用 IOC 的偵測,轉而專注於行為分析以及監控其環境中合法 API 的使用情況。