Aircrack-ng es un programa crackeador de claves 802.11 WEP y WPA/WPA2-PSK. Aircrack-ng puede recuperar la clave WEP una vez que se han capturado suficientes paquetes encriptados con airodump-ng. Este programa de la suite aircrack-ng lleva a cabo varios tipos de ataques para descubrir la clave WEP con pequeñas cantidades de paquetes capturados, combinando ataques estadísticos con ataques de fuerza bruta. Para crackear claves WPA/WPA2-PSK, es necesario usar un diccionario.
LEYENDA
1 = Keybyte, es decir el número de cada uno de los bytes o caracteres de la clave.
2 = Profundidad de la actual búsqueda de la clave
3 = Byte o caracter que se está probando
4 = Votos o número de probabilidades de que sea correcto ese byte
En esta página: Techniques Papers encontrarás muchos links a otras webs que tienen algunos manuales que describen estas técnicas de forma más detallada y como funcionan las matemáticas que hay detrás de ellas.
Múltiples técnicas se combinan para crackear la clave WEP:
Ataques FMS ( Fluhrer, Mantin, Shamir) - son técnicas estadísticas
Ataques Korek - tambien técnicas estadísticas
Fuerza bruta
Cuando se usan técnicas estadísticas para crackear claves WEP, cada byte de la clave es tratado de forma individual. Usando matemáticas estadísticas, la posibilidad de que encuentres un byte determinado de la clave crece algo más de un 15% cuando se captura el vector de inicialización (IV) correcto para ese byte de la clave. Esencialmente, ciertos IVs “revelan” algún byte de la clave WEP. Esto es básicamente en que consisten las técnicas estadísticas.
Usando una serie de pruebas estadísticas llamadas FMS y ataques Korek, se van acumulando posibilidades o votos (votes) para cada byte de la clave WEP. Cada ataque tiene un número diferente de votos asociado con él, por lo que la probabilidad de cada ataque varia matemáticamente. Cuantos más votos tengamos de un byte o valor particular, mayor probabilidad hay de que sea el correcto. Para cada byte de la clave, la pantalla nos muestra el caracter más probable y el número de votos que ha acumulado. Sobra decir, que la clave que tenga el mayor número de votos es la que más probabilidades tiene de ser la correcta, pero no está garantizado. Aircrack-ng probará continuamente de la más probable a la menos probable para encontrar la clave.
Usando un ejemplo entenderemos esto de forma más clara. En la anterior captura de pantalla, puedes ver, que para el primer caracter o byte 0, 0xAE ha obtenido unos cuantos votos, 50 exactamente. Entonces, matemáticamente, es más probable que la clave comience por AE que por 11 (el segundo valor en la misma linea) que es el siguiente con más posibilidades. Esta es la razón por la cual cuantos más paquetes tengas, más fácil será para aircrack-ng determinar la clave WEP.
La aproximación estadística puede por si sola darnos la clave WEP de la red. Pero la idea es que tambien podemos complementarlo con la fuerza bruta para realizar el trabajo. Aircrack-ng usa la fuerza bruta para determinar cuantas claves se han de probar para intentar encontrar la clave WEP.
Aquí es donde entra en juego el “fudge factor”. Basicamente el “fudge factor” le dice a aircrack-ng hasta donde probar claves. Es como si quisiesemos encontrar un balón diciéndole a alguien que el balón se puede encontrar entre 0 y 10 metros alrededor. Pero si le decimos que el balón se encuentra entre 0 y 100 metros alrededor. En este escenario de 100 metros le llevará mucho más tiempo realizar la búsqueda pero tendrá más posibilidades de encontrarlo.
Por ejemplo, si le decimos a aircrack-ng que use un fudge factor de 2, dividirá los votos del byte más probable, y probará todas las posibilidades con un número de votos de al menos la mitad de los que tiene el caracter más posible. Cuanto mayor sea el fudge factor, más posibilidades probará aircrack-ng aplicando fuerza bruta. Recuerda, que cuanto mayor sea el fudge factor, el número de claves a probar crecerá tremendamente y mayor será el tiempo que se esté ejecutando aircrack-ng. En cambio, cuantos más paquetes de datos tengas, minimizarás la necesidad de aplicar fuerza bruta a muchas claves, lo que hace que no trabaje tanto tiempo la CPU y se reduce mucho el tiempo necesario para encontrar la clave.
Al final, es todo “muy simple” matemáticas y fuerza bruta!
Las técnicas mencionadas hasta ahora no funcionan para claves WPA/WPA2 pre-shared. La única forma de crackear estas claves pre-compartidas (pre-shared) es a través de un ataque de diccionario. Esta capacidad está tambien incluida en aircrack-ng.
Con claves pre-compartidas, el cliente y el punto de acceso establecen las claves que se van a usar en sus comunicaciones al comienzo cuando el cliente se asocia por primera vez con el punto de acceso. Hay cuatro paquetes “handshake” entre el cliente y el punto de acceso. airodump-ng puede capturar estos cuatro paquetes handshake. Y usando un diccionario con una lista de palabras, aircrack-ng duplica los cuatro paquetes handshake para mirar si hay alguna palabra en el diccionario que coincida con el resultado de los cuatro paquetes handshake. Si lo consigues, habrás identificado de forma satisfactoria la clave pre-compartida.
Hay que resaltar que este programa hace un uso muy intensivo del procesador del ordenador, y que en la práctica claves WPA pre-compartidas muy largas o inusuales no podrán ser encontradas . Un buen diccionario te dará mejores resultados. Otra posibilidad es usar un pograma como “john the ripper” para generar contraseñas que podrán ser utilizadas por aircrack-ng.
La mejor explicación es un ejemplo. Nos fijaremos en un byte en concreto. Todos los bytes son tratados de la misma manera.
Tu tienes los votos (votes) como en la captura de pantalla anterior. Para el primer byte ves lo siguiente: AE(50) 11(20) 71(20) 10(12) 84(12)
Los AE, 11, 71, 10 y 84 son los valores posibles de la clave para el primer caracter (byte 0). Los números que están entre paréntesis son los votos que cada posible valor ha acumulado hasta ahora.
Ahora si decides usar un “fudge factor” de 3. Aircrack-ng realizará la siguiente operación a partir del byte que tiene más probabilidades o votos: AE(50):
50 / 3 = 16.666666
Aircrack-ng probará (fuerza bruta) todas las claves posibles que tengan un número de votos superior a 16.6666, resultando que
AE, 11, 71
serán utilizados, por lo que tenemos un número total de 3 valores a probar para ese byte o caracter (depth):
0 / 3 AE(50) 11(20) 71(20) 10(12) 84(12)
Cuando aircrack-ng está probando claves con AE, muestra 0 / 3, cuando acabe de probar todas las claves con ese byte, pasará al siguiente con más votos (11 en este ejemplo) y mostrará:
1 / 3 11(20) 71(20) 10(12) 84(12)
aircrack-ng [opciones]
Puedes especificar múltiples archivos de captura (incluso mezclando formatos .cap y .ivs). También se puede ejecutar airodump-ng y aircrack-ng al mismo tiempo: aircrack-ng se actualizará de forma automática cuando estén disponibles nuevos IVs.
Aquí está la explicación para todas y cada una de las opciones disponibles:
Option | Param. | Description |
-a | amode | Fuerza el tipo de ataque (1 = WEP estática, 2 = WPA/WPA2-PSK). |
-e | essid | Si se especifica, se usarán todos los IVs de las redes con el mismo ESSID. Está opción es necesaria para crackear claves WPA/WPA2-PSK si el ESSID está oculto. |
-b | bssid | Selecciona el AP objetivo basándose en la dirección MAC. |
-p | nbcpu | En sistemas SMP, especifica con esta opción el número de CPUs usadas. |
-q | none | Activa el modo silencioso (no muestra ninguna salida hasta que encuentra o no la clave). |
-c | none | (WEP cracking) Limita la búsqueda únicamente a caracteres alfanuméricos (0×20 - 0x7F). |
-t | none | (WEP cracking) Limita la búsqueda únicamente a caracteres hexadecimales codificados en binario. |
-h | none | (WEP cracking) Limita la búsqueda únicamente a caracteres numéricos (0×30-0×39). Estas claves numéricas son utilizadas por defecto por muchos APs y muchas compañias de ADSL. |
-d | start | (WEP cracking) Especifica el comienzo de la clave WEP (en hexadecimal). |
-m | maddr | (WEP cracking) Dirección MAC para la que filtrar los paquetes de datos WEP. Alternativamente, se puede especificar -m ff:ff:ff:ff:ff:ff para usar todos y cada uno de los IVs, sin preocuparnos de la red. |
-n | nbits | (WEP cracking) Especifica la longitud de la clave: 64 para WEP de 40-bit, 128 para WEP de 104-bit, etc. La opción por defecto es 128. |
-i | index | (WEP cracking) Guarda solo los IVs que tienen este índice de clave (1 to 4). La opción predeterminada es ignorar el índice de clave. |
-f | fudge | (WEP cracking) Por defecto, esta opción está fijada en 2 para WEP de 104-bit y en 5 para WEP de 40-bit. Especifica un valor más alto para para elevar el nivel de fuerza bruta: la obtención de la clave llevará más tiempo, pero la probabilidad de éxito será mayor. |
-k | korek | (WEP cracking) Hay 17 ataques korek de tipo estadístico. Algunas veces un ataque crea un falso positivo que evita que encontremos la clave, incluso con grandes cantidades de IVs. Prueba -k 1, -k 2, … -k 17 para ir desactivando cada uno de los ataques. |
-x/-x0 | none | (WEP cracking) No aplicar fuerza bruta sobre los dos últimos bytes de la clave (keybytes). |
-x1 | none | (WEP cracking) Aplicar fuerza bruta sobre el último byte de la clave (opción por defecto). |
-x2 | none | (WEP cracking) Aplicar fuerza bruta sobre los dos últimos bytes. |
-X | none | (WEP cracking) No aplicar fuerza bruta con multiprocesadores (solo sistemas SMP). |
-y | none | (WEP cracking) Éste es un ataque de fuerza bruta experimental, que solo debe ser usado cuando el ataque estandard falle con más de un millón de IVs |
-w | words | (WPA cracking) Ruta al diccionario. |
El caso más simple es crackear una clave WEP. Si quieres probar esto por ti mismo, aquí tienes un archivo de prueba. La clave de este archivo de prueba coincide con la de la pantalla anterior de este tutorial, pero no coincide con la del siguiente ejemplo.
aircrack-ng 128bit.ivs
Donde:
El programa responde:
Opening 128bit.ivs
Read 684002 packets.
# BSSID ESSID Encryption
1 00:14:6C:04:57:9B WEP (684002 IVs)
Choosing first network as target.
Si hay múltiplies redes en el archivo, entonces tendrás la opción de seleccionar la que quieras. Por defecto, aircrack-ng supone que la encriptación es de 128 bit.
El proceso de crackeo comienza, y una vez obtenida la clave, verás algo como esto:
Aircrack-ng 0.7 r130
[00:00:10] Tested 77 keys (got 684002 IVs)
KB depth byte(vote)
0 0/ 1 AE( 199) 29( 27) 2D( 13) 7C( 12) FE( 12) FF( 6) 39( 5) 2C( 3) 00( 0) 08( 0)
1 0/ 3 66( 41) F1( 33) 4C( 23) 00( 19) 9F( 19) C7( 18) 64( 9) 7A( 9) 7B( 9) F6( 9)
2 0/ 2 5C( 89) 52( 60) E3( 22) 10( 20) F3( 18) 8B( 15) 8E( 15) 14( 13) D2( 11) 47( 10)
3 0/ 1 FD( 375) 81( 40) 1D( 26) 99( 26) D2( 23) 33( 20) 2C( 19) 05( 17) 0B( 17) 35( 17)
4 0/ 2 24( 130) 87( 110) 7B( 32) 4F( 25) D7( 20) F4( 18) 17( 15) 8A( 15) CE( 15) E1( 15)
5 0/ 1 E3( 222) 4F( 46) 40( 45) 7F( 28) DB( 27) E0( 27) 5B( 25) 71( 25) 8A( 25) 65( 23)
6 0/ 1 92( 208) 63( 58) 54( 51) 64( 35) 51( 26) 53( 25) 75( 20) 0E( 18) 7D( 18) D9( 18)
7 0/ 1 A9( 220) B8( 51) 4B( 41) 1B( 39) 3B( 23) 9B( 23) FA( 23) 63( 22) 2D( 19) 1A( 17)
8 0/ 1 14(1106) C1( 118) 04( 41) 13( 30) 43( 28) 99( 25) 79( 20) B1( 17) 86( 15) 97( 15)
9 0/ 1 39( 540) 08( 95) E4( 87) E2( 79) E5( 59) 0A( 44) CC( 35) 02( 32) C7( 31) 6C( 30)
10 0/ 1 D4( 372) 9E( 68) A0( 64) 9F( 55) DB( 51) 38( 40) 9D( 40) 52( 39) A1( 38) 54( 36)
11 0/ 1 27( 334) BC( 58) F1( 44) BE( 42) 79( 39) 3B( 37) E1( 34) E2( 34) 31( 33) BF( 33)
KEY FOUND! [ AE:66:5C:FD:24:E3:92:A9:14:39:D4:27:4B ]
Esta clave puede ser usada para conectarse a la red.
Ahora para crackear claves WPA/WPA2:
aircrack-ng -w password.lst *.cap
Donde:
-w password.lst es el nombre del diccionario con la lista de palabras. Recuerda que tienes que especificar la ruta completa si el archivo no se encuentra en el directorio actual.
*.cap es el nombre de los archivos que contienen los ivs. Date cuenta que en este caso usamos el comodín * para incluir múltiples archivos.
El programa responde:
Opening wpa2.eapol.cap
Opening wpa.cap
Read 18 packets.
# BSSID ESSID Encryption
1 00:14:6C:7E:40:80 Harkonen WPA (1 handshake)
2 00:0D:93:EB:B0:8C test WPA (1 handshake)
Index number of target network ?
Date cuenta que en este caso como hay dos redes necesitamos seleccionar la que queremos atacar. Escogeremos la número 2. El programa entonces responde:
Aircrack-ng 0.7 r130
[00:00:03] 230 keys tested (73.41 k/s)
KEY FOUND! [ biscotte ]
Master Key : CD D7 9A 5A CF B0 70 C7 E9 D1 02 3B 87 02 85 D6
39 E4 30 B3 2F 31 AA 37 AC 82 5A 55 B5 55 24 EE
Transcient Key : 33 55 0B FC 4F 24 84 F4 9A 38 B3 D0 89 83 D2 49
73 F9 DE 89 67 A6 6D 2B 8E 46 2C 07 47 6A CE 08
AD FB 65 D6 13 A9 9F 2C 65 E4 A6 08 F2 5A 67 97
D9 6F 76 5B 8C D3 DF 13 2F BC DA 6A 6E D9 62 CD
EAPOL HMAC : 52 27 B8 3F 73 7C 45 A0 05 97 69 5C 30 78 60 BD
Ahora que sabemos la palabra, podremos conectarnos a la red.
La forma más simple es escribir “aircrack-ng archivo.cap”. Tenemos que decir que hay algunas técnicas para aumentar las posibilidades de encontrar la clave WEP rápidamente. Pero no existe la magia. A continuación se describen algunos métodos para obtener la clave más rápido.
La mejor de todas las técnicas es capturar tantos paquetes como sea posible; cuantos más mejor. Esto es lo más sencillo y lo más importante. El número de vectores de inicialización (IVs) que se necesitan para obtener una clave WEP varia dependiendo de la longitud de la clave y del punto de acceso de que se trate. Habitualmente se necesitan 250,000 o más IVs para claves de 64 bit y 1.5 millones o más para claves de 128 bit. Y por supuesto que muchos más para claves más largas. Pero si tenemos suerte, hay veces que la clave WEP se puede obtener con 50,000 IVs o menos. Aunque esto no ocurre con frecuencia. Y al revés, habrá veces en las que se necesitarán varios millones de IVs para crackear la clave WEP. El número de IVs necesarios es muy dificil de predecir porque la mayoría de los puntos de acceso actuales funcionan muy bien y no generan IVs débiles que revelen parte de la clave WEP.
Generálmente, no intentes crackear la clave WEP hasta que tengas 200,000 o más IVs. Si lo ejecutas con pocos IVs, aircrack probará muchas claves durante mucho tiempo y no aplicará las técnicas estadísticas de forma adecuada. Puedes empezar probando con claves de 64 bit “aircrack-ng -n 64 archivo.cap”. Si se está usando una clave WEP de 64 bit, normalmente será crackeada en menos de 5 minutos (y con frecuencia en menos de 60 segundos) con pocos IVs. Es sorprendente que haya tantos APs que usan claves de 64 bit. Si no encuentras la clave de 64 bit en 5 minutos, reinicia aircrack con el modo genérico: “aircrack-ng archivo.cap”. Y cada vez que tengas 100,000 IVs más, reintenta “aircrack-ng -n 64 archivo.cap” y déjalo 5 minutos.
Cuando llegues a 600,000 IVs, cambia y empieza a probar claves de 128 bit. Sería extraño (pero no imposible) que fuese una clave de 64 bit y no se diese crackeado con 600,000 IVs. Por lo tanto ahora prueba “aircrack-ng archivo.cap”.
Cuando llegues a 2 millones de IVs, prueba a cambiar el fudge factor a ”-f 4”. Y déjalo entre 30 minutos y una hora. Reintenta aumentando el fudge factor sumando 4 de cada vez. Otra buena ocasión para aumentar el fudge factor es cuando aircrack-ng se para porque ha probado todas las claves.
Y mientras tanto, no te olvides de seguir capturando paquetes de datos. Recuerda la regla de oro, “cuantos más IVs mucho mejor”.
También lee la siguiente sección sobre como determinar las mejores opciones a usar. Esto te puede ayudar tambien a acelerar el proceso de obtención de la clave WEP. Por ejemplo, si la clave es numérica, podremos crackear la clave WEP con muchísimos menos IVs si usamos la opción ”-t”. Entonces, si averiguas algo acerca de la naturaleza de la clave WEP, es sencillo probar algunas variaciones para tener éxito.
Mientras aircrack-ng se está ejecutando, frecuentemente solo puedes ver el comienzo de la clave en la primera columna. Aunque no conoces la clave WEP, esta información puede darte pistas sobre cual es la clave. si un caracter o byte de la clave tiene un número muy grande de votos, hay un 99.5% de posibilidades de que sea correcto. Vamos a ver que se puede hacer con estas pistas.
Si los bytes son por ejemplo: 75:47:99:22:50 entonces es obvio que la clave está formada solo por números, como los 5 primeros bytes. Por lo tanto obtendremos la clave mucho antes y con menos IVs usando la opción -t para probar únicamente este tipo de claves. Mira Wikipedia Binary Coded Decimal para ver una descripción de los caracteres que busca la opción -t.
Si los bytes son 37:30:31:33:36 estos son todos valores numéricos si los convertimos a Ascii (70136). En este caso, es una buena idea usar la opción -h. El link del FAQ Converting hex characters to ascii te da información para relacionar los caracters hexadecimales con los Ascii. De todas formas sabremos muy fácilmente que se trata de caracteres numéricos porque veremos que empiezan todos los bytes por 3.
Y si los primeros bytes son algo como esto 74:6F:70:73:65, deberias de introducir esos valores en tu editor hexadecimal favorito o en alguno de los links proporcionados anteriormente, y verás, que puede ser el comienzo de alguna palabra, por lo que parece que está usando una clave ASCII; en esta situación activa la opción -c para probar únicamente con claves ASCII.
Para procesar varios archivos al mimso tiempo, se puede usar un cmodín como el * o especificar cada archivo uno por uno.
Ejemplos:
Determinar una clave WPA/WPA2 depende absolutamente de que la palabra se encuentre en el diccionario que usemos. Por lo que es muy importante usar un buen diccionario. Puedes buscar en Internet algún diccionario. Hay varios disponibles.
Como has visto, si hay varias redes en tus archivos necesitarás elegir la que quieres crackear. En lugar de hacerlo manualmente, puedes especificar la red que quieras en la linea de comandos indicando su essid o su bssid. Esto se hace con las opciones -e o -b.
Otra alternativa es usar “John the Ripper” para crear un diccionario específico. Si sabes que la palabra clave es el nombre de una calle además de 3 digitos. Puedes crear una regla en JTR y ejecutar un comando como este:
john --stdout --wordlist=specialrules.lst --rules | aircrack-ng -e test -a 2 -w - /root/capture/wpa.cap
Esto significa que no tienes ese archivo de diccionario o que no se encuentra en el directorio actual. Si el diccionario se encuentra en otra carpeta, debes escribir la ruta completa al diccionario.
Hay ocasiones en que los bytes tienen votos negativos. Y si tienes un montón de votos negativos significa que algo va mal. Lo más probable es que estés intentando crackear una clave dinámica o que han cambiado la clave WEP mientras estabas capturando paquetes de datos. Recuerda que WPA/WPA2 solo puede ser crackeada con un diccionario. Si han cambiado la clave WEP, tendrás que empezar a capturar paquetes de nuevo desde el principio.