摘要

本報告針對 AdaptixC2 進行全面的技術分析,AdaptixC2 是一個開源的後滲透和對抗性模擬框架。報告深入探討其核心功能、通訊機制、運作安全功能,以及在真實事件中觀察到的部署策略。分析內容重點介紹 AdaptixC2 的模組化設計、對各種 beacon 類型的支援,及其複雜的規避技術,包括記憶體中執行和混淆。報告也檢視其部署和持久性中,使用 AI 產生的腳本,為不斷演變的網路威脅領域提供洞見。本報告旨在加強對 AdaptixC2 技術基礎的理解,以協助開發更有效的防禦對策。

從 AdaptixC2 看新一代資安戰:當人工智慧開始「理解」你的弱點 | 資訊安全新聞

1. 簡介

網路威脅的態勢持續演變,threat actor 日益利用複雜且可客製化的工具來達成其目標。其中,後滲透框架在維持持久性、擴展存取以及從受害系統中外洩資料方面扮演關鍵角色。本報告重點介紹 AdaptixC2,這是一個最近被發現的開源後滲透和對抗性模擬框架,已在真實攻擊中被觀察到 [1]。儘管其日益普及,但詳細說明其技術能力和實際運用於攻擊活動的公開文件仍然有限。本研究旨在彌補這一鴻溝,透過深入的技術檢視,分析 AdaptixC2 的架構、功能,以及利用此框架的 adversaries 所採用的戰術、技術和程序 (Tactics, Techniques, and Procedures, TTPs)。

AdaptixC2 的開源特性使其與眾不同,因為這使 threat actor 能夠輕鬆客製化和調整,成為一個高度靈活且危險的工具。它的出現突顯了一個更廣泛的趨勢,即攻擊者利用適應性強的框架來規避偵測並達成其 malicious payload。本報告將剖析 AdaptixC2 的運作機制,包括其 C2 能力、資料外洩方法和隱匿技術。透過了解 AdaptixC2 的技術細節,資安專業人員可以發展出更穩固的防禦策略,並提升其偵測和緩解此不斷演進的框架所帶來威脅的能力。

2. 核心功能與能力

AdaptixC2 被設計為一個多功能的後滲透框架,為 threat actor 提供對受害系統的廣泛控制。其核心功能可實現多種 adversarial 行動,對於在目標環境中建立和維持立足點至關重要。這些能力是進行偵察、橫向移動並最終外洩資料的基礎。AdaptixC2 主要促成的行動包括:

  • 檔案系統操作: 這涉及列出目錄、建立、修改和刪除檔案與資料夾的能力,讓攻擊者能夠管理其在受害機器上的存在,並為資料暫存做準備。
  • 程序 列舉與控制: AdaptixC2 可列舉正在執行的程序並終止特定應用程式,這對於識別資安軟體、中斷合法操作或清除惡意攻擊痕跡至關重要。
  • 程式執行: 此框架支援啟動新的程式執行,使 threat actor 能夠部署額外工具、提升權限或發動攻擊的後續階段。

這些功能共同賦予攻擊者全面控制受影響機器的能力,促進對受害系統的深入探索和在網路內的橫向移動。AdaptixC2 的模組化設計,特別是透過使用充當 listeners 和 agents 外掛的「extenders」,增強其適應性。這種模組化允許建立客製化的 payloads 和複雜的規避技術,以適應特定的目標環境。在這方面的一個重要功能是支援 Beacon Object Files (BOFs),這使攻擊者能夠在 agent 的程序中直接執行以 C 語言編寫的小型客製化程式,從而最大限度地減少其 footprint 並規避傳統資安解決方案的偵測 [1]。

3. 通訊機制與 beacon 類型

對於任何後滲透框架而言,有效的 C2 通訊至關重要,而 AdaptixC2 整合了複雜的機制,以確保隱密且具彈性的通訊通道。此框架支援先進的 tunneling 能力,包括 SOCKS4/5 代理功能和 port forwarding。這些功能對於繞過網路限制和即使在高度保護的環境中仍能維持持久通訊至關重要。AdaptixC2 的 beacon agents 專為快速且隱密的資料傳輸而設計,支援 x86 和 x64 架構。這些 agents 可以生成多種格式,以適應不同的部署情境和規避策略,包括:

  • 獨立可執行檔 (EXEs): 用於直接執行的傳統可執行檔案。
  • 動態連結程式庫 (DLLs): 可注入到合法程序中以實現更隱密的運作。
  • 服務可執行檔: 設計為作為系統服務執行,提供持久性。
  • Raw Shellcode: 高度靈活,可注入到記憶體中或用於各種載入器。

此框架的設定已加密,並支援三種主要的 beacon 類型,每種都針對不同的通訊協定和運作環境而設計:

  • BEACON_HTTP: 最常見的 beacon 變體,設計用於基於網路的通訊。它包括伺服器、連接埠、SSL 設定、HTTP 方法 (例如 POST)、URIs (例如 /uri.php)、headers 和 user-agent strings 等參數,使其能夠融入正常的網路流量。
  • BEACON_SMB: 利用 Windows named-pipe 進行通訊,在 HTTP 流量受到嚴格監控或阻擋的環境中特別有用。
  • BEACON_TCP: 建立直接的 TCP socket 連接,可選擇在資料前面添加內容以進行基本協定混淆,提供直接且可能更快速的通訊通道。

例如,預設的 HTTP profile 針對特定 IP 和 port (例如 172.16.196.1:4443),使用 HTTPS,以 POST 方法傳送到 URI (如 /uri.php),並使用 X-Beacon-Id 參數進行識別。使用 RC4 對 beacon 的設定進行加密,並嵌入到具有特定結構 (大小、RC4 加密資料和 key) 的已編譯 beacon 中,這為防禦者提供了開發提取器從捕獲的樣本中取出和解密設定的機會 [1]。

4. 運作安全 (OpSec) 與規避技術

AdaptixC2 整合了數個功能,旨在增強 threat actor 的運作安全 (Operational Security, OpSec),讓他們能夠保持低調並規避偵測。這些功能對於長期持久性和成功的攻擊活動執行至關重要。關鍵的 OpSec 參數包括:

  • KillDate: 此參數設定一個特定日期,在此日期之後 beacon 將停止運作,提供自我毀滅機制以限制暴露。
  • WorkingTime: 這使 beacon 僅在指定時段內活動,讓攻擊者能夠將其活動與正常的網路流量模式對齊,或避開下班時間的偵測。

除了這些可設定的參數外,threat actor 還可以透過客製化混淆、反分析和規避技術進一步修改和增強 AdaptixC2 agents。這種持續的演變使 AdaptixC2 成為一個持續且具挑戰性的防禦威脅。此框架將 shellcode 直接在記憶體中執行的能力,通常利用 .NET 功能 (如 GetDelegateForFunctionPointer ),是其無檔案方法的一個主要範例,大大減少攻擊者在磁碟上的 footprint,並使偵測更為困難 [1]。

5. 部署與持久性機制

在真實事件中,AdaptixC2 beacons 的部署通常涉及多階段載入器和複雜的社交工程戰術。一個觀察到的攻擊向量是利用對 Microsoft Teams 等平台的信任,其中網路釣魚攻擊冒充 IT 支援,說服員工啟動遠端協助連線,從而部署 AdaptixC2 beacon [1]。

一種常見的部署方法涉及多階段 PowerShell 載入器。此載入器從合法服務下載編碼和加密的 payload,對其進行解密,然後直接在記憶體中執行 shellcode。這種無檔案執行是關鍵的規避技術,因為它避免將惡意檔案寫入磁碟,從而繞過許多依賴檔案式特徵碼的端點偵測與回應 (Endpoint Detection and Response, EDR) 解決方案。在這些攻擊中載入的 beacon 變體通常具有針對該活動客製化的特定設定參數,包括伺服器位址、連接埠、HTTP 方法和時序設定,這些參數與預設設定相似但為特定攻擊而客製化 [1]。

此外,事件揭露了使用可能是 AI 產生的 PowerShell 腳本進行部署和持久性。這些腳本專注於透過記憶體中 shellcode injection、用於持久性的 DLL hijacking 和修改 registry run keys 來保持隱匿。AI 產生的腳本下載 Base64 編碼的 shellcode,分配記憶體,更改記憶體保護,並透過動態呼叫執行 shellcode。雖然模仿了手動編寫的惡意軟體中常見的技術,但這些腳本通常展現出 AI 協助特有的風格元素,例如冗長的註解和圖示 [1]。

AdaptixC2 部署的一個一致模式包括:

  • 基於 PowerShell 的載入器。
  • 從遠端伺服器下載 payloads。
  • 記憶體中執行。
  • 利用 .NET 進行隱匿。
  • 採用 DLL hijacking 和 registry 修改等持久性機制。

這些戰術旨在確保隱密、持久的存取,同時融入合法的系統程序,使 AdaptixC2 成為 adversaries 的高效工具。

6. 技術分析與程式碼範例

雖然原始文章沒有提供直接的程式碼片段,但它描述了可以概念化呈現的底層機制。例如,解密 beacon 設定的程序涉及 RC4 解密。文章中描述的 RC4 解密概念性 Python 範例將涉及一個 key 和加密資料。雖然未提供 AdaptixC2 RC4 的確切實作細節,但原理保持不變。這是一個簡化的 RC4 解密概念性 Python 函數:

  1. import base64
  2. def rc4_decrypt(key, ciphertext):
  3. s = list(range(256))
  4. j = 0
  5. for i in range(256):
  6. j = (j + s[i] + key[i % len(key)]) % 256
  7. s[i], s[j] = s[j], s[i]
  8. i = 0
  9. j = 0
  10. plaintext = bytearray()
  11. for char in ciphertext:
  12. i = (i + 1) % 256
  13. j = (j + s[i]) % 256
  14. s[i], s[j] = s[j], s[i]
  15. plaintext.append(char ^ s[(s[i] + s[j]) % 256])
  16. return plaintext.decode("utf-8", errors="ignore")
  17. # Example usage (conceptual, actual key and ciphertext would vary)
  18. # key = b"YourRC4Key"
  19. # encrypted_data = base64.b64decode("YourBase64EncodedEncryptedData")
  20. # decrypted_config = rc4_decrypt(key, encrypted_data)
  21. # print(decrypted_config)

文章還提到了 PowerShell 載入器,它們下載編碼和加密的 payloads 並在記憶體中執行 shellcode。這個過程可以使用下圖表來視覺化其流程:

graph LR A[Initial
Access] --> B{PowerShell
Loader} B --> C[Download
Encoded/Encrypted
Payload] C --> D[Decrypt
Payload] D --> E[Allocate
Memory] E --> F[Change
Memory
Protections] F --> G[Execute
Shellcode
In-Memory]

另一個關鍵方面是使用 DLL hijacking 來實現持久性。這項技術涉及將惡意 DLL 放置在合法應用程式預期載入系統 DLL 的位置,從而欺騙應用程式載入惡意的 DLL。這可以概念化呈現為:

graph LR A[Legitimate
Application] --> B{Loads
DLL} B --> C{Search
Path
for
DLL} C --> D{Malicious
DLL in
Search
Path} D --> E[Malicious
DLL
Loaded
Instead
of
Legitimate] E --> F[Persistence
Achieved]

各種 beacon 類型及其通訊方法也可以描繪:

graph TD A[AdaptixC2 Agent] --> B{Beacon Type Selection} B --> C{BEACON_HTTP} B --> D{BEACON_SMB} B --> E{BEACON_TCP} C --> F["Web-based Communication (HTTP/HTTPS)"] D --> G["Named Pipe Communication (Windows SMB)"] E --> H["Direct Socket Communication (TCP)"]

7. 結論

AdaptixC2 是現代 threat actor 武器庫中的一個重要工具,其特點是開源性質、模組化設計和複雜的規避能力。其多功能性,透過各種 beacon 類型和部署機制展現,使 adversaries 能夠適應不同的網路環境並繞過傳統的資安措施。AdaptixC2 的日益普及,加上觀察到在部署中使用了 AI 產生的腳本,突顯了威脅態勢向更具適應性和隱匿性的攻擊框架的關鍵轉變。了解 AdaptixC2 的技術細節,從其加密設定和無檔案執行技術到其 OpSec 功能,對於開發有效的防禦策略至關重要。持續研究和分析此類不斷演變的威脅,對於增強網路安全彈性和防禦先進持續性威脅至關重要。