携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第23天,点击查看活动详情
凭证填充
什么是凭证填充
凭据填充是一种网络攻击方法,攻击者使用已泄露的用户凭据列表来破坏系统。该攻击使用机器人进行自动化和扩展,并且基于许多用户在多个服务中重复使用用户名和密码的假设。统计数据显示,在另一个服务上尝试的违规凭据中,约有 0.1% 将导致成功登录。
凭据填充是一个不断上升的威胁向量,主要有两个原因:
- 大量违规凭据数据库的广泛可用性,例如,“集合#1-5”,它使220亿个用户名和密码组合以明文形式公开提供给黑客社区。
- 更复杂的机器人,它们同时尝试多次登录,并且似乎来自不同的IP地址。这些机器人通常可以规避简单的安全措施,例如禁止登录失败次数过多的IP地址。
凭据填充与暴力破解
凭据填充类似于暴力攻击],但有几个重要区别:
- 暴力攻击试图使用随机字符串、常用密码模式或常用短语字典来猜测没有上下文的凭据
- 如果用户选择简单、可猜测的密码,暴力攻击就会成功
- 暴力攻击缺乏以前违规的上下文和数据,因此它们的登录成功率要低得多。
在具有基本安全措施的现代 Web 应用程序中,暴力攻击可能会失败,而撞库攻击可能会成功。原因是,即使您强制执行强密码,用户也可能在服务之间共享该密码,从而导致妥协。
撞库攻击的工作原理
下面是攻击者在大规模凭据填充攻击中遵循的典型过程。攻击者:
- 设置一个机器人,该机器人能够自动并行登录到多个用户帐户,同时伪造不同的IP地址。
- 运行自动过程以检查被盗凭据是否适用于许多网站。通过在多个站点并行运行进程,减少了重复登录到单个服务的需要。
- 监控成功登录,并从受感染的帐户中获取个人身份信息,信用卡或其他有价值的数据。
- 保留帐户信息以供将来使用,例如,网络钓鱼攻击或受感染服务启用的其他事务。
撞库攻击示例
凭据填充防护
以下措施可以帮助您保护您的网站免受撞库攻击。
多重身份验证 (MFA)
要求用户除了知道他们知道的东西之外,还要使用他们拥有的东西进行身份验证,这是防止凭据填充的最佳防御措施。攻击者机器人将无法提供物理身份验证方法,例如移动电话或访问令牌。在许多情况下,要求对整个用户群进行多重身份验证是不可行的。如果是这样,它可以与其他技术结合使用,例如,MFA只能与设备指纹图谱结合使用。
使用验证码
CAPTCHA要求用户执行操作来证明他们是人类,这可能会降低凭证填充的有效性。但是,黑客可以通过使用无外设浏览器轻松绕过CAPTCHA。与MFA一样,CAPTCHA可以与其他方法结合使用,并且仅在特定场景中应用。
设备指纹识别您可以使用 JavaScript 收集有关用户设备的信息,并为每个传入会话创建“指纹”。指纹是操作系统,语言,浏览器,时区,用户代理等参数的组合。如果相同的参数组合按顺序多次登录,则很可能是暴力破解或凭证填充攻击。
如果您使用具有多个参数的严格指纹,则可以强制执行更严格的措施,例如禁止 IP。要捕获更多攻击,您可以使用 2-3 个常见参数的组合,并强制实施不太严厉的措施,如临时封禁。常见的指纹组合是操作系统+ 地理位置+语言。
知识产权黑名单
攻击者通常具有有限的IP地址池,因此另一种有效的防御措施是阻止或沙箱尝试登录多个帐户的IP。您可以监视用于登录特定帐户的最后几个 IP,并将其与可疑的错误 IP 进行比较,以减少误报。
限速非住宅流量源
很容易识别来自 Amazon Web Services 或其他商业数据中心的流量。几乎可以肯定,此流量是机器人流量,应比常规用户流量更谨慎地对待。应用严格的速率限制,并阻止或禁止具有可疑行为的 IP。
阻止无外设浏览器
像PhantomJS这样的无头浏览器可以通过它们使用的JavaScript调用轻松识别。阻止对无外设浏览器的访问,因为它们不是合法用户,并且几乎肯定表明存在可疑行为。
禁止将电子邮件地址作为用户 ID
凭据填充依赖于跨服务重用相同的用户名或帐户 ID。如果 ID 是电子邮件地址,则更有可能发生这种情况。通过阻止用户使用其电子邮件地址作为帐户 ID,您可以大大降低用户在另一个站点上重复使用相同的用户/密码对的可能性。