Ir ao contido

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_pmf levanta 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=2 e wpa_key_mgmt=WPA-PSK-SHA256 no 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:

tail -f /home/kali/wifiLab/run/psk_pmf/hostapd.log

Deixar correndo.


Terminal 3 — Ataque con Wifite

Paso 1: Acceder como root e preparar wordlist

sudo su -
gunzip -kf /usr/share/wordlists/rockyou.txt.gz

Paso 2: Lanzar Wifite

wifite --no-wps --dict /usr/share/wordlists/rockyou.txt

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.

 [+] Enabling monitor mode on wlan2... enabled!

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
 [+] Select target(s) (1-1) separated by commas, dashes or all: 1

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

  1. Que diferenza hai entre ieee80211w=0, ieee80211w=1 e ieee80211w=2?

    • 0: PMF desactivado — vulnerable a desautenticación
    • 1: PMF opcional — clientes con e sen PMF poden conectarse
    • 2: PMF obrigatorio — só clientes con PMF, todos protexidos
  2. 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
  3. 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.
  4. Que tipo de ataques mitiga PMF?

    • Desautenticación forzada (DoS), disassociation forzada, ataques Evil Twin baseados en deauth
  5. 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)
  6. É posible desactivar PMF nunha rede WPA3?

    • NON. WPA3-SAE require ieee80211w=2 por especificación.

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):

airmon-ng stop wlan2mon