Introduction: How to Create a Monitoring System for Unauthorized Wireless Access Points

Saludos lectores.

El presente instructivo es una guía de como desarrollar un sistema de monitoreo de puntos de acceso inalámbricos no autorizados utilizando una Raspberry PI.

Este sistema fue desarrollado como parte de un trabajo de investigación de tesis de maestría de la Universidad Cenfotec de Costa Rica.

La aplicación esta conformada por dos elementos básicos, un dispositivo de monitoreo (Rasberry PI) el cual se encarga de recolectar señales inalámbricas del espacio físico que se desea monitorear, para posteriormente enviar dicha información al segundo elemento, un software de gestión y control que se encarga de analizar el comportamiento y patrones de las señales, en caso de detectar algún tipo de anomalía genera las alertas necesarias.

El instructivo se divide en dos secciones, la primera en como construir el dispositivo de monitoreo el cual se denomina WS-RPI, mientras que la segunda parte consiste en como reconfigurar el software de control y gestión el cual se denomina DAC-S.

Step 1: INSUMOS DE LA APLICACIÓN

  • Rasberry PI 3.
  • Rasbian versión de kernel 4.9.*.
  • Python 2.7.9.
  • MySql 14.14.
  • Wireless Card Alfa AWUS036ACH.
  • Node 4.8.
  • 2 Led.
  • 1 resistencia de 220Ohm.
  • Oracle Virtual Box.

Step 2: ARQUITECTURA DE LA SOLUCIÓN

Para poder realizar un escenario de pruebas de la solución, se requiere al menos una red local donde se encuentre instalado el DAC-S, un WS-RPI, un punto de acceso inalámbrico autorizado y un punto de acceso no autorizado o vecino.

Como se muestra en la imagen se propone crear una red local con el segmento de red 192.168.1.0/24, pues en este segmento de red se encuentran las direcciones IP que poseen el DAC-S (192.168.1.5) y la WS-RPI (192.168.1.10) por defecto.

En la red local también se propone que exista un equipo con la dirección de red 192.168.1.1, el cual funge como corta fuegos y default Gateway.

Por último, al punto de acceso autorizado se le asigno la dirección de red 192.168.1.2 y el ESSID “Autorizado”.

Step 3: WS-RPI: ACTUALIZAR LA RASPBERRY PI & INSTALAR CABECERAS DEL OS

Iniciamos la Raspberry PI, la cual se puede acceder mediante interfaz gráfica o mediante SSH (requiere configuración adicional), lo primero que se va a realizar es actualizar la versión del sistema operativo e instalar las cabeceras del sistema operativo, para esto se ejecutan los siguientes comandos:

Iniciar sesión como super administrador:

  • sudo - su

Se ejecutan los siguientes comandos para descargar las cabeceras del sistema operativo y instalar actualizaciones en caso de que haya disponibles:

  • apt-get update
  • apt-get upgrade
  • sudo apt-get install raspberrypi-kernel-headers

Step 4: WS-RPI: DESCARGAR EL SOFTWARE DE LA APLICACIÓN

Una vez se tiene actualizado el sistema operativo de la PI, se procede a instalar las fuentes del proyecto WS_RPI, para esto se debe descargar el archivo ws-rpi.software.tar y se debe colocar en el directorio raíz / del sistema operativo de la Raspberry PI.

Después de esto ejecutamos los siguientes comandos:

  • cd /
  • tar –xvf ws-rpi.software.tar

El último comando inicia el proceso de descompresión de los archivos, generando los siguientes directorios en el sistema operativo:

  • /cenfotect
  • home/pi/WS-RPI/

En dichos directorios se encuentran los recursos de software necesarios para instalar y configurar la aplicación correctamente siguiendo los pasos especificados en esta guía.

Step 5: WS-RPI: INSTALAR LIBRERÍAS NECESARIAS

Se instalan las librerías y herramientas necesarias para configurar el dispositivo, para esto se ejecutan los siguientes comandos:

  • apt-get install libc6-dev
  • apt-get install bc
  • apt-get install libssl-dev libnl-3-dev libnl-genl-3-dev ethtool

Step 6: WS-RPI: COMPILAR E INSTALAR EL DRIVER DE LA TARJETA INALÁMBRICA

El grupo de investigación decidió utilizar la tarjeta inalámbrica modelo Alfa AWUS036ACH para realizar las funciones de escaneo de señales, debido a que la tarjeta integrada de la PI no soporta trabajara en modo monitor y no posee soporte para trabajar en frecuencias de 5.8Mhz.

Para poder utilizar esta tarjeta se debe compilar e instalar el driver de forma manual, pues al momento de desarrollar la investigación no se encontraba disponible en el repositorio de paquetes del sistema operativo.

Antes de compilar el driver lo primero que se debe garantizar es que la tarjeta esté conectada a la PI, y se procede a ejecutar los siguientes comandos:

  • cd /home/pi/WS-RPI/rtl8812au/
  • make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm
  • make install

Reiniciamos el dispositivo para verifica que el driver cargue correctamente:

  • init 6

Una vez la Raspberry se ha reiniciado, verificamos que el modulo se inició correctamente, para esto verificamos que la PI reconozca la tarjeta wlan1, verificamos corriendo el siguiente comando:

  • ip a s

Step 7: WS-RPI: INSTALAR HERRAMIENTA AIRCRACK-NG

Se procede a instalar la herramienta aircrack-ng, para esto se ejecutan los siguientes

comandos:

  • cd /home/pi/WS-RPI/aircrack-ng-1.2-rc3/
  • make
  • make install
  • airodump-ng-oui-update

Step 8: WS-RPI: VERIFICAR VERSIÓN DE PYTHON

Parte del Core de la aplicación se desarrolló utilizando el lenguaje de programación Python 2.7, la cual se encuentra instalada por defecto en la PI, para verificar la versión de este lenguaje se puede ejecutar el siguiente comando:

  • Python –V

Step 9: WS-RPI: INSTALAR MYSQL

Ahora se instala las MySQL y sus respectivas dependencias, el cual funcionara como repositorio de datos de las señales recolectadas por la PI. Para esto se ejecutan los siguientes comandos:

  • apt-get install python2.7-mysqldb
  • apt-get install mysql-server --fix-missing

Cuando la instalación se encuentra en progreso, se muestra una ventana que solicita la contraseña de administración del MySQL, se debe ingresar el valor de la siguiente contraseña por defecto: R45p1Mysql2017.

Posterior a esto se oprime el botón aceptar hasta que la instalación se dé por finalizada.

Step 10: WS-RPI: INSTALAR NODEJS & EXPRESS

La GUI de la aplicación se desarrolló
utilizando el lenguaje de programación NodeJS 4.8, Raspberry por defecto trae instalado este lenguaje, pero es una versión bastante desactualizada, para actualizar los binarios a la versión requerida se deben ejecutar los siguientes comandos:

Se verifica que el nodejs se haya instalado correctamente ejecutando el siguiente comando:

  • node -v

El cual deberá mostrar que la versión es la 4.8.7.

Después se debe ir a la carpeta del proyecto donde se encuentran los códigos fuentes, y se instalan las dependencias para que funcionen correctamente, para esto se ejecutan los siguientes comandos:

  • cd /cenfotec/GUI/
  • npm install

Step 11: WS-RPI: CONFIGURACIÓN BASE DE DATOS

Se ejecuta el siguiente comando utilizando el usuario super administrador del MySQL y la contraseña que se ingresó cuando se instaló dicho programa.

Una vez se inicia sesión en la consola administrativa del MySQL se ejecuta el siguiente comando:

  • /home/pi/WS-RPI/SQL/Configure.sql

Ahora se crea la estructura de base de datos:

  • source /home/pi/WS-RPI/SQL/CreateDB.sql

Se saledel gestor de comandos MySql con el comando:

  • exit

Step 12: WS-RPI: CONFIGURACIÓN SCRIPT & SERVICIOS

Ejecutamos los siguientes comandos para realizar las configuraciones:

  • cd /cenfotec/script/
  • chmod +x *

Se verifica que todos los scripts hayan quedado con permisos de ejecución:

  • ls -lha

Ahora se crean los servicios que levantan la GUI y el socket de comunicación:

  • cd /cenfotec/GUI/
  • forever-service install wips-gui --script bin/www -p $(dirname "$(which forever)") -e "PATH=/usr/local/bin:$PATH"
  • forever-service install socket-py -s /cenfotec/socket/main.py -f " -c '/usr/bin/python'"

Ahora se inician los servicios creados en los pasos anteriores:

  • service socket-py start
  • service wips-gui start

Se verifica que los servicios se hayan iniciado correctamente verificando que los puertos 3000 y 9001 se encuentren disponibles en el dispositivo ejecutando el siguiente comando:

  • nmap localhost

Step 13: WS-RPI: INICIAR TAREAS PROGRAMADAS

Se habilitan las tareas programadas ejecutando los siguientes comandos:

  • service cron reload
  • update-rc.d cron enable 2 3 4 5
  • crontab -e

Se agrega el siguiente contenido al final del archivo cron:

# Tarea programada que realiza el escaneo de señales
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /cenfotec/script/airodump-ng.sh

Step 14: WS-RPI: CONFIGURACIÓN DE RED

Ahora se procede a configurar la red de la PI, de tal forma que la configuración sea la que carga la aplicación de monitoreo, y no la que trae el dispositivo por defecto, para esto editamos el archivo /etc/network/interfaces con el editor de su preferencia, para este caso se utilizara vi.

Ejecutamos el siguiente comando:

  • vi /etc/network/interfaces

Dejamos el archivo de configuración de la siguiente manera:

# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d
auto lo iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0 iface wlan0 inet manual # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1 iface wlan1 inet manual # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet manual

Step 15: WS-RPI: CONFIGURACIÓN PERMANENTE

Se configura el script que inicia la configuración cuando el dispositivo carga el sistema operativo:

  • vi /etc/rc.local

Agregamos el siguiente contenido al final del archivo:

/cenfotec/script/startConfig.sh >> /cenfotec/logs/start.log 2>> /cenfotec/logs/start.error
exit 0

Step 16: WS-RPI: VERIFICAR FUNCIONAMIENTO

Una vez finalizada la configuración se reinicia el dispositivo, ejecutando el siguiente comando:

  • init 6

Una vez el dispositivo cargue se deberá encender la luz led color amarilla de forma fija, esto es un indicador de que el dispositivo inicio correctamente pero aún no ha sido configurado. La dirección de red que carga por defecto es la 192.168.1.10.

Para ingresar a la pagina de gestión de dispositivo se debe conectar el PC del usuario a un mismo segmento de red que el dispositivo, y en un navegador Web ingresar la siguiente dirección:

http://192.168.1.10:3000/

Se muestra la página de inicio de sesión de la GUI de configuración del dispositivo, el usuario y contraseña por defecto son admin y defaultAdmin respectivamente.

Step 17: WS-RPI: Estado General Del Dispositivo

Después de iniciar sesión en la WS-RPI, el sistema despliega una pantalla de estado general del dispositivo, como nombre, dirección de red del controlador, puerto de gestión del controlador, tiempo encendido, hora, direcciones de red y estado de las particiones.

Step 18: WS-RPI: Cambiar Configuración Del Dispositivo

Después de iniciar sesión en la WS-RPI, el sistema despliega una pantalla de estado general del dispositivo, como nombre, dirección de red del controlador, puerto de gestión del controlador, tiempo encendido, hora, direcciones de red y estado de las particiones.

En caso de que se desee cambiar la configuración del dispositivo, una vez se haya iniciado sesión se puede oprimir sobre el botón “Configuración”, en el cual se pueden cambiar parámetros de red como usuario y contraseña de gestión, configuración de red, parámetros de base de datos, entre otros.

Step 19: DACS: CONFIGURACIÓN

El sistema DAC-S se brinda bajo la modalidad de un discovirtual, el cual puede ser importado en un software de virtualización como VirtualBox o VMware Workstation Player.

El disco de la maquina virtual puede ser descargado de la siguiente URL: DAC-S Disco Virtual.

Una vez importando el disco virtual en el software de virtualización e iniciado el sistema operativo, el DAC-S inicia automáticamente en un ambiente que se encuentra configurado con todos los componentes y programas utilizados en el desarrollo del sistema.

Step 20: DACS: INSTALACIÓN DEL AMBIENTE VIRTUALIZADO

Instalar el software de virtualización “VirtualBox”, disponible en la dirección: https://www.virtualbox.org/wiki/Downloads.

Colocar los archivos del disco virtual en un directorio de fácil acceso o donde el usuario los desee instalar.

Step 21: DACS: IMPORTAR EL DISCO EN EL SOFTWARE DE VIRTUALIZACIÓN

Para importar el disco virtual en el software de virtualización Oracle VirtualBox se deben ejecutar los siguientes pasos:

  • Abrir el software de virtualización “VirtualBox”.
  • Clic en el botón “Nueva”, ingresar el nombre y seleccionar el sistema operativo “Microsoft Windows”, “Windows 7 (64-bit)”, clic en el botón “Next”.
  • Seleccionar el tamaño de la memoria RAM de la maquina virtual.
  • En la opción de disco duro seleccionar “Usar un archivo de disco duro virtual existente”. Clic sobre el ícono de la carpeta, ubicar el disco virtual mencionado en los pasos anteriores y seleccionarlo “WIN 7 disco-virtual”.

  • Clic en el botón “Crear”.

Step 22: DACS: INICIAR LA MÁQUINA VIRTUAL

Para iniciar la máquina virtual, clic sobre el botón “Iniciar” y esperar que se despliegue el escritorio del sistema operativo.

Step 23: DAC-S: ACCEDER a LA APLICACIÓN DE GESTIÓN

Una vez la maquina virtual haya iniciado, se puede ingresar al aplicación de gestión del DAC-S, para esto se deben seguir los siguientes pasos:

Abrir un navegador, por ejemplo: Google Chrome.

Ingresar la siguiente dirección en el navegador: http://localhost:8080/dac-s/login

Ingresar el usuario y contraseña. Usuario por defecto es “admin” y la contraseña es “pass123”.

Step 24: DAC-S: MENU PRINCIPAL

Después de iniciar sesión se muestra la pantalla de bienvenida al sistema y las opciones del menú de la aplicación.

Step 25: DAC-S: MENÚ DE CONFIGURACIÓN

Antes de utilizar el DAC-S se recomienda revisar y configurar los parámetros requeridos por la aplicación para su funcionamiento.

Se ha dividido en tres secciones:

  • Sistema: Se debe tener principal atención al campo “Correo electrónico”, y colocar el correo al cual desea recibir notificaciones.
  • Base de datos: Se gestionan los parámetros de conexión de base de datos, la maquina virtual se encuentra lista para que no se necesite modificar estos parámetros.
  • Correo: Corresponde a los datos de configuración del servidor de correo que utilizará la aplicación para el envío de notificaciones. En este caso se esta utilizando Gmail como servidor de correo. Por lo que debe de configurar el campo “Usuario SMTP”, que corresponde a la cuenta de correo de Gmail desde la cual se van a enviar las notificaciones.

Step 26: DAC-S: MENÚ “WS-RPI”

Este menú permite agregar y configurar los WS-RPI (Wireless sensor Raspberry PI), para esto se deben seguir los siguientes pasos:

  • Dar clic sobre el icono + de color verde, el cual mostrará una pantalla solicitando los siguientes datos:
    • Nombre: Nombre para identificar el WS-RPI.
    • Usuario: Usuario de gestion del WS-RPI
    • Contraseña: Contraseña del WS-RPI
    • IP: Dirección de red asignada al WS-RPI.
    • Puerto: puerto para establecer la conexión con el WS-RPI.
  • Clic en el botón “Guardar”. Seguidamente se mostrará el WS-RPI en el listado.

Step 27: DAC-S: CONFIGURAR EL WS-RPI

En el listado, sobre el WS-RPI previamente agregado, dar clic sobre el botón “Editar”. Para configurar y verificar que el sistema tiene conexión con el WS-RPI, dar clic sobre el botón “Configurar”. Si la configuración se ha aplicado correctamente, se mostrará el siguiente mensaje “WS-RPI configurado correctamente, proceda a guardar los cambios”.

Una vez se haya realizado la configuración se habilitará un nuevo campo “Estado”, el cual puede tener los siguientes valores:

  • “Activo”: Significa que el WS-RPI se encuentra listo para entrar en operación
  • “Inactivo”:Significa que el WS-RPI aún no entrará en operación, pero se encuentra debidamente configurado.

Finalmente dar clic sobre el botón “Guardar” para aplicar los cambios.

Step 28: DAC-S: MENÚ “LISTADO DE WS-RPI INALÁMBRICOS”

Muestra un listado de WS-RPI que se encuentran en estado “Activo”. Para cada WS-RPI se pueden realizar las siguientes operaciones.

  • Obtener el inventario: Al dar clic sobre el botón “Inventario”, se le solicita al dispositivo WS-RPI el listado de puntos de acceso detectados.
  • Almacenar el listado de puntos de acceso al dar clic sobre el botón “Guardar”,.
  • Clasificar Puntos de Acceso: Al dar clic sobre el botón “ClasificarAP”, permite clasificar cada uno de los puntos de acceso de acuerdo de acuerdo a nuestro criterio.

Step 29: DAC-S: MENÚ “PLANO”

Muestra de forma gráfica los WS-RPI agregados en el DAC-S. Para cada WS-RPI configurado se muestran la siguiente información:

  • Nombre: corresponde al nombre del WS-RPI.
  • Inventario: Puede tener los siguientes valores (Sin inventario, Guardado y Clasificado), mostrándose en color verde cuando contiene “Clasificado”, lo cual indica que para ese WS-RPI ya se cuenta con una base de datos contra la cual comparar los nuevos puntos de acceso inalámbricos detectados y si corresponde generar alertas.
  • Estatus: puede tener los siguientes valores (Sin estatus, Problema de configuración, Sin comunicación y Correcto), mostrándose es color verde cuando contiene “Correcto”, lo cual indica que el WS-RPI se encuentra online.
  • Alertas: muestra el número de alertas que se han generado de ese WS-RPI y que aún no han sido atendidas.
  • Otros detalles: al dar clic sobre la imagen del WS-RPI se podrá visualizar información adicional como la IP y la fecha hora de la última conexión.

Step 30: DAC-S: MENÚ “GESTIÓN DE ALERTAS”

Muestra un listado de las alertas que se han generado. Importante mencionar que para cada alerta generada también se envía un correo de notificación al usuario administrador del sitio, informando sobre el evento.

Para visualizar más detalle sobre una alerta y poder gestionarla, se debe dar clic sobre el botón “Gestionar”.

Los campos a los que debe prestar más atención son:

  • Detalle: Opción donde se muestra información detallada sobre el punto de acceso detectado.
  • Acción: De acuerdo al criterio del administrador de la aplicación, selecciona la acción a tomar, en este caso se ha seleccionado “Mover al inventario como vecino”, lo que significa que se sabe de donde proviene el punto de acceso y además se va a incorporar en la base de datos como vecino.
  • Descripción: Detalle asignado por el administrador de aplicación al momento de gestionar la alerta.

Para gestionar la alerta, dar clic sobre el botón “Guardar”.

Seguidamente el sistema redirige al listado donde el estado de la alerta a cambiado a “Tramitada”.

Step 31: DAC-S: ARQUITECTURA

El DAC-S está compuesto por dos partes, la parte visual de gestión por parte del usuario (Frontend) y la parte de procesamiento (Backend)

Tecnologías utilizadas:

  • Angular 4
  • Spring boot
  • Webservice Rest
  • JPA
  • Hibernate
  • Mysql

Herramientas de desarrollo:

  • Spring Tool Suite
  • Sublime Text
  • MySQL Workbench

Frontend:

Es la parte visual con la que el usuario interactúa con la aplicación. Esta desarrollado en Angular, un framework de JavaScript de código abierto, mantenido por Google.

Step 32: DAC-S: ACCEDER AL CÓDIGO FUENTE DEL FRONTEND

Pasos para acceder al código fuente del backend:

  • Ubicar en el escritorio el icono de acceso directo “sublime_text – Acceso directo”.
  • Dar doble clic sobre el ícono para iniciar la herramienta de desarrollo, el cual mostrará el IDE con el código del proyecto para su análisis.

Step 33: DAC-S: ACCEDER AL CÓDIGO FUENTE DEL BACKEND

Este módulo se compone de los siguientes elementos:

  • Servicios Web Rest: la interacción entre el Frontend y el Backend se da a través de servicios web. Estos servicios reciben las peticiones, ejecutan la lógica de procesamiento y devuelven respuesta a la aplicación del usuario.

Los servicios web están desarrollados en java. Se utilizó el entorno de desarrollo de la suite de herramientas de Spring (Spring Tool Suite).

Para más detalle acerca el código del Backend:

  • Ubicar en el escritorio el ícono de acceso directo “STS – Acceso directo”.
  • Se mostrará el IDE de desarrollo con el código fuente del proyecto para su análisis.

Step 34: DAC-S: ACCESO a LA BASE DE DATOS

La base de datos utilizada es MySQL, tecnología de libre uso y de fácil gestión.

Para poder acceder a la base de datos se deben ejecutar los siguientes pasos:

  • Ubicar en el escritorio el ícono de acceso directo “MySQL Workbench – Acceso directo”.
  • Dar doble clic sobre el ícono para abrir la aplicación.
  • Ubicar la conexión a la base de datos con el nombre “ConexiónMsql”.
  • Dar doble clic sobre la conexión para acceder a la base de datos.
  • Se muestra pantalla del IDE con la base de datos y las respectivas estructuras que la componen.