为什么以太网局域网中的数据包嗅探器可以获取通过局域网发送的所有数据包?
在有限的广播环境中,例如在许多以太网 LAN 中,数据包嗅探器可以获取通过 LAN 发送的所有数据包。
我们知道如果有 Wi-Fi 网络,我们可以使用数据包嗅探器来捕获数据包,但是有线以太网 LAN 呢?
为什么以太网局域网中的数据包嗅探器可以获取通过局域网发送的所有数据包?
在有限的广播环境中,例如在许多以太网 LAN 中,数据包嗅探器可以获取通过 LAN 发送的所有数据包。
我们知道如果有 Wi-Fi 网络,我们可以使用数据包嗅探器来捕获数据包,但是有线以太网 LAN 呢?
在经典(过时)以太网中,使用了共享电线或中继集线器。因此,每个节点都会物理接收在广播域(在这种情况下也是冲突域)内发送的每个帧。已接收但未寻址到接收 NIC 的 MAC 地址的帧将被忽略(丢弃)。在这样的网络中,处于混杂模式的 NIC 可以捕获所有流量。
在过去的二十年左右的时间里,共享线路或重复的以太网已经过时了。在交换以太网上,每个帧仅在其目的地的方向上转发。当然,要接入以太网通信需要直接或通过端口镜像(又名端口监控或 SPAN)[编辑后评论] 和捕获 NIC 上的混杂模式侦听源或目标端口。[/编辑]
为什么在以太网局域网中,数据包嗅探器可以获取通过局域网发送的所有数据包?
这不一定是真的。在交换以太网(现代网络)上,您只能嗅探发送到监控设备所连接的交换机接口的以太网帧。这可以通过几种方式发生:
除上述之外,只有寻址到您的监视器设备的帧才会发送到它所连接的接口。
此外,在使用 VLAN 时,只有同一 VLAN 中的帧才能到达您的监控设备所连接的接口。要将流量从一个 VLAN 传输到另一个 VLAN,需要一个路由器,该路由器将从数据包中剥离帧以转发数据包,为下一个路由器接口构建新帧。
这是通过几种可能的方法之一实现的......
到目前为止,最常见的是将界面置于混杂模式。几乎所有 NIC 都可以置于混杂模式。这将删除忽略不发往其接口的数据包的“过滤器”。无线接口也必须这样做,以便“收听”网络上的“对话”。无线网卡也可以置于监控模式,与混杂模式不同,无线接口不与任何 AP、Ad-Hoc 或其他单一无线接口相关联,而是侦听无线电波中的所有可解密数据包(请注意,如果 AP 是通过 WEP/WPA(2) 加密的,则在无线网卡上以监控模式从该 WLAN 的设备部分接收的数据包将无法破译(尽管可能会获得一些有助于“破解”的信息)
回到以太网中的混杂模式……虽然该技术很简单,不需要特殊的实用程序(至少在 Linux 上)或更改网络拓扑/分接点(设备连接的地方),但是,有一些限制。那些是:1) NIC 只能获取其网段上的流量。以太网集线器类似于同轴(电缆)分配器,它只是将数据包转发到所有接口(除了接收数据包的接口)。因此,如果连接到集线器,处于混杂 (promisc) 模式的以太网卡将看到发送到和来自连接到同一集线器的每个设备的数据包。如果网络有多个串联的集线器,NIC 将看到该网段的所有流量,直到到达智能转发设备(例如交换机或路由器)。
所有的 NIC 仍然会接收广播数据包(在整个网络中不加区别地发送的数据包 - 通常用于网络控制和主机发现),并且可以在混杂模式下接收所有多播数据包,即使 NIC 不属于多播组。如果配置正确并启用,也可以接收所有任播数据包(类似于广播,但用于非网络控制协议,通常用于多用途 WAN 网络,如共享相同介质的电缆/宽带),如以及某些情况下的联播数据包(数据包流式传输到不同的多个主机)。如果正确分析,广播和组播数据包(组播数据包主要用于 IGMP-Internet 组管理协议)可以帮助获得相当准确的网络拓扑图。此外,ping 网络广播地址(几乎总是网络的最后一个 IP;-b 标志在 linux 中是必需的,通常在 windows 中失败),您的设备将收到来自每台计算机的响应(未配置为不响应广播) ping,如果没有被 NSA 上的规则阻止)在网络上。如果网络上共存多个网络,如果 NIC 处于混杂模式,则 ping “allcast” (255.255.255.255) 地址可能会导致来自不同子网上设备的非法响应。
为了接收以太网上的所有流量
这会变得有点复杂,具体取决于网络基础设施,并且有几种方法可以取得成功。
如前所述,如果网络仅由“哑”集线器和单个网段组成(通过互连设备的无站/无路由器/WAN 隔离的自组织网络,或通过单个 WAN 到 LAN 桥接器馈入“哑”集线器的网格),那么只需将 NIC 置于混杂模式就足够了。如果网络由不同的拓扑结构和交换机而不是集线器组成,这是一个复杂得多的过程。首先,NIC 应置于混杂模式。然后必须根据网络硬件和拓扑做出决定。
选项
1) 考虑一个标准的商业网络,它由一个连接到 ISP 的 WAN 设备(通常称为“调制解调器”或“路由器”,但通常该设备实际上是一个 NAT 设备)组成——它允许许多内部设备共享一个或一个很少有公共 IP 地址,在 IPv6 网络中,这些设备通常会执行 IGMPv6 路由,但这超出了本文的范围),并且连接到 WAN 设备的是主要的 L3(通常具有一些 L4 路由功能)智能、托管(可配置) ) 转变。以太网从主交换机延伸到不同的部门或楼层,这些部门或楼层通常具有连接到每台计算机、打印机、无线接入点等的非托管(简单的 L2,有时具有 L3 过滤功能)交换机。如果您对主交换机具有管理员访问权限...可以启用所谓的端口镜像 - 根据配置,您可以创建一个“tap”端口,该端口将所有发往其他端口的流量也转发给它。这是迄今为止最有效的方法,因为每个网络上的数据包将流向您的混杂网卡,并且可以使用 Wireshark 等程序捕获。此方法还将绕过您的网络中可能存在的安全协议,这些协议可能会阻止其他可能的方法,例如 arp 欺骗,我稍后会介绍。有时交换机(通常是低端管理型交换机)一次只支持镜像一个端口,在这种情况下,克隆连接到广域网设备的交换机上的端口应该可以为您提供大部分流量,因为可以假设大部分流量正在走向互联网,即使没有,WAN 设备(在复杂网络中)通常是一个中央多协议路由器,默认情况下接收几乎所有数据包。另一个要克隆的单个端口,如果两个交换机“堆叠” (意味着它们通过中继互连以作为单个虚拟交换机 - 以支持更大的容量),然后镜像一个/中继端口是一个不错的选择(如果网络细分为 VLAN,这也将绕过某些封装安全加密,因为中继承载所有 VLAN)。沿着这些思路,可能还需要确保如果创建通用镜像(通过交换机中继所有流量的端口),您的 NIC 可能需要配置为使用默认 VLAN/中继 VLAN(VLAN 承载所有其他VLAN),以及混杂模式。请注意,这也可能会给您的网络带来很大压力,因此它应该仅用于调试或相关目的,
2)另一个可行的选择是机械地“窃听”网络。这可以通过在网络的某个部分之间放置一个网络集线器来实现(沿着两个堆叠交换机的主干、主交换机和 WAN 之间或 ISP 和 WAN 之间都是可行的选择——尽管由于 NAT 协议) ,在 WAN 和 ISP 之间移动可能很难确定哪个数据包来自哪个设备)。只需使用 2 根额外的以太网电缆将网段与中心的集线器互连,一根连接到您的听音设备,另一根则完成原始连接(您必须为此使用集线器,而不是开关)。有一种专门为此设计的设备,它具有一些额外的好处,可以防止设备泄漏 - 隐藏您的嗅探,防止原始连接上的信号和速度下降并过滤 VLAN 标头以简化配置-它是为 Wireshark 设计的,我相信您可以在他们的网站上找到它-我认为它被称为“shark-tap”或类似的东西。虽然它相当昂贵而且不是必需的。这也可以通过同一台计算机上的 2 个桥接 NIC 来实现 - 可以将其配置为流氓交换机或路由器以吸引数据包,但为此我建议您查看一些教程(非常类似于使用两个无线 NIC 来创建 MITM 程序)。
3) 接下来,我们有一个不需要对现有网络基础设施进行任何更改的选项。实际上有 3 种半相关策略可能需要结合使用,具体取决于您的网络安全性。同样,混杂模式是必要的。第一种称为 ARP 欺骗。这在大多数家庭和简单的企业网络中非常有效,但会很快被反入侵/隐私保护技术检测到——尤其是在每个交换机可以相互通信的复杂智能网络中。正如我所提到的,交换机使用 IPv4 的 ARP 协议和 IPv6 的 ND 协议工作。IPv4 仍然是 LAN 中用于寻址的主要技术(主要是因为网络工程师按照他们的方式进行设置并且转租 IPv6 更加困难,以及介绍一连串要学习的新概念 - IPv4 地址通常也更容易记住),因此使用 ARP 欺骗通常就足够了(ND 欺骗也是可能的,并使用类似的概念)。有几个程序可以执行 arp 欺骗(几乎所有的 linux 命令行,您可以在该主题上搜索相关教程)。ARP 是一种协议,用于计算机和(重要的是,对于此应用程序)交换机,用于将 MAC(物理地址)与 IPv4 地址相关联。协议很简单:在没有IGMP的情况下,主要使用子网广播地址,以“谁有[ip地址]?告诉[我的IP地址]”的形式发送请求包作为响应,通常主交换机或具有请求 IP 的设备(但它可以是网络上知道答案的任何设备)回复 [您正在寻找的 IP] 位于 [MAC 地址]。如果未收到应答,则在默认广播 255.255.255.255 上发送数据包,在某些情况下,会查询通配符 0.0.0.0,并使用 IGMP,还会询问站点本地和网络本地地址。此外,一些操作系统将请求发送到默认网关或默认交换机。ARP 欺骗涉及对所有 ARP 请求进行权威回答。此外,ARP 响应会主动发送,并且在网络上启用 IGMP 的情况下,发送到所有 IGMP 接口和所有广播地址(如果存在多个子网)以及默认网关(如果需要)和/或默认交换机. 这会导致所谓的 ARP 缓存中毒。那是,网络控制设备(交换机、路由器、网关)现在要么在尝试与其他特定设备通信时仅指向您,要么更可取,假设网络环路或故障并回退到类似集线器的行为 - 这意味着所有数据包都发往所有其他设备网络设备也直接发送到您/您的网段。这个过程很容易理解,从根本上说。然后,混杂模式会处理剩下的事情,您可以听到所有对话。也可以只模拟主交换机,或者只模拟 WAN 设备,在大多数情况下,它接收 90% 的网络数据包——使用 IPv6 的协议除外(和一些罕见的 IPv4 协议,它们通常需要创建临时点对点连接,而 IPv6 总是为此目的建立本地链接 fe80 地址)绕过网络基础设施(如果在同一网段)并直接相互交谈。这方面的一个例子是用于同一网段上的 Mac 计算机之间的通信和服务的 Appletalk 协议。
问题是,更先进的网络硬件,特别是如果存在网络防火墙或更先进的 NSA,或者是主要的 WAN 设备,或者位于网络/主交换机和 WAN 之间(在许多情况下都是这种情况),该设备将经常检测嗅探尝试并作为响应,自动阻止所有到指定 MAC (phy) 或 IPv4 的流量,完全关闭该段,或者干脆忽略新公布的位置 - 这在机器位置所在的全桌面网络上运行良好不太可能改变(这在普通家庭设置中不太可能,其中流量将简单地路由/切换到两个设备)。但是,由于无线接入点漫游,这意味着设备可以从段跳到段,通常比 APR 缓存更新更快(用户在托管交换机上进行配置,在非托管交换机上进行静态配置,对于大量无线网络需要 30 秒或更短时间,对于混合环境需要 60 秒,对于不经常更改的网络最多需要半小时或更长时间- 由于更快的故障转移容忍度和更少的错误定向流量,更短的超时是首选,但更长的时间可以节省静态以太网中 ARP 协议的开销)。当主安全设备位于主交换机或 WAN 和互连的非托管交换机在整个大型网段中引导流量时,这也不再是一个问题。在这种情况下,ARP 中毒可以简单地影响网络的很大一部分,而不会触发安全设备。其他因素会影响这一点,例如像 STP 这样的协议(跨越三个协议,它旨在在拓扑发生变化时更新交换机已知的网络拓扑 - 例如,如果交换机从一个端口移动到另一个端口)。实际上,在同时具有 STP 和 IGMP 的错误配置网络中,简单地拔下设备并将其插入不同的交换机端口将触发所谓的 IGMP 泛洪,这将导致所有交换机的行为类似于“哑”集线器,直到 ARP缓存是跨设备同步的——在此期间,所有流量将在所有接口上可见的时间段通常等于最大设备 ARP 缓存超时。
另外,或与 ARP 欺骗/缓存中毒相结合,有时可以使用 MAC 欺骗,要么与 ARP 缓存中毒一起欺骗安全设备,要么仅靠它自己。一个好的策略是克隆 WAN 设备的 MAC(Linux 中的 macchanger 命令)通常是一种很有前途的技术。有时,将您的 IP 设置为与您的目标相同的静态 IP 就足以欺骗路由协议发送不适合您的流量——同样,除了 ARP 欺骗之外,这也是有益的。克隆您的主机名有助于避免检测。
如果您的目标是调试(或监视)单个目标机器,那么您可能最好结合这里讨论的所有内容,尽您所能。尝试将监听设备接入目标设备的网段。那么您所需要的只是启用混杂模式。如果这不是一个选项,请尝试至少从主交换机获得与目标相同的网段,并使用攻击性较小的 ARP 欺骗/缓存中毒和/或 MAC 克隆(也可能克隆 IP,尽管接口混杂模式不应该需要分配的 IP,这可能会导致两个设备都被迫离开网络),如果所有其他方法都失败了,请使用积极的 ARP 中毒。还要记住,有可能在单个目标上执行 ARP 欺骗 - 破坏机器的缓存,导致它向您发送数据包而不是它的预期目的地。这种类型的主动 ARP 中毒在您主动将数据包转发到预期的终止时效果最佳 - 或者您的设备根本不会响应,导致受害者认为他们的连接已断开,尽管如果存在多个条目或收到冲突的响应ARP请求,设备向所有设备发送数据包是正常的,响应的成为半永久缓存条目,而根据系统,违规条目经常被列入黑名单一段时间,因此为什么使用MITM(中间的人)转发是节拍练习。
如果您的目标是简单地调试网络,只需将以太网卡置于混杂模式即可让您收集有关网络的大量信息,您将看到几乎所有网络控制消息,并清楚地了解哪些设备是最活跃,并看到在设备 ARP 表被填充之前发送的一些单播数据包。这不需要欺骗并且在wireshark中完全自动化,并且可以sudo ifconfig eth# mode promisc' or在linux中使用ifconfig { sudo ifconfig eth# promisc'(如果我认为是正确的)}来完成,同样,如果支持,也可以启用任播接收。
应该注意的是,根据您的 NIC 固件、安装的驱动程序、如果您使用的是 win 或 linux 等,只需在适配器上启用混杂模式通常会启用一种被动 ARP 欺骗形式以允许接收所有(或大多数) ,至少在您的网段上)单播数据包。但是,如果需要监视来自远程网段的所有网段上的所有流量,则使用主动、激进的 ARP 缓存中毒会更有效。不保证执行任何 ARP 活动,但是,只允许接收通过线路传输的所有数据包
请注意,因为许多安全设备依赖于 ARP 缓存中毒插入网络并被动嗅探所有传入流量以检测奇怪的模式和跳闸警报,并且因为积极漫游的 WiFi 设备可以不断地与不同网段上的 AP 关联,速度比ARP 缓存超时——从网络控制的角度来看,它实际上出现在两个位置,虽然它没有做任何恶意的事情,但大多数网络硬件将允许 ARP 欺骗,除非在高安全性环境中手动禁用它(即使这样,它也是一种权衡因为它可以防止被动侦听/DPI/IPS/IDS 设备。如果您知道此类设备的 MAC,则克隆您的 MAC 以匹配它并执行您自己的 ARP 缓存中毒可能是您的最佳选择。还可以预期,如果流氓 ARP 设备位于 WAN 设备的内部(面向 LAN 的一侧),则物理安全应防止流氓设备出现在内部,因此被认为威胁较小。
在过去,当交换机是新的且价格昂贵时,集线器是互连多个网段的主要方式,即使是大型网络的任何部分都可以看到所有流量,但是,这显然不太理想——因为拥塞在网络上非常高 - 即使是中等 LAN 的不稳定点
请注意,当今的大部分流量都是通过 TLS 加密的,因此虽然您可能能够捕获连接并确定连接到何处的设备,但您将无法破译 95% 的对话。
一些有用的命令 发送 TCP|UDP|UDPLITE|ICMP ping 或 traceroute,而不是默认的 UDP traceroute/ICMP ping;ping -e 标志提供数据包封装信息,注意 ARP 中毒不会通过 MPLS/VPN 隧道或跨 L4 路由网段或跨 VLAN 成功,除非嗅探设备在默认 VLAN 上(例如 2 个部门使用中间有一个内部路由器,每个路由器都在不同的子网/网络上 - 这会创建一个屏障,只有在数据包满足管理员制定的预定义规则时,数据包才会穿过该屏障)。-当然 apt/yum/dnf/apt-get [search|install] 或 rpm -i 用于在 fedora/RHEL 上预先下载的包(包管理器安装任何丢失的软件)发送 TCP|UDP|UDPLITE|ICMP ping 或 traceroute,而不是默认的 UDP traceroute/ICMP ping;ping -e 标志提供数据包封装信息,注意 ARP 中毒不会通过 MPLS/VPN 隧道或跨 L4 路由网段或跨 VLAN 成功,除非嗅探设备在默认 VLAN 上(例如 2 个部门使用中间有一个内部路由器,每个路由器都在不同的子网/网络上 - 这会创建一个屏障,只有在数据包满足管理员制定的预定义规则时,数据包才会穿过该屏障)。-当然 apt/yum/dnf/apt-get [search|install] 或 rpm -i 用于在 fedora/RHEL 上预先下载的包(包管理器安装任何丢失的软件)请注意,ARP 中毒不会通过 MPLS/VPN 隧道或跨 L4 路由网段或跨 VLAN 成功,除非嗅探设备位于默认 VLAN(例如 2 个部门,中间有一个内部路由器,每个部门在不同的子网/网络 - 这会创建一个屏障,只有当数据包满足管理员制定的预定义规则时,才能通过该屏障)。-当然 apt/yum/dnf/apt-get [search|install] 或 rpm -i 用于在 fedora/RHEL 上预先下载的包(包管理器安装任何丢失的软件)请注意,ARP 中毒不会通过 MPLS/VPN 隧道或跨 L4 路由网段或跨 VLAN 成功,除非嗅探设备位于默认 VLAN(例如 2 个部门,中间有一个内部路由器,每个部门在不同的子网/网络 - 这会创建一个屏障,只有当数据包满足管理员制定的预定义规则时,才能通过该屏障)。-当然 apt/yum/dnf/apt-get [search|install] 或 rpm -i 用于在 fedora/RHEL 上预先下载的包(包管理器安装任何丢失的软件)
免责声明(仅用于负责任地使用信息):有关可能逃避安全设备检测、窃听一个或多个目标或执行任何其他可能被视为“黑客”、“破解”、“冒充”(数字或否则)或“欺骗”,和/或此处提供的可能以恶意和/或非法方式使用的任何和所有信息(根据该术语的最宽松定义和任何或所有司法管辖区的法律)仅供参考 - 不是关于如何进行上述活动的教程或建议。上述任何内容均不构成建议或鼓励犯罪或违反任何法律,也不构成对任何个人造成损害的建议或鼓励。这些信息是严格出于假设目的提供的,因此在所有方面都应该而且必须被视为假设性的。任何个人以此处禁止的方式或其他方式通过常识推理、道德上不公正或错误或以出版商服务条款禁止的方式使用此信息的任何尝试,均不反映对任何一方的任何责任内容的作者或出版商,在任何情况下,在任何司法管辖区。除版权问题外,本声明完全补充了出版商的服务条款。此处的版权声明 (2019) 取代了出版商对材料的任何声明。作者(Cryptostack Services LLC 和 Dylan J Bennett)应拥有根据要求和/或愿望复制和/或重新发布和/或删除本材料的平等和所有权利。上面括号中的作者应保留版权的全部权力和 DMCA 下的所有权利。这是作者发布网站的服务条款的补充。除了原始(网络相关问题的堆栈交换子论坛)发布媒体之外,任何人不得在任何其他媒体(电子或模拟)上复制或重新发布此信息。违反此类请求应构成对金钱赔偿负责的损害赔偿。如果作者就所遭受的任何损害寻求民事赔偿,则违反者构成故意放弃由法官或陪审团审判的权利——但作者保留向纽约南区或附近其他法院提起民事诉讼或向法院提起民事诉讼的权利。选择由作者在美国纽约州选择的公司进行仲裁。无论出版商声明的服务条款如何,在本论坛上发表文章绝不放弃作者的独家所有权、复制特权、寻求损害赔偿的能力等。本声明是对出版商的任何条款或使用和/或服务的补充,并应取代本声明之前的任何材料。如果出版商的条款与这些条款相矛盾,则应视为优先。假设发布者知道并对其媒体上的内容负责,因此如果有异议,可能会故意删除该帖子的全部内容。未能删除作者发布的全部内容是此处的违规行为。此外,作者和出版商均放弃因本文中包含的信息和方法造成的损害的所有责任-因为所有信息均来自其他公开可用的来源,因此本文的唯一目的只是为了提供访问已用于回答个人提出的问题的可用知识,据作者和出版商所知,该人不会对任何个人、组织或其他方面构成威胁。本声明旨在保护作者(如上所述)和出版商免于承担责任。该声明由本文全文的作者(如上所述)起草。本声明的语言是简单的英语,不应过度解释。需要常识性解释。因此,这篇文章的目的仅在于提供对现有知识的访问,以回答个人提出的问题,据作者和出版商所知,该个人不会对任何个人、组织或组织构成威胁。否则。本声明旨在保护作者(如上所述)和出版商免于承担责任。该声明由本文全文的作者(如上所述)起草。本声明的语言是简单的英语,不应过度解释。需要常识性解释。因此,这篇文章的目的仅在于提供对现有知识的访问,以回答个人提出的问题,据作者和出版商所知,该个人不会对任何个人、组织或组织构成威胁。否则。本声明旨在保护作者(如上所述)和出版商免于承担责任。该声明由本文全文的作者(如上所述)起草。本声明的语言是简单的英语,不应过度解释。需要常识性解释。不会对任何个人、组织或其他方面构成威胁。本声明旨在保护作者(如上所述)和出版商免于承担责任。该声明由本文全文的作者(如上所述)起草。本声明的语言是简单的英语,不应过度解释。需要常识性解释。不会对任何个人、组织或其他方面构成威胁。本声明旨在保护作者(如上所述)和出版商免于承担责任。该声明由本文全文的作者(如上所述)起草。本声明的语言是简单的英语,不应过度解释。需要常识性解释。