暴力破解攻擊
1. 定義
暴力破解 (Brute Force) 是一種攻擊方法,攻擊者系統地檢查所有可能的密碼或短語,直到找到正確的那個。在 Web 應用程式的語境下,它通常指針對登入端點的 「線上暴力破解」。
它與 憑據填充 (Credential Stuffing)(使用已洩漏的帳號密碼對)和 字典攻擊 (Dictionary Attacks)(使用常用詞列表)有所不同,儘管「暴力破解」常被用作所有猜測類攻擊的統稱。
2. 技術原理
認證系統通過對比用戶輸入的雜湊值與存儲的雜湊值來驗證身份。
- 線上攻擊: 攻擊者向
/login發送 HTTP 請求。速度受到網路延遲和伺服器回應時間的限制。 - 反向暴力破解: 攻擊者不是猜測一個用戶的密碼,而是針對數百萬個用戶名嘗試一個常用密碼(如 “password123”),這被稱為 密碼噴灑 (Password Spraying)。
3. 攻擊流程 (密碼噴灑)
sequenceDiagram
participant Bot as 攻擊腳本
participant Auth as 認證伺服器
participant DB as 用戶資料庫
Bot->>Auth: 1. 嘗試用戶: "alice", 密碼: "Winter2025!"
Auth-->>Bot: 401 Unauthorized
Bot->>Auth: 2. 嘗試用戶: "bob", 密碼: "Winter2025!"
Auth-->>Bot: 401 Unauthorized
Bot->>Auth: 3. 嘗試用戶: "charlie", 密碼: "Winter2025!"
Auth->>DB: 驗證雜湊值... 匹配成功!
Auth-->>Bot: 200 OK (返回 Session Token)
Note right of Bot: 帳號被入侵<br/>避開了「帳號鎖定」邏輯<br/>因為每次嘗試的用戶都不同。4. 真實案例:iCloud 名人照片洩漏事件 (2014)
目標: 蘋果 iCloud “尋找我的 iPhone” API。 漏洞類別: 無限制的暴力破解(頻率限制失敗)。
事件經過: 雖然常與釣魚攻擊聯繫在一起,但許多帳號的最初切入點是針對 Find My iPhone (iBrute) API 的暴力破解攻擊。 與 iCloud 的主登入介面不同,這個特定的 API 端點沒有強制執行帳號鎖定或頻率限制。 攻擊者使用腳本 (iBrute) 針對名人的電子郵件地址嘗試數千個常用密碼。一旦密碼匹配成功,他們就能訪問完整的 iCloud 備份(照片、通訊錄等)。
影響: 導致數百人的隱私遭到大規模嚴重侵犯。蘋果隨後在所有 API 中實施了嚴格的雙因素認證 (2FA) 和頻率限制。
5. 深度防禦策略
A. 指數退避與頻率限制
不要僅僅封鎖 IP(攻擊者可以旋轉代理 IP)。
- 帳號鎖定: 在 5 次嘗試失敗後鎖定帳號。(風險:可能導致針對用戶的阻斷服務)。
- 指數退避 (Exponential Backoff): 每次失敗後增加回應延遲。
- 失敗 1 次:延遲 0s
- 失敗 2 次:延遲 2s
- 失敗 3 次:延遲 10s
- 限流 (Throttling): 使用「令牌桶」等演算法限制每個用戶以及每個 IP 的嘗試次數。
B. 多因素認證 (MFA)
MFA 讓暴力破解幾乎失效。即使攻擊者猜中了密碼,他們也無法提供 OTP(一次性密碼)或硬體金鑰。
- 強制執行: 對所有用戶強制執行 MFA,或至少針對管理員帳號強制執行。
C. CAPTCHA / 工作量證明
在失敗次數達到閾值後要求進行人工驗證。
- 工具: Cloudflare Turnstile, Google reCAPTCHA v3(隱式驗證)。
- 這使得自動化攻擊的計算成本變得極高或技術上難以實現。
D. 洩漏檢測
監控「密碼噴灑」模式(一個 IP 針對多個用戶的大量失敗嘗試)。如果登入來自新設備/新位置,應及時提醒用戶。
