Descifrando redes WPA2

Jugando con WPA2 y Hashcat

 

Uno de los principales inconvenientes a la hora de desencriptar claves WPA es el tener que depender de un diccionario o las rainbow tables para poder obtener la ansiada contraseña. Esta práctica en muchos casos deja el password “indescifrable” por no dar exactamente con la palabra, en otros casos como son los hashes MD5, tenemos software que aplica todas las combinaciones posibles incrementando el numero de caracteres que se van probando hasta dar con la clave, como por ejemplo John the ripper o Hashcat. Últimamente están al alza ataques al protocolo WPS, pero la víctima en el caso de ser atacado a través de esta vía sólo tiene que deshabilitar la opción del WPS y listo.
En este post nos centraremos un poco en los ataques de fuerza bruta a redes wireless y os hablaremos de hashcat y de los ataques de fuerza bruta a handshakes de WPA/WPA2(RC4). El handshake (apretón de manos) es el paquete que contiene el hash de la clave WPA/WPA2 de una red wifi. La opción más común es atacar mediante un diccionario, pero estamos sujetos a que la palabra de la clave figure en el diccionario, y se termina por tener mucho espacio en disco ocupado por estos ficheros. Una alternativa es un ataque de fuerza bruta, probando una a una todas las combinaciones posibles hasta dar con la correcta. En el caso de las claves WPA hay que tener en cuenta la posible longitud de la clave, ya que si es WPA2 sabemos que podemos tener el doble de caracteres que podemos encontrar en WPA, en esta clase de ataques, una buena gestión de contraseñas de la red inalámbrica puede ser decisiva a la hora de frustrar un ataque de estas características.
Para comenzar, usaremos la suite de aircrack-ng para extraer el handshake. Primero ponemos nuestra interfaz wifi en modo monitor:

airmon-ng start wlan1

Hashcat_airmon-ng

Una vez hecho esto nos pondrá el interfaz wlan0 en modo monitor, creando el interfaz mon0. Ahora debemos ver qué redes están circulando a nuestro alrededor, para ello usaremos airodump-ng, este programa de la suite aircrack es el encargado de guardar las capturas de red que necesitamos analizar para extraer la clave, a diferencia de las redes con seguridad WEP, las redes WPA no requieren que almacenemos IV’s para poder averiguar la clave, en este caso sólo necesitamos capturar un paquete, el handshake.

Primero ejecutamos airodump-ng sin guardar y observando todos los canales para seleccionar el objetivo, abrimos una nueva shell y escribimos:

airodump-ng mon0

Hashcat_airodump_primero

Nos convendría un punto de acceso en el que tuviésemos un cliente asociado (en mi caso uso una red mía en un punto de acceso donde solo estoy yo), así podemos hacer el ataque de desautenticación y provocar la reconexión para capturar el handshake de la red en cuestión. Anotamos las direcciones MAC tanto del punto de acceso como del cliente que queremos desautenticar.
Ahora ejecutamos airodump con las especificaciones para el punto de acceso que hemos elegido:

airodump-ng --bssid XX:XX:XX:XX:XX:XX --write ~/Escritorio/POCwpa --output-format pcap mon0

Una vez hecho esto abrimos otra ventana en el shell y lanzamos el ataque de desautenticación, esperamos la reconexión del cliente para que airodump capture el handshake. Una vez que vemos que ha capturado el handshake nos lo indicará en la equina superior derecha de la consola.
Hashcat_aireplay_DeauthAttack

 aireplay-ng -0 10 -e Apio -a XX:XX:XX:XX:XX -c XX:XX:XX:XX:XX:XX --ignore-negative-one mon0

Hashcat_airodump_handshake_capturado
Ahora que tenemos el handshake capturado tenemos varias posibilidades de transformar el archivo a un formato legible para hashcat. Como primera opcion tenemos la web de hashcat, que nos proporciona una utilidad online para transformar nuestros archivos .pcap en .hccap (https://hashcat.net/cap2hccap/).
Como segunda opción nos podemos descargar el software necesario para ejecutarlo en nuestro linux, en este caso debemos compilarlo, para ello nos descargamos el software en este enlace (http://sourceforge.net/projects/cap2hccap/), seguidamente lo descomprimimos con el comando tar.

Esto nos creará un directorio con el mismo nombre del archivo que hemos descomprimido, ahora ingresamos en el directorio y compilamos el programa con los siguientes comandos:

./configure

./make

./make install

Si diese algún problema de dependencias tan sólo debéis instalar las librerías que necesitéis, en tal caso, toca pelearse con la consola >;-)

Una vez instalado, usar el programa es de lo más sencillo, simplemente tenemos que darle el archivo de entrada y el archivo de salida, como figura en el siguiente ejemplo:

./cap2hccap.bin ~/Escritorio/POCwpa-14.cap ~/Escritorio/HandshakeApio.hccap

Esto nos dejará el archivo preparado para que le pasemos por encima el hashcat.

./hashcat-cli64.bin -m2500 -a3 -n2 --pw-min=20 ~/Escritorio/HandshakeApio.hccap.cap ?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a

Modificadores:

-a Indicamos el modo de ataque, en este caso 3 indica fuerza bruta.

-m Indicamos el tipo de hash, en este caso WPA/WPA2 se corresponde al 2500.

?a?a?a?a?a?a?a Indicamos la máscara, en este caso ?a significa que buscará numéricos, mayúsculas, minúsculas y especiales, escribiendo ?a de forma consecutiva le estamos indicando la longitud máxima de carateres que va a probar. Saber manejar la máscara de hashcat nos ayudará a concretar un poco qué tipo de caracteres estamos buscando dentro del password, por ejemplo:

Dado el password Habichuela**

Una máscara adecuada sería ?u?l?l?l?l?l?l?l?l?l?s?s, así limitamos con ?u la búsqueda a mayúsculas sólamente, con ?l buscamos minúsculas y con ?s buscamos caracteres especiales, de tal forma no tenemos que buscar una mayúscula en las dos últimas posiciones. Para el caso del wireless podemos ver como algunos puntos de acceso tienen por defecto claves numéricas o alfanuméricas, por tanto podríamos podríamos ahorrar bastante tiempo si quitamos de las combinaciones posibles los caracteres especiales.