我可以使用 scapy 在 WPA2 网络上伪造自定义数据包吗?我甚至可以打包 IEEE 802.11 标头吗?我可以访问 WPA2 密码,那么有什么可以阻止我这样做吗?
答案1
WPA2 使用 AES-CCMP。CCMP 代表反模式 CBC-MAC 协议。CBC-MAC 表示密码块链接消息认证码。这些消息认证码 (MAC) 可防止伪造和重放。
我不确定,但我认为即使您拥有网络的 WPA2 密码和 SSID,这让您知道派生 PSK(预共享密钥),即 PMK(成对主密钥),即使您在客户端加入时捕获 WPA2 握手,这样您就可以获得可以确定该客户端的 PTK(成对临时密钥)和其余密钥层次结构的随机数,我认为那些 CBC-MAC 仍然会使伪造帧变得困难,就好像它们来自该客户端一样(或者伪造从 AP 到该客户端的帧,就好像它们来自 AP 一样)。
换句话说:
知道 WPA2-PSK 密码和网络的 SSID,然后在目标客户端(重新)加入网络时捕获其 WPA2 握手,就足以让你解密该客户端和 AP 之间双向的流量。但我认为 CBC-MAC 仍然会使这两个设备之间的数据包伪造甚至重放变得困难。但在这一点上我可能错了。
我试图回答在安全协议下这在理论上是否可行。另一个问题是 scapy 是否包含可为您执行此操作的代码。我对 scapy 不太熟悉,因此无法为您回答这一部分。但如果 scapy 有伪造 CBC-MAC 的代码,则可能表明在 WPA2-PSK 网络上是可行的。
WPA2-Enterprise(使用 802.1X)则是另一回事,因为每次客户端(重新)加入时,WPA2-Enterprise 都会创建新的 PMK,因此即使您捕获目标客户端的 WPA2 握手,您也没有所需的信息来派生密钥层次结构并解密该客户端的流量。