暴力破解攻击
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 针对多个用户的大量失败尝试)。如果登录来自新设备/新位置,应及时提醒用户。
