miércoles, 24 de julio de 2013

Cracking WPA/WPA2 con Kali Linux

Vamos allá con la segunda entrega de crackeo de redes, en este caso el ataque se realizará contra una red WiFi con cifrado WPA/WPA2.

Este ataque conlleva más tiempo que el ataque realizado a una red con cifrado WEP, ya que en este caso debemos hacer uso de un diccionario para tratar de descifrar la clave. Yo he usado un diccionario de una única contraseña, ya que obviamente la conozco, pero aprovecho para recordaros que si realizáis este ataque en alguna red ajena a la vuestra, o sin consentimiento expreso del propietario, estaréis incurriendo en un delito, por lo que yo no me la jugaría...

Bien, en caso de querer usar un diccionario tenéis acceso a multitud de ellos vía torrent, foros, blogs, etc. Por lo cual no es necesario que os pase enlaces ya que estoy seguro de que los encontraréis fácilmente.

Si es la primera vez que hacéis un ataque similar os recomiendo revisar el post anterior, ya que en él se explican los primeros pasos con un poco más de detalle.

Bien, dicho esto ya podemos avanzar hacia la parte técnica y a la POC (Proof Of Concept) de esta intrusión.



1- Como en el anterior ataque, ponemos la tarjeta en modo monitor con airmon-ng start wlan1 (O el nombre de vuestra tarjeta de red)

2 - Lanzamos airodump-ng mon0 para empezar a recoger todo el tráfico que pasa por el aire. En este caso nos centraremos en la red Skynet, la cual vemos que tiene un cifrado WPA2:


3 - Pararemos el comando anterior con CTRL + C, y ahora escucharemos únicamente el tráfico que se genere en la red que vamos a auditar, para ello ejecutaremos:

airodump-ng --bssid <MAC AP> -c <canal> -w <fichero> mon0



4 - Ahora es momento de capturar el handshake. Y tú te preguntarás: ¿Qué demonios es el handshake?

La traducción de la palabra inglesa sería "apretón de manos", por lo que ya nos podemos hacer una pequeña idea de por dónde van los tiros.

Explicado de una manera un poco más técnica, pero que se entiende a la perfección:

Cada vez que un cliente se conecta a una red con cifrado WPA, éste envía un paquete-saludo o handshake al AP al que se va a conectar. Este paquete-saludo contiene, entre otras muchas cosas, la contraseña cifrada.

Para capturarlo, trataremos de desconectar al cliente y estaremos listos para capturar ese handshake. Mas tarde, intentaríamos crackear ese handshake para obtener la contraseña.

Bien, como hemos visto en la anterior captura, vemos que en esta red ya hay un cliente conectado, por lo que vamos a lanzar un ataque de desautenticación contra él para capturar el handshake, lo haremos con la siguiente instrucción en otro terminal, mientras seguimos capturando datos con airodump-ng:

aireplay-ng -0 5 -a <MAC AP> -c <MAC CLIENTE> mon0

  • -0: Es el tipo de ataque. Sería equivalente a poner --deauth
  • 5: El número de paquetes de desautenticación que vamos a enviar.


5- Si todo va bien, veremos que en la parte superior derecha nos aparece lo siguiente:

WPA handshake: <MAC AP>


Esto indica que ya hemos capturado el handshake y estamos listos para iniciar el descifrado de la contraseña de red. Hecho esto ya podemos dejar de capturar paquetes, ya que el resto del ataque se realizará offline.

6- Como os he comentado anteriormente, haremos uso de un diccionario para descifrar el handshake y la clave de esta red. Lo haremos de manera similar a como lo hicimos anteriormente para la clave WEP pero añadiendo algunos valores:

aircrack-ng -w password.txt -b <MAC AP> <fichero.cap>

  • -w password.txt: El diccionario que vamos a usar.
  • <fichero.cap>: El fichero que hemos capturado previamente con airodump-ng


7 - Pasado un buen rato (dependiendo de la contraseña y de la calidad de vuestro diccionario) obtendremos la contraseña por pantalla, como podéis ver en la captura, por lo que ya podríamos dar por finalizada la auditoría de esta red.


Espero que si teníais alguna duda al respecto con este tema las hayáis podido resolver.

No olvidéis que podéis poneros en contacto conmigo a través de lo comentarios o vía correo electrónico.

Un saludo a todos!

13 comentarios:

  1. A día de hoy nunca he podido utilizar este método de diccionarios. Los diccionarios, o bien son pequeños o demasiado grandes lo cual hace inviable por tiempo este ataque.
    Sí que he conseguido utilizar el ataque que utiliza la vulnerabilidad WPS en el AP.
    Muy bien explicado todo.

    ResponderEliminar
    Respuestas
    1. No te falta razón Miguel.

      Tengo diccionarios desde 200MB hasta uno de 38GB y se vuelve una tarea titánica el descifrar una buena contraseña. El que mejor resultados me ha dado es un diccionario que contienen todas las palabras de Wikipedia en todos los idiomas y una base de datos de contraseñas.

      De todos modos el ataque a redes con WPS sigue siendo más fácil (bajo mi humilde punto de vista), por lo que en breve haré un pequeño manual sobre el uso de Reaver para detectar este tipo de redes y realizar el ataque de descifrado del PIN.

      Un saludo y gracias por leerme! ;)

      Eliminar
  2. ese descifrado del PIN es si tiene wps activado!!! y se saca la contraseña en 3 minutos! ahora el problema es si no tiene el WPS activado.

    ResponderEliminar
  3. Correcto M. Con el WPS el proceso se simplifica bastante.

    Miraré de hacer un pequeño manual para auditar redes con WPS activado en cuanto tenga un rato.

    ResponderEliminar
  4. Has probado con rainbow tables? Tengo curiosidad en saber si tienen efectividad real. Muy interesante la entrada, por cierto, lo probaré cómo POC.

    ResponderEliminar
    Respuestas
    1. Pues la verdad es que no lo he probado. Según tengo entendido la rainbow table se genera también a partir de un diccionario, por lo que debemos tener uno de calidad y eso a veces es complicado. Si haces la prueba me comentas a ver qué tal te ha ido ;)

      Un saludo!

      Eliminar
  5. Quiero saber como crear un diccionario, solo es para pruebas didácticas, no más de 10 posibles contraseñas numéricas, para una demostración práctica de como se usa un diccionario en descifrar una clave WPA

    ResponderEliminar
    Respuestas
    1. Bueno, si son únicamente 10 contraseñas te recomiendo hacerlo a mano. Si quieres hacer por ejemplo todas las combinaciones de entre 0 y 999999 (por ejemplo) entonces te recomiendo hacerte un pequeño script en bash con un bucle for, que vaya escribiendo cada número generado en un fichero de texto.

      Eliminar
    2. pero solo se escriben en un archivo .txt y con salto de linea??

      Eliminar
    3. P.D.: Me gustaría que hicieras un tutorial de untangle y otro de OpenVas, ambos igual para fines prácticos

      Eliminar
  6. Excelente aporte Gracias (y)

    ResponderEliminar
  7. Hola miguel, veo que estas muy atento a lo que comentan y por eso te escribo, te consulto. Este método es para redes que no tienen activado el wps? porque todos los que encuentro son para wps activado y de las redes que tengo cerca ninguna lo tiene activado. Muchas gracias! Saludos.

    ResponderEliminar
    Respuestas
    1. Leo, con éste método, si el wps está activado o no, es indiferente ;)

      Eliminar