该脚本是一个利用 KR00K 漏洞(CVE-2019-15126)的简单实验,可以解密易受攻击设备(接入点或客户端)中的部分 WPA2 CCMP 数据。 更具体地说,该脚本尝试在已知以下信息的情况下恢复 WPA2 CCMP 数据包的解密数据:
其中:
该 PoC 适用于频率为 2.4GHz 的 WPA2 AES CCMP WLAN。(注意:仅使用我的无线适配器 TPLINK TL-WN722N 测试过,但我认为它也应该适用于其他能够注入数据包的无线适配器)。
要检测 Kr00k 漏洞,可能需要多次启动 PoC,因为(似乎)易受攻击设备上并不总是缓冲了足够数量的数据(提示:尝试使用流媒体应用、视频通话等)。
该脚本必须以特权用户身份运行,且无线接口需配置为监听模式(monitor mode)。
需要安装 Python 包 "scapy" 和 "Cryptodome"。 该脚本兼容 Python 3。
以下为该工具的一些用法示例。您必须填入 AP 和客户端的 MAC 地址,同时,设置 WPA2 CCMP WLAN 的正确 WiFi 信道以及指定目标标识符也很重要。 使用 "--help" 选项可获取更完整的列表。
# python3 kr00ker.py -i <interface-name> -b <BSSID> -c <MAC-client> -n <num-packets> -r <reason-id> -t <target-id> -w <wifi-channel> -d <delay>
以下是一些示例。
使用接口 wlan0mon 针对客户端(-t client)设备发起 Kr00k 攻击,reason 为 3,延迟 2 秒,取消关联帧数量为 5,WiFi 信道为 2:
# python3 kr00ker.py -i wlan0mon -b XX:XX:XX:XX:XX:XX -c ZZ:ZZ:ZZ:ZZ:ZZ:ZZ -n 5 -r 3 -t client -w 2 -d 2
使用接口 wlan0mon 针对接入点(-t ap)设备发起 Kr00k 攻击,reason 使用默认值 7,延迟使用默认值 4 秒,取消关联帧数量使用默认值 1,WiFi 信道为 11:
$ sudo python3 kr00ker.py -i wlan0mon -b XX:XX:XX:XX:XX:XX -c ZZ:ZZ:ZZ:ZZ:ZZ:ZZ -t ap -w 11
当目标设备上触发 Kr00k 漏洞时,输出中会显示解密数据的十六进制转储(hexdump),同时这些数据也会保存到 pcap 文件中。
以下是针对 KR00K 易受攻击设备的输出示例:

kr00ker 由 Maurizio Siddu 开发
版权所有(c)2020 kr00ker
本程序为自由软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证(GNU General Public License)的条款(许可证第 3 版,或(由您选择)任何更高版本)对其进行重新分发和/或修改。
本程序的分发希望它会有用,但不提供任何担保;甚至不包含适销性或特定用途适用性的默示担保。有关更多详情,请参阅 GNU 通用公共许可证。
您应该已经随本程序收到一份 GNU 通用公共许可证的副本。如果没有,请参阅 http://www.gnu.org/licenses/。