Wireless IDS

Wireless Sniffer: airtun-ng vs dot11decrypt (Wireless IDS)

 Objetivo

El objetivo principal es conseguir un Wireless IDS / IPS para una red casera. Para empezar, y probar, implementado en una máquina virtual (Kali linux 2)

El primer paso de todos es utilizar un sniffer (captura de paquetes), conocida la Red Wifi y su contraseña. Se trata de una captura y desencriptado “al vuelo”, evitando así realizar lo mismo con ataques de Hombre en el medio (MiTM Man in the Middle)

Tras investigar por Internet (http://average-coder.blogspot.com.es/2013/06/decrypting-wepwpa2-traffic-on-fly.html), existen dos herramientas para hacer esto. Las dos se basan en lo mismo:

  1. Tarjeta de Red Wifi en modo monitor para capturar paquetes
  2. Creación de un nuevo interface de red virtual (de tipo tun/tap) donde se envían los paquetes capturados y desencriptados (para ello es necesario capturar el handshake de cada dispositivo)
  3. Usar cualquier herramienta de tipo IDS/IPS en ese nuevo interfaz de red

Las herramientas son :

El hecho de hacerlo en una máquina virtual hace que existan ciertas peculiaridades para que todo funcione bien, ya que es necesario tener un pincho usb wifi.

El proceso es el siguiente, puesto que aircrack ya está instalado por defecto en Kali, y es fácil su instalación en otros SO’s:

  1. Instalación de dot11decrypt y libtins
  2. Pasos para el funcionamiento correcto en el entorno de la Máquina Virtual (USB WiFi e interfaz virtual tun/tap)
  3. Prueba con dot11decrypt
  4. Prueba con airtun-ng
  5. snort

1. Instalación de dot11decrypt y libtins

Existen dos posibilidades, descargar una versión compilada ya e instalarla (https://github.com/ICSec/airpwn-ng/tree/master/DEBs, que funcionan perfectamente)  o bien compilarla directamente, que se muestra a continuación:

Tras muchas pruebas y errores, siguiendo las instrucciones de la web de los desarrolladores de dot11decrypt y libtins, en Kali 2, el primer paso es actualizar los repositorios de kali (http://docs.kali.org/general-use/kali-linux-sources-list-repositories , editando el archivo /etc/apt/sources.list)

deb http://http.kali.org/kali kali-rolling main contrib non-free
# For source package access, uncomment the following line
deb-src http://http.kali.org/kali kali-rolling main contrib non-free

deb http://old.kali.org/kali sana main non-free contrib
# For source package access, uncomment the following line
deb-src http://old.kali.org/kali sana main non-free contrib

Después, como es habitual, jecutar el comando apt-get update.

Puesto que para compilar se usa cmake, hay que instalarlo, junto con las dependencias que faltan en Kali:

 

apt-get install libpcap-dev libssl-dev cmake

Instalar cmake hace que el proceso sea un poco largo…

Ahora procedemos a descargar las fuentes de github, primero libtins, pues dot11decrypt depende de él.

wget https://github.com/mfontanini/libtins/archive/master.zip

Seguimos las instrucciones de compilación de la web (cmake ../ -DLIBTINS_ENABLE_CXX11=1):

Una vez compilado, se instala (make install)

Ahora instalamos dot11decrypt, de la misma manera que antes, lo bajamos y lo compilamos:

wget https://github.com/mfontanini/dot11decrypt/archive/master.zip

Seguimos las instrucciones de compilación de la web (cmake ..)
Una vez compilado, se instala (make), ojo que el ejecutable está disponible en la carpeta de trabajo, no se “instala” en el sistema

2 Pasos para el funcionamiento correcto en el entorno de la Máquina Virtual

Resulta que el entorno de la máquina virtual (en mi caso VMWare) y el hecho de que haya que usar un adaptador WiFi USB (para que tengamos WiFi en dicha máquina virtual), hace que las cosas sean un poco inestables, y después de muchas pruebas e intentos, los pasos para que todo funcione correctamente son:

  1. Iniciar la Máquina Virtual, y agregarle el USB WiFi, comprobando que lo reconoce (ifconfig / iwconfig)
  2. Reiniciar la Máquina Virtual con el USB WiFi conectado previamente (es decir, sin desconectarlo desdel el paso anterior).
    • Esto es así porque en el paso 1, por alguna razón, el modo monitor no captura paquetes…
  3. Poner la tarjeta Wifi en modo monitor (con iwconfig o airmon-ng) en el canal adecuado (para la posible des-autenticación posterior)
    • Nos interesan todos los clientes de la red, por lo que para capturar su handshake hay que echarlos, (ataque deauth con aireplay, o bien reiniciando el router WiFi)
  4. Comprobar modo monitor con airodump.
  5. Ejecutar el  sniffer (uno de los dos)
    • Dot11decrypt: es más automático, es mejor mantener un airodump-ng abierto
    • Airtun-ng: requiere tener una sesión abierta ejecutando airodump-ng  y posteriormente activar el interface tap/tun creado para que comience el proceso de desencriptación al vuelo.
    • Es importante tener en cuenta que si ocurre algún error, o reiniciamos uno de estos 2 sniffers, tendremos que volver al punto 1, ya que hay problemas con el interface virtual tap/tun creado (más adelante muestro el error)
  6. Conectar clientes
    • Comprobar si se captura el handshake
  7. Deautenticar clientes o reiniciar el WiFi
    • Comprobar si se captura el handshake

3. Prueba con dot11decrypt

Para las pruebas, usaré un portátil con Windows 10 y VMWare, donde se ejecuta una Máquina Virtual de Kali 2. El portátil tiene un adaptador WiFi USB Edimax EW-7711USn, que soporta directamente el modo monitor (es decir, no es necesario usar airmon-ng). Como WiFi usaré el AP de un móvil Android. Como clientes, otro móvil y otro portátil.

Tenemos que seguir los pasos anteriores.

Una vez reiniciada la Máquina Virtual, ponemos la tarjeta wifi en modo monitor y comprobamos con airodump-ng

airodump-ng, la WiFi es Lenovo K910

Ahora ejecutamos dot11decrypt, es mejor dejar corriendo el airodump-ng, pues en algunos casos he observado que no se captura la WiFi.

El comando a usar es:

./dot11decrypt wpa:'Lenovo K910':contraseña

Ahora, conecto dos clientes a la wifi: un segundo móvil y otro portátil. Los handshakes se capturan y ya podemos usar cualquier aplicación con este nuevo interface (tap0 en este caso)

Prueba de tráfico (ping) entre el portátil y el móvil capturados:

Una vez todo funcionando, podemos reiniciar la wifi o usar un ataque deauth para conseguir capturar el handshake de todos los clientes de la wifi, y de este modo poder iniciar nuestro Wireless IDS (sin cerrar dot11decrypt, vemos que vuelve a capturar de nuevo los handshakes…)

4. Prueba con airtun-ng

Repitiendo el mismo escenario que el punto 3 anterior, esta vez usando airtun-ng y airodump-ng (que es necesario para que airtun capture paquetes).

La ejecución ha de ser por el siguiente orden:

  1. Ejecutar airodump-ng y dejarlo corriendo
  2. Ejecutar airtun-ng. Ojo al orden de las opciones, un orden distinto causa error …airtun-ng   -a  -p  -e   (-a Mac de la Wifi, -p Contraseña, -e SSID)
    • En mi caso será: airtun-ng -a ‘6C:XX:XX:XX:XX:81’ -p ‘XXXXXX’ -e ‘Lenovo K910’ -t 0 wlan0
  3. En otra ventana, activar o levantar el nuevo interfaz creado, entonces la ventana de airtun comienza a capturar paquetes (y handshakes)

Ahora, probamos a echar a los clientes con un ataque deauth, y comprobamos que vuelve a capturarse el handshake:

Problemas con el interfaz virtual tap

Antes comentaba que si teníamos algún fallo en la ejecución, había que reiniciar la Máquina Virtual y volver a empezar. La captura siguiente muestra que tras una interrupción de la ejecución de dot11decrypt, una nueva ejecución resulta en que las cosas no funcinen como deben. El interfaz tap se destruye tras la finalización de la primera ejecución, y se vuelve a crear en la segunda, pero algo no va bien….

5. Snort IDS

El objetivo de todo era poder usar Snort como Wireless IDS. En kali snort está disponible en los repositorios (apt-get install snort). Y como prueba, comprobamos que funciona.

En este caso, uso airtun-ng, y con otra wifi, se capturan los dispositivos: Tablet, Móvil y Portátil Windows 10, host de la máquina virtual (con su tarjeta wifi interna). Vemos como un ping es capturado por snort

El siguiente paso (en otra entrada) será configurar el trío Snort + Barnyard2 + Snorby, para poder tener una interfaz gráfica (snorby) donde mostrar los resultados de Snort (a través de barnyard2, que vuelca los resultados de snort en una base de datos)

 

1 Comment

  1. Wireless Sniffer: Snort, Snorby, Barnyard2 (Wireless IDS Parte 2) – Abraza la Web · martes, 13 diciembre, 2016 Reply

    […] el post anterior se creaba una tarjeta virtual de red (tun/tap) donde se redirigía todo el tráfico wifi capturado […]

Leave a Reply

Tu dirección de correo electrónico no será publicada.