我遇到了一个奇怪的问题,我需要帮助来定位问题或至少减少搜索区域。我将提供一般见解,但我可以根据要求提供详细信息。
我有一台运行 kali 的 HP 笔记本电脑,我不时用它来检查我的网络;我在我的无线接口上启用了混杂模式,启动了 Wireshark,除了 HP 笔记本电脑之外没有捕获任何流量,就像甚至没有启用混杂模式一样。审查我的 Wireshark 设置后,一切似乎都很好。
所以我拿了另一台运行 Ubuntu 的笔记本电脑,打开一个配置了网桥的 kali 虚拟机(所以 kali 虚拟机与 kali 笔记本电脑和 Ubuntu 笔记本电脑在同一个网络中),在 eth0 接口上启用了混杂模式(ofc 与Ubuntu笔记本网卡和以太网连接是模拟的);
我能够从许多主机、kali 虚拟机、托管它的 Ubuntu 笔记本电脑、我的手机、我 gf 的笔记本电脑中捕获数据包……但从 kali 笔记本电脑上什么都没有,这很奇怪。
TLDR:第一台笔记本电脑只能捕获他自己的流量,第二台笔记本电脑可以捕获所有流量,除了来自第一台笔记本电脑的流量。混杂模式已启用,是的,它们在同一个网络中。
什么会导致这种奇怪的行为?
简单地将网络接口置于混杂模式(允许其查看不属于自己的流量)并不是捕获网络上所有流量所需的全部。回到过去,当我们使用网络集线器时,它允许所有设备查看它工作的所有流量,但今天网络交换机的情况更加复杂。在交换网络中,交换机旨在检测插入了哪些端口设备,并且仅将该设备的流量发送到该交换机端口。(交换机通过检测并记住插入每个端口的设备的 MAC 地址来做到这一点。)因此,对于现代网络交换机,如果您将计算机插入端口 1、2 和 3,则端口 3 上的计算机通常不会看到任何流量在端口 1 和 2 上的计算机之间,即使它启用了混杂模式。更高级的“托管”交换机通常具有端口镜像选项,允许管理员明确指定端口将获取发送到某些或所有其他交换机端口的数据包的副本。如果您想嗅探所有网络流量,也需要使用这样的选项。
无线网络为此增加了更多的复杂性。无线网络旨在在某种程度上模拟常规的有线以太网网络,但根据设备品牌、无线接入点启用的选项和网络类型的不同,细节存在巨大差异。大多数廉价的消费者无线“路由器”实际上更像是无线端的集线器,因此只需在同一无线网络上的另一个无线设备上打开混杂模式,就可以嗅探无线设备之间的一些流量。其他通常更昂贵的无线接入点的作用更像是切换到无线客户端,因此在设备上启用混杂模式不一定会让您看到更多流量。
但还有更复杂的情况。大多数消费类无线路由器还集成了物理以太网交换机端口。因此,无论您在无线客户端上做什么,都不会看到插入这些端口的设备之间的流量(除非您有一个端口镜像选项可以将流量发送到您的无线设备)。
它甚至比这更复杂。如果您的无线接入点有多个频段,例如 2.4GHz 和 5GHz,那么频段之间的连接可能更像是一个开关。我猜这就是您的 HP 笔记本电脑看不到任何其他流量的原因:它连接到的频段与您的大多数其他设备不同。
但还有更多!如果您有多个无线接入点,例如“网状”配置,则很有可能无法嗅探连接到其他接入点的设备的流量,因为接入点之间的连接就像一个交换机。
最后还有另一个并发症。许多消费者接入点具有最低限度的处理能力,因此他们会采取捷径(通常被称为“优化”)以看起来更快。一种常见的捷径是简单地丢弃一些对于大多数设备来说可能不需要工作的处理密集型流量。例如,许多消费类无线路由器会丢弃某些类型的广播流量,因此您将无法嗅探它。
因此,简短的版本实际上是不可能真正嗅探现代消费者网络上的所有网络流量,特别是如果网络中有无线组件。因此,将一个无线设备置于混杂模式不会让您全面了解正在发生的事情。为了真正做到这一点,您可能需要产消级硬件或更高级别的硬件,并且所有硬件(接入点、交换机、路由器)可能需要具有相同的品牌并作为一个有凝聚力的单元“管理”。