是否可以将 Linux 机器上的 WiFi 适配器置于监控模式,然后告诉它加入特定的受 WPA2 保护的网络,以便我可以嗅探该网络上的所有无线流量?
我正在尝试设置类似Driftnet 相框项目从几个月前开始。
然而,有几个关键的区别阻碍了我(迄今为止)成功完成这项工作:
- 我想运行它我的無線網路。
- 我的无线网络正在使用 WPA2 密码。
- 我知道这个密码(很明显,但以防万一)。
我试图有效地嗅探我自己无线网络上的所有无线流量。(想想:监控孩子们对互联网的使用。)我知道即使是加密的 WiFi 网络也或多或少只是集线器,将所有数据包广播到所有节点,但我不知道如何(以解密形式)查看不属于我本人的流量。
我能想到几种方法来实现这一点,但我不清楚哪种方法最好(或者,甚至是可能的)。
我觉得我可以尝试让路由器简单地将每个数据包回显到我选择的另一个盒子,该盒子将对所有数据包运行 Driftnet。不过,这似乎会给我的路由器带来很大的开销。
这让我回到最初的问题。似乎在监控模式下,我得到了一切,更糟糕的是,一切都是加密形式。尽管我拥有这个网络并因此知道密码,但似乎没有任何方法对捕获的数据包进行后处理并在它们到达 Driftnet 之前对其进行解密。
我首先承认我对某些无线技术的理解有点稀疏,所以也许我在这里遗漏了一些非常基本的东西。
有人可以告诉我吗?
答案1
我认为最简单的方法是将接口置于监控模式,然后使用 wireshark。
在 wireshark 中,启用无线工具栏(查看菜单)并选择 Wireshark 作为解密器。然后单击解密密钥,并选择 WPA-PWD(因为您有密码),并将其与您的 SSID 一起输入。
然后开始捕获。请注意,要解密其他人的流量,wireshark 需要查看他们的握手(这在捕获中显示为 EOPOL)。您可能需要重新启动他们的无线会话,以便 wireshark 能够看到它。
此外,您可能需要在“编辑/首选项/IEEE 802.11”中切换 FCS 和保护位设置
这些都依赖于驱动程序,因此您可能只需要先试用一下,然后才能让它工作。
答案2
我感觉你的计划不会像你希望的那样可靠。你必须尝试定位嗅探器,以便它能够可靠地接收来自目标客户端和 AP 的每次传输,并且你必须确保嗅探器能够接收与目标和 AP 相同的所有数据速率(调制方案)。
如果目标客户端在任何时候因任何原因进入睡眠/唤醒或重新认证状态,您必须确保捕获他们的密钥握手,否则您将无法解密该会话的流量。正如@Paul 所暗示的那样,WPA2 具有从 PSK 派生的每个用户、每个会话的加密密钥加密钥握手中交换的一些随机数。如果您没有从目标客户端会话开始时捕获密钥握手,即使您知道 PSK,也无法解密其流量。这是 WPA 和 WPA2 安全性优于 WEP 的原因之一。