Introducción
Al descifrar handshakes WPA/WPA2 con aircrack-ng, el método estándar implica probar cada contraseña de una lista de palabras (wordlist). Para cada contraseña, aircrack-ng debe calcular una Pairwise Master Key (PMK) y compararla con el handshake capturado. Este cálculo sobre la marcha puede consumir mucho tiempo, especialmente con listas de palabras grandes.
La herramienta airolib-ng ofrece una potente optimización. Permite precalcular todas las PMK para una red específica (ESSID) y una lista de palabras dada, almacenándolas en una base de datos. Cuando ejecutas el ataque, aircrack-ng puede usar esta base de datos para simplemente buscar las PMK en lugar de calcularlas, lo que resulta en un aumento drástico de la velocidad de descifrado.
En este laboratorio, aprenderás a usar una base de datos airolib-ng preconstruida para descifrar un handshake WPA y comparar su rendimiento con un ataque estándar basado en listas de palabras.
Capturar un Handshake WPA para un ESSID en tu Base de Datos
En este paso, inspeccionaremos el archivo de captura proporcionado para confirmar que contiene un handshake WPA válido. Para este laboratorio, se ha colocado un archivo de captura llamado wpa.cap en tu directorio ~/project. Este archivo contiene un handshake de cuatro vías capturado para la red que estaremos atacando.
Usemos aircrack-ng para ver el contenido de este archivo. Este comando no inicia un ataque; simplemente analiza el archivo y muestra un resumen de las redes que contiene.
Ejecuta el siguiente comando en tu terminal:
aircrack-ng wpa.cap
Deberías ver una salida que lista las redes inalámbricas encontradas en el archivo de captura. Anota el ESSID (el nombre de la red) y la confirmación de que se capturó un handshake.
Opening wpa.cap
Read 1 packets.
## BSSID ESSID Encryption
1 00:14:6C:7E:40:80 teddy WPA (1 handshake)
Choosing first network as target.
(press CTRL+C to abort)
Puedes presionar CTRL+C para salir del prompt de aircrack-ng. La información importante es que tenemos un handshake para el ESSID teddy. Esta es la red que atacaremos.
Construir el Comando aircrack-ng para el Ataque
En este paso, comenzaremos a construir el comando aircrack-ng para nuestro ataque. La sintaxis básica para un ataque WPA es aircrack-ng [opciones] <archivo de captura>.
Para hacer el ataque más eficiente, especialmente cuando un archivo de captura contiene múltiples redes, podemos especificar nuestro objetivo usando el parámetro -e seguido del ESSID. Basándonos en el paso anterior, nuestro ESSID objetivo es teddy.
Agreguemos esto a nuestro comando:
aircrack-ng -e teddy
Este comando aún no está completo. aircrack-ng todavía necesita saber de dónde obtener las contraseñas o PMK para probar. En un ataque estándar, usaríamos la bandera -w para proporcionar una lista de palabras (wordlist). Sin embargo, para este laboratorio, utilizaremos nuestra base de datos airolib-ng precalculada. Agregaremos el parámetro para la base de datos en el siguiente paso.
Especificar la Base de Datos usando el Parámetro -r
En este paso, completaremos nuestro comando indicando a aircrack-ng que utilice la base de datos airolib-ng. El parámetro para esto es -r (que significa "read database" - leer base de datos).
Durante el proceso de configuración de este laboratorio, se creó una base de datos llamada mydb en tu directorio ~/project. Esta base de datos contiene los PMK precalculados para el ESSID teddy y las contraseñas del archivo wordlist.txt.
Ahora, combinemos todas las partes: el comando aircrack-ng, el ESSID objetivo (-e teddy), la base de datos (-r mydb) y el archivo de captura (wpa.cap).
El comando final es:
aircrack-ng -e teddy -r mydb wpa.cap
Este comando le indica a aircrack-ng que:
- Tome como objetivo la red con ESSID
teddy. - Utilice los PMK precalculados de la base de datos
mydb. - Pruebe estos PMK contra el handshake encontrado en
wpa.cap.
En el siguiente paso, ejecutaremos este comando y observaremos los resultados.
Ejecutar el Ataque y Observar la Velocidad de Crackeo
En este paso, es hora de ejecutar el ataque utilizando nuestro comando completamente construido. Al usar la base de datos precalculada, esperamos que el proceso de crackeo sea extremadamente rápido.
Ejecuta el siguiente comando en tu terminal:
aircrack-ng -e teddy -r mydb wpa.cap
El programa se iniciará, abrirá la base de datos y el archivo de captura, y casi instantáneamente encontrará la clave correcta.
Tu salida debería parecerse a esto:
Opening mydb
Opening wpa.cap
Read 1 packets.
## BSSID ESSID Encryption
1 00:14:6C:7E:40:80 teddy WPA (1 handshake)
Choosing first network as target.
Opening mydb
Attack will be restarted every 5000 PMKs.
Starting attack on ESSID teddy...
KEY FOUND! [ biscotte ]
Master Key : 45 45 79 A2 25 5D F9 5A 47 2B 1E 15 7E 22 38 84
...
Transient Key : 82 2A 8F 85 42 29 A2 1A 29 69 F1 25 2B 23 4C 78
...
EAPOL HMAC : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Observa la rapidez con la que apareció el mensaje KEY FOUND!. La contraseña es biscotte. Dado que los PMK ya se habían calculado y almacenado en la base de datos mydb, aircrack-ng solo tuvo que realizar una búsqueda y comparación rápida, no los intensivos cálculos criptográficos.
Comparar el Rendimiento con un Ataque Estándar de Lista de Palabras
En este paso, para apreciar completamente la velocidad del método de base de datos airolib-ng, realizaremos el mismo ataque utilizando el método tradicional de lista de palabras (wordlist). Esto nos permitirá ver la diferencia de rendimiento de primera mano.
En un ataque estándar, usamos el parámetro -w para especificar un archivo de lista de palabras. aircrack-ng leerá cada contraseña del archivo, calculará su PMK y la probará.
El proceso de configuración creó un archivo llamado wordlist.txt para este propósito. Ejecutemos el ataque usando este archivo.
Ejecuta el siguiente comando:
aircrack-ng -e teddy -w wordlist.txt wpa.cap
Verás que aircrack-ng se inicia y comienza a probar claves. Presta atención a la visualización del estado, que muestra el número de claves probadas y la velocidad actual en claves por segundo (k/s).
Opening wpa.cap
Read 1 packets.
## BSSID ESSID Encryption
1 00:14:6C:7E:40:80 teddy WPA (1 handshake)
Choosing first network as target.
Opening wpa.cap
Opening wordlist.txt
Reading passwords from wordlist.txt
[0:00:00] 2 keys tested (XXXX.XX k/s)
KEY FOUND! [ biscotte ]
Master Key : 45 45 79 A2 25 5D F9 5A 47 2B 1E 15 7E 22 38 84
...
Transient Key : 82 2A 8F 85 42 29 A2 1A 29 69 F1 25 2B 23 4C 78
...
EAPOL HMAC : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Aunque la clave se encuentra rápidamente porque nuestra lista de palabras es muy pequeña, observa que hubo un proceso medible de prueba de claves. Con una lista de palabras grande que contenga millones de contraseñas, este proceso llevaría una cantidad significativa de tiempo. El ataque de base de datos, en contraste, fue casi instantáneo porque la parte computacionalmente costosa ya se había realizado.
Resumen
En este laboratorio, lograste crackear un handshake WPA utilizando una base de datos airolib-ng precalculada. Aprendiste a construir el comando aircrack-ng usando el parámetro -r para especificar la base de datos y observaste su rendimiento casi instantáneo.
Al comparar esto con un ataque estándar de lista de palabras usando el parámetro -w, fuiste testigo de la significativa ventaja de velocidad de precalcular los PMK. Esta técnica es invaluable para los profesionales de seguridad al dirigirse a una red específica con un gran diccionario de contraseñas potenciales, ya que separa la fase de cálculo que consume tiempo de la fase de crackeo final.
