Auditar contrasinal Wi-Fi WPA2 (PSK) ieee80211w (PMF) con Wifite
LIMITACIÓN DE RESPONSABILIDADE
O autor do presente documento declina calquera responsabilidade asociada ao uso incorrecto e/ou malicioso que puidese realizarse coa información exposta no mesmo. Este documento foi xerado para uso didáctico e debe ser empregado en contornas privadas e virtuais controladas co permiso correspondente do administrador desas contornas.
O uso de Wifite ou calquera outra ferramenta de auditoría en redes Wi-Fi sen autorización expresa é ILEGAL.
1. Resumo
Esta práctica demostra como PMF (Protected Management Frames, ieee80211w) protexe as redes WPA2-PSK contra ataques de desautenticación forzada. Empregaremos Wifite para intentar capturar un handshake mediante desautenticación, e verificaremos que cando PMF é obrigatorio (ieee80211w=2), o ataque falla.
Obxectivos de aprendizaxe:
- Comprender o papel de ieee80211w na protección contra ataques de desautenticación
- Verificar que Wifite (e aireplay-ng) NON poden desautenticar clientes cando PMF está activo
- Analizar as tramas de xestión cifradas con tshark
- Contrastar co escenario sen PMF (Práctica 1-1)
2. Material necesario
Hardware/Software:
- Host alumnado
- Máquina virtual GNU/Linux Kali amd64
- RAM ≥ 2048MB
- CPU ≥ 2 cores
- PAE/NX habilitado
- ISO: Kali Live amd64
Ferramentas:
- wifite
- hostapd
- wpa_supplicant
- mac80211_hwsim
- aircrack-ng suite (aireplay-ng, airodump-ng)
- tshark (análise de tramas)
- Wordlist: /usr/share/wordlists/rockyou.txt.gz
Referencias:
- [0] 1-Taller-HE-Practica-WiFi-3.pdf
- [1] IEEE 802.11w-2009 (Protected Management Frames)
- [2] hostapd ieee80211w configuration
3. Escenario e topoloxía
| Rol | Interface | Namespace | Estado tras wifilabctl up |
|---|---|---|---|
| AP WPA2-PSK + PMF | wlan0 |
wifi_ap_wlan0 |
✅ Automático |
| Cliente PMF | wlan1 |
wifi_cliente_wlan1 |
✅ Automático |
| Atacante (Wifite) | wlan2 |
(global) | ⏳ Interface libre |
| Monitor (aireplay) | wlan3 |
(global) | ⏳ Interface libre |
SSID: EMPRESA-XYZ · Contrasinal: spongebob19 · Canal: 6 · ieee80211w: 2 (obrigatorio) · key_mgmt: WPA-PSK-SHA256
[wlan1: Cliente PMF] ----wireless----> [wlan0: AP WPA2-PSK + PMF]
^
|
[wlan2mon: Wifite]
[wlan3mon: airodump-ng]
(intentos de deauth → FALLAN con PMF)
💡
wifilabctl up psk_pmflevanta automaticamente AP e cliente con PMF configurado. As terminais son para observación e ataque, non para configuración manual.
4. Procedemento
Resumo de terminais: | Terminal | Rol | |----------|--------------------------------------------| | 1 | Arrancar e xestionar o escenario | | 2 | Monitorizar logs do AP en tempo real | | 3 | Executar o ataque con Wifite | | 4 | Captura e análise de tramas con tshark |
Terminal 1 — Arrancar o escenario
# Arrancar o escenario PSK con PMF obrigatorio
sudo wifilabctl up psk_pmf
# Verificar que AP e cliente están activos con PMF
sudo wifilabctl status
Saída esperada ao finalizar:
[*] Informe de Estado do Laboratorio
============================================================
NAMESPACE INTERFACE IP ESTADO
---------------------------------------------------------------------------
wifi_cliente_wlan1 wlan1 - UP
wifi_ap_wlan0 wlan0 - UP
---------------------------------------------------------------------------
Interfaces GLOBAIS / ATACANTE:
(global) wlan2 (host/monitor) LISTO
(global) wlan3 (host/monitor) LISTO
⚠️ O escenario configura automaticamente
ieee80211w=2ewpa_key_mgmt=WPA-PSK-SHA256no AP (hostapd_pmf.conf) e no cliente (wpa_pmf.conf). Non é necesario ningún paso manual.
Terminal 2 — Monitorizar logs do AP (en tempo real)
Abrir esta terminal antes de lanzar o ataque para observar os logs do AP lexítimo:
Deixar correndo.
Terminal 3 — Ataque con Wifite
Paso 1: Acceder como root e preparar wordlist
Paso 2: Lanzar Wifite
Paso 3: Avisos de procesos en conflito — non matar
Wifite detectará os procesos do escenario (hostapd, wpa_supplicant) e avisará:
[!] Conflicting processes: NetworkManager (PID 642), wpa_supplicant (PID 1919),
hostapd (PID 2009), wpa_supplicant (PID 2024)
[!] If you have problems: kill -9 PID or re-run wifite with --kill
⚠️ Non matar eses procesos. Son o AP e o cliente do escenario de laboratorio. Ignorar o aviso e continuar.
Paso 4: Seleccionar a interface de ataque
Con mac80211_hwsim, Wifite non selecciona automaticamente a interface. Lista wlan2 e wlan3 e pide escoller:
Interface PHY Driver Chipset
-----------------------------------------------------------------------
1. wlan2 phy2 ?????? non-mac80211 device? (report this!)
2. wlan3 phy3 ?????? non-mac80211 device? (report this!)
[+] Select wireless interface (1-2): 1
Introducir 1 para seleccionar wlan2 e premer Enter.
💡 O aviso
non-mac80211 device?é normal con interfaces virtuais. Non impide o funcionamento.
Paso 5: Escaneo e selección do AP obxectivo
Wifite escaneará en modo monitor. Cando apareza EMPRESA-XYZ premer Ctrl+C:
NUM ESSID CH ENCR PWR WPS CLIENT
--- ------------------------- --- ----- ---- --- ------
1 EMPRESA-XYZ 6 WPA-P 72db no
Introducir 1 e premer Enter.
Paso 6: Ataque PMKID (primeiro intento automático — fallará)
Wifite tenta o PMKID primeiro. Con mac80211_hwsim non funciona (ver Práctica 1-3). Premer Ctrl+C para cancelar e logo c para continuar:
[+] (1/1) Starting attacks against 06:FE:D8:7D:4F:43 (EMPRESA-XYZ)
[+] EMPRESA-XYZ (72db) PMKID CAPTURE: Waiting for PMKID (4m47s) ^C
[!] Interrupted
[+] 1 attack(s) remain
[+] Do you want to continue attacking, or exit (c, e)? c
Paso 7: Captura do handshake WPA — FALLARÁ con PMF ⬅ resultado esperado
Wifite pasa ao ataque de handshake e intenta desautenticar o cliente.
Abrir un Terminal 4 para análise de tramas con tshark (mentres Wifite intenta o handshake):
sudo su -
# Capturar tráfico con wlan3 mentres Wifite usa wlan2mon
airodump-ng wlan3 -c 6 -w /tmp/pmf-test
# Esperar ~30 segundos e premer Ctrl+C
# Analizar tramas de desautenticación capturadas
tshark -r /tmp/pmf-test-01.cap -Y "wlan.fc.type_subtype == 0x000c" -T fields -e frame.number -e wlan.fc.protected -e wlan.sa -e wlan.da
Saída esperada:
# Tramas LEXÍTIMAS do cliente (cifradas con PMF):
# frame wlan.fc.protected wlan.sa wlan.da
# 42 True <MAC_cliente> <BSSID_AP>
# Tramas FALSAS do atacante (non cifradas → rexeitadas):
# 43 False <MAC_atacante> <BSSID_AP>
Interpretación:
- wlan.fc.protected=True → Trama cifrada con PMF ✔
- wlan.fc.protected=False → Trama NON cifrada, rexeitada polo AP ✗
Saída esperada de wifite:
[+] EMPRESA-XYZ (72db) WPA Handshake capture: Discovered new client: 42:F9:95:B2:CB:34
[+] EMPRESA-XYZ (72db) WPA Handshake capture: Listening. (clients:1, deauth:7s, timeout:0s)
[!] WPA handshake capture FAILED: Timed out after 300 seconds
[+] Finished attacking 1 target(s), exiting
[!] Note: Leaving interface in Monitor Mode!
[!] To disable Monitor Mode when finished: airmon-ng stop wlan2mon
O ataque falla porque PMF bloquea todas as tramas de desautenticación do atacante.
CLAVE
O AP rexeita os paquetes de desautenticación porque:
- PMF require que as tramas de xestión estean cifradas coas claves de sesión
- O atacante non coñece as claves de sesión → non pode forxar tramas deauth válidas
Terminal 1 — Verificacións finais
# Verificar que o cliente permanece conectado tras o ataque
sudo ip netns exec wifi_cliente_wlan1 iw dev wlan1 link
# Connected to <BSSID_AP> (on wlan1)
# SSID: EMPRESA-XYZ
# Confirmar que Wifite NON capturou ningún handshake (nesta práctica)
sudo ls -lh /root/hs/
# (vacío ou sen ficheiros .cap válidos)
# Verificar que NON houbo ningunha desconexión no cliente
grep CTRL-EVENT-DISCONNECTED /home/kali/wifiLab/run/psk_pmf/wpa_supplicant.log
# (resultado baleiro = cliente nunca se desconectou)
5. Limitacións de Wifite e reflexión didáctica
Wifite NON pode capturar handshakes cando PMF é obrigatorio porque:
1. Depende de aireplay-ng --deauth para forzar a reconexión do cliente
2. PMF cifra as tramas de xestión (deauth, disassoc) con claves de sesión
3. O atacante non coñece estas claves → non pode falsificar tramas deauth válidas
Conclusión: Wifite é ineficaz contra redes con ieee80211w=2.
Reflexión:
- PMF NON protexe o handshake en si (segue sendo auditable se se captura durante conexión inicial ou reinicio do AP)
- PMF SÓ protexe contra desautenticacións forzadas
- A mellor defensa é contrasinal forte + WPA3-SAE (que elimina os ataques offline ao handshake)
6. Preguntas de reflexión
-
Que diferenza hai entre
ieee80211w=0,ieee80211w=1eieee80211w=2?0: PMF desactivado — vulnerable a desautenticación1: PMF opcional — clientes con e sen PMF poden conectarse2: PMF obrigatorio — só clientes con PMF, todos protexidos
-
Por que Wifite non puido capturar o handshake nesta práctica?
- Depende de desautenticar o cliente para forzar a reconexión
- PMF cifra as tramas de desautenticación — o atacante non pode falsificalas
-
PMF protexe o contrasinal WPA2?
- NON. PMF só protexe as tramas de xestión. O handshake capturado durante a conexión inicial segue sendo auditable con
aircrack-ng.
- NON. PMF só protexe as tramas de xestión. O handshake capturado durante a conexión inicial segue sendo auditable con
-
Que tipo de ataques mitiga PMF?
- Desautenticación forzada (DoS), disassociation forzada, ataques Evil Twin baseados en deauth
-
Que alternativas hai se se require seguridade total contra ataques offline ao handshake?
- WPA3-SAE (elimina ataques offline ao handshake), WPA2-EAP (autenticación centralizada con RADIUS)
-
É posible desactivar PMF nunha rede WPA3?
- NON. WPA3-SAE require
ieee80211w=2por especificación.
- NON. WPA3-SAE require
7. Limpeza do laboratorio
Terminal 1:
# Deter e eliminar o escenario completamente
sudo wifilabctl reset
# Verificar que non quedan namespaces
ip netns list
Terminal 3 (se Wifite deixou a interface en modo monitor):