Atacando por Fuerza Bruta una pobre Wi-Fi y generando ficheros de passwords INMENSOS.

En esta cuarta entrada del tutorial de Hacking Básico vamos a ver cómo funcionan las herramientas de creación de listas de passwords y cómo podemos realizar un ataque por fuerza bruta a una WiFi.

Cada vez nos vamos aproximando más a temas interesantes, y vamos poco a poco recorriendo el camino hacia técnicas mas hackeriles. Pero los pasos se tienen que dar poco a poco, ya que tan interesante es ir pillando los conceptos como aprender los comandos o herramientas. Por ahora hemos visto:

  • Hemos montado nuestro laboratorio de Ciberseguridad. Montando una maquina virtual con Kali Linux y Virtual Box, que usa un USB-Wi-Fi propio.
  • Hemos puesto un pié en laDeep WeebUsando los servicios y el navegador de Tor.
  • Hemos aprendido a escanear puertos, y hemos mirado todos los que estaban abiertos en nuestra red particular, aunque podríamos mirar los de cualquier red.

En esta entrada vamos a ver cómo se generan ficheros de passwords y como se ataca una red con fuerza bruta para descubrir su password. Ya os aviso que no es ni de lejos el ataque más óptimo, pero es un ataque factible y se tiene que conocer. No todo lo que veamos va a ser usable o la forma más óptima de hacer las cosas, pero todo nos aportará unos conocimientos necesarios.

Generando las contraseñas (y muchas, pero muchas, muchas)

Os aseguro que en unas pocas líneas vais a comprender por qué los tarados de Sistemas nos piden que generemos unas contraseñas con una longitud de seis a once caracteres, con una mayúscula, una minúscula un carácter especial, que no sea correlativa y que no contenga la palabra ‘zanahoria’.

Para generar una lista de passwords, o contraseñas, se utiliza el comando crunch. El comando tiene bastantes parámetros y opciones que nos permite generar contraseñas conformes a diferentes patrones. Como lo que hace es crear todas las combinaciones posibles que entren dentro del patrón indicado, y estas pueden llegar a ser casi infinitas, lo primero que va a hacer es mostrarnos cuántas contraseñas va a generar y cuánto ocupará el fichero resultante.

Vamos con algunos ejemplos:

crunch 4 4 012346789

Este comando nos generaría todas las combinaciones posibles de cuatro posiciones con los números indicados, es decir, el típico PIN de una tarjeta financiera. Crunch nos avisa de lo que va a generar, y veremos el por qué un poco más adelante.

Crunch will now generate the following amount of data: 50000 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 10000 

Bueno, pues esta es la respuesta de crunch: generará 10000 líneas, que ocupan unos 50000 bytes, es decir: NADA! Una tontería, en un segundo ya tendremos las combinaciones.

Pero las contraseñas de longitud fija de cuatro caracteres no se llevan, y de solo números menos, aunque no se si lo recordáis, hace nada muchos bancos te pedían una combinación parecida para entrar a tu banca online.

Vamos a probar a complicar un poco el patrón, vamos a poner que nuestro administrador de sistemas es de los que se dedican a complicar la vida a la gente y ha establecido la siguiente política en la contraseña: Longitud de 4 a 6 como mínimo una letra y un número. Vamos a ver que pasa:

crunch 4 6 abcdefghijklmnopqrstuvwxyz0123456789
Crunch will now generate the following amount of data: 15608671488 bytes
14885 MB
14 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 2238928128

Vale, aquí la cosa ya se complica, tenemos como resultado un fichero de 14GB y un número de combinaciones inmenso. Pero la verdad, es que nuestro administrador de sistemas es muy poco paranoico, y le han dado un toque, así que tiene que complicar un poco más la política de introducción de contraseñas. Ahora tienes que tener como mínimo una letra mayúscula. Vamos a ver como queda la cosa ahora:

crunch 4 6 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
Crunch will now generate the following amount of data: 403172327760 bytes
384495 MB
375 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 57731144752 

Ojo! Que pasamos de 14GB a 375GB con solo obligar a incorporar un nuevo juego de caracteres (las mayúsculas). Pero, ¿creeis que un password de 4 posiciones es un password del siglo 21? No, no lo es. Y finalmente nuestro administrador de sistemas se da cuenta del cambio de siglo y nos obliga a crear passwords de una longitud mínima de seis, y para que no compliquemos las cosas en exceso nos limita la longitud máxima a 9 posiciones. Vamos a ver como queda la cosa con esta nueva longitud de la variable.

crunch 6 9 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
Crunch will now generate the following amount of data: 1041616469164032 bytes
993362874 MB
970080 GB
947 TB
0 PB

947TB!!!!! Vamos a ver!!! Donde narices podemos guardar 947 TB de información!!!
Llegado a este punto estoy seguro que ya entendéis dos cosas:

  • Porque crunch nos avisa de lo que va a generar y nos da unos segundos para cancelar el proceso.
  • Porque nuestro administrador de sistemas complica la política de passwords.

crunch es una herramienta poco compleja, pero con muchas opciones. Estoy convencido que ya habéis pillado que son los tres parámetros que usamos: longitud mínima, longitud máxima y caracteres usados. Se puede trabajar con plantillas y viene con juegos de caracteres predefinidos que podemos usar. Por ahora con que comprendamos cómo se usa y sobretodo, cómo se complica la explotación de la contraseña a medida que su patron es mas complejo, es mas que suficiente.

Atacando a una WiFi a lo bruto

Después de jugar un rato con crunch ya nos hemos hecho una idea de lo complicado que puede ser romper una contraseña como la que tienen algunos routers. Seguro que nos imaginamos que va a ser un proceso lento y que no es el más óptimo. Pues teneis razón, pero no todo es malo, no tenemos que estar cerca de la wifi que queremos romper. ¿como? Pues lo explicamos en palabras llanas y luego ya vemos cómo lo hacemos.

Pasos en castellano para romper una WiFi

  • Nos acercamos a la WiFi que queremos romper.
  • Cambiamos el modo de funcionamiento de nuestra antena WiFi para que pille todo el tráfico, no solo el que va dirigido a ella.
  • Capturamos durante un rato tráfico de la red “target” y lo guardamos en un fichero.
  • Nos vamos a casa y atacamos el fichero.

Cuando rompamos el fichero, habremos roto la WiFi, siempre y cuando no hayan cambiado la password. Ya está, así de sencillo. Por cierto, hay algunos pequeños trucos para acelerar un ataque, no hace falta que todo sea fuerza bruta, pero lo veremos más adelante. Ahora vamos a ver como se pasa del castellano al Kalinero (Lenguaje de Kali Linux que hablan los Hakerianos).

Pasos para romper una WiFi, pero esta vez ya de verdad

Asumiendo que ya estamos dentro del rango de la wifi a atacar, que sinceramente espero que sea la de vuestra casa, o una que hayáis montado para hacer esta prueba, lo que tenemos que hacer es poner nuestra tarjeta en modo monitor:

ifconfig wlan0 down
iwconfig wlan0 mode monitor
ifconfig wlan0 up

En este caso mi adaptador de WiFi se llama wlan0, podemos saber el nombre con el comando ifconfig. Lo que hacemos con estos comandos es muy sencillo: se para el adaptador, se le pone en modo monitor y se vuelve a arrancar.

Cuando tenemos un dispositivo WiFi en modo monitor captura todo el tráfico que detecte, independientemente de a quien vaya dirigido. Lo más normal es que un dispositivo solo analice el tráfico que se dirige a él. El modo monitor no es óptimo, sobrecargamos al dispositivo, pero nos permite escuchar cualquier tráfico que esté en nuestro rango.

Ahora tendremos que obtener una lista de todos los procesos que estén usando nuestra tarjeta.

airmon-ng check wlan0
Found 4 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to run 'airmon-ng check kill'
PID Name
400 NetworkManager
624 wpa_supplicant
632 dhclient
891 dhclient

Como podéis ver al ejecutar el comando airmon-ng detecta cuatro procesos (en mi caso) que pueden interferir con el escaneado de tráfico que queremos realizar. Tenemos que matar estos procesos, ya que pueden interferir con la monitorización que queremos lanzar, no se puede hacer en cualquier orden ya que algunos levantan a los otros. Lo mejor es empezar matando NetworkManager y después el resto.

kill 400
kill 624
kill 632 891
airmon-ng check wlan0

Si todo ha ido bien, al volver a consultar los procesos que atacan a nuestra tarjeta de red no tendría que salir ninguno, si sale alguno lo matamos con kill. Vamos repitiendo hasta que no quede ni uno!

Ahora que tenemos nuestro dispositivo Wi-Fi en modo monitor y sin ningún proceso que le moleste vamos a ver todo lo que tenemos alrededor.

airodump-ng wlan0
Lo que nos devuelve airodump-ng (He ocultado MAC y ESSID)

Como podemos ver obtenemos una lista de todo lo que está a nuestro alcance. Tenemos la MAC, el ESSID y el tipo de encriptación. Si como yo veis alguna que todavía tiene un password WEP, es una red que puede atacarse con fuerza bruta. Lo primero que tenemos que hacer es identificar nuestra red y tiene que tener como mínimo una clave WPA2. El PWR nos muestra la fuerza de la señal, como más cerca de 0,mas fuerte es la señal.

Ahora tenemos que seleccionar la red a atacar y vamos a usar el comando airodump-ng para capturar el tráfico. Necesitaremos pasar como parametros al comando el canal (CH) y la mac (BSSID), así como el nombre de nuestro dispositivo.

airodump-ng -c 6 --bssid --:--:--:--:--:-- -w ficherocontodo wlan0
Con los HMCS eliminados :-

Bueno, como podeis ver, la red que he monitorizado, está en el canal (CH) 6, tiene una MAC (que he escondido) y lo he dejado todo en el fichero: ficherocontodo. Se puede ver que tenemos cuatro clientes diferentes y hemos capturado el tráfico durante ocho minutos (normalmente necesitaremos más, pero es que he forzado la conexión de un par de dispositivos). Solo podemos estudiar el tráfico de redes que tengan tráfico, así que si seleccionas una red donde no está pasando nada, solo obtendrás un fichero vacío, o con muy pocos datos, insuficientes para romper la contraseña con la que están encriptados.

Uno de los puntos a tener en cuenta es que es necesario obtener los datos de algún dispositivo que se esté conectando a la red, para obtener los datos de HAND-SHAKE, que es cuando estos se presentan. Puedes esperar o puedes forzar un ataque “deauth” que desconectara a todos los dispositivos, y claro, volverán a conectarse cuando dejes de hacer el ataque.

aireplay-ng -0 0 -a –:–:–:–:–:– wlan0

Este ataque es como un DDOS sobre el dispositivo de la MAC que indiquemos, a través del dispositivo indicado. Tendría que ser suficiente para que alguno de los dispositivos tenga que realizar el HAND SHAKE.

Una vez tengamos suficiente tráfico capturado podemos desconectarnos de la red, y posteriormente hacer es un ataque de fuerza bruta al fichero.

Para realizar dicho ataque usaremos la herramienta generadora de passwords crunch y usaremos el comando pipeline ‘|’ de unix para pasarlo a aircrack-ng.

Lo primero es decidir qué patrón queremos usar para adivinar la contraseña. Si vamos a ciegas va a ser imposible que la rompamos por fuerza bruta, por suerte hay otros métodos. En mi caso yo me conozco la contraseña, pero en lugar de hacer un patrón vamos a utilizar la información pública que se puede tener de una clave WPA2 común de los modems, es decir, le voy a decir a crunch que genere todas y cada de las contraseñas que contengan cualquier combinación de números y mayúsculas de 11 caracteres de longitud. Realmente da lo mismo, con esta limitación se generarán 1042PB de contraseñas, es decir, imposible de romper. Lo importante aquí es que aprendamos como romper un fichero, mas adelante ya veremos cómo acelerar el proceso. Pero tambien podeis pensar en esas Wi-Fis que todos conocemos, Wi-Fis departamentales, con el nombre de la empresa, o Wi-Fis de comercios con passwords de 5 posiciones y el nombre de la empresa en el. Estas Wi-Fis son claramente vulnerables.

crunch 11 11 -f /usr/share/crunch/charset.lst ualpha-numeric | aircrack-ng -w - ficherocontodo-01.cap -e ADAMO_08_24

A crunch le estamos indicando que use un juego de caracteres predefinido que existe en el fichero charset.lst (viene con crunch) para generar una contraseña con 11 caracteres. Cada una de las contraseñas se pasa a aircrack-ng que, utilizando el fichero que hemos grabado anteriormente, las usa para intentar desencriptarlo, cuando lo consiga habrás descubierto la contraseña de la red Wi-Fi.

Una vez ejecutado este comando podemos sentarnos y disfrutar de nuestro momento de película de Hackers de serie B. Vamos a ver una pantalla en la que irán circulando todas las contraseñas que crunch va generando y un monton de numeros que van cambiando a una velocidad de vértigo! Esto, en un primer plano da el pego si que si!!!!

Nuestro momento Hacker

Como puedes ver, es posible que se tarden unos cuantos meses, o años, pero es que estamos yendo muy muy a lo bruto, pero por suerte, o no, hay otros sistemas para romper una Wi-Fi que veremos en la próxima entrega del tutorial.

Por ahora nos tenemos que quedar con estas ideas:

  • El comando crunch sirve para generar muchas contraseñas que se pueden pasar a otras herramientas.
  • Cualquiera puede pillar el tráfico de nuestra WiFi, por favor, que la contraseña tenga un mínimo de complicación.
  • Todos los comandos que se han mostrado tienen multitud de opciones, en este tutorial se ve tan solo una pequeña parte, ahora os toca a vosotros jugar.

No perdáis la oportunidad de romper el password de vuestra WiFi de casa. Hace trampas, usad una plantilla para crunch que contenga el 80% de vuestra clave, que solo tenga que adivinar un par de caracteres. Es la única forma de estar seguro que se entienden todos los pasos, y la sensación que te queda…. aiiii esa sensación de triunfo 🙂

Recordad que este post forma parte del tutorial de Hacking / Pen Testing Básico

Comentarios.