
Script para analizar capturas de Aircrack-ng en una base de datos SQLite y extraer información útil como handshakes, identidades MGT, relaciones interesantes entre APs, clientes y sus Probes, información WPS y una vista global de todos los APs vistos.
Script para analizar capturas de Aircrack-ng en una base de datos SQLite y extraer información útil como handshakes (en formato hashcat 22000), identidades enterprise (MGT) y pares challenge/response EAP-MD5, los certificados X.509 y la configuración de seguridad RSN/WPA de cada red, las capacidades 802.11r/k/v, Multiple BSSID y Channel Switch anunciadas por los APs, relaciones interesantes entre APs, clientes y sus Probes, información WPS, y una vista global de todos los APs vistos.
Certificate.AP.hashcat -m 4800) en la tabla EAPMD5.Probe).SummaryAP) de los APs agrupados por ESSID y cifrado, mostrando el recuento de APs y clientes, la versión WPA y el estado PMF, y cada fabricante por grupo, para dar una visión rápida del estado de seguridad de las redes cercanas (y detectar SSIDs que ejecutan seguridad mixta o degradada).AP.docker pull r4ulcl/wifi_db
### Instalación manual
#### Sistemas basados en Debian (Ubuntu, Kali, Parrot, etc.)
Dependencias:
- python3
- python3-pip
- tshark
- hcxtools``` bash
sudo apt install tshark
sudo apt install python3 python3-pip
sudo apt install pkg-config libcurl4-openssl-dev libssl-dev zlib1g-dev make gcc
git clone https://github.com/ZerBea/hcxtools.git
cd hcxtools
make
sudo make install
cd ..
Instalación (usando un entorno virtual)``` bash
git clone https://github.com/r4ulcl/wifi_db cd wifi_db
sudo apt update ; sudo apt install python3-venv python3 -m venv wifi_db_env source wifi_db_env/bin/activate
pip3 install -r requirements.txt
> El venv debe activarse (`source wifi_db_env/bin/activate`) en cada nueva
> shell antes de ejecutar `wifi_db.py`. Use `deactivate` para salir.
#### Arch
Dependencias:
- python3
- python3-pip
- tshark
- hcxtools``` bash
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 (usando un entorno virtual)``` bash
git clone https://github.com/r4ulcl/wifi_db cd wifi_db
python3 -m venv wifi_db_env source wifi_db_env/bin/activate
pip3 install -r requirements.txt
> El entorno virtual debe estar activado (`source wifi_db_env/bin/activate`) en cada nueva
> terminal antes de ejecutar `wifi_db.py`. Usa `deactivate` para salir de él.
## Uso
### Ejemplo de uso en [WiFiChallenge Lab](https://lab.wifichallenge.com/)
- https://r4ulcl.com/posts/wifi_db-in-wifichallenge-lab/
### Escanear con airodump-ng
Ejecuta airodump-ng guardando la salida con -w:``` bash
sudo airodump-ng wlan0mon -w scan --manufacturer --wps --gpsd
#Folder with captures CAPTURESFOLDER=/home/user/wifi
touch db.SQLITE chmod a+rw db.SQLITE
docker run -t -v $PWD/db.SQLITE:/app/db.SQLITE -v $CAPTURESFOLDER:/captures/ r4ulcl/wifi_db
- `-v $PWD/db.SQLITE:/app/db.SQLITE`: Para guardar la salida en el archivo db.SQLITE de la carpeta actual
- `-v $CAPTURESFOLDER:/captures/`: Para compartir la carpeta con las capturas dentro del docker

### Crear la base de datos SQLite usando instalación manual
Una vez que se crea la captura, podemos crear la base de datos importando la captura. Para ello, pon el nombre de la captura sin formato. Recuerda activar primero el entorno virtual (`source wifi_db_env/bin/activate`).``` bash
python3 wifi_db.py scan-01
En caso de que tengamos múltiples capturas, podemos cargar la carpeta en la que se encuentran directamente. Y con -d podemos renombrar la base de datos de salida.``` bash python3 wifi_db.py -d database.sqlite scan-folder

### Abrir base de datos
La base de datos se puede abrir con:
- [sqlitebrowser](https://sqlitebrowser.org/)

A continuación se muestra un ejemplo de una tabla ProbeClientsConnected.

### Argumentos``` bash
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)
TODO
TODO
wifi_db contiene varias tablas para almacenar información relacionada con el tráfico de redes inalámbricas 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 la red (ssid), si la red está oculta (cloaked), fabricante (manuf), canal (channel), frecuencia (frequency), operador (carrier), tipo de cifrado (encryption) y paquetes totales recibidos desde este AP (packetsTotal). También contiene los indicadores de capacidad/requisito de protección de tramas de gestión (mfpc, mfpr) y los detalles de seguridad RSN/WPA analizados de los beacons, que son atributos 1:1 del AP y, por lo tanto, residen en la propia fila del AP: la versión WPA negociada (wpa_version) (WPA2, WPA3, transición WPA2/WPA3, OWE), los suites de autenticación y gestión de claves (, p. ej. PSK, SAE, 802.1X), los cifrados por pares () y el cifrado de grupo () (CCMP-128, GCMP-256, TKIP, etc.), un indicador activado cuando existe un AKM 802.1X, el estado de protección de tramas de gestión (: Requerido, Capaz o Desactivado), el campo de bits sin procesar y su decodificación legible (, p. ej. → ). Asimismo, contiene la configuración de Wi-Fi Protected Setup (WPS), otro atributo 1:1 del AP: el nombre de red anunciado (), la versión de WPS (), el nombre del dispositivo (), el nombre del modelo (), el número de modelo (), los métodos de configuración () junto con su decodificación legible (, p. ej. → ) y los métodos de configuración de teclado (). Finalmente, almacena las capacidades de gestión 802.11 analizadas de los beacons y probe responses: el indicador de Transición Rápida de BSS 802.11r () y su , el indicador de Medición de Recursos de Radio 802.11k (), el indicador de Gestión de Transición BSS 802.11v (), el anuncio de BSSID múltiple () y su , el indicador de Anuncio de Cambio de Canal () y su canal de destino (), y , que se activa cuando el nombre de la red se recuperó de una probe response / solicitud de (re)asociación en lugar de un beacon. La tabla utiliza la dirección MAC como clave primaria.
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. Combina 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. Combina 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 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. Combina 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 probando. Los resultados se ordenan por el SSID de la sonda.
Aircrack-ng
Todo en 1 archivo (y por separado)
Kismet
Wigle
Instalación
Analizar todos los archivos en una carpeta -f --folder
Corregir errores extendidos, tildes, etc (corregido en aircrack-ng 1.6)
Soporte bash multi archivos: "capture*-1*"
Script para eliminar cliente o AP de la base de datos (mac). - (Lista blanca)
Lista blanca para no añadir mac a la base de datos (archivo whitelist.txt, añadir macs, crear DB)
Sobrescribir si hay información nueva (ESSID antiguo='', Nuevo ESSID='WIFI')
Tabla Handshakes y PMKID
Formato hash hashcat 22000
Tabla archivos, si el archivo existe, omitir (ruta completa)
Este programa es una continuación de una parte de: https://github.com/T1GR3S/airo-heat
mfpc (capable) y mfpr (required) leídos bit a bit de las capacidades RSN, y el estado pmf derivado (Required, Capable cuando es opcional, o Disabled), almacenados en la tabla AP.ft_80211r, con el mobility_domain_id), Medición de Recursos de Radio 802.11k / informes de vecinos (rrm_80211k), y Gestión de Transición BSS 802.11v (bss_transition_80211v).mbssid, con el max_bssid_indicator) y que envían Anuncios de Cambio de Canal (csa, con el canal destino csa_new_channel).ssid_revealed marca los nombres aprendidos de esta manera).akm_suitespairwise_ciphersgroup_cipherenterprisepmfrsn_capabilitiesrsn_capabilities_text0x00c0MFPR, MFPCwlan_ssidwps_versionwps_device_namewps_model_namewps_model_numberwps_config_methodswps_config_methods_text0x218cEtiqueta, Botón, Teclado, PIN de pantalla virtualwps_config_methods_keypadft_80211rmobility_domain_idrrm_80211kbss_transition_80211vmbssidmax_bssid_indicatorcsacsa_new_channelssid_revealedClient: Esta tabla almacena información sobre los clientes inalámbricos detectados durante las capturas, incluyendo su dirección MAC (mac), nombre de la red (ssid), fabricante (manuf), tipo de dispositivo (type), paquetes totales recibidos desde este cliente (packetsTotal) y un indicador randomized activado cuando la MAC es administrada localmente (una dirección aleatoria/privada). 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 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 la del cliente (mac). La tabla utiliza una combinación de direcciones MAC del punto de acceso y del cliente como clave primaria, y tiene relaciones de clave foránea con las tablas AP y Client.
SeenAp: Esta tabla almacena información sobre los puntos de acceso vistos durante las capturas, incluyendo su dirección MAC (bssid), hora de detección (time), herramienta utilizada para capturar los datos (tool), intensidad de señal (signal_rssi), latitud (lat), longitud (lon), altitud (alt) y marca de tiempo (bsstimestamp). La tabla utiliza la combinación de dirección MAC del punto de acceso y 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 solicitudes de prueba (probe requests) enviadas por los clientes, incluyendo la dirección MAC del cliente (mac), el nombre de la red (ssid) y la hora de la sonda (time). También contiene la huella digital de la solicitud de prueba, que es un atributo 1:1 de la sonda y, por lo tanto, reside en la fila de Probe: la lista ordenada de elementos de información (tags) que el cliente incluyó en la solicitud (ie_order) y su hash (fingerprint), característica de un modelo de dispositivo/SO, más el archivo de captura de origen (file). Las columnas de huella digital se completan para solicitudes de prueba analizadas de archivos .cap (ssid está vacío para solicitudes de prueba de difusión); las sondas analizadas de CSV/netxml las dejan vacías. La tabla utiliza una combinación de dirección MAC del cliente y nombre de la red como clave primaria, 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), el 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 identidades y métodos EAP (Protocolo de Autenticación Extensible) utilizados en la autenticación inalámbrica. Los campos bssid y mac son claves foráneas que hacen referencia a las tablas AP y Client, respectivamente. Otros campos incluyen la identity y el method utilizados en el proceso de autenticación, y el realm (la parte después de @ en una identidad user@realm, útil para las identidades externas anónimas que se ven en PEAP/TTLS).
Certificate: Esta tabla almacena los certificados X.509 intercambiados en autenticaciones empresariales (WPA-Enterprise / 802.1X) EAP-TLS/PEAP/TTLS, tanto el certificado del servidor enviado por el punto de acceso como el certificado del cliente enviado por el suplicante. Cada fila está asociada al punto de acceso a través del campo bssid (una clave foránea que referencia la tabla AP) y al cliente a través del campo mac; el campo cert_type indica de quién es el certificado (AP, Client o Unknown cuando no se puede determinar la dirección EAP). También conserva el archivo de captura de origen (file). La tabla almacena todos los campos relevantes del certificado: la posición en la cadena de certificados (cert_index), version, serial_number, signature_algorithm, los nombres distinguidos completos de issuer y subject, las fechas de validez (not_before, not_after), los componentes desglosados del subject (subject_cn, subject_o, subject_ou) y del issuer (issuer_cn, issuer_o, issuer_ou), el public_key_algorithm, public_key_size, public_key_curve (EC) y public_key_exponent (RSA), y las huellas digitales sha1_fingerprint y sha256_fingerprint. También extrae las extensiones X.509 más relevantes: Nombres Alternativos del Sujeto (subject_alt_names), key_usage, ext_key_usage, Restricciones Básicas (is_ca, path_length), un indicador self_signed, los Identificadores de Clave de Autoridad y de Sujeto (authority_key_id, subject_key_id), las URL de CRL y OCSP (crl_urls, ocsp_urls), y la vida útil del certificado en días (validity_days). La tabla utiliza la combinación de bssid y sha256_fingerprint como clave primaria.
EAPMD5: Esta tabla almacena pares de desafío/respuesta EAP-MD5 capturados de autenticaciones empresariales. EAP-MD5 transmite un desafío de estilo CHAP y una respuesta MD5 en texto claro (fuera de cualquier túnel TLS), por lo que el par puede ser interceptado y descifrado fuera de línea (hashcat -m 4800 o eapmd5pass) para recuperar la contraseña. Cada fila registra las claves foráneas bssid (AP) y mac (cliente), la identity, el identificador EAP (eap_id) que vincula la solicitud y la respuesta, el challenge, la response, una línea hashcat lista para usar y el archivo de origen (file). Utiliza la combinación de bssid, mac y eap_id como clave primaria.
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 de hashcat. Combina 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 de hashcat. Combina 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 descifrados 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. Combina las tablas Identity, AP y Client en el BSSID y la dirección MAC, respectivamente, y ordena los resultados por BSSID.
CertificateAP: Esta vista selecciona el BSSID y SSID del punto de acceso junto con el tipo de certificado (cert_type), los nombres comunes del sujeto y del emisor, el sujeto y el emisor completos, las fechas de validez, el algoritmo y tamaño de la clave pública, el indicador self_signed y la sha256_fingerprint. Combina las tablas Certificate y AP en el BSSID y ordena los resultados por BSSID.
SecurityAP: Esta vista selecciona el BSSID y SSID del punto de acceso junto con wpa_version, akm_suites, pairwise_ciphers, group_cipher, el indicador enterprise y las columnas de protección de tramas de gestión (mfpc, mfpr). Lee estas columnas directamente de la tabla AP (limitada a los AP que tienen detalles de seguridad) y ordena los resultados por BSSID.
CapabilitiesAP: Esta vista selecciona el BSSID y SSID del punto de acceso junto con sus capacidades de gestión 802.11 (ft_80211r, mobility_domain_id, rrm_80211k, bss_transition_80211v, mbssid, max_bssid_indicator, csa, csa_new_channel). Lee estas columnas directamente de la tabla AP, limitada a los AP que anuncian al menos una de ellas, y ordena los resultados por BSSID.
SummaryAP: Esta vista resume los puntos de acceso agrupados por SSID y cifrado, de modo que el mismo SSID con diferentes configuraciones de seguridad aparece como filas separadas (útil para detectar configuraciones mixtas o degradadas). Para cada grupo selecciona el SSID, el recuento de puntos de acceso distintos (APs count), el tipo de cifrado, la versión WPA (wpa_version) y el estado de protección de tramas de gestión (pmf), todos los fabricantes vistos en el grupo (manuf, separados por comas), si el SSID está oculto, y el recuento de clientes conectados distintos (Clients count). Excluye los AP sin cifrado registrado y ordena los resultados por el recuento de AP en orden descendente.
Obtener contraseñas de POST HTTP
Consultas DNS