Script para parsear las capturas de Aircrack-ng en una base de datos SQLite y extraer información útil como handshakes (en formato hashcat 22000), identidades MGT, relaciones interesantes entre APs, clientes y sus sondas, información WPS y una vista global de todos los APs vistos.
Una de las características más notables de wifi_db es su capacidad para identificar rápidamente las relaciones entre APs y clientes. También agiliza el proceso de descifrar redes PSK, obtener identidades en redes empresariales y detectar redes almacenadas en dispositivos conectados a redes corporativas que podrían ser vulnerables a ataques.
Características de WiFi_DB
- Muestra si una red está encubierta (oculta) aunque se tenga el ESSID.
- Muestra una tabla detallada de los clientes conectados y sus respectivos APs.
- Identifica las sondas de clientes conectadas a APs, proporcionando una visión de los riesgos potenciales de seguridad utilizando Rogue APs.
- Extrae handshakes para su uso con hashcat, facilitando el descifrado de contraseñas.
- Muestra información de identidad de redes empresariales, incluido el método EAP utilizado para la autenticación.
- Genera un resumen de cada grupo de AP por ESSID y cifrado, dando una visión general del estado de seguridad de las redes cercanas.
- Proporciona una tabla de información WPS para cada AP, detallando información sobre la configuración Wi-Fi Protected Setup de la red.
- Registra todos los casos en los que se ha visto un cliente o AP con los datos GPS y la marca de tiempo, lo que permite realizar análisis basados en la ubicación.
- Carga de archivos con carpeta o archivo de captura. Esta opción admite el uso de comodines (*) para seleccionar varios archivos o carpetas.
- Versión Docker en Docker Hub para evitar dependencias.
- Modo ofuscado para demostraciones y conferencias.
- Posibilidad de añadir datos GPS estáticos.
Instalación de WiFi_DB
Desde DockerHub (RECOMENDADO)
docker pull r4ulcl/wifi_db
Instalación manual
Sistemas basados en Debian (Ubuntu, Kali, Parrot, etc.)
Dependencias:
- python3
- python3-pip
- tshark
- hcxtools
sudo apt install tshark
sudo apt install python3 python3-pip
git clone https://github.com/ZerBea/hcxtools.git
cd hcxtools
make
sudo make install
cd ..
Instalación
git clone https://github.com/r4ulcl/wifi_db
cd wifi_db
pip3 install -r requirements.txt
Arch
Dependencias:
- python3
- python3-pip
- tshark
- hcxtools
sudo pacman -S wireshark-qt
sudo pacman -S python-pip python
git clone https://github.com/ZerBea/hcxtools.git
cd hcxtools
make
sudo make install
cd ..
Instalación
git clone https://github.com/r4ulcl/wifi_db
cd wifi_db
pip3 install -r requirements.txt
Uso de WiFi_DB
Escanear con airodump-ng
Ejecuta airodump-ng guardando la salida con -w
:
sudo airodump-ng wlan0mon -w scan --manufacturer --wps --gpsd
Crear la base de datos SQLite utilizando Docker:
#Carpeta con capturas
CAPTURESFOLDER=/home/user/wifi
# Salida de la base de datos
touch db.SQLITE
docker run -t -v $PWD/db.SQLITE:/db.SQLITE -v $CAPTURESFOLDER:/captures/ r4ulcl/wifi_db
-v $PWD/db.SQLITE:/db.SQLITE
: Para guardar la salida en la carpeta actual archivo db.SQLITE-v $CAPTURESFOLDER:/captures/
: Para compartir la carpeta con las capturas con el docker
Crear la base de datos SQLite mediante instalación manual
Una vez creada la captura, podemos crear la base de datos importando la captura. Para ello ponemos el nombre de la captura sin formato.
python3 wifi_db.py scan-01
En el caso de que tengamos varias capturas podemos cargar directamente la carpeta en la que están. Y con -d
podemos renombrar la base de datos de salida.
python3 wifi_db.py -d database.sqlite scan-folder
Abrir base de datos
La base de datos se puede abrir con:
A continuación, se muestra un ejemplo de una tabla ProbeClientsConnected.
Argumentos:
usage: wifi_db.py [-h] [-v] [--debug] [-o] [-t LAT] [-n LON] [--source [{aircrack-ng,kismet,wigle}]] [-d DATABASE] capture [capture ...]
positional arguments:
capture capture folder or file with extensions .csv, .kismet.csv, .kismet.netxml, or .log.csv. If no extension is provided, all types will
be added. This option supports the use of wildcards (*) to select multiple files or folders.
options:
-h, --help show this help message and exit
-v, --verbose increase output verbosity
--debug increase output verbosity to debug
-o, --obfuscated Obfuscate MAC and BSSID with AA:BB:CC:XX:XX:XX-defghi (WARNING: replace all database)
-t LAT, --lat LAT insert a fake lat in the new elements
-n LON, --lon LON insert a fake lon in the new elements
--source [{aircrack-ng,kismet,wigle}]
source from capture data (default: aircrack-ng)
-d DATABASE, --database DATABASE
output database, if exist append to the given database (default name: db.SQLITE)
Base de Datos
wifi_db contiene varias tablas para almacenar información relacionada con el tráfico de red inalámbrica capturado por airodump-ng. Las tablas son las siguientes:
AP
: Esta tabla almacena información sobre los puntos de acceso (AP) detectados durante las capturas, incluyendo su dirección MAC (bssid), nombre de red (ssid), si la red está camuflada (cloaked), fabricante (manuf), canal (channel), frecuencia (frequency), portadora (carrier), tipo de encriptación (encryption), y total de paquetes recibidos desde este AP (packetsTotal). La tabla utiliza la dirección MAC como clave primaria.Client
: Esta tabla almacena información sobre los clientes inalámbricos detectados durante las capturas, incluyendo su dirección MAC (mac), nombre de red (ssid), fabricante (manuf), tipo de dispositivo (type) y total de paquetes recibidos de este cliente (packetsTotal). La tabla utiliza la dirección MAC como clave primaria.SeenClient
: Esta tabla almacena información sobre los clientes vistos durante las capturas, incluyendo su dirección MAC (mac), hora de detección (time), herramienta utilizada para capturar los datos (tool), intensidad de la señal (signal_rssi), latitud (lat), longitud (lon), altitud (alt). La tabla utiliza la combinación de dirección MAC y hora de detección como clave primaria, y tiene una relación de clave foránea con la tabla Client.Connected
: Esta tabla almacena información sobre los clientes inalámbricos que están conectados a un punto de acceso, incluyendo la dirección MAC del punto de acceso (bssid) y del cliente (mac). La tabla utiliza una combinación de direcciones MAC de punto de acceso y cliente como clave primaria, y tiene relaciones de clave foránea con las tablas AP y Client.WPS
: Esta tabla almacena información sobre los puntos de acceso que tienen activada la configuración Wi-Fi protegida (WPS), incluida su dirección MAC (bssid), nombre de red (wlan_ssid), versión WPS (wps_version), nombre de dispositivo (wps_device_name), nombre de modelo (wps_model_name), número de modelo (wps_model_number), métodos de configuración (wps_config_methods) y métodos de configuración de teclado (wps_config_methods_keypad). La tabla utiliza la dirección MAC como clave primaria y tiene una relación de clave foránea con la tabla AP.SeenAp
: Esta tabla almacena información sobre los puntos de acceso vistos durante las capturas, incluida su dirección MAC (bssid), hora de detección (time), herramienta utilizada para capturar los datos (tool), intensidad de la señal (signal_rssi), latitud (lat), longitud (lon), altitud (alt) y marca de tiempo (bsstimestamp). La tabla utiliza la combinación de la dirección MAC del punto de acceso y la hora de detección como clave primaria, y tiene una relación de clave foránea con la tabla AP.Probe
: Esta tabla almacena información sobre las sondas enviadas por los clientes, incluida la dirección MAC del cliente (mac), el nombre de la red (ssid) y la hora de la sonda (time). La tabla utiliza una combinación de la dirección MAC del cliente y el nombre de la red como clave principal, y tiene una relación de clave foránea con la tabla Client.Handshake
: Esta tabla almacena información sobre los handshakes capturados durante las capturas, incluyendo la dirección MAC del punto de acceso (bssid), del cliente (mac), el nombre del archivo (file), y el formato hashcat (hashcat). La tabla utiliza una combinación de direcciones MAC del punto de acceso y del cliente, y el nombre del archivo como clave primaria, y tiene relaciones de clave foránea con las tablas AP y Client.Identity
: Esta tabla representa las identidades y métodos EAP (Extensible Authentication Protocol) utilizados en la autenticación inalámbrica. Los campos bssid y mac son claves externas que hacen referencia a las tablas AP y Client, respectivamente. Otros campos incluyen la identidad y el método utilizados en el proceso de autenticación.
Vistas
ProbeClients
: Esta vista selecciona la dirección MAC de la sonda, el fabricante y el tipo del dispositivo cliente, el número total de paquetes transmitidos por el cliente y el SSID de la sonda. Une las tablas Probe y Client en la dirección MAC y ordena los resultados por SSID.ConnectedAP
: Esta vista selecciona el BSSID del punto de acceso conectado, el SSID del punto de acceso, la dirección MAC del dispositivo cliente conectado y el fabricante del dispositivo cliente. Une las tablas Connected, AP y Client en el BSSID y la dirección MAC, respectivamente, y ordena los resultados por BSSID.ProbeClientsConnected
: Esta vista selecciona el BSSID y el SSID del punto de acceso conectado, la dirección MAC de la sonda, el fabricante y el tipo del dispositivo cliente, el número total de paquetes transmitidos por el cliente y el SSID de la sonda. Une las tablas Probe, Client y ConnectedAP en la dirección MAC de la sonda y filtra los resultados para excluir las sondas que están conectadas al mismo SSID que están sondeando. Los resultados se ordenan por el SSID de la sonda.HandshakeAP
: Esta vista selecciona el BSSID del punto de acceso, el SSID del punto de acceso, la dirección MAC del dispositivo cliente que realizó el handshake, el fabricante del dispositivo cliente, el archivo que contiene el handshake y la salida hashcat. Une las tablas Handshake, AP y Client en el BSSID y la dirección MAC, respectivamente, y ordena los resultados por BSSID.HandshakeAPUnique
: Esta vista selecciona el BSSID del punto de acceso, el SSID del punto de acceso, la dirección MAC del dispositivo cliente que realizó el handshake, el fabricante del dispositivo cliente, el archivo que contiene el handshake y la salida hashcat. Une las tablas Handshake, AP y Client en el BSSID y la dirección MAC, respectivamente, y filtra los resultados para excluir los handshakes que no fueron crackeados por hashcat. Los resultados se agrupan por SSID y se ordenan por BSSID.IdentityAP
: Esta vista selecciona el BSSID del punto de acceso, el SSID del punto de acceso, la dirección MAC del dispositivo cliente que realizó la solicitud de identidad, el fabricante del dispositivo cliente, la cadena de identidad y el método utilizado para la solicitud de identidad. Une las tablas Identity, AP y Client en el BSSID y la dirección MAC, respectivamente, y ordena los resultados por BSSID.SummaryAP
: Esta vista selecciona el SSID, el número de puntos de acceso que emiten el SSID, el tipo de cifrado, el fabricante del punto de acceso y si el SSID está oculto. Agrupa los resultados por SSID y los ordena por el recuento de puntos de acceso en orden descendente.
Cada vez que se ejecuta el programa, se añade nueva información a la base de datos, uniéndola a la ya existente. Además, se pueden importar carpetas completas sin necesidad de ir archivo por archivo.
https://github.com/r4ulcl/wifi_db