在中间攻击中防止欺骗人?

信息安全 tls 中间人 威胁缓解
2021-08-30 15:06:55

当我遇到一个解释中间攻击的人时,我正按照我通常的例行程序来听旧的 Defcon 视频,试图了解 IT 安全世界中正在发生的事情的一些基础知识。

所以我开始思考。好吧,你真的能用它做什么?然后我想到了一个奇怪的人在中间攻击,我想知道它是否会起作用。

因此,我们都知道路由器将数据包引导到它们要去的任何地方。这很好,花花公子。然而,如果你设置一些更邪恶的东西怎么办。当一个数据包出现在您的面前(其目的地是预编译的站点列表之一),如果我假装是那个目的地怎么办?如果您说“是的,我是 paypal.com!让我们建立安全连接!”怎么办?然后你与那个东西建立一个安全的连接。完成此操作后,您可以与 PayPal 建立安全连接,并执行用户正在执行的所有操作,但您还可以获取所有您想要的信息(例如,他们向他们的兄弟史蒂夫发送了多少笑脸)。

我能想到的唯一问题是,如果数据包决定采用不同的路径。我不确定这一点,但你也许可以告诉另一个系统你正在改变你的blah blah blah,所以它应该连接到你真正的blah blah blah

有什么可以防止这种情况发生吗?我什么都想不出来,而且人们能够做到这一点的想法有点可怕......

3个回答

路由器行为不端并试图充当关于客户端的假服务器,以及关于真实服务器的假客户端,双向转发数据,是中间人攻击的确切定义。除了路由器(在 IP 级别起作用)之外,MitM 的经典实用方法包括:

(此列表绝不是详尽的。)

为了击败这些攻击,我们使用服务器身份验证,在 SSL 网站(如https://www.paypal.com)的情况下使用X.509 证书当客户端(Web 浏览器)连接到 Paypal 服务器时,它明确要求“安全连接”(因为 URL 以 开头https://,而不是http://)并且将拒绝服务器,除非服务器使用以下证书:

  1. 由浏览器先验信任的根 CA 之一(Verisign/Entrust/Thawte/浏览器供应商包含的任何内容)颁发,并且:
  2. 其中包含预期的服务器名称(www.paypal.com,在 URL 中指定)。

在不匹配时,浏览器将以惊人的方式警告用户。只有当其中一个 CA 犯错(即 CA 颁发证书,其中包含www.paypal.com一个根本不是paypal.com所有者的人)或用户犯错(通过使用显示为 的 URLwww.paypal.com.evilhacker.com或通过没有注意他的浏览器显示的可怕警告),或者用户机器已经受到攻击(例如通过安装恶意根 CA 的一些恶意软件)。

一般来说,SSL 的设计使得安全性独立于传输机制来维护。SSL 安全性不依赖于“诚实”行为的路由器。SSL 假定路由器都是敌对的。

这就是 SSL 证书的用途。您的浏览器有一个受信任的证书和证书提供者的列表,当网站说我是 PayPal.com 时,您的浏览器就会知道证书是错误的。

中间人可能会伪造证书或说服您接受错误的证书,而成功的人确实可以照您说的做,并窃取您的钱。它发生了很多。

虽然没有你想象的那么可怕。适用常规指导:保持系统最新、使用防病毒软件、避免在线狡猾行为等

防止此类问题取决于所使用的协议类型。假设我们在这里讨论的是 Web 访问 (HTTP),那么针对这种攻击的主要防御措施是配置良好的 SSL 设置并结合一些用户意识。

如果您尝试拦截对 SSL 加密网站的访问,那么您需要向您假装是您正在欺骗的网站(在您的示例 paypal.com 中)的用户出示证书。

然而,用户浏览器将只接受由某些“受信任的根”证书签名的证书(这通常由浏览器或操作系统供应商在基础上定义)。

因此,作为攻击者,您可以尝试使用不受信任的证书(您自己生成的声称是 www.paypal.com 的证书),在这种情况下,用户将收到证书无法信任的警告,或者您可以尝试提供用户 www.paypal.com 未加密,希望他们不会注意到。也就是说,像 SSL pinning 和 HSTS 这样的保护措施可能会使这种类型的攻击更加困难甚至不可能。

无论哪种方式,如果您有 MITM 类型的设置,您就可以进行相当程度的攻击。对于 Internet 连接,可能最困难的部分将是成为中间人。