Ir al contenido principal

Sacar la contraseña de un Wifi: Aircrack y Fuerza Bruta

En esta oportunidad les voy a explicar como usar la suite Aircrack-ng para extraer una contraseña de una red wifi, esto es mas un manual instructivo que tiene como finalidad extender la entrada sobre los fundamentos buscando comprender algunos conceptos en la practica, ahora en pleno 2018 hay distros y herramientas especializadas en las redes wifi (mientras sea posible claro) de forma automatizada sin liarse tanto como la mas conocida, wifislax o kali, pero como dije antes, si se quiere indagar en el funcionamiento es mejor retomar los temas mas básicos y fundamentales.








                               Introducción
Como explique en la entrada sobre los fundamentos del wifi, al que pueden darle un vistazo haciendo click acá, cuando nos logeamos en una red wifi, suceden una serie de intercambios de tramas, llamado 4way-handshake que no es mas que un proceso de autentificación, donde el cliente que conoce la "contraseña del wifi" envía una cadena generada en base a esta al router, este lo recibe y de alguna forma sabe que el cliente tiene la contraseña correcta y lo deja entrar a la red.


El proceso mas detallado

La idea principal del ataque consiste en capturar esa "charla" entre un cliente ya conocido y el router, y en base a la información capturada, tratar de derivar cual es la contraseña de la red.

Requisitos entonces para este ataque: Que en la red de la que queremos extraer la contraseña cuente con al menos un cliente conectado a ella.

Alguien (raramente xD) se podría preguntar, bien por que en vez de esto no escribimos un programa que intente una y otra vez autentificarse en la red wifi sin tener que capturar nada, esto es posible pero poco practico, ya que implicaría autentificarse X veces hasta darle a la contraseña indicada en un router y este puede denegar tales intentos, ṕor eso este método es mas eficiente, puesto a que se obtiene esa cadena a la que se le aplica fuerza bruta en modo offline y listo.


Conociendo Aircrack
(Extracto de Wikipedia)


Aircrack-ng es una suite de software de seguridad inalámbrica. Consiste en un analizador de paquetes de redes, un crackeador de redes WEP y WPA/WPA2-PSK y otro conjunto de herramientas de auditoría inalámbrica.
Entre las herramientas que se incluyen en esta suite se encuentran las siguientes:
  • airbase-ng
  • aircrack-ng
  • airdecap-ng
  • airdecloak-ng
  • airdriver-ng
  • aireplay-ng
  • airmon-ng
  • airodump-ng
  • airolib-ng
  • airserv-ng
  • airtun-ng
  • easside-ng
  • packetforge-ng
  • tkiptun-ng
  • wesside-ng
  • airdecloak-ng
Las herramientas más utilizadas para la auditoría inalámbrica son:
  • Aircrack-ng (descifra la clave de los vectores de inicio)
  • Airodump-ng (escanea las redes y captura vectores de inicio)
  • Aireplay-ng (inyecta tráfico para elevar la captura de vectores de inicio)
  • Airmon-ng (establece la tarjeta inalámbrica en modo monitor, para poder capturar e inyectar vectores)

Para descargar esta suite, simplemente vamos a la pagina oficial en la sección de descargas:
Pueden averiguar como descargarlo e instalarlo desde la siguiente pagina:

Atención:
Todo lo que prosigue va a ser orientado para el mismo fin utilizando las mismas herramientas pero voy a hacer uso de linux para representar el proceso y los ejemplos.

Un vistazo a nuestro alrededor

Ya es sabido que las redes estan constantemente intercambiando datos y dandose a conocer entre las ondas electromagneticas invisibles que vuelan a nuestro alrededor, gracias a aircrack podremos capturar ese trafico y obtener informacion.
Esto se puede hacer gracias a una funcionalidad con la que cuentan la mayoría (no todas) las tarjetas redes wifi. Dicha funcionalidad es la de "Modo Promiscuo" también llamado "Modo Monitor", cuando se activa este modo, nuestro adaptador adquiere la capacidad de interceptar TODAS las tramas que pasan por el aire en un determinado canal.
Es decir que podremos ver como y que "hablan" los dispositivos wifi en nuestra cobertura, manipular las tramas e inyectar nuevas, pero obviamente no podremos establecer ningún vinculo con un punto de acceso por lo cual en este modo nos quedaremos sin internet.

Como saber si mi placa soporta modo monitor
Para saberlo la misma pagina de aircrack-ng nos muestra una guía completa sobre ello:
Comenzamos, primero vamos a revisar nuestras interfaces saber cual vamos a utilizar, esto lo hacemos haciendo uso del comando "iwconfig" o "ipconfig" en windows, que nos dará una lista de las interfaces red con soporte wireless.


Como podemos observar, hay 3 adaptadores funcionando en mi pc, en cada sistema o distro pueden variar los nombres , en este caso el "enp9s0" es la tarjeta red por cable, la "lo" una virtual del sistema y la que nos interesa, la "wlp7s0", que es la tarjeta de red inalambrica.
Procederemos con una herramienta de la suite aircrack a activarla en modo monitor, para ello usaremos el siguiente comando:

sudo airmon-ng start wlp7s0
Una vez activado el comando, si todo sale bien, saldra la leyenda "monitor mode enabled on mon0", siendo "mon0" el alias de nuestra tarjeta en modo monitor.


Si hacemos ifconfig podremos corroborarlo



Identificando nuestro objetivo y sus clientes

Ahora que estamos en modo monitor, nos pondremos a escuchar que sucede a nuestro alrededor e identificaremos el wifi que tengamos como objetivo, para eso haremos uso de la utilidad de la suite aircrack llamada "airodump-ng" usando el siguiente comando:

sudo airodump-ng <nombre de la tarjeta en modo monitor>
en mi caso siendo

sudo airodump-ng mon0
Una vez ejecutado el comando, automáticamente se comenzara a escanear las redes y dispositivos wifi de nuestro alrededor en todos los canales posibles.




Este esquema se puede dividir en dos partes, arriba, las redes disponibles y abajo, clientes conectados o no a ellas.
Los dispositivos en la red se identifican por medio de identificadores hexadecimales, el del router se nombra BSSID y el del cliente como MAC, pero ambos tienen el mismo fin, una identificación única en el mundo.

En este caso hay una sola red disponible que se llama "Hola soy un wifi :D" con el BSSID "90:F6:52:A5:0D:1E" corriendo en el canal 6.
Y abajo podemos observar un cliente con el MAC "EC:10:7B:63:30:2F" conectado a la red con el BSSID "90:F6:52:A5:0D:1E", que es nada mas ni nada menos que "Hola soy un wifi :D", es decir el cliente esta enlazada o esta intentando tener un enlace con esa red, depende el tiempo que dure su relación en la lista, el escaneo es en tiempo real, también, como se puede observar hay un dispositivo con el MAC 7C:4F:B5:94:26:A8 no asociado.

Nuestra tarea consiste en conseguir el BSSID de la red objetivo, que en este caso es la red "Hola soy un wifi :D" con el BSSID "90:F6:52:A5:0D:1E" y el canal donde transmite finalmente su cliente que tenemos por dado que esta autenticado correctamente a ella, que es el tiene el MAC "EC:10:7B:63:30:2F".

En resumen:
Hola soy un wifi :D -> 90:F6:52:A5:0D:1E  (TP-LINK TECHNOLOGIES CO.,LTD) -> en el canal 6
Cliente                     -> EC:10:7B:63:30:2F   (Samsung Electronics Co.,Ltd)

Dato: Se puede conseguir la marca de un dispositivo buscando su MAC en https://hwaddress.com/


Una vez que tengamos los datos, procedemos al siguiente paso.

Capturando el handshake
Resultado de imagen para handshake

Ahora que tenemos conocimiento de una red y sus clientes, tenemos que hacer que de alguna manera uno de ellos se desconecte de su red y se vuelva a conectar para capturar el 4way-handshake o la mitad de este.
Abriremos una terminal, donde ejecutaremos a airodump-ng para que capture las tramas especificas de la red elegida con el siguiente comando:

 sudo airodump-ng -c 6 --bssid 90:F6:52:A5:0D:1E -w CapturaWifi mon0 

Esto lo que hara es capturar todo lo que pase entre la red y los clientes y guardarlo en un archivo llamado "CapturaWifi".

Listo para ejecutar

Como podemos apreciar, comenzo la captura de paquetes, ahora tenemos que esperar a que el cliente se desconecte y se conecte de nuevo para capturar el tan preciado handshake

Puede darse el escenario en que el usuario se vaya de su casa, al volver el teléfono se tenga que reconectar, o simplemente lo apague y lo encienda de nuevo, haciendo capturar esa "charla" como nos referimos al principio, es posible acelerar el proceso.
Lo que haremos es forzar la desconexion del cliente de la red y esto lo haremos con el llamado Ataque 0, que consiste en engañar a la red para que obligue a de-autenticar un usuario de la red enviando una trama falsa de desasociacion en nombre del MAC del cliente, esto gracias a que no prima ninguna clase de cifrado en el proceso.
De todo esto se encarga la herramienta de la suite aircrack llamada "aireplay-ng", cuya estructura es la siguiente:

 aireplay-ng -0 0 -a <BSSID DEL AP> -c <MAC DEL CLIENTE> <INTERFAZ>
-0 significa deautenticacion
-0 significa la cantidad de paquetes a enviar, con 1 se envian continuamente.
-a es el BSSID de la red
-c es el MAC de la red
y al final va la interfaz

Abrimos la terminal y ejecutamos el siguiente comando:
sudo aireplay-ng -0 0 -a 90:F6:52:A5:0D:1E -c EC:10:7B:63:30:2F mon0

Se empiezan a transmitir tramas de desasociacion y en este momento el usuario esta experimentando una expulsión reiterada de su propia red de wifi, si bien se puede trollear gente con esto, nuestro fin es que se desconecte una vez y se vuelva a conectar para como dijimos, capturar el proceso, para ello en vez de colocar un 0 colocaremos a lo sumo un 10 o un 20 y esperaremos a que termine, o también pueden simplemente cancelar el proceso luego de estar unos segundos ejecutados, la estimación depende de como esté trabajando la red.

Tenemos por una parte a airodump capturando el trafico y por otro a airoplay obligando al cliente conocido a desconectarse
Para verificar que capturamos el handshake abrimos otra terminal, nos dirigimos al directorio donde esta el archivo el cual esta procesando airodump, en este caso "CapturaWifi", y ejecutamos el siguiente comando:

aircrack-ng CapturaWifi.cap 

Y eureka! aircrack-ng detecto que hay un handshake capturado de la red "Hola Soy un Wifi :D", ahora podemos cerrar todo y centrarnos en hacerle fuerza bruta.


Detenemos el modo monitor con el siguiente comando:

sudo airmon-ng stop mon0
Se detiene el modo monitor y podemos conectarnos a internet normalmente.



Usando la Fuerza Bruta

Tenemos al famoso handshake en nuestras manos, llegamos a la parte mas impredecible, intentar atinarle justo a la contraseña, por suerte no tenemos que ir intentando uno a uno a mano, gracias a las maravillas de la CPU podremos automatizar el proceso.
Hay muchos métodos para hacer fuerza bruta, me inclinaré a explicar el mas básico, el diccionario, luego con el generador de combinaciones Crunch en cadenas y finalmente con John The Ripper, pero ya de por si existen cientos de herramientas para generar diccionarios de fuerza bruta, uno mas personal que el otro.

El diccionario:
Es una lista plana de posibles contraseñas que podremos pasarle a aircrack para que intente una a una, pueden confeccionarlos ustedes mismos o conseguir alguno en internet, hay de todos tipos y varios tamaños.
Probemos con uno manual, al final del mismo se encuentra la contraseña correcta del wifi, para demostrar como aircrack puede localizarla si se llega a dar.


Lo guardo en un archivo llamado "diccionario.txt" en el mismo directorio donde se encuentra el paquete de captura con el handshake y procedemos a ejecutar el siguiente comando

aircrack-ng CapturaWifi-01.cap --bssid 90:F6:52:A5:0D:1E -w diccionario.txt
notase que ahora especificamos la red que contenía el handshake, ahora ejecutamos y..


En menos de 1 segundo a la velocidad de 194.68 palabras por segundo, probo todas las contraseñas del diccionario que hicimos y dio con la contraseña.


Una reflexión sobre contraseñas
Resultado de imagen para contraseña logo
Las computadoras a fuerza bruta, pueden comparar cientos, hasta miles de palabras por segundos dependiendo la potencia del procesador, pero a pesar de emprender semejante trabajo a tan impresionante velocidad les sigue siendo muy difícil solucionar el problema de las combinaciones posibles.
La prueba anterior con el diccionario es oportuna para demostrar que el método funciona, pero en la practica real, ademas de inutil crear un diccionario a mano, es muy impredecible saber cual es la contraseña que podrían usar una persona y varían los métodos y tiempo para obtenerla dependiendo la complejidad de la misma.
Crear una contraseña exige concebir una frase que se pueda recordar con facilidad pero que a la vez sea difícil de adivinar para connotar seguridad, aleatoria al momento, espontanea, relacionada a una fecha importante, el nombre de un hijo, el dni, etc. Adivinar cual puede ser depende de nuestra suerte combinando palabras o números aleatorios pero pueden aumentar considerablemente las posibilidades si tenemos en cuenta los factores ya mencionados, en otras palabras tratar de tomar un sesgo intuitivo que nos permita leer la mente de la victima y tratar de deducir que contraseña pudo haber utilizado.
"la longitud de una contraseña para wpa2 es mayor o igual a 8 caracteres."
Por lógica combinatoria, las mas sencillas de romper son las numéricas, por ejemplo "01012019", es una contraseña puramente numérica y fácilmente calculable con un algoritmo que genere solo fechas(rompible en segundos), pero cuando hay letras se complica mas aún la cuestión, y ni hablar de algún carácter especial, un "01012019A" nos cambia todo el juego ya que seria mas complejo el proceso de llegar a tal combinación y encima con un carácter en mayúscula.
Es importante tener noción de todo esto antes de emprender el camino de generar un diccionario personalizado,ya que podemos ahorrarnos a nosotros y a nuestra querida CPU varios intentos y tiempo, también tener en cuenta que puede que nuestros intentos terminen cesando por cansancio y el proceso no habrá valido la pena, muchos factores juegan.


Crunch 

Resultado de imagen para crunch wordlist generator logo

Es una utilidad que nos permite crear todas las combinaciones posibles con la longitud y caracteres determinados que le demos.

Descarga:

  1. Para linux: un apt-get install crunch o compilarlo directamente https://github.com/crunchsec/crunch.git
  2. Para windows:https://github.com/shadwork/Windows-Crunch/releases/download/v1.1/crunch_win.exe

Su uso es sencillo:
crunch <Longitud minima> <Longitud maxima> <caracteres a usar>
ejemplo:
crunch 3 3 123a
Que si lo ejecutamos generara todas las combinaciones posibles entre los caracteres 1,2,3,a en una longitud de 3



También podemos generar combinaciones de palabras:


crunch 1 1 -p netixzen blogspot . com .
Dentro de una de estas combinaciones esta la url completa del sitio.

Pero en si podemos hacer lo que queramos, y la herramienta ofrece muchas opciones avanzadas que pueden servirnos a nuestro favor, para profundizar el uso de esta herramienta sugiero el siguiente enlace: https://underc0de.org/foro/hacking/aprende-a-usar-crunch-paso-a-paso/

Para nuestro fin es posible usarlo junto a aircrack para que por pipeline crunch envíe las combinaciones que va generando a aircrack para que las compare.

crunch 8 9 abcdefghijkmnlopqrsk123 | aircrack-ng CapturaWifi-01.cap --bssid 90:F6:52:A5:0D:1E -w -
Ahi le dijimos a crunch que genere combinaciones de 8 a 9 caracteres de longitud usando parte del alfabeto y tres numeros.

Comienza a trabajar junto a Aircrack.


Una herramienta muy util.


John The Ripper 
Resultado de imagen para john ripper logo


Una utilidad criptografica que aplica fuerza bruta para romper contraseñas, soporta muchos tipos de algoritmos de encriptación, la recomiendo por si se esta atado ante la incertidumbre de que contraseña podría ser, en mi caso me ha servido en varias ocasiones, es una de las mejores, su uso básico junto a aircrack se puede apreciar en el siguiente video.









Espero que les haya servido!, saludos.