我可以检测到 MITM 攻击吗?

信息安全 网络 攻击 中间人
2021-09-03 16:16:41

基于这里的这个问题: “中间人”攻击非常罕见吗?

是否有可能检测到中间人攻击,如果可以,将如何处理?

此外,如果攻击是通过连接到本地网络(例如电话线)发生的怎么办?有什么方法可以检测到吗?

4个回答

浏览时,您可以每次检查网站提供给您的证书是由合法的 CA 颁发的,还是由您的浏览器信任的某个 CA 颁发的假证书。显然,手动操作是不可能的。所以,有一些工具可以为你做这件事。

Cert PatrolPerspective是基本上可以做到这一点的浏览器插件。他们会记录哪些域名是由哪些 CA(例如 Google=>Thwate 等)以及与证书相关的许多其他参数,如果 CA 发生更改或证书中的公钥发生更改,它们会向用户发出警报.

这些显然不是对 MITM 的检测,它们更像是通过检测网站提供的证书有什么奇怪的地方来进行预防计划。

此外,在连接到 SSH 服务器时,它会询问服务器指纹。如果我的 ssh 客户端在我之前连接到服务器后向我显示新指纹,我会感到震惊。服务器主机密钥在第一次连接后保存到 known_hosts 文件,客户端要求我再次验证指纹的唯一原因是因为 SSH 服务器已重新启动/更新,或者我正在被 MITMed。

绝对的偏执狂要求您打电话给系统管理员并通过让他说出钥匙来确认指纹。

你能检测到中间人攻击吗?取决于被攻击的系统类型和攻击类型。

假设一些老练的攻击者已经控制了您和互联网之间的上游路由器,并将您的流量重定向到他们控制下的虚假服务器以进行中间人攻击(例如,捕获 DNS 请求并向他们的服务器提供虚假回复,或使用网络地址转换(NAT))。

现在假设您转到http://www.facebook.com并被定向到http攻击者控制下的登录页面。可以预见,攻击者可能会抛出一个模仿 facebook 登录页面的页面,捕获您的身份验证信息,并使用该信息连接到真正的 facebook,然后将内容从真正的 facebook 引导到您的浏览器。https除了隐藏的表单发布操作不在初始登录页面上之外,这几乎可以无缝完成。假设您的设置是始终对 facebook 使用 https,然后您去了https://www.facebook.com. MitM 攻击会向浏览器发送危险信号,因为攻击者将没有 facebook.com 的受信任证书。诚然,许多用户会忽略这些浏览器警告(因为有时它们是出于良性原因,例如过期的密钥或未使用自签名密钥的 Intranet 站点)。这一切都假设攻击者没有另外设法侵入 facebook 并获取他们的私有证书或破坏 CA(证书颁发机构)以能够生成大多数 Web 浏览器信任的假证书或以前更改您的 Web 浏览器以使其信任/不信任'不警告无效证书。

一般来说,http几乎不可能检测到中间人攻击,但是https您的浏览器应该会自动检测并警告您,除非攻击者已经破坏了您的系统或另一端的系统(包括作为另一端的系统的 CA )。

下一个例子:ssh. 同样,使用私有-公共服务器密钥对来验证计算机。因此,如果我经常从我的家用计算机 ssh 进入我的工作机器,我的家用计算机已经记录并信任了我的工作机器的公钥(保存在一个文件中~/.ssh/known_hosts)。如果在我从家用机器连接时尝试了中间人攻击,ssh会立即注意到中间人机器没有我的工作机器的私钥并且不会让我登录(除非我专门从我的known_hosts列表中删除了公钥;如果说我升级到新机器或更改服务器密钥,我只会这样做)。再次,MitM 攻击ssh很容易检测到,除非攻击者已经以 root 身份闯入我的工作机器并将私钥复制到他的主机,或者已经闯入我的家用机器并更改了记录在中的我的工作机器的公钥,~/.ssh/known_hosts或者我第一次连接到服务器(我没有服务器known_hosts或识别它的主机指纹)。

检测中间人方案是任何认证协议的基本目标。为此,您需要:

  • 获取身份验证信息的安全方法(服务器证书、共享密钥……)
  • 验证与服务器交换的消息的真实性。

服务器应该对客户端做同样的事情。使用对称方案,应该很容易完成。使用 SSL 等非对称协议时,您必须:

  • 获取服务器证书并能够正确地对其进行身份验证
  • 使用嵌入在该证书中的公钥与服务器通信,这样任何人都无法解密消息
  • 服务器和您将就共享的唯一秘密达成一致,以便为未来的连接使用对称加密。

,你不能,有很多方法可以做到这一点。

这里的许多答案将告诉您如何检查特定的 MITM 攻击,我认为这不是重点

MITM 并不意味着攻击者会尝试破译您的数据流并向您提供不同的密钥/指纹。他只是你和你的目标主机之间的一个节点。

有很多方法可以进入 MITM 情况,每种方法都可以通过适当的网络管理来防止,您和目标主机之间的所有节点都应该受到保护每个网络都应该设计成能够抵抗所有可能的 MITM,包括滥用路由协议、ARP 欺骗、DNS 欺骗、简单地安装物理网桥等。

为了实现安全性,陷入 MITM 攻击并不重要,您不能依赖信任和运气,也无法控制互联网,除非经过适当的审计证明是安全的,否则您必须假设您处于敌对环境中。使用 TLS、SSH 和潜在的 IPSec 等安全协议可以使您的网络更加安全,对您的数据进行身份验证和加密。然而,它在某些时候总是容易受到攻击,而且大多数时候它来自错误配置或协议/实现本身的缺陷。

简而言之,不要检测 MITM,而是:

  • 保护您的 LAN 或请别人来做
  • 设置安全隧道协议以访问安全的远程网络和系统

检测 MITM 是可能的,但这与您使用的内容、CISCO IOS 的端口安全性或仅在任何 Unix 机器上使用 SNORT 有关。你不可能得到一个详尽的列表,它只匹配给定的情况,此外,攻击者总是有足够的创造力来找到你没有想到的东西,所以请参考我上面的 2 个建议。