TCPDump 并监听他人的 wifi 流量

网络工程 IEEE-802.11 转储
2021-07-09 21:08:09

这个线程是继续我的上一个,我在那里谈论 TCPDump 命令。

还有一些我没有得到的东西。根据这个网站(和其他一些网站),根据我的测试,TCPDump 的目标之一就是拦截和显示另一个用户或计算机的通信。所以基本上它可以嗅探网络上的所有内容,当数据未加密时,我们应该能够读取它们。

请告诉我以下内容是否正确:

让我们来谈谈设备 A、B 和 C 连接到 WiFi 接入点的无线网络。A、B 和 C 都在同一个网络上,比如 10.11.204.__,其中 A 是 10,B 是 20,C 是 30。

情况1)在正常情况下,如果A想和B通信,它会发送一个包头中带有B的IP地址的数据包。因此,如果第三个设备 C 位于同一网络上,它将接收发往 B 的数据包,但会发现 IP 地址与其自己的 IP 地址不同,因此会丢弃该数据包。

情况 2)当在完全相同的情况下使用 TCPDump 时(A 向 B 发送一个数据包,B 的 IP 在报头中),C 将收到该数据包,并会看到它不是发给他的,但不会丢弃它。我们将能够读取数据包中未加密的任何部分。(所以通常它只是标题)。

它是这样工作的吗?如果是这样,我不明白为什么我在用 iPhone 上网时无法读取计算机上的数据包。我对某些 Android 设备也有一些问题,对于这些设备,我只能读取“Echo”请求和“Echo”响应。

它在我的脑海中模糊不清,我喜欢网络,我想了解这一点。谢谢你。

1个回答

一个标准的 TCPDump,没有对无线 NIC 的模式进行任何修改,不会显示通过无线网络的所有帧。它只会显示针对(并且能够被)您的电台接收的帧。TCPDump 只是抓取专门传送到您的站点、解密并在正常以太网/IP 级别呈现给操作系统的信息。

要在无线网络上收听到达您站点的所有帧,您需要有一个能够在监控模式下运行的 NIC,然后将您的 NIC 置于监控模式。在监控模式下,您将无法发送流量,只能观察通道上的所有帧。这与以下操作类似:

iw phy phy0 interface add wlan2 type monitor
iw dev wlan2 set freq 2412
ifconfig wlan2 up

tcpdump -i wlan2

阅读文档iw获取更多信息,此外,请参阅页面以获取有关iw用于监控的一些有用信息,以及示例。

正如@ylearn 在评论中所指出的,您的站点只能在特定情况下捕获帧(有些情况比其他情况更明显):

  1. 在发送站的范围内(废话)
  2. 与发送站的类型相同(例如,单个与多个空间流)
  3. 收听与发送站相同的频道/频率(收听 2.4 GHz 频道不会帮助您捕获 5Ghz 流量等)

还有更多的条件,但最重要的是无线网络是无线的,因此无法保证传输流量,因此无法保证您的监控站收到。:)


综上所述,您可能拥有所有正在传输的帧,但您仍然需要解密这些帧。这本身就是一个很大的话题,但基础是这样的:任何 802.11 站发送到空中的帧都是加密发送的,因此不是任何人都可以嗅探所有连接。

Wireshark 在 Decyrypting 802.11 上有一个不错的介绍页面我建议阅读,理解它,然后从那里继续。


编辑以回应您的评论,@phenetas:

首先,正如我在回答中提到的,我在回答中假设您的操作系统是 Linux,因此我建议使用iw. 如果您真的想了解更多有关穿透 802.11 网络的知识,我建议您查看 linux 发行版,例如Kali Linux,它正是为此目的而设计的(请只为善使用此权力;权力越大责任越大,等等。)

但是,如果您坚持使用 MAC OSX,您还有其他选项可以将 NIC 置于监控模式(包括仅使用Wireshark而不是 TCPDump)。谷歌搜索 MAC OSX 监控模式应该可以帮助你。

最后,我会考虑阅读有关IP 广播mDNS(多播 DNS)的更多信息,因为这是您最初从其他设备看到的内容。这些不是“拦截”的数据包,这发往您设备的流量,这就是 TCPDump 显示数据包的原因。