2FA 是否有助于防止网络钓鱼攻击中的未经授权访问?

信息安全 验证 多因素 网络钓鱼
2021-08-16 07:06:51

给定

  1. 攻击者的目标是bank.com.
  2. bank.com 使用 SMS 或 Google Authenticator 2FA,用户在表单中输入 2FA 代码。

设想

  1. 攻击者注册域名 baank.com
  2. 攻击者创建一个网页,该网页bank.com从域中抓取并显示登录页面baank.com(或作为 MITM 代理,bank.com在需要时将用户提供的详细信息发送回)。
  3. 攻击者向用户发送网络钓鱼电子邮件,让他们登录baank.com而不是bank.com.
  4. 用户填写他们的用户名、密码和 2FA(像往常一样)。
  5. 攻击者现在拥有用户凭据以及用户提供的 2FA。
  6. 攻击者立即(可能通过脚本)登录银行账户,因为他拥有用户名、密码和 2FA。

问题

我是否遗漏了什么,或者用户输入的 2FA 在这种情况下没有帮助?

4个回答

在这种情况下,单独的2FA无济于事。如果 2FA 输入屏幕上bank.com没有其他保护,如 TLS、固定/HSTS、MITM 保护,和/或验证客户端或检测登录异常,则存在漏洞。

在这种情况下,浏览器中的集成密码管理器可以通过不提供凭据来帮助最终用户。

除了用户输入的代码外,其他类型的 2FA 可提供更大的保护。

yubikey、titankey、nitrokey 和 solokey 等安全密钥使用 U2F 协议,该协议通过将域混合到 nonce 中来抵御网络钓鱼。为了实现这一点,攻击者必须控制域。如果您谈论的是浏览器,它们被配置为还要求页面是有效的 HTTPS 连接。这意味着攻击者还必须控制该站点的私有证书。

此时攻击者已经控制了一切。

我想说它是这样的

response = secretkey_encrypt(HMAC(CHALLENGE, SHA256(base domain)))

它减少了可能进行攻击的窗口

考虑连接没有 2FA,只有用户和密码的情况受害者提供了他的银行凭证,事后甚至没有意识到这是网络钓鱼。攻击者稍后可以使用它们以用户身份登录并清空帐户。也许在夜间,用户更有可能没有注意到。或者利用几天的访问权限来克服每日转账限制。或者三个月后,当他完全忘记了网络钓鱼时,这些凭证可能已经卖给了其他人,然后用它来洗钱。

正如您正确指出的那样,使用 2FA 并不能防止由于网络钓鱼而导致攻击者同时登录该帐户以前的场景不再可行。攻击必须在用户输入其凭据时进行。即使一分钟后,第二个因素也将失效。它并不能完全阻止攻击者登录(因为您需要一个 U2F/FIDO/WebAuthn 设备,还要验证您登录的站点),但它确实增加了所需的工作量。

另外,在使用 SMS 时,一些网站实际上描述了将要执行的操作,因此这样的描述可以作为额外的防御层(“页面声明它需要我的代码给我免费礼物,但 SMS 说它会授权几千美元的转账吗?”🤔)。

另一方面,某些情况通过使用第二个因素来解决的,例如发现凭据或担心密码可能会被暴力破解。

即使使用 2FA,进入不正确的 URL 当然也会带来风险。你正确地识别了这一点。2FA 更多地针对正确 URL 的泄露密码。考虑到人类的幼稚总是存在风险,因此让人们检查 URL,在大多数情况下,2FA 确实有帮助。