
摘要
本報告提供將大型語言模型(LLMs)整合進攻性安全研究的技術分析,重點在於通過 COM 物件發現和驗證橫向移動技術。報告深入探討了 COM 物件列舉和 LLM 輔助的概念驗證(Proof-of-Concept, POC)生成方法,突顯技術需求和相關程序。分析強調 LLMs 在加速進攻性能力發展中的作用,通過自動化複雜的程式碼生成和驗證任務,同時聚焦於底層技術機制。

1. 簡介
進攻性安全研究的環境不斷演變,要求創新方法來識別和利用漏洞。傳統方法通常涉及廣泛的手動分析和逆向工程,這可能耗時且資源密集。大型語言模型(LLMs)的出現為加速這些程序提供了變革性機會。本報告檢視 LLMs 在進攻性安全中的具體應用:利用分散式元件物件模型(Distributed Component Object Model, DCOM)物件發現和驗證橫向移動技術。主要焦點在於此方法的技術細節,包括 COM 類別列舉和 LLM 驅動的功能性攻擊程式碼生成。通過剖析技術工作流程,本分析旨在闡明 LLMs 如何成為開發進階進攻性能力的強大加速器,簡化複雜系統中可攻擊路徑的識別。
2. 捕獲 COM 物件發現的技術方法
發現和驗證用於橫向移動的捕獲 COM 物件的方法分為兩個主要階段:列舉和驗證。這種結構化方法允許系統性地識別潛在漏洞並自動生成概念驗證(POC)攻擊程式碼 [1]。
2.1. 列舉階段
列舉階段對於識別可用於橫向移動的潛在 COM 物件至關重要。COM 物件被視為可行候選者的核心要求有二:
- 啟用 DCOM: 物件必須支援分散式元件物件模型(DCOM),允許遠端實例化和互動。
- 程式碼執行能力: 物件必須暴露一個可被濫用以在目標系統上執行任意程式碼或命令的方法或介面。
為實現此目標,使用客制化的 C# 程式系統性地列舉 Windows 登錄中註冊的 COM 類別。此收集工具旨在提取與每個 COM 類別相關的全面 Metadata。此 Metadata 包括但不限於方法定義(Method signature)、權限級別和相關類型庫的引用。收集的資料以結構化的 JSON 格式輸出,便於後續分析和篩選。雖然該工具能輕鬆識別啟用 DCOM 的類別,但更具挑戰性的部分在於以程式化方式確定給定 COM 類別是否具有直接程式碼執行能力。文章強調了一種特定的篩選技術,聚焦於
stdole
類型庫,其中包含如
StdFont
的類別。這些類別因其固有屬性和歷史性攻擊模式被認為是 .NET 組件執行的潛在目標 [1]。列舉階段的 JSON 輸出提供了足夠的資訊來精確定位潛在可攻擊的目標,但無法在不進一步驗證的情況下保證橫向移動機會。
2.2. 驗證階段
驗證階段利用大型語言模型(LLMs),特別是 GPT-4.1,生成已識別橫向移動向量的功能性概念驗證(POC)。此階段高度依賴精心設計的提示和提供相關範例程式碼來引導 LLM 的生成過程。提示的結構確保 LLM 產生完整且可運行的 C/C++ 程式碼,符合特定技術要求。
2.2.1. LLM 提示結構
LLM 交互涉及系統提示和使用者提示。 系統提示 確立 LLM 的角色和核心輸出指南:
You You are an expert Windows security researcher. Your task is to analyze the provided example COM client code and generate similar working code for a different COM class with the same pattern. Important guidelines: 1. Generate COMPLETE, WORKING C/C++ code - not templates or pseudocode 2. Include all necessary headers, imports, and dependencies 3. Use the exact CLSIDs, interface IDs, and type library GUIDs provided 4. Follow the same technique as the example 5. Add clear comments explaining each step
使用者提示 提供 LLM 生成 POC 所需的具體技術細節。這包括兩個主要的 JSON 結構:
- 原始資訊: 此部分描述攻擊的本質,包括 `type`(例如 `trapped_object`)、`vector`(例如 `IDispatch → ITypeInfo → StdOle → StdFont → System.Object → Assembly.Load`)和 `generation_hints`。`generation_hints` 至關重要,概述了 `critical_steps`,如遠端實例化 COM 物件、取得 `IDispatch` 介面、導引至包含的類型庫、尋找可 hijack 的類別(如 `StdFont`)、使用 `ITypeInfo.CreateInstance` 取得捕獲物件,以及最終通過捕獲物件存取 .NET 反射。此外,還指定了 `registry_requirements`,包括 `AllowDCOMReflection=1`、`OnlyUseLatestCLR=1` 和用於 hijacking 的 `TreatAs` 登錄鍵 [1]。
- COM 類別細節 部分提供了針對攻擊的特定 COM 物件的詳細資訊。包括其 `clsid`(類別 ID)、`prog_id`(程式化 ID)、`server_path`(DLL 路徑)以及是否 `is_dcom_enabled`。關鍵的是,它詳細列出 COM 物件暴露的 `interfaces`,包括其 `iid`(介面 ID)、`name`(例如 `IFileSystemImage`)以及是否具有 `idispatch` 介面。還列出了 `referenced_type_libraries`,提供詳細資訊,如程式庫的 `Name`(例如 `stdole`)、`GUID` 和包含的 `Classes`,以及它們的 `CLSID`、`ServerType` 和 `ServerPath` [1]。
- 包含 範例程式碼 部分,即使是簡化的(例如 `ForsHops.cpp`),被認為顯著提高了 LLM 生成變體的可靠性。這表明提供具體、可運行的範例能讓 LLM 更好地理解所需模式並生成更準確且功能性的程式碼。整體方法強調協作工作流程,其中 LLM 自動化初始 POC 生成,隨後由人工審查和進一步自動化測試。此混合方法旨在縮小「大多自動化」與「完全自動化」程序之間的差距,實現更直接且高效的研究管道 [1]。
3. 結果與程式碼分析
應用這種 LLM 加速的方法取得了顯著成果,發現了多個能夠在 Windows 11 上促進橫向移動的捕獲 COM 物件。原始研究中強調的一個顯著例子是
FileSystemImage
類別。生成的概念驗證(POC)展示了與原始 ForsHops POC 的高度重疊的 Indicators of Compromise(IOCs),表明了一致的有效攻擊模式 [1]。
3.1. LLM 生成程式碼分析
雖然原始文章未提供 GPT-4.1 生成的完整 C/C++ 程式碼以保持簡潔,但詳細的提示和 `Primitive Information` 與 `COM Class Details` 的描述提供了生成程式碼預期結構和功能的充分洞察。LLM 被指示生成完整、可運行的 C/C++ 程式碼,包括所有必要的標頭、導入和依賴項。這意味著生成程式碼將處理 COM 物件實例化、介面查詢和方法呼叫的複雜性。`generation_hints` 中概述的關鍵步驟為 LLM 的輸出提供了清晰的路線圖:
-
遠端實例化目標 COM 物件:
這將涉及使用 COM 函數,如
CoCreateInstanceEx
或類似函數,在遠端機器上建立指定 COM 類別(例如IMAPI2FS.MsftFileSystemImage.1
)的實例,利用 DCOM 功能。 -
取得 IDispatch 介面並呼叫 GetTypeInfo:
一旦 COM 物件實例化,程式碼將查詢
IDispatch
介面。此介面對於晚期綁定和存取類型資訊至關重要。隨後將呼叫GetTypeInfo
方法以取得物件的類型資訊介面(ITypeInfo
)。 -
導航至包含的類型庫:
ITypeInfo
介面允許存取描述 COM 物件的類型庫。生成程式碼將導航此結構以定位相關類型庫(例如 `stdole`)。 - 尋找可 hijack 的類別(例如 StdFont): 在類型庫中,程式碼將識別可被 hijack 的特定類別,如 `StdFont`。這種 hijacking 通常涉及操縱登錄鍵(例如 `TreatAs` 鍵)以將 `StdFont` 的實例化重新導向到另一個物件,在此例中為 `System.Object`。
-
使用 ITypeInfo.CreateInstance 取得捕獲物件:
隨後將使用
ITypeInfo.CreateInstance
方法建立 hijacked 類別(`StdFont`)的實例。由於登錄操縱,這將有效創建 `System.Object` 的「捕獲」實例。這是關鍵步驟,因為它允許攻擊者通過 COM 介面控制 .NET 物件。 - 通過捕獲物件存取 .NET 反射: 最後,生成程式碼將利用 `System.Object` 實例上的 .NET 反射功能。這允許動態載入和執行 .NET 組件,有效實現任意程式碼執行。文章中給出的例子是呼叫 `Assembly.Load` 以執行將「Hello, world」寫入 `C:\test.txt` 的 .NET 組件 [1]。
原始文章中提到客戶端在成功執行 .NET 組件後 Crash,表明雖然實現了程式碼執行原語(Execution primitive),但攻擊或目標程序的穩定性可能受到影響。這是進攻性安全研究中的常見特徵,主要目標通常是實現程式碼執行,後續利用穩定性可能是次要考量或進一步改進的主題。提到將 GPT-4.1 的「未編輯程式碼」上傳至 GitHub 進一步強調了 LLMs 在生成功能性(儘管可能不穩定)攻擊程式碼的直接實用性 [1]。
3.2. 列舉工具的技術架構
用於 COM 類別列舉的 C# 程式是此研究的核心組成部分。其架構可能涉及:
- 登錄互動: 利用 .NET 框架類(例如 `Microsoft.Win32.Registry`)存取和列舉與 COM 相關的登錄鍵,特別是 `HKEY_CLASSES_ROOT\CLSID` 和 `HKEY_CLASSES_ROOT\Interface`。
- COM 類型庫解析: 使用 COM 介面或 .NET 等效項(例如 `System.Runtime.InteropServices.TypeLib.ITypeLib`)解析 COM 類別引用的類型庫。這將允許提取方法定義、介面定義和其他對識別程式碼執行能力至關重要的 metadata。
- DCOM 屬性檢查: 以程式化方式檢查 DCOM 啟用狀態,通常涉及檢查與 `AppID` 和 `RemoteServerName` 相關的登錄項。
- JSON 序列化: 將收集的 COM 類別 metadata 轉換為結構化的 JSON 格式,便於後續分析工具或 LLM 提示機制使用。
此工具作為初始資料收集組件,提供了 LLM 執行驗證和 POC 生成任務所需的原始情報。能夠篩選特定類型庫(如 `stdole`)的能力展示了工具在縮小相關 COM 物件搜尋範圍的靈活性。
4. 結論
將大型語言模型整合進攻性安全研究,特別是用於通過 COM 物件發現和驗證橫向移動技術,代表了顯著的進展。原始文章中概述的方法展示了自動化列舉與 LLM 驅動的 POC 生成之間的強大協同效應。通過利用 LLMs 分析複雜的技術規格並生成功能性攻擊程式碼,研究人員可以顯著加速漏洞發現和攻擊開發的步伐。此方法不僅減少了手動工作,還能探索更廣泛的潛在攻擊向量。在 Windows 11 上識別能夠進行橫向移動的新捕獲 COM 物件的成功,突顯了這種 LLM 加速研究範式的實際效用。隨著 LLM 功能的持續發展,其在自動化和增強進攻性安全研究中的角色預計將擴展,帶來更高效且複雜的威脅分析和緩解策略。
參考文獻
- Accelerating Offensive R&D with Large Language Models - Kyle Avery
- New lateral movement techniques abuse DCOM technology - Philip Tsukerman
- Lateral Movement via DCOM | Red Team Notes
- Fileless lateral movement with trapped COM objects - IBM
- Lateral Movement: Abuse the Power of DCOM Excel Application - Raj Patel
- Forget PSEXEC: DCOM Upload & Execute Backdoor - Deep Instinct
- I Like to Move It: Windows Lateral Movement Part 2 - DCOM - MDSec
- Hunting COM Objects | Mandiant | Google Cloud Blog
- Exploiting Lingering Vulnerabilities in Default COM Objects - UF CISE
- Event Triggered Execution: Component Object Model Hijacking
- COM Objects Hijacking - VirusTotal Blog
- Critically close to zero(day): Exploiting Microsoft kernel streaming service. - IBM
- Benchmarking Practices in LLM-driven Offensive Security: Testbeds, Metrics, and Experiment Design - Andreas Happe & Jürgen Cito
- Research shows LLMs can conduct sophisticated attacks without humans - David Jones
- LLM & AI Training for Red Teams - OffSec
- An empirical evaluation of llms for solving offensive security challenges