30 oct 2008

Aircrack-ng

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.

Captura de pantalla


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


¿Cómo funciona?

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.

Explicación de la profundidad (depth) y del Fudge Factor

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)
Y EN linux TENEMOS