Crear una Base de Datos de PMK con airolib-ng

Beginner
Practicar Ahora

Introducción

airolib-ng es una herramienta potente dentro de la suite Aircrack-ng diseñada para gestionar y utilizar bases de datos de Claves Maestras Precalculadas (PMK). Al intentar descifrar un handshake WPA/WPA2, la parte que más tiempo consume es el cálculo de la PMK a partir de una posible frase de contraseña y el nombre de la red (ESSID).

Precalculando estas PMK para una lista de frases de contraseña y nombres de red comunes y almacenándolas en una base de datos, se puede acelerar drásticamente el proceso de descifrado. En lugar de realizar el cálculo intensivo para cada contraseña durante el ataque, aircrack-ng puede simplemente buscar la PMK en la base de datos.

En este laboratorio, aprenderá las operaciones fundamentales de airolib-ng para crear y poblar una base de datos de PMK.

Comprender el Concepto de una Base de Datos de Claves Maestras Precalculadas

En este paso, cubriremos la teoría detrás de las bases de datos de PMK antes de comenzar a usar airolib-ng. No hay comandos que ejecutar en este paso.

La seguridad de las redes WPA/WPA2 se basa en un handshake de cuatro vías que utiliza una Clave Maestra de Par (PMK) para cifrar el tráfico. Esta PMK se deriva de la contraseña de la red (passphrase) y su nombre (ESSID). La fórmula es:

PMK = PBKDF2(passphrase, SSID, 4096 iteraciones, salida de 256 bits)

Cuando intentas descifrar un handshake WPA/WPA2 capturado utilizando una herramienta como aircrack-ng y una lista de palabras (wordlist), la herramienta realiza este cálculo para cada contraseña de tu lista. Las 4096 iteraciones hacen que este proceso sea computacionalmente costoso y lento.

Aquí es donde entra airolib-ng. Te permite realizar este trabajo pesado con antelación. Puedes tomar una lista de ESSIDs comunes y una lista de palabras grande de frases de contraseña y precalcular todas las PMKs resultantes. Estas PMKs se almacenan luego en una base de datos SQLite eficiente.

Cuando llega el momento de descifrar un handshake, aircrack-ng puede usar esta base de datos. En lugar de calcular la PMK para cada contraseña, la calcula una vez a partir del ESSID del handshake capturado y la contraseña de la lista de palabras, y luego busca el resultado en tu base de datos precalculada. Esta búsqueda es miles de veces más rápida que el cálculo completo, reduciendo drásticamente el tiempo de descifrado.

En los siguientes pasos, crearás una base de datos de este tipo, la poblarás con un ESSID y contraseñas, y verificarás su integridad.

Crear una Nueva Base de Datos SQLite con airolib-ng --new

En este paso, crearemos una nueva base de datos SQLite vacía que almacenará nuestras PMKs. Todo nuestro trabajo se realizará en el directorio ~/project.

Usamos el comando airolib-ng seguido del nombre de la base de datos deseada y la bandera --new. Esta bandera le indica a airolib-ng que inicialice un nuevo archivo de base de datos.

Creemos una base de datos llamada pmk_db. Ejecuta el siguiente comando en tu terminal:

airolib-ng pmk_db --new

La herramienta creará el archivo pmk_db en tu directorio actual (~/project) y configurará las tablas necesarias dentro de él. Deberías ver una salida que confirma la creación e inicialización de la base de datos.

Salida esperada:

Database 'pmk_db' created.
Wrote 1 ESSIDs and 0 PMKs.

Puedes verificar que el archivo ha sido creado usando el comando ls:

ls -l pmk_db

Salida esperada:

-rw-r--r-- 1 labex labex 8192 May 20 10:30 pmk_db

Importar un Único ESSID a la Base de Datos usando --import essid

En este paso, agregaremos un nombre de red (ESSID) a su base de datos recién creada. La base de datos necesita saber para qué ESSIDs desea precalcular las PMKs.

Usaremos la opción --import essid. Esta opción puede tomar un único ESSID como argumento desde la línea de comandos o una lista de ESSIDs desde un archivo. Para este laboratorio, importaremos un único ESSID llamado MyHomeWiFi.

Ejecuta el siguiente comando para importar el ESSID a tu base de datos pmk_db:

airolib-ng pmk_db --import essid MyHomeWiFi

Verás una salida que indica que la base de datos está siendo leída y que se ha escrito un ESSID.

Salida esperada:

Reading file...
Wrote 1 ESSIDs and 0 PMKs.
Done.

Ahora su base de datos conoce la red MyHomeWiFi y está lista para almacenar las PMKs asociadas a ella.

Importar una Lista de Palabras para Calcular PMKs para ese ESSID

En este paso, importaremos una lista de contraseñas (una lista de palabras o wordlist) y haremos que airolib-ng calcule las PMKs para el ESSID que importamos en el paso anterior.

El script de configuración para este laboratorio ya ha creado un pequeño archivo de lista de palabras para ti llamado wordlist.txt en el directorio ~/project. Usaremos la opción --import pwd para leer este archivo. Para cada contraseña en wordlist.txt, airolib-ng calculará la PMK para el ESSID MyHomeWiFi y almacenará el resultado en la base de datos.

Ejecuta el siguiente comando:

airolib-ng pmk_db --import pwd wordlist.txt

La herramienta leerá las contraseñas del archivo y calculará las PMKs. Nuestro wordlist.txt contiene 4 contraseñas, y tenemos 1 ESSID en la base de datos, por lo que calculará y almacenará 4 PMKs.

Salida esperada:

Reading file...
Wrote 0 ESSIDs and 4 PMKs.
Done.

Tu base de datos ahora contiene las claves precalculadas para la red MyHomeWiFi para cada contraseña en wordlist.txt.

Ejecutar una Operación por Lotes para Verificar la Integridad de la Base de Datos

En este paso, aprenderá cómo verificar el contenido de su base de datos y calcular los pares de PMK faltantes. Este es un paso de mantenimiento crucial, especialmente para bases de datos grandes.

La opción --batch realiza una operación completa. Encuentra todas las combinaciones de pares de ESSIDs y contraseñas en la base de datos y calcula la PMK para cualquier par que aún no tenga una. También sirve como una forma de verificar la integridad de las PMKs existentes al recalcularlas y compararlas.

Ejecuta el comando por lotes en tu base de datos pmk_db:

airolib-ng pmk_db --batch

Dado que acabamos de calcular todos los pares posibles en el paso anterior (1 ESSID x 4 contraseñas), el comando encontrará que no se necesitan calcular nuevas PMKs. Simplemente verificará las existentes.

Salida esperada:

All PMKs have been computed for all ESSIDs.
Nothing to do.

Si agregaras un nuevo ESSID o una nueva lista de palabras, ejecutar el comando --batch sería la forma más eficiente de actualizar la base de datos con todas las nuevas combinaciones de PMK.

Resumen

¡Felicidades! Ha creado y gestionado con éxito una base de datos de Claves Maestras Precalculadas (PMK) utilizando airolib-ng.

En este laboratorio, ha aprendido a:

  • Comprender el concepto y el beneficio de una base de datos de PMK para acelerar el cracking de WPA/WPA2.
  • Crear una base de datos nueva y vacía usando airolib-ng --new.
  • Importar un nombre de red en la base de datos usando airolib-ng --import essid.
  • Importar una lista de palabras y calcular las PMKs correspondientes usando airolib-ng --import pwd.
  • Ejecutar una operación por lotes para verificar y actualizar la base de datos usando airolib-ng --batch.

Con este conocimiento, ahora puede construir bases de datos de PMK más grandes y completas para acelerar significativamente sus evaluaciones de seguridad WPA/WPA2. La base de datos creada pmk_db podría usarse con aircrack-ng de la siguiente manera: aircrack-ng -r pmk_db your_capture_file.cap.