Preparando un lab para pen-testing WiFi

Tras haber conseguido que la Raspberry Pi consiga hablar con una máquina virtual Kali y sea capaz de capturar las tramas 802.11 y enviarlas para su análisis al Kali, voy a empezar a auto-educarme en pruebas de penetración en redes inalámbricas. Para ello, voy a montar un entorno de lab sobre la base de la cacharrería que tengo por casa.

En primer lugar, como punto de acceso WiFi voy a utilizar mi viejo router Belkin F5D7632-4. El router lo he reseteado a los settings por defecto y lo configuraré para que haga de punto de acceso inalámbrico.

DCP_1498

Como máquina atacante voy a emplear un viejo Dell Latitude E6400 con la batería estropeada al que le he añadido una interfaz wireless adicional USB que tenía por casa (una Belkin Wireless G F5D7050) ésta la voy a usar para comunicarme con el equipo y la tarjeta wireless interna (PCI) la usaré para monitorizar la red. Al equipo le voy a montar un Kali Linux que arranque desde un pincho USB en el que grabé la imagen con Rufus.

dell-e6400

Belkin_F5D7050_Wireless_G_USB_Network_470079

Finalmente, la máquina atacada va a ser la Raspberry Pi Model B:

Pi2ModB1GB_-comp

Voy a ir relatando los pasos que voy a seguir para configurar el entorno de pruebas para que cuando tenga que volver a hacerlo, poder emplear este post como referencia.

1. Configuración del Router

Empecemos con el router. Para arrancar limpiamente, he reseteado el router al estado inicial de fábrica , me conecto con un cable ethernet y arranco la interfaz de administración (en el caso del Belkin hay que conectarse a la IP 192.168.2.1).

Lo primero que hago es establecer una contraseña de administrador y, a continuación, configuro los parámetros de la LAN incluyendo la configuración de DHCP. Para el lab, voy a emplear la clase C privada 192.168.200.0/24.

Imagen4b

Al aplicar los cambios necesito volver a conectarme (he cambiado la red y la dirección del router). Hago login con mi nueva contraseña y paso a configurar la WiFi. Establezco el SSID (HACKME_001) y el canal (9) de forma que no haya conflictos con otras WiFis de los alrededores:

Imagen2b

Inicialmente quito la seguridad:

Imagen3b

2. Configuración del PC

Voy a configurar ahora el PC. Como ya comenté antes, mediante el programa Rufus, cree una imagen arrancable de Kali (version 2016-2) en un pincho USB. Los pasos que sigo son:

  1. Configurar la BIOS para que el PC arranque desde un puerto USB
  2. Conectar el pincho con la imagen arrancable a un puerto USB.
  3. Conectar, a otro puerto USB, la tarjeta WLAN.

Una vez completado esto, pulso el botón de ON y, el PC arranca y aparece el desktop de Kali.

Imagen5a

A continuación, voy a ver qué interfaces tiene el PC. Debería tener dos interfaces wireless LAN. Para verlo, lanzo el comando ifconfig.

Screenshot from 2016-07-25 19-59-34

Efectivamente, aparecen dos interfaces: wlan0 y wlan1 pero ahora necesito saber cuál es cuál. Empleando los comandos lsusb y lspci averiguo que la interfaz interna es una Intel Corporation WiFi Link y que la conectada en el puerto USB es una Belkin F5D7050 Wireless G Adapter pero sigo sin saber cuál es wlan0 y cual wlan1. Otros comandos (iwconfig, dmesg) siguen sin aclararme las dudas pero, finalmente, yendo al directorio /sys/class/net consigo aclararme, parece que wlan0 es la interfaz PCI y wlan1 la interfaz USB.

Screenshot from 2016-07-25 20-05-04

Screenshot from 2016-07-25 20-05-33

Screenshot from 2016-07-25 20-23-25

Le echo un ojo a lo que dice iwconfig. Voy a usar wlan0 para hacer de monitor y wlan1 para conectarme a la red doméstica y, por lo tanto, a Internet.

Screenshot from 2016-07-25 20-25-36

Ahora toca configurar las interfaces de red. Esto lo hago a través de la interfaz gráfica. La interfaz wlan1 (la que voy a usar para conectarme al mundo) la configuro con una dirección IP estática (me facilita la vida para conectarme al equipo por SSH) y la interfaz wlan0 usará una dirección IP dinámica obtenida del router Belkin:

Imagen6

Pruebo que haya conexión a todos lados:

Imagen7

Instalo el servidor open-ssh para poder acceder en remoto, lo configuro y compruebo que accedo:

Screenshot from 2016-07-25 21-16-34

Imagen5b

Rearranco y … ¡cagada!, arranqué la imagen como Live (amd64) y debería haberla arrancado como Live USB Persistence (amd64), toda la configuración realizada se fue al garete. ¡Suerte que tengo todos los pasos documentados!, no tengo más que repetir lo que acabo de hacer.

Segunda cagada, necesito seguir las instrucciones que dicen como crear una imagen persistente de Kali así que, de nuevo, a repetir todo el proceso.

Finalmente, a la tercera fue la vencida, ya se mantienen los settings entre arranques aunque queda por configurar que pida contraseña al arrancar y cambiar la contraseña de root. Para hacer esto, sigo los pasos que se identifican aquí y me pide usuario y contraseña para entrar.

El último aspecto que dejo para más adelante es el de la fecha y hora. El portátil no la mantiene y es un rollo tener fecha de hace seis meses.

Conseguida la configuración de la máquina atacante.

3. Configuración de la Raspberry Pi

Aquí la configuración a realizar debería ser, simplemente, la relacionada con la tarjeta WiFi. Como esto no parece muy complicado, empiezo intentando encontrar una forma de cambiar de conectarme a distintas redes WiFi sin necesidad de tocar ficheros de configuración ni rearrancar el aparato. En casa tengo dos puntos de acceso (router de banda ancha y repetidor WLAN) y, además, los de los routers que utilizo para pruebas y si salgo fuera, necesito poder configurar las WiFi de forma fácil.

Hay bastantes respuestas en Internet para cambiar de WiFi automáticamente pero no consigo encontrar una que me permita hacerlo de forma manual. Lo que consigo es liarme y perder tres días jugando con los ficheros de configuración. Finalmente he decidido mantener distintos juegos de ficheros de configuración y reemplazarlos y rearrancar cuando sea necesario. Sin embargo, me queda buscar una solución para esto y lo anoto como una tarea a futuro.

He configurado que la Rasp tenga una dirección IP estática dentro del rango de la clase C del lab. En concreto, la 192.168.200.2. A continuación pongo los fragmentos de los ficheros de configuración que he tenido que tocar:

  • Fichero: /etc/network/interfaces

Imagen8

  • Fichero /etc/dhcpcd.conf

Imagen9

  • Fichero /etc/wpa_supplicant/wpa_supplicant.conf

Imagen10

Rearranco la Rasp y vamos a ver qué configuración tiene y si hay conectividad con los restantes elementos de la WiFi:

Imagen11

Imagen12

Imagen13

Vamos a probar que hay conectividad desde el Kali a la Rasp:

Imagen14

¡Conseguido!

Creando un WIDS casero (y IV)

En el post anterior de la serie, detallé cómo configuré la Raspberry Pi para actuar de sonda en la captura de paquetes 802.11 empleando Kismet (en modo drone). El objetivo es analizar esos paquetes para detectar la presencia de puntos de acceso inalámbricos no autorizados.

En este post, último de la serie, voy a describir como configuro el drone de Kismet en la Rasp y el servidor y el cliente en una máquina virtual para comprobar que puedo capturar los paquetes inalámbricos. En futuros posts iré viendo qué capacidades tiene esta solución.

En la arquitectura de Kismet, el drone captura los paquetes a través de la interfaz inalámbrica y el servidor se conecta al drone para procesar los paquetes que van a ser presentados a través de una aplicación cliente.  En mi entorno, servidor y cliente se ejecutarán en una una máquina virtual sobre Kali Linux, conectada a la DMZ de mi laboratorio virtual. Voy a obviar los detalles de la instalación de Kali para centrarme en el WIDS. La dirección IP de la máquina donde se encuentra el server será 10.1.4.9.

Lo primero que voy a hacer es comprobar que existe conectividad entre la rasp y Kali:

Imagen27

Imagen28

Hasta ahora todo bien, voy a configurar ahora el drone en la Rasp. Lo que voy a hacer es poner, bajo control de versiones, los ficheros de configuración de kismet para poder editarlos cómodamente en el PC.

En la Raspberry edito el fichero /usr/local/etc/kismet_drone.conf y configuro la conectividad del drone:

Imagen29

En kali, edito el fichero /etc/kismet/kismet.conf y configuro, como fuente de paquetes el drone:

Imagen30

Arranco el drone en la Rasp en modo daemon y compruebo que esté a la escucha en el puerto 2502:

Imagen31

Imagen32

Ahora toca el turno al cliente y al server en Kali. En una consola introduzco el comando kismet y, despues de un par de cuestiones relacionadas con el arranque del server veo algo así:

Imagen33

Esto está conseguido.