Ataques a redes inalámbricas

Para configurar la tarjeta ver la sección de configurar máquinas virtuales con virtualbox.

Metodología

Se recomienda seguir usando cherrytree para ir guardando las evidencias.

  1. Introducción

  2. Tarjeta inalámbrica
    • Primeros comandos
    • Cambiando la dirección MAC de la tarjeta inalámbrica
    • Activar modo monitor

  3. Capturando tráfico
    • airodump-ng

  4. Ataques y acciones contra redes inalámbricas
    • Deauthentication - Expulsando a clientes conectados a una red inalámbrica
    • Descubriendo redes inalámbricas ocultas. Redes que no emiten su nombre (ESSID)

  5. Cracking
    • Ataque de diccionario contra WPA/WPA2 usando aircrack-ng
    • Construyendo diccionarios con crunch

  6. Rogue AP y Evil Twin
    • Usando airbase-ng

Referencias usadas

  1. Libros

  2. Tarjeta inalámbrica usada en las pruebas:

2. Tarjeta inalámbrica

Primeros comandos

Una vez conectada la tarjeta inalámbrica, podemos usar el comando netstat con la opción -i para visualizar todas las interfaces de red:


o el habitual ifconfig:


Si la tarjeta no apareciese al ejecutar netstat o ifconfig, probablemente, signifique que no esta habilitada. Vamos a ver un ejemplo. Deshabilitamos la interfaz de la tarjeta inalámbrica (wlan0) usando ifconfig. Para ello, le pasamos al comando ifconfig la interfaz sobre la que queremos realizar cambios -wlan0 en este caso- y la palabra down si queremos deshabilitarla o up si queremos habilitarla. En este caso, como queremos deshabilitar la interfaz:


Una vez esta deshabilitada, veremos que no aparece al listar las interfaces con netstat:


o ifconfig:


Sin embargo, aunque esté desactivada, podemos ver la interfaz con la opción -a de ifconfig:


Para comenzar a trabajar con la tarjeta, la habilitamos:


y nos aseguramos que este habilitada usando el comando ifconfig o netstat:


Otro comando que podemos utilizar para configurar y visualizar las interfaces, es iwconfig:


iwconfig esta orientado en interfaces inalámbricas.

Cambiando la dirección MAC de la tarjeta inalámbrica

Podemos ver la dirección MAC de nuestra tarjeta de red usando el comando ifconfig:


Algunos programas que usaremos para realizar ataques a redes inalámbricas tienen opciones para cambiar la dirección MAC de nuestra interfaz (tarjeta) inalámbrica pero, en caso de que no las tuvieran, podemos usar el comando ifconfig para asignar la dirección MAC que queramos a nuestra tarjeta inalámbrica. Para ello, deshabilitamos la interfaz inalámbrica:


y utilizamos el comando ifconfig pasandole como argumentos:

  • la interfaz sobre la que queremos realizar cambios. En este caso wlan0
  • las palabras hw ether seguidas de la nueva dirección MAC que queramos asignar a la tarjeta


habilitamos nuevamente la tarjeta tras realizar el cambio:


y si ejecutamos ifconfig podremos confirmar que el cambio de dirección MAC se ha realizado correctamente:


Aunque hemos utilizado ifconfig para cambiar la dirección MAC de una interfaz inalámbrica, también sería válido para cambiar la dirección MAC de cualquier otra interfaz de red. Otro programa que podemos utilizar para cambiar la MAC de las interfaces es macchanger. Para usarlo, le pasamos al programa macchanger la interfaz sobre la que queramos realizar los cambios y las opciones que queramos usar. Por ejemplo, para visualizar la MAC de una interfaz, le pasamos la opción --show:

macchanger wlan0 --show


Para cambiar la dirección MAC de la interfaz, primero deshabilitamos la tarjeta:


A continuación, según necesitemos, utilizaremos distintas opciones que nos ofrece el programa macchanger. Por ejemplo, podemos usar la opción -A para que utilice una dirección MAC aleatoria de cualquier tipo y de cualquier fábricante:


o la opción -a para que nos facilite una dirección MAC aleatoria del mismo tipo y de cualquier fabricante:


si lo que queremos es que sea totalmente aleatoria, podemos usar la opción -r:


y si queremos dejar la dirección MAC original de la interfaz inalámbrica, podemos usar la opción -p:


Activar modo monitor

Por defecto, la interfaz de la tarjeta inalámbrica está configurada en modo managed para capturar el tráfico que va destinado a la interfaz:


Si queremos capturar todos los paquetes que estén a nuestro alcance -destinados a nuestra MAC o no- debemos activar el modo monitor. El modo más sencillo de activarlo es usar el comando iwconfig. Para ello, como venimos haciendo, deshabilitamos la interfaz inalámbrica usando ifconfig:


después indicamos a iwconfig la interfaz inalámbrica seguida de la palabra mode y el modo a utilizar:


finalmente levantamos la interfaz de nuevo usando ifconfig:


veremos que se ha activado el modo monitor:


para volver a dejar la interfaz en modo cliente, podemos deshabilitar la interfaz con ifconfig y usar nuevamente iwconfig:


después habilitar nuevamente la interfaz y comprobar con iwconfig que los cambios han sido realizados:


Otra forma de activarlo es usar el programa airmon-ng de la suite aircrack. Si tecleamos airmon-ng, veremos las interfaces inalámbricas en las que podemos activar el modo monitor:


Antes de iniciar el modo monitor, vamos a comprobar si hubiese procesos que pudiesen interferir con el modo monitor. Para ello, le pasamos la opción check al programa airmon-ng:


Para finalizar todos los procesos que podrían interferir, aparte de la opción check, pasaremos la opción kill a airmon-ng:


Tras haber revisado los procesos, activamos el modo monitor pasandole la opción start seguida de la interfaz inalámbrica al programa airmon-ng:


Veremos que se activa el modo monitor en la interfaz wlan0mon. Si ejecutamos iwconfig, ahora veremos la interfaz:


Cuando activemos el modo monitor, si estuviésemos conectados a un router inalámbrico o punto de acceso, automáticamente se desconectaría y perderíamos la conexión. Esto es normal ya que, cuando activamos el modo monitor, normalmente no usaremos la tarjeta para conectarnos como clientes a un punto de acceso, sino para realizar alguna auditoria o capturar paquetes que estén a nuestro alcance aunque no sean para nosotros. Para desactivar el modo monitor, pasaremos la opción stop seguido de la interfaz inalámbrica al comando airmon-ng:


3. Capturando tráfico

airodump-ng

Una vez que hemos activado el modo monitor, seremos capaces de capturar todos los paquetes dentro del alcance de nuestra tarjeta inalámbrica. Para capturar el tráfico, podemos usar el programa airodump-ng de la suite aircrack. Para ello, le pasamos a airodump-ng la interfaz inalámbrica. En este caso wlan0mon:


y pulsamos intro para comezar la captura:


Mientras captura podremos visualizar las redes inalámbricas que estan a nuestro alcance e información de las mismas como:

  • BSSID - dirección MAC del punto de acceso
  • PWR - Power. Aproximadamente a qué distancia está el punto de acceso de nuestro tarjeta wifi. Cuanto más cerca este el punto de acceso, más fácil es capturar paquetes.
  • Beacons - También llamados balizas. Son señales que emiten los puntos de acceso (AP) con información sobre la red inalámbrica para que pueda ser detectada.
  • #Data - Indica el número de paquetes útiles que hemos capturado
  • #/s - es el número de paquetes data que hemos capturado en los últimos segundos
  • CH - Es el número del canal que está usando el punto de acceso para emitir
  • MB - Indica la velocidad máxima de la red
  • ENC - Encryption. Indica el método de cifrado usado en la red
  • CIPHER - Indica el algoritmo de cifrado usado
  • AUTH - Indica el tipo de autenticación que usa la red
  • ESSID - nombre de la red

Hemos visto como usar airodump-ng para capturar paquetes de las redes inalámbricas a nuestro alcance, pero una vez seleccionamos una red inalámbrica objetivo, es más efectivo capturar paquetes sólo de esa red. Para ello, vamos a usar airodump-ng pasandole las siguientes opciones:

  • --channel => para indicar el canal en el que está emitiendo el punto de acceso
  • --bssid => para indicar la dirección MAC del punto de acceso
  • --write nombreFicheroDondeGuardarLaCaptura => para guardar la captura en un fichero
  • interfaz inalámbrica a usar:

escribimos el comando:


y lo ejecutamos pulsando intro:


veremos que ahora tenemos 2 secciones. Una ya la conocemos porque es la misma que teníamos cuando usabamos airodump-ng para capturar el tráfico de todas las redes inalámbricas a nuestro alcance. La otra sección contiene información de los clientes que están conectados a ese punto de acceso:


Aquí podemos ver información como:

  • STATION Nos indica la dirección MAC del cliente que está conectado a la red
  • Rate Indica la velocidad máxima del dispositivo
  • Lost Indica los paquetes que se han perdido en la comunicación
  • Frames Indica los paquetes útiles que hemos capturado

Tras finalizar la captura, podremos ver los ficheros que airodump-ng ha creado:


Vemos que detrás de los ficheros creados ha puesto 01 para indicar que nuestra primera captura.

4. Ataques y acciones contra redes inalámbricas

Deauthentication - Expulsando a clientes conectados a una red inalámbrica

Siempre y cuando el punto de acceso este dentro de nuestro rango, este ataque nos va a permitir hacer perder la conexión a cualquier cliente de cualquier punto de acceso al que esté conectado mientras dure el ataque. No importa que no tengamos acceso a la red o que la red requiera autenticación, si el punto de acceso esta dentro del alcance de nuestra tarjeta inalámbrica, podremos hacer que los clientes pierdan la conexión. Este ataque hace 2 cosas:

  • Falsifica la dirección MAC del cliente (MAC Spoofing) y envía paquetes para deautenticarse al punto de acceso o router inalámbrico
  • Falsifica la dirección MAC del punto de acceso (MAC Spoofing) y envia paquetes al cliente para indicarle que debe volver a autenticarse

El programa de la suite aircrack que nos permite hacer esto es airplay-ng. Vamos a ver como expulsar a un cliente específico. Primero usariamos airodump-ng para ver todos los clientes conectados a la red inalámbrica que queramos atacar:


vemos que hay un cliente conectado. Vamos a ver como hacer que ese usuario pierda la conexión. Para ello, pasaremos al comando aireplay-ng, los siguientes parámetros:

  • --death númeroDePaquetes - Número de paquetes deauth para enviar
  • -a bssidDelPuntoDeAcceso - BSSID del punto de acceso
  • -c MACdelCliente - MAC del cliente (recordar que aparece como STATION en airodump-ng)
  • interfaz inalámbrica en modo monitor

Para poder ver lo que está pasando en tiempo real, podemos dejar airodump-ng corriendo y abrir una segunda terminal para ejecutar aireplay-ng:


Cuando pulsemos intro, se comenzarán a enviar paquetes y podremos ver como crece la cantidad de paquetes perdidos (Lost) en la sección del cliente de airodump-ng:


Descubriendo redes inalámbricas ocultas. Redes que no emiten su nombre (ESSID)

Una red inalámbrica oculta es la que no emite su ESSID y necesitamos el ESSID para poder conectarnos o lanzar ataques. Sin embargo, aunque no emita el ESSID, si emitirá el resto de información como el BSSID (dirección MAC del punto de acceso) o el canal. Como hemos visto anteriormente, podemos usar airdodump-ng para capturar el tráfico al alcance de nuestra tarjeta inalámbrica:

airodump-ng wlan0mon


En la captura vemos una red que no está emitiendo su nombre (ESSID). Si la red tiene mucho tráfico, airodump-ng será capaz de descubrirlo sin que hagamos nada ya que, cuando se conecten dispositivos a esa red inalámbrica, tendrán que enviar el ESSID de la red para poder conectar. Sin embargo, puede darse el caso que la red no tenga tanto tráfico y nos toque hacerlo a mano. Para ello, lo que vamos a hacer es ver los clientes (dispositivos) conectados a esa red:

airodump-ng --bssid BSSIDDelPuntoDeAcceso --channel CanalEnElQueEmite wlan0mon


Vemos que hay un dispositivo conectado. Lo que vamos a hacer es desconectarlo utilizando un ataque deauth con aireplay-ng para obligar al dispositivo a conectarse de nuevo al punto de acceso y para ello emitir el ESSID de la red. En este caso, como queremos que la perdida de conexión dure lo menos posible para que sea lo menos perceptible por el usuario, mandaremos pocos paquetes para que la perdida de conexión del cliente sea de pocos segundos:


Podemos ver que, aunque enviemos pocos paquetes, el ataque funciona y podemos ver el ESSID de la red.

Cracking

Hay 3 tipos de cifrado principales que podemos usar en las redes inalámbricas:

  • WEP
  • WPA
  • WPA2

WEP (Wired Equivalent Privacy)

Hoy en día apenas se usa ya que es el más vulnerable de los 3.

Ataque de diccionario contra WPA/WPA2

Los únicos paquetes que nos pueden ayudar a realizar un ataque contra la clave son los del handshake. Cada vez que un dispositivo se conecta a una red inalámbrica protegida con WPA, se realia un handshake de 4 pasos entre el cliente y el punto de acceso. Para lanzar un ataque de diccionario contra una red inalámbrica protegida con WPA/WPA2, necesitamos:

  1. Capturar el handshake
  2. Un diccionario

Vamos a ver primero cómo capturar el handshake. Para elo, usaremos airodump-ng para capturar paquetes y aireplay-ng para desconectar un dispositivo y obligarle a conectarse de nuevo. Para empezar, ejecutamos airodump-ng para ver las redes a nuestro alcance y elegir la red objetivo:


Una vez elegida la red, utilizamos nuevamente airodump-ng para capturar paquetes de esa red y guardarlos en un fichero que en este caso he llamado target_handshake:


Una vez ejecutemos el comando, veremos los clientes que están conectados al punto de acceso (AP) de la red inalámbrica. En este caso sólo 1:


Para poder capturar el handshake, vamos a lanzar un ataque deauth con aireplay-ng para obligar al dispositivo a conectarse de nuevo al punto de acceso (AP) de la red inalámbrica. Para conectarse de nuevo a la red inalámbrica, se tendrá que hacer el handshake y es ahí donde lo capturaremos. Tecleamos el comando que ya conocemos:


y lo ejecutamos:


Veremos que el handshake es capturado en la esquina superior derecha de la captura con airodump-ng. Una vez capturado el handshake, podemos detener la captura de paquetes. De los ficheros que se han creado, el que nos interesa es el que tiene la extensión .cap:


Ya tenemos la primera parte, un fichero con la captura del handshake. Ahora vamos a contruir un diccionario (lista) con las palabras que pensamos que pueden ser la contraseña. Para ello, utilizamos el editor de texto que queramos:


Tecleamos cada palabra en una línea:


y guardamos el fichero. Ya tenemos todo lo necesario. Para lanzar el ataque de diccionario, usaremos el programa aircrack-ng de la suite aircrack. Para ello, le pasamos a aircrack-ng el fichero donde hemos capturado el handshake y el diccionario que queramos usar con la opción -w:


y si la clave está entre las palabras del diccionario, nos mostrará el mensaje KEY FOUND! cuando pruebe la clave:


Construyendo diccionarios con crunch

Crunch es un programa que nos puede ayudar a crear diccionarios siguiendo patrones. La forma de utilizarlo es:

crunch longitudMínimaDePalabra longitudMáximaDePalabra símbolosAUtilizar opcionesQueLeQueramosPasarACrunch

Entre otras, al comando le podemos pasar las siguientes opciones:

  • -o nombreDelFicheroDondeSeGuardaránLasPalabras
  • -t patrónASeguir
    • % representa un número
    • @ representa una letra minúscula

Vamos a ver algunos ejemplos. Para crear un diccionario que contenga todas las combinaciones con un mínimo de 3 a un máximo de 5 cifras posibles, ejecutaremos crunch de la siguiente manera:

crunch 3 6 0123456789 -o numeros_de_3_a_6_cifras


Podremos ver que el diccionario se ha creado correctamente, por ejemplo, usando el comando head:


También podemos crear claves que combinen letras y números. Por ejemplo, creemos un diccionario que contenga la palabra temporal y después los números desde el 2000 hasta el 2099:

crunch 12 12 -t temporal20%% -o claves_temporales_2000


De nuevo podremos ver que el diccionario se ha creado correctamente, por ejemplo, usando el comando head:


Viendo las claves que ponen los operadores, quizá un diccionario (lista) para contraseñas de routers inalámbricos podría ser todos los números de 10 cifras que comiencen por 88:

crunch 10 10 0123456789 -t 88%%%%%%%% -o wordlist_big


y nuevamente con head comprobamos que el diccionario sea correcto:


Rogue AP y Evil Twin

Un rogue access point (Rogue AP) es un punto de acceso no autorizado que levantamos en una red. Evil twin es un ataque MiTM que podemos realizar contra los usuarios de una red inalámbrica en la que levantaremos un rogue AP (Punto de Acceso no autorizado) que sea idénticamente igual a otro punto de acceso o router inalámbrico. Lo que buscamos con esto es que los clientes o dispositivos se conecten a nuestro punto de acceso en vez de al legítimo. Si tenemos más potencia que el AP legítimo o estamos más cerca del cliente que el AP legítimo y los clientes tienen configurado la conexión automática:


Los clientes se conectarán automáticamente a nuestro rougue AP (evil twin) en vez de al original. Incluso podemos forzar con la desconexión de un cliente del AP legítimo con un ataque deauth para forzar que se conecte a nuestro AP.

Rogue AP con airbase-ng

El programa airbase-ng nos permite levantar un punto de acceso de forma sencilla. Para ello, ejecutamos el comando airbase-ng y le pasamos las siguientes opciones:

  • --essid nombreDeLaRed
  • -c canalEnElQueQureremosEmitir
  • Como siempre la interfaz inalámbrica en modo monitor


y veremos que hemos levantado un punto de acceso:


en cuanto se conecte algún cliente, airbase-ng nos lo indicará:


Evil twin con airbase-ng

Vamos a ver cómo realizar este ataque con el programa airbase-ng de la suite aircrack. Primero usamos airodump-ng para ver las redes inalámbricas a nuestro alcance y seleccionar la red contra la que haremos el ataque evil twin:


Para levantar un evil twin (rogue AP idéntico a otro) usamos el programa airbase-ng pasandole las siguientes opciones:

  • -a BSSIDDelPuntoDeAccesoASuplantar
  • -essid nombreDeLaRedQueQueremosSuplantar
  • -c canalEnElQueEmiteLaAPLegítima
  • Como siempre la interfaz inalámbrica en modo monitor

Pendiente de actualizar

results matching ""

    No results matching ""