可以通过颁发第二个证书来代理 SSL 请求吗?

信息安全 tls 攻击 中间人
2021-09-09 19:13:22

Alice 想在https://www.bobsbank.com/登录她的帐户。然而,她点击了电子邮件中的恶意链接,却被发送到了恶意网站https://www.charliesbank.com/. 恶意站点与 Alice 具有安全的 SSL 关系。Alice 在她的浏览器中看到“此站点是安全的”挂锁图标。当恶意站点(查理银行)收到 Alice 的请求时,恶意站点使用其拥有的 SSL 证书对该请求进行解密。然后,它使用 Bob's Bank 的公钥重新加密请求。它与 Bob's Bank 建立了 SSL 关系。鲍勃的银行无法知道查理实际上不是爱丽丝,因为查理可以提供爱丽丝的所有信息。然后,Charlie 可以监听甚至篡改 Alice 的后续浏览会话。

这种攻击是否有效,有什么方法可以防止它吗?

4个回答

这就是为什么当美国银行认为我的帐户被盗时,他们发送了指向 myfraudprevention.com 的链接时,我如此生气的原因。SSL 仅用于验证某些受信任的第三方是否已验证所访问的网站属于所访问的 URL 的名称。如果您将某人发送到您自己的网站并且该网站有证书,您仍然可以使该网站看起来像您想要的任何东西,包括伪装成其他组织的网络钓鱼网站。

SSL 所关心的只是您实际上是 charliesbank.com 的所有者。美国银行实际上是在训练他们的用户成为旨在帮助阻止欺诈的电子邮件中的网络钓鱼的受害者......

用户培训是目前防止这种情况的唯一方法。如果您实际检查所提供证书的详细信息,它应该会告诉您有关颁发证书的组织的更多详细信息。如果 SSL 证书具有扩展验证并且是您要与之交谈的组织,那么这意味着某些证书颁发机构已经对其进行了调查并确定他们是他们声称的组织,但目前用户需要了解这个过程如何工作并自己进行验证。用户还可以检查他们所连接的 URL。

由于计算机无法知道用户确实想要 bobsbank.com 而是访问了 charliesbank.com,因此可能没有太多可以改进的方法。该图标可以替换为显示有关证书的更多详细信息的内容,但总的来说,这只会导致大多数不了解 SSL 工作原理的用户更加困惑。

通过使用证书(即名称)可以避免攻击。Alice 的浏览器将拒绝 Charlie 的证书,因为浏览器想要与之交谈www.thebank.com,因此希望www.thebank.com在声称的服务器证书中看到该确切名称。Charlie 的证书包含www.evilcharlie.com他自己网站的名称。

为了实施他的攻击,Charlie 必须贿赂 CA(Alice 的浏览器默认信任的 CA 之一)向他颁发包含www.thebank.com. 当然,优秀的 CA 不会接受这一点(当他们接受时,它就会成为新闻;这样的不幸事件在全球范围内大约每年发生一次,这种情况并不常见)。

这种攻击有效吗

是的,事实上有商业解决方案可以做到这一点。表面上不是出于恶意目的。

有什么办法可以预防吗?

是的,不要使用具有此类代理的 Internet 连接。最常见的是,这些安装位于公司网络、校园网络或网络运营商想要检查所有流量(包括 SSL 流量)的其他地方。

通常,这些安装要求您在浏览器中安装“假” SSL 根授权证书,该证书用于签署生成的证书以进行中间人攻击。所以……不要那样做。尽管如果攻击者已经在您的计算机上安装了 CA 证书,那么这将是不必要的。

攻击有效吗?

的,攻击会奏效。与这里的其他一些答案相比,我要攻击的设备的本地 CA 证书存储区不需要特殊修改。

有什么办法可以预防吗?

我能想到的解决此问题的唯一方法是使用客户端证书/相互身份验证 TLS或仅连接到受信任站点的“应用程序”。


..攻击

“网络钓鱼代理和证书替换”的工作方式如下:

假设我想攻击一家名为的银行www.contoso.com,并且我购买了 DNS 名称www.contos0.com然后,我购买了一个标准的域控制验证证书,该证书简单地验证了我对域的控制。不需要 EV 证书,但我想可以获得一个。

然后,攻击者获取 TCP 软件,该软件基本上回显数据并将其转发到下一个服务器。该过程也以相反的方式发生,并进行了双工会话。

看起来像这样的网络钓鱼攻击:

Browser  <---->  contos0.com:443 (decrypt and rencrypt) <----> contoso.com

..缓解

对于常规网站/桌面

由于您的网络服务器可以使用任何 CA 生成客户端证书,因此您可以:

  1. 使用HTML5 KeyGen 元素为用户注册证书
  2. 或者,只需提供整个证书(组合 PFX 中的公钥和私钥)以供下载,即可注册用户。

我测试了各种浏览器的 UI,发现 Keygen 对最终用户来说更容易管理,尽管它需要改进。

对于移动应用

移动浏览器几乎从不显示浏览器栏,因此大多数用户不知道他们是在钓鱼网站、HTTPS 网站还是拥有 EV 证书的网站。