3. 撞库攻击原理
撞库(Credential Stuffing)之所以长期位居账号安全威胁前列,并不是因为攻击技术有多高深,而是因为它精准利用了现代互联网的两个结构性事实:用户在多个站点复用同一套账号密码,以及攻击者可以低成本地自动化验证海量凭据。理解撞库,不能只停留在“拿泄露密码去试登录”这一句话,而要把它的完整链路拆开:凭据从哪里来、用什么工具打、如何隐藏来源、最终如何变现。只有把这条链路看清楚,检测策略才有落点。
一、核心原理:撞库不是破解,而是“复用验证”
撞库与暴力破解有本质区别。暴力破解是在不知道密码的情况下,通过穷举或字典猜测某个账号的密码;撞库则假设凭据已经存在且大概率正确,攻击者只是把从A站泄露的用户名/邮箱/手机号与密码,拿到B站、C站去批量尝试登录。它利用的是“密码复用”这一人类行为惯性,而不是算法漏洞。
因此,撞库攻击的成功率并不取决于单个密码有多复杂,而取决于三个变量:
- 泄露凭据的规模与新鲜度:越新、越贴近目标用户群的泄露库,命中率越高。
- 目标站点的账号体系重合度:电商、社交、邮箱、游戏平台之间用户重叠越大,撞库收益越高。
- 目标站点的风控强度:是否有验证码、设备指纹、频率限制、异常评分,直接决定攻击成本和存活时间。
一句话概括:撞库攻击者不创造凭据,他们只是凭据的“搬运工”和“验证者”。检测的核心不是识别某个密码是否泄露,而是识别“大量凭据在短时间内被系统性验证”的行为模式。
二、凭据泄露来源:攻击者的“弹药库”从哪来
撞库的第一环是获取凭据。攻击者获取凭据的渠道远比普通人想象的多,且大多不需要直接入侵目标站点。常见来源包括:
| 泄露来源 | 典型途径 | 对撞库的价值 |
|---|---|---|
| 第三方站点数据泄露 | 论坛、电商、游戏、快递等平台被拖库 | 规模大、字段全,常含邮箱/手机号+明文或弱哈希密码 |
| 钓鱼与恶意软件 | 仿冒登录页、键盘记录器、浏览器窃取器 | 凭据新鲜、准确率高,常附带Cookie和会话令牌 |
| 暗网与Telegram交易 | 打包出售、按条售卖、订阅式更新 | 可定向购买特定行业或地区的数据 |
| 公开泄露聚合库 | GitHub、Pastebin、云存储误配置 | 免费、易获取,但质量参差,需清洗 |
| 内部人员泄露 | 员工导出、API滥用、日志外泄 | 字段精准,可能包含内部账号格式 |
拿到原始数据后,攻击者并不会直接使用。他们通常会做清洗与格式化:去重、剔除明显无效邮箱、按目标站点账号格式转换(例如把手机号转成邮箱、补全国家码)、拆分“用户名:密码”组合。一个高质量的撞库字典,往往经过多轮筛选,甚至按目标站点的注册规则做适配。
# 典型凭据清洗与格式化流程(示意)
原始泄露数据: user@example.com:Passw0rd123
清洗步骤:
1. 去重、去除空行与非法字符
2. 校验邮箱/手机号格式
3. 按目标站点要求转换账号标识
4. 拆分输出为 username,password 两列
5. 按命中率排序,优先使用新鲜泄露库
输出示例:
zhangsan@example.com,Passw0rd123
13800138000,abcd1234
三、自动化工具与代理网络:让攻击“规模化且隐蔽”
撞库之所以危险,在于它已经高度工具化。攻击者不需要手工尝试,而是使用专门的自动化工具或自研脚本,配合代理网络完成大规模登录验证。典型工具链包括:
- 凭据填充工具:如OpenBullet、Sentry MBA等,支持配置目标站点登录请求、解析成功/失败特征、并发控制。
- 浏览器自动化框架:Selenium、Puppeteer、Playwright,用于绕过简单JS校验、模拟真实浏览器行为。
- HTTP请求库:Python requests、Go net/http,适合自研高频撞库脚本。
- 代理网络:住宅代理、移动代理、数据中心代理、Tor出口节点,用于分散来源IP,规避频率限制和IP封禁。
- 打码平台:人工或AI识别验证码,突破简单人机校验。
代理网络是撞库链路中不可忽视的一环。攻击者通常不会从单一IP发起大量请求,而是通过代理池轮换IP,使每个IP只尝试少量账号,从而绕过基于单IP的阈值告警。住宅代理和移动代理因为IP信誉高、共享性强,尤其难以被简单封禁。
检测启示:仅依赖“单IP登录失败次数”很容易被代理轮换绕过。更有效的信号是跨IP的账号维度异常,例如同一账号在短时间内被不同IP、不同设备尝试登录,或大量账号在同一时间窗口内出现相似失败模式。
四、攻击链路全景:从凭据到变现的完整流程
把上述环节串起来,撞库攻击通常遵循以下链路:
- 获取凭据:从泄露库、钓鱼、暗网等渠道收集用户名/密码组合。
- 清洗与适配:去重、格式化,按目标站点规则生成撞库字典。
- 配置工具:设置登录请求、成功判定条件、并发数、代理池、打码服务。
- 分布式尝试:通过代理网络轮换IP,批量提交登录请求。
- 筛选有效账号:根据响应特征(状态码、跳转、页面关键字)标记成功登录的账号。
- 变现:盗取资产、发送垃圾信息、二次出售账号、进行欺诈交易或勒索。
下面是一个简化的攻击链路示意,帮助理解各环节的依赖关系:
五、案例与场景:一次典型的撞库事件复盘
假设某电商平台在促销季前遭遇撞库。攻击者从某论坛泄露库中获取了约200万条“邮箱+密码”组合,其中约30%与目标平台用户重合。攻击者使用OpenBullet配置登录接口,接入住宅代理池,设置每IP每分钟尝试5次,并调用打码平台处理图形验证码。
攻击持续约6小时,平台观察到以下异常:
- 登录失败率从日常的3%骤升至18%,但单IP失败次数并不高。
- 大量失败请求集中在凌晨2点到5点,且User-Agent分布异常集中。
- 部分账号在登录成功后立即修改绑定邮箱或发起小额支付。
- 同一账号在10分钟内被来自不同省份的IP尝试登录。
复盘发现,平台原有的单IP频率限制几乎无效,因为代理池将请求分散到了数千个IP。真正有效的检测信号来自账号维度和全局维度:同一账号多IP尝试、失败率突增、登录后敏感操作激增。后续通过引入设备指纹、行为评分和账号锁定策略,才将攻击抑制。
常见误区:认为“加了验证码就能防住撞库”。实际上,打码平台和AI识别可以低成本突破简单验证码。验证码应作为多层防御中的一层,而不是唯一手段。更关键的是账号维度的异常检测和登录后的敏感操作二次验证。
六、检测落点:从攻击链路反推防御策略
理解撞库链路后,检测策略可以按环节对应设计:
- 凭据泄露环节:监控暗网和公开泄露库,对内部账号进行泄露比对,提前触发强制改密。
- 自动化工具环节:识别异常客户端特征,如请求头缺失、TLS指纹异常、鼠标轨迹缺失。
- 代理网络环节:建立IP信誉库,识别住宅代理和Tor出口,结合IP与账号的关联图谱。
- 登录验证环节:账号维度频率限制、失败率突增告警、设备指纹一致性校验。
- 变现环节:登录后敏感操作(改密、绑卡、转账)触发二次验证和人工审核。
撞库检测的本质,是在“正常用户偶尔输错密码”和“攻击者系统性验证大量凭据”之间找到区分度。单点信号容易被绕过,只有把凭据来源、工具特征、代理网络和账号行为串联起来,才能形成有效的检测闭环。