新闻里每个月都在出”千万账号泄露”——Optus、Medibank、Latitude、Dymocks……数据出去之后,攻击者拿你的邮箱+密码去别的网站试一遍,这就是 credential stuffing。你听到的”撞库”、“凭证填充”、“pass the hash”全是 brute force 的变种,路数差很多

这一篇承接 hash 文章——只存 hash 不够,因为有些攻击根本不需要破 hash。


顶层结论

  • Brute force 不是”一个攻击”,是一族——4 种路数,防御招式不一样
  • 最危险的是 credential stuffing(撞库):它绕过你做的所有 hash / salt,因为攻击者用的是真密码
  • vibe-coder 默认防御:MFA + 登录限速 + 加盐慢 hash——三道闸缺一不可

速查表

类型怎么打vibe-coder 现实例子
Simple brute forceaaaa 试到 zzzz,字符全枚举攻 4 位 PIN
Dictionary attack用常用密码字典(rockyou.txt)逐个试攻”123456”、“password”、“qwerty”
Reverse brute force固定一个密码,试所有用户名Password123 试遍你网站全部用户
Credential stuffing(撞库)别处泄露的”邮箱+密码”对去你网站试Optus 泄露 → 黑客拿数据去试 Netflix
Pass the hash(子类)偷到 hash 后不破解,直接拿 hash 当凭据登内网横移、NTLM 协议典型

1. Simple brute force(穷举)

字典都不用,纯暴力枚举所有字符组合。

  • 4 位数字 PIN:10⁴ = 1 万种,秒破
  • 8 位小写字母:26⁸ ≈ 2000 亿,普通 GPU 几小时
  • 16 位大小写+数字+符号:比宇宙寿命还长

关键变量:长度 + 字符集 + hash 算法速度。

vibe-coder 教训:别让你的”验证码”、“邀请码”、“重置密码 token” 只有 6 位数字——直接被穷举。


2. Dictionary attack(字典攻击)

不再瞎试,用历史泄露密码当字典。

最有名的字典是 rockyou.txt——2009 年 RockYou 泄露的 1400 万个真实密码。后来积累了几十亿条。

排前 10 的密码(用了 15 年还没变):

123456
password
123456789
qwerty
12345678
abc123
password123
admin
111111
welcome

为什么有效:人类挑密码极度可预测。你以为”自己的”密码,字典里早就有。

vibe-coder 教训:你写代码”自动生成默认密码给新用户”,千万别用 welcome temp123 这种——直接命中字典。


3. Reverse brute force(反向暴力)

反过来——固定一个密码,试所有用户名。

逻辑:既然 Password123 在某个用户那有效,那你网站里肯定还有别的用户也用这个密码

特点:

  • 单账号失败次数低 → 绕过”登录失败 5 次锁账号”
  • 攻击者目标不是某个特定人,是任何能进的账号

vibe-coder 教训:登录限速不能只按用户名计,还要按 IP / 按全站总失败率计——否则反向暴力直接绕过。


4. Credential stuffing(撞库)— 最危险

拿别处泄露的”邮箱+密码”对,直接去你网站试。

为什么最危险:

  • 攻击者用的是真密码——你存 hash、加 salt、用 bcrypt 全都不阻拦,因为不需要破 hash
  • 用户在 N 个网站用同一个密码,Optus 泄露 = 用户的 Netflix / 银行 / Gmail 同步沦陷
  • 登录请求看起来正常,失败率反而比纯暴力低——单 IP 试几个就换 IP

澳洲现场:Optus 泄露后,媒体报道大量 .com.au 网站登录失败率突然飙升——就是攻击者拿数据来撞。

vibe-coder 教训:

  • 你的 hash 算法再强,也救不了被撞库的用户——必须靠 MFA
  • 检查注册邮箱有没有出现在 HaveIBeenPwned 泄露库,出现就强制改密 / 强制开 MFA

5. Pass the hash(传递 hash)— credential stuffing 的子类

偷到 hash 后,不破解,直接拿 hash 去认证。

特别针对 Windows NTLM / Kerberos 这类老协议——某些协议设计成”客户端发 hash 给服务器,服务器对比 hash”。攻击者从内存里拽到 hash,直接重放就能登。

关键前提:hash 没加 salt——加了 salt,每个用户的 hash 不一样,拿一个 hash 没法复用。

vibe-coder 教训:你自己写的 web 系统几乎不会直接踩 pass the hash(它是企业 AD 的痛),但它在告诉你为什么 salt 是刚需——见 hash 文章里的警告。


vibe-coder 三道闸:挡住 4 种 brute force

招式挡哪几种怎么落地
MFA全部 4 种IdP 做,别自己写
登录限速 + lockoutSimple / Dictionary / Reverse按用户名 + 按 IP 双维度;失败 5 次后加 CAPTCHA
salt + 慢 hash(argon2id / bcrypt)Pass the hash + 减缓字典argon2 库,别自己拼盐
HaveIBeenPwned 检测Credential stuffing注册 / 改密时调他们的 API,撞上就拒
CAPTCHA自动化的全部不一上来就放,失败 3 次后再触发,体验更好

默认配置:全开。AI 给你写登录系统时,默认它没做齐——逐条问。


工具(知道名字就行)

工具用来
HashcatGPU 破 hash,最快的离线工具
John the Ripper老牌 hash 破解,功能全
Hydra在线服务暴力(SSH / FTP / web 表单)
Aircrack-ngWi-Fi 握手包破解
Ophcrack老 Windows hash + 彩虹表

vibe-coder 不需要会用,但要听过——做 pen test 的人会用这些工具来打你(见 pen test 文章)。


概念关联

这一篇放在系列里