針對近期發現的 Cavern C2 框架(Command and Control,命令與控制伺服器),這是一個由伊朗情報部門(MOIS)相關駭客組織所開發的模組化攻擊工具。這次的攻擊目標主要集中在以色列的政府部門與 IT 服務供應商。對於工程師來說,這個案例最值得關注的不是攻擊目標,而是他們如何利用 .NET 的編譯特性來對抗資安分析師的逆向工程。
讓分析人員頭痛的編譯混淆術
通常我們在分析 .NET 程式時,可以使用像 dnSpy 或 ILSpy 這樣的工具將其還原成接近原始碼的 C# 程式碼,因為 .NET 編譯後產生的是中間語言(IL)。但 Cavern 框架採取了一種混合編譯策略,讓分析人員必須在多套工具之間切換,大幅增加分析成本。
首先是 Native AOT(Ahead-of-Time,提前編譯)。這是一種將 .NET 程式碼直接編譯成機器碼(Native Code)的技術,跳過了即時編譯(JIT)過程。一旦使用了 Native AOT,分析人員就無法再用簡單的 .NET 反編譯工具,而必須使用像 IDA Pro 或 Ghidra 這種底層的二進位分析工具。
其次是 Mixed-Mode C++/CLI(混合模式)。這允許在同一個檔案中同時包含受管理的 .NET 程式碼與原生 C++ 程式碼。這種混合結構會模糊程式碼的邊界,讓分析者難以快速判定某個功能是由哪種機制執行的。
最後是 AppDomain Isolation(應用程式定義域隔離)。駭客在載入模組時,會將不同的模組隔離在不同的 AppDomain 中。這不僅是一種管理機制,在資安層面則是一種反鑑識手段,旨在減少模組在記憶體中留下的足跡,並增加追蹤執行流的難度。
模組化設計與攻擊鏈路
Cavern 框架採取了核心代理(Agent)與功能模組(Modules)分離的設計。核心代理負責與 C2 伺服器建立通訊,而具體要執行什麼任務,則由伺服器根據目標環境動態推送 DLL 模組。
目前已發現的模組功能包括: 檔案操作模組:負責搜尋、壓縮與雙向傳輸檔案。 資料庫模組:針對 SQL 資料庫進行枚舉與資料匯出。 目錄服務模組:針對 Active Directory 進行偵查與 LDAP 暴力破解。 網路偵查模組:執行連接埠掃描與 SMB 共享枚舉。 隧道模組:建立 SOCKS5 代理或 WebSocket 隧道,讓駭客能將內部網路流量轉發出去。
在實際攻擊路徑上,駭客利用了 SysAid 軟體更新功能的漏洞,透過 DLL Side-loading(DLL 側載,利用程式載入 DLL 的優先順序漏洞,將惡意 DLL 偽裝成合法檔案)將 Cavern Agent 植入系統。
供應鏈攻擊的實務影響
這次攻擊最危險的地方在於其供應鏈跳板策略。駭客並非直接攻擊最終目標,而是先攻破一家 IT 服務供應商,再利用該供應商對客戶擁有的信任權限(例如透過 RMM 遠端監控管理工具)滲透到第二家供應商,最後才到達真正的目標組織。
這種方式讓惡意軟體看起來像是合法的軟體更新,能輕易繞過許多邊界防禦。此外,當駭客發現剪貼簿或檔案傳輸被限制時,甚至會利用遠端列印等不常被監控的內建功能來外洩資料。
總結與防禦思考
Cavern 框架的案例告訴我們,現代的威脅對手已經將編譯器特性(如 Native AOT)武器化,用來對抗自動化分析工具。對於開發者與維運人員而言,應高度警惕 RMM 工具的權限管理,並對非預期的 DLL 載入行為保持敏感。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。