保护ASP.NET Core免受凭据填充

时间:2019-02-18 10:15:08

标签: security asp.net-core

ASP.Net Core通过在固定次数的登录尝试后锁定帐户,可以防止暴力破解密码。

但是,对于攻击者尝试大量登录但总是使用不同用户名登录的凭据,是否存在一些防止凭据填充的保护措施?锁定帐户无济于事,因为每次尝试都会更改帐户。 但是,也许有一种方法可以将IP锁定为防止多次登录尝试,或者通过其他一些好主意来防止凭据填充?

3 个答案:

答案 0 :(得分:1)

IP 节流是一个很好的第一步,但不幸的是它不会阻止大量现代撞库攻击。在过去几年中,精明的凭证填充者的策略变得越来越复杂。

要真正有效地阻止凭据填充,您需要查看的不仅仅是 IP。攻击者将轮换 IP 和 User-Agent,他们还会欺骗 User-Agent 值。有效的防御策略基于对异常 IP 和用户代理活动的实时分析来识别和阻止攻击,以及增强特异性的其他组件(例如基于浏览器或基于移动应用的指纹识别)。

我写了一篇博文,探讨了 2020 年的两次撞库攻击,我称之为攻击 A(低复杂性)和攻击 B(高复杂性)。

低复杂度示例攻击 A 具有以下特征:

  • ~150,000 次登录尝试
  • 1 个不同的 User-Agent(广泛使用的 Chrome 版本)
  • 约 1,500 个不同的 IP 地址(85% 来自美国,大多数应用用户都居住在美国)

攻击 B,即高复杂度示例,具有以下特征:

  • ~60,000 次登录尝试
  • ~20,000 个不同的用户代理
  • ~5,000 个不同的 IP 地址(>95% 来自美国,>99% 来自美国和加拿大)

您可以看到,对于攻击 A,每个 IP 地址大约有 100 次登录尝试。 IP 速率限制可能在此处有效,具体取决于限制。

然而,对于攻击 B,每个 IP 地址只有 12 次登录尝试。很难说 IP 速率限制对这种情况是否有效。

这是我的帖子,其中包含更深入的数据:https://blog.castle.io/how-effective-is-castle-against-credential-stuffing/

完全披露:我为 Castle 工作,我们提供基于 API 的产品来防止凭证填充。

答案 1 :(得分:0)

许多网站现在正因为如此而立即禁止IP地址,但是现在的问题是,破解者(使用凭据填充进行黑客攻击的人)使用代理(IP:port)登录以掩盖其IP地址并让他们检查巨大的清单。可能减慢这些登录尝试速度的唯一方法是使所有用户都使用验证码,但是还有另一种方法可以绕过该验证码。

答案 2 :(得分:0)

我建议将速度检查与redis一起使用,这基本上只是限制某些IP。此外,一些欺诈者还会轮换IP地址,您还可以检测到登录发生的频率更高(例如,正常情况下的10倍),并开始在该短窗口内阻止所有登录。我写了一篇博客文章,详细介绍了上述内容。该代码全部在节点中,但是我确实给出了一些高级示例,说明了如何在Precognitive(我目前的工作)中阻止欺诈。在接下来的几个月中,随着我在“帐户接管”系列中发布更多内容,我将继续构建代码。

https://medium.com/precognitive/a-naive-demo-on-how-to-stop-credential-stuffing-attacks-2c8b8111286a