黑客可以在使用 SMS OTP 登录的网站中连续绕过速率限制的速度和频率是多少?如果同一 IP 地址触发 SMS OTP 超过 x 次,则会激活速率限制。
黑客更改 IP 地址的速度有多快?
僵尸网络
如果有人可以访问僵尸网络,即使是很小的僵尸网络,他们也可以每分钟多次更改他们的行为来自的 IP,或者在任何给定时刻从一百万个 IP 中泛滥他们的行为。
非僵尸网络
对于没有僵尸网络的个人,有几种方法,包括重置他们的 ISP 调制解调器,在某些情况下,它会重置 IP。打开/关闭手机的飞行模式也可以触发 IP 更改(MechMK1 报告这可能只需 3 秒即可完成)。
它们还可以在公共 WiFi 网络之间切换。
使用一系列允许用户选择出口节点的 VPN 和代理或 VPN 也将起作用,具有不同出口节点的服务可以在几秒钟内完成此切换。还有一些代理/Tor 实用程序可以根据您设置的时间表随机分配您的 IP。Janus工具的默认更改时间为 1 分钟,但可以更改。
因此,对于任何实际情况,如果攻击者正在等待 SMS 代码从您的服务器返回,那么他们只受到接收 SMS 代码的时间的限制。
似乎还没有人解决这个问题,但我想介绍基于 IP 的速率限制的最大问题:IPv6。
如果您(天真地)将与 IPv4 地址相同的逻辑应用于 IPv6 地址(即在一定次数的尝试后阻止地址),您的速率限制将在大约零秒内被阻止。
为什么?嗯,简单的版本是 IPv6 寻址方案与 IPv4 有很大不同。IPv4 的配给程度最高,以至于即使是多个家庭和实体城市街区也可能具有相同的外部地址。这与每台机器的 IPv6 形成了鲜明的对比。,按照惯例,将有一个 /64 块地址分配给它。如果您不熟悉 /x 表示法,这意味着地址的前 64 位是固定的,而其余的则保持空闲。由于 IPv6 地址的长度为 128 位,这意味着按照惯例,每台机器都有 2^64 个唯一地址,可以随意使用!如果您使用与 IPv4 相同的方法并简单地阻止一个地址,则攻击者可以简单地从他们基本上无限的地址池中挑选一个全新的地址!然后,您的速率限制将被彻底破坏,他们可以根据需要尽快提交无限数量的 OTP 代码。这可以说使您的 2FA 实现毫无用处,因为如果您的 OTP 代码长度为六位数,攻击者只需要继续淹没您,直到他们幸运为止。在我的真实世界测试中,
我们能做些什么来阻止这种情况?自然的选择是在请求者达到限制时禁止请求者的整个 /64 块,而不仅仅是他们的特定地址。从表面上看,这似乎很合适,因为这意味着攻击者不能再使用他们池中的任何地址。
然而,这也行不通,即使有太多的公司认为它行得通。问题是,虽然按照惯例通常为主机分配 /64,但网络被设计为具有多个设备!这意味着即使是家庭网络也会有大量的 /64 块(因为为什么不呢?我们不会用完的!)给他们,这样他们就可以处理一堆设备。就我而言,我的 ISP 给了我一个 /56 块,以便根据需要在我的设备中拆分。这意味着我实际上有 2^8(或 256)/64 个块可以随意分配和分解我网络上的设备。
由于没有什么能阻止我将整个 /56 块交给一个主机,这意味着我有 256 个 /64 块可供我循环使用并绕过您的速率限制。如果您让您的用户在一段时间内禁止他们每个 /64 块尝试五个 OTP 代码,那么攻击者(使用住宅连接!)将能够在他们不得不等待冷却时间之前用 1,280 个代码攻击您。与经典的 IPv4 规避尝试(使用僵尸网络、代理等)相比,这对于基本上只是使用它们已经免费提供的东西来说是一个巨大的收益。如果将其与僵尸网络结合使用(或者甚至只需为更大的“企业规模”IPv6 池支付少量费用),基于 IP 的速率限制就会再次受到挫败,而且非常便宜。
所以现在怎么办?我们是否出于速率限制的目的而开始阻止 /56s?你可以,但这会产生非常不幸的影响,因为虽然有些人获得了 /56 块,但其他人没有,所以你很可能最终会无缘无故地意外阻止随机的人,而没有解决轻松购买 /52 和/50 块。下一个合理的选择是尝试推断请求来自哪个范围分配。虽然这可行,但由于 ISP 不发布或发布此类信息,这并不完全可能。考虑到这一点,我们(据我所知!)别无选择。对于真正了解 IPv6 工作原理的攻击者,基于 IP 的速率限制基本上不适用于 IPv6。
但一切都没有丢失!虽然基于 IP 的速率限制是无用的,但速率限制作为一个概念还没有消亡。您只需选择不同的资源来限制访问。您不应限制 IP 地址(或范围或块等)尝试 OTP 验证的次数,而应限制帐户对其执行 OTP 的次数。通过在一定次数的 OTP 尝试失败后锁定帐户并要求用户单击电子邮件中的链接以重新激活 OTP,攻击者将无法暴力破解该帐户的 OTP,无论他们可以使用多少个地址。通过将此限制设置得相当高(比如 25 左右),普通用户永远不应该 除非他们的身份验证器出现严重问题(因此可能无论如何都需要启动恢复),否则该策略会给您带来不便。
Instagram、Facebook、LastPass 以及可能更多用于 SMS 重置代码和 OTP 的技术已经有效地使用了这种技术。这是非常有效的,在我看来,这是在 IPv6 不再只是无处不在而是通常是强制性的世界中阻止暴力尝试的唯一安全方法,因为相当多的网络(主要是移动网络!)正在慢慢过渡到 IPv6 并使用访问“旧版”IPv4 资源的代理。
如果黑客拥有僵尸网络,他们可以控制数千个 IP 地址,并可以随意在它们之间切换。因此,他们更改 IP 地址的频率和速度并没有真正的实际限制。
使用云提供商,您可以在短时间内“租用”大量 IP。这比僵尸网络/tor/关闭我们的电话/等要容易得多。(编辑:虽然在覆盖你的痕迹方面可能更具风险,请参阅评论)。
整个事情可以完全自动化,例如使用Amazon API Gateway。