GhostAcademy
GhostAcademy
Kismet — Análisis de Redes Inalámbricas
Manual Completo
Kismet
Análisis Pasivo de Redes Inalámbricas

Kismet es un detector, sniffer e IDS para redes inalámbricas completamente pasivo: no inyecta paquetes, no envía deautenticaciones ni interactúa con las redes. Simplemente escucha y registra todo lo que ocurre en el espectro de radio, siendo invisible para los dispositivos que monitoriza.

★ 100% pasivo — completamente invisibleKismet opera únicamente en modo de escucha. No transmite señal, no se asocia a ninguna red y no puede ser detectado por los dispositivos que monitoriza. Es la herramienta de referencia para auditorías de presencia inalámbrica, war driving y forense de redes Wi-Fi y Bluetooth.

¿Qué protocolos captura Kismet?

📶
Wi-Fi 802.11
Todos los estándares: 802.11a/b/g/n/ac/ax. Captura beacons, probe requests, datos y management frames. Detecta redes ocultas.
Wi-Fi
🔵
Bluetooth y BTLE
Bluetooth Classic y Low Energy. Detecta dispositivos, servicios y tráfico con adaptadores compatibles o módulos dedicados.
Bluetooth
📻
RTL-SDR / Radio
Con un dongle RTL-SDR, Kismet captura protocolos de radio: ADSB (aviones), TPMS (presión neumáticos), sensores meteorológicos.
SDR
🛰
Zigbee / Z-Wave
Con hardware específico (TI CC2531), captura tráfico IoT: sensores, domótica, alarmas y automatización del hogar.
IoT
🔄
WIDS — IDS Inalámbrico
Detecta: rogue APs, Evil Twins, ataques de deautenticación, redes WEP, flood de beacons y otros indicadores de compromiso.
IDS
🌍
Geolocalización GPS
Integración nativa con GPS (gpsd). Cada dispositivo detectado se etiqueta con coordenadas. Exporta a KML para Google Earth.
GPS

Kismet vs Aircrack-ng — Filosofías opuestas

CaracterísticaKismetAircrack-ng
Modo de operación100% pasivo — solo escuchaActivo — inyecta paquetes
VisibilidadCompletamente invisibleDetectable (deauths, inyección)
Objetivo principalMonitorizar, catalogar, detectar intrusionesAuditar seguridad, capturar handshakes
ProtocolosWi-Fi, Bluetooth, SDR, IoTSolo Wi-Fi 802.11
LoggingBase de datos SQLite, KML, PCAP, JSONPCAP de capturas
Uso típicoSurvey, IDS, war driving, forenseAuditoría de contraseñas Wi-Fi
Fundamentos — 01
⚙️ Instalación y Primer Arranque

Kismet está disponible en los repositorios de Kali Linux. La versión más reciente se instala desde los repositorios oficiales de kismetwireless.net.

BASH — Instalación en Kali / Ubuntu / Debian
# Kali Linux (repositorio oficial)
sudo apt install kismet -y

# Repositorio oficial kismetwireless.net (última versión)
wget -O - https://www.kismetwireless.net/repos/kismet-release.gpg.key |   sudo gpg --dearmor -o /usr/share/keyrings/kismet.gpg
echo "deb [signed-by=/usr/share/keyrings/kismet.gpg] https://www.kismetwireless.net/repos/apt/release/$(lsb_release -cs) $(lsb_release -cs) main" |   sudo tee /etc/apt/sources.list.d/kismet.list
sudo apt update && sudo apt install kismet -y

# Añadir usuario al grupo kismet (captura sin sudo)
sudo usermod -aG kismet $USER && newgrp kismet

# Verificar versión y primer arranque
kismet --version
kismet -c wlan0
INFO: Starting Kismet 2023-07-R1
INFO: Web interface listening on http://localhost:2501
INFO: Beginning packet capture...
ℹ Kismet gestiona el modo monitor automáticamenteSi lanzas Kismet con una interfaz en modo managed, lo pone en modo monitor solo. No necesitas airmon-ng primero, aunque también funciona si la interfaz ya está en modo monitor.
Fundamentos — 02
🔌 Hardware Compatible

Kismet soporta adaptadores Wi-Fi USB, dongles SDR y hardware especializado para Bluetooth y Zigbee.

HardwareProtocoloChipset / ModeloNotas
Alfa AWUS036ACS / ACHWi-FiRTL8811AU / RTL8812AU2.4+5GHz, monitor e inyección
Alfa AWUS036NHAWi-FiAtheros AR9271Excelente compatibilidad, 2.4GHz
TP-Link TL-WN722N v1Wi-FiAtheros AR9271v1 únicamente — v2/v3 son distintos
Ubertooth OneBluetoothCC2400Captura Bluetooth Classic completa
nRF52840 / TI CC2540BTLENordic / TIBluetooth Low Energy
RTL-SDR (RTL2832U)SDRRealtek RTL2832UADSB, TPMS, meteo, FM, etc.
HackRF OneSDRHackRF1 MHz – 6 GHz, TX y RX
TI CC2531 USBZigbeeTI CC2531Captura Zigbee / IEEE 802.15.4
Configuración — 01
🔧 kismet.conf — Configuración

El archivo principal está en /etc/kismet/kismet.conf. Los ajustes de usuario van en ~/.config/kismet/kismet_site.conf, que sobreescribe los valores por defecto.

kismet_site.conf — Configuración personalizada
# ~/.config/kismet/kismet_site.conf

## SERVIDOR WEB
httpd_port=2501
httpd_bind_address=127.0.0.1

## CREDENCIALES
httpd_username=admin
httpd_password=tu_contraseña_segura

## LOGGING
log_prefix=/tmp/kismet/
log_types=kismet,pcapng
log_title=mi_survey

## GPS
gps=gpsd:host=localhost,port=2947

## FUENTES DE CAPTURA
source=wlan0:name=wifi_alfa,type=linuxwifi

## ALERTAS WIDS
alert_backlog=50
alert_throttle=10
Configuración — 02
📻 Fuentes de Captura

Las fuentes son los dispositivos de captura. Se añaden con -c en el arranque, en el archivo de configuración, o en caliente desde la web UI.

BASH — Configurar fuentes de captura
## FUENTE WI-FI BÁSICA
kismet -c wlan0
kismet -c wlan0mon       # interfaz ya en monitor

## MÚLTIPLES FUENTES
kismet -c wlan0 -c wlan1 -c wlan2

## CON OPCIONES
kismet -c "wlan0:name=alfa_2.4,channels=1,6,11"
kismet -c "wlan0:name=mi_card,hop=true,hoprate=5/sec"

## TIPOS DE FUENTE DISPONIBLES
linuxwifi  → adaptadores Wi-Fi Linux (modo monitor automático)
pcapfile   → reproducir una captura .pcap existente
btkernel   → Bluetooth via kernel Linux (hci0)
ubertooth  → Ubertooth One para Bluetooth Classic
nrfsniff   → nRF52840 para BTLE
rtl433     → RTL-SDR para sensores de radio
rtladsb    → RTL-SDR para ADSB (aviones)

## REPRODUCIR CAPTURA EXISTENTE
kismet -c "pcapfile:/tmp/captura.pcap"

## CAPTURA REMOTA
kismet_cap_linux_wifi --connect servidor:3501 --source wlan0
Configuración — 03
🌐 Interfaz Web

Kismet incluye una interfaz web completa en http://localhost:2501 con dispositivos en tiempo real, filtros, mapas y estadísticas.

Kismet Web UI — http://localhost:2501
┌─────────────────────────────────────────────────────────┐
│ KISMET Devices: 247 Packets: 15.234 Data: 2.4 MB │
├──────────────────────────────────────────────────────────
│ SSID BSSID CH ENC PWR │
│ MiRed_Casa A4:91:B1:2C:3D:E0 6 WPA2 -42 │
│ OfficeNet 78:D2:94:8A:F1:20 1 WPA2 -58 │
│ [Hidden SSID] C8:3A:35:01:A1:50 11 WPA2 -65 │
│ Vulnerable 00:14:6C:7E:40:80 6 WEP -71 │
│ [ALERT] Deauth attack detected on 6 <- IDS ALERT! │
└──────────────────────────────────────────────────────────
BASH — Acceder y gestionar la web UI
# Acceso local
firefox http://localhost:2501

# Tunnel SSH para acceso remoto seguro
ssh -L 2501:localhost:2501 usuario@servidor_kismet

# Arrancar en background (daemon)
kismet -c wlan0 --daemonize --log-prefix /tmp/kismet/survey
kismet --kill
Captura — 01
📶 Captura Wi-Fi 802.11

La capacidad principal de Kismet: capturar y catalogar toda la actividad Wi-Fi. Detecta redes ocultas, clientes, paquetes de datos y comportamientos anómalos.

📶 OfficeNet78:D2:94:8A:F1:20
Frecuencia
2.437 GHz (CH 6)
Señal
-58 dBm
Cifrado
WPA2-PSK
Clientes
4 activos
Vendor
Ubiquiti
Paquetes
2.341
BASH — Captura Wi-Fi
## ARRANQUE BÁSICO
kismet -c wlan0

## DOS INTERFACES (2.4GHz + 5GHz)
kismet -c "wlan0:name=alfa_2g" -c "wlan1:name=alfa_5g"

## QUÉ DETECTA EN WI-FI
Access Points: SSID, BSSID, canal, cifrado (WPA3/WPA2/WEP/Open),
  señal dBm, fabricante por OUI, WPS, velocidades soportadas
Clientes: MAC, AP al que está conectado, probe requests
Redes ocultas: detectadas por beacons sin SSID
Datos: conteo de paquetes, tasa, IP si no cifrada
Captura — 02
🔵 Bluetooth y BTLE

Kismet monitoriza Bluetooth Classic y Low Energy. Con Ubertooth One captura tráfico Bluetooth Classic completo.

BASH — Captura Bluetooth
## BLUETOOTH CON ADAPTADOR LINUX
hciconfig
hci0: BD Address: 00:1A:7D:DA:71:13  UP RUNNING

kismet -c "hci0:name=bt_interno,type=btkernel"
kismet -c wlan0 -c "hci0:type=btkernel"  # Wi-Fi + BT simultáneo

## BTLE CON nRF SNIFFER
kismet -c "/dev/ttyACM0:name=nrf_btle,type=nrfsniff"

## UBERTOOTH ONE
sudo apt install ubertooth -y
kismet -c "ubertooth-0:name=ubertooth,type=ubertooth"

## QUÉ DETECTA
Classic: dirección BD, nombre, clase del dispositivo, RSSI
BTLE: advertising packets, UUID de servicios, nombre, fabricante

## CASOS DE USO
- Inventario de dispositivos BT en instalaciones
- Detectar teclados inalámbricos y wearables en oficinas
- Identificar beacons (iBeacon, Eddystone)
- Forense: confirmar presencia de dispositivos
Captura — 03
📻 RTL-SDR y Otros Protocolos

Con un dongle RTL-SDR (~15€), Kismet captura señales de radio: transponders de aviones (ADS-B), sensores de temperatura, presión de neumáticos y más.

BASH — RTL-SDR con Kismet
# Instalar dependencias
sudo apt install rtl-sdr librtlsdr-dev -y
rtl_test
Found 1 device(s): 0: Realtek, RTL2832U

## ADS-B — AVIONES (1090 MHz)
sudo apt install kismet-capture-rtl-adsb -y
kismet -c "rtladsb-0:name=adsb_aviones"
ICAO: A12345  Flight: IBE3401  Alt: 35000ft  Speed: 480kt

## RTL-433 — SENSORES 433 MHz (temperatura, TPMS, etc.)
sudo apt install kismet-capture-rtl-433 -y
kismet -c "rtl433-0:name=sensores_433"
Sensor: Oregon Scientific  Temp: 22.4°C  Humidity: 58%
TPMS: Pressure: 2.4 bar  Temp: 28°C

## TODAS LAS FUENTES A LA VEZ
kismet -c wlan0        -c "hci0:type=btkernel"        -c "rtladsb-0:name=adsb"        -c "rtl433-0:name=sensores"
Captura — 04
🔄 Channel Hopping y Focalización

Por defecto Kismet salta entre todos los canales. Se puede focalizar en canales concretos para capturar más datos de redes específicas.

BASH — Control de canales
## HOPPING AUTOMÁTICO (por defecto — 5 canales/seg)
kismet -c wlan0

## CANALES ESPECÍFICOS
kismet -c "wlan0:channels=1,6,11"        # no solapados 2.4GHz
kismet -c "wlan0:channels=36,40,44,48"  # 5GHz
kismet -c "wlan0:channels=6"            # canal fijo sin hopping

## VELOCIDAD DE HOPPING
kismet -c "wlan0:hoprate=3/sec"         # más lento — más tiempo por canal
kismet -c "wlan0:hoprate=10/sec"        # más rápido — más cobertura

## DOS INTERFACES — cobertura 2.4 + 5GHz simultánea
kismet -c "wlan0:channels=1,2,3,4,5,6,7,8,9,10,11"        -c "wlan1:channels=36,40,44,48,52,56,60,64,100,104"

## CAMBIAR CANAL EN TIEMPO REAL (REST API)
curl -s -X POST http://localhost:2501/datasource/by-uuid/UUID/set_channel.json   -u admin:pass -d '{"channel": "6"}'
Datos — 01
💾 Logging y Formatos de Captura

Kismet guarda capturas en varios formatos: .kismet (SQLite), .pcapng (Wireshark) y .wiglecsv (war driving).

BASH / Python — Gestionar logs de Kismet
## CONFIGURAR LOGGING
kismet -c wlan0   --log-types kismet,pcapng,wiglecsv   --log-prefix /tmp/kismet_logs/   --log-title mi_auditoria

## ARCHIVOS GENERADOS
mi_auditoria-20240115-14-32-00-1.kismet   ← SQLite (base de datos)
mi_auditoria-20240115-14-32-00-1.pcapng   ← PCAP para Wireshark
mi_auditoria-20240115-14-32-00-1.wiglecsv ← WiGLE CSV

## CONSULTAR CON SQLITE3
sqlite3 mi_auditoria-*.kismet ".tables"
alerts  datasources  devices  packets  snapshots

sqlite3 mi_auditoria-*.kismet   "SELECT devmac, type, phyname FROM devices LIMIT 10;"
A4:91:B1:2C:3D:E0|Wi-Fi AP|IEEE802.11
00:1A:7D:DA:71:13|Bluetooth|Bluetooth

## EXPORTAR CON kismetdb_dump_devices
kismetdb_dump_devices --in mi_auditoria-*.kismet --json > dispositivos.json
kismetdb_dump_devices --in mi_auditoria-*.kismet --csv  > dispositivos.csv

## ANALIZAR CON PYTHON
python3 << 'EOF'
import sqlite3, json
db = sqlite3.connect('mi_auditoria-20240115-14-32-00-1.kismet')
c = db.cursor()
for row in c.execute(
    "SELECT devmac, device FROM devices WHERE phyname='IEEE802.11' AND type='Wi-Fi AP'"
):
    dev = json.loads(row[1])
    signal = dev.get('kismet.device.base.signal',{}).get('kismet.common.signal.last_signal',0)
    ssid_map = dev.get('dot11.device',{}).get('dot11.device.advertised_ssid_map',{})
    ssid = list(ssid_map.keys())[0] if ssid_map else '[Hidden]'
    print(f"{row[0]}  {ssid:<30}  {signal} dBm")
db.close()
EOF

## EXPORTAR KML PARA GOOGLE EARTH
kismetdb_to_kml --in mi_auditoria-*.kismet --out mapa_wifi.kml
Datos — 02
🚨 Alertas e IDS Inalámbrico

El módulo WIDS detecta automáticamente: ataques de deautenticación, Rogue APs, Evil Twins, WEP y otros indicadores de compromiso inalámbrico.

Kismet — Alertas WIDS en tiempo real
[ALERT] DEAUTHFLOOD: Flood de deautenticaciones detectado
Source: F0:9F:C2:1A → MiRed — 10 deauths en 2 segundos

[ALERT] APSPOOF: Posible Evil Twin detectado
SSID "OfficeNet" con BSSID diferente: 11:22:33:44:55:66

[ALERT] WEPUSE: Red con cifrado WEP obsoleto
SSID "Oficina_Antigua" BSSID: 00:14:6C:7E:40:80
BASH / Python — Alertas WIDS
## VER ALERTAS VIA REST API
curl -s http://localhost:2501/alerts/all_alerts.json   -u admin:pass | python3 -m json.tool

## ALERTAS WIDS DISPONIBLES
DEAUTHFLOOD  → flood de deautenticaciones (posible ataque)
BEACONFLOOD  → flood de beacons (falsos APs)
APSPOOF      → Evil Twin — mismo SSID con BSSID diferente
WEPUSE       → red usando WEP obsoleto
CRYPTODROP   → AP bajando cifrado (downgrade attack)
PROBENOJOIN  → dispositivo enviando probes sin asociarse

## MONITORIZACIÓN CONTINUA
python3 << 'EOF'
import requests, time
URL, AUTH, last_ts = "http://localhost:2501", ("admin", "pass"), 0
print("[*] Monitor WIDS activo. Ctrl+C para detener.")
while True:
    try:
        for a in requests.get(f"{URL}/alerts/all_alerts.json", auth=AUTH, timeout=5).json():
            ts = a.get('kismet.alert.timestamp', 0)
            if ts > last_ts:
                last_ts = ts
                print(f"[{a.get('kismet.alert.header')}] {a.get('kismet.alert.text')}")
        time.sleep(2)
    except KeyboardInterrupt:
        break
EOF
Datos — 03
🔗 REST API — Consultas y Automatización

Kismet expone una API REST completa en el puerto 2501 para consultar dispositivos, alertas y controlar fuentes desde scripts externos.

BASH / Python — REST API de Kismet
## ENDPOINTS PRINCIPALES
GET /system/status.json           → estado del servidor
GET /devices/all_devices.json     → todos los dispositivos
GET /datasource/all_sources.json  → fuentes activas
GET /alerts/all_alerts.json       → alertas WIDS
GET /channels/channels.json       → actividad por canal

## CURL — ejemplos
curl -s -u admin:pass http://localhost:2501/system/status.json | python3 -m json.tool

## PYTHON — listar todos los APs Wi-Fi
python3 << 'EOF'
import requests
BASE, AUTH = "http://localhost:2501", ("admin", "contraseña")
payload = {
    "fields": ["kismet.device.base.macaddr", "kismet.device.base.name",
               "kismet.device.base.signal/kismet.common.signal.last_signal"],
    "regex": [["kismet.device.base.phyname", "IEEE802.11"]]
}
for dev in requests.post(f"{BASE}/devices/summary/devices.json", auth=AUTH, json=payload).json():
    mac    = dev.get('kismet.device.base.macaddr', '')
    name   = dev.get('kismet.device.base.name', '')
    signal = dev.get('kismet.common.signal.last_signal', 0)
    print(f"{mac:<20}{name:<30}{signal}")
EOF

## CONTROLAR FUENTES EN TIEMPO REAL
curl -s -X POST -u admin:pass   http://localhost:2501/datasource/by-uuid/UUID/pause_source.json
curl -s -X POST -u admin:pass   http://localhost:2501/datasource/by-uuid/UUID/resume_source.json
Laboratorio — 01
🧪 Lab: War Driving / Survey Inalámbrico

Survey completo de redes Wi-Fi con GPS para geolocalización y exportación a KML para Google Earth.

🧪LAB-KISMET-01 — Survey con GPS y exportación KMLFÁCIL

Objetivo: catalogar todas las redes Wi-Fi de una zona, geolocalizarlas y exportar un mapa KML. Solo requiere un adaptador Wi-Fi compatible con modo monitor.

BASH — Lab survey completo
## PASO 1: Preparar entorno
mkdir -p /tmp/kismet_survey

## PASO 2: GPS (si disponible)
sudo systemctl start gpsd
gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
cgps -s  # verificar fix GPS

## PASO 3: Iniciar Kismet
kismet -c wlan0   --log-types kismet,pcapng,wiglecsv   --log-prefix /tmp/kismet_survey/   --log-title edificio_A

## PASO 4: Supervisar
firefox http://localhost:2501 &

## PASO 5: Detener y analizar
kismet --kill

sqlite3 /tmp/kismet_survey/edificio_A-*.kismet << 'SQL'
SELECT json_extract(device,'$.dot11.device.dot11.device.last_beaconed_ssid') as ssid,
       devmac as bssid,
       json_extract(device,'$.kismet.device.base.signal.kismet.common.signal.last_signal') as signal
FROM devices WHERE phyname='IEEE802.11' AND type='Wi-Fi AP'
ORDER BY signal DESC;
SQL

## PASO 6: Exportar KML
kismetdb_to_kml --in /tmp/kismet_survey/edificio_A-*.kismet   --out /tmp/mapa_survey.kml
Laboratorio — 02
🧪 Lab: IDS Inalámbrico Permanente

Configurar Kismet como sensor IDS permanente con systemd para detectar ataques inalámbricos en tiempo real.

BASH — Kismet como servicio systemd
## CREAR SERVICIO SYSTEMD
sudo tee /etc/systemd/system/kismet-ids.service << 'EOF'
[Unit]
Description=Kismet Wireless IDS
After=network.target

[Service]
User=kismet
Group=kismet
ExecStart=/usr/bin/kismet -c wlan0   --log-types kismet   --log-prefix /var/log/kismet/   --daemonize
Restart=always

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable kismet-ids
sudo systemctl start kismet-ids
sudo systemctl status kismet-ids

## SCRIPT MONITOR DE ALERTAS
python3 << 'EOF'
import requests, time, logging
logging.basicConfig(filename='/var/log/kismet_alerts.log',
    format='%(asctime)s %(message)s', level=logging.INFO)
ALERTAS = ['DEAUTHFLOOD', 'APSPOOF', 'BEACONFLOOD', 'CRYPTODROP']
URL, AUTH, ts = "http://localhost:2501", ("admin", "pass"), 0
while True:
    try:
        for a in requests.get(f"{URL}/alerts/all_alerts.json",
                              auth=AUTH, timeout=5).json():
            t = a.get('kismet.alert.timestamp', 0)
            if t > ts and a.get('kismet.alert.header') in ALERTAS:
                ts = t
                logging.warning(f"[{a['kismet.alert.header']}] {a['kismet.alert.text']}")
    except: pass
    time.sleep(3)
EOF
Laboratorio — 03
🧪 Lab: Parsear Capturas con Python

Extraer y analizar datos de archivos .kismet (SQLite) con Python para generar informes personalizados.

Python — Análisis completo de captura Kismet
python3 << 'EOF'
import sqlite3, json, sys

DB = sys.argv[1] if len(sys.argv) > 1 else "kismet.kismet"
db = sqlite3.connect(DB)
db.row_factory = sqlite3.Row
c = db.cursor()

print(f"{'='*60}
ANÁLISIS: {DB}
{'='*60}")

# Resumen
total = c.execute("SELECT COUNT(*) FROM devices").fetchone()[0]
print(f"
Total dispositivos: {total}")

# Por protocolo
print(f"
{'PROTOCOLO':<25}{'DISPOSITIVOS':>12}")
for row in c.execute("SELECT phyname, COUNT(*) n FROM devices GROUP BY phyname ORDER BY n DESC"):
    print(f"  {row['phyname']:<23}{row['n']:>12}")

# APs Wi-Fi
print(f"
{'─'*60}
ACCESS POINTS WI-FI
{'─'*60}")
print(f"{'BSSID':<20}{'SSID':<28}{'SEÑAL':>8}{'CIFRADO':>10}")
print("-" * 66)
for row in c.execute("""
    SELECT devmac, device FROM devices
    WHERE phyname='IEEE802.11' AND type='Wi-Fi AP'
    ORDER BY json_extract(device,'$.kismet.device.base.signal.kismet.common.signal.last_signal') DESC
"""):
    dev    = json.loads(row['device'])
    signal = dev.get('kismet.device.base.signal',{}).get('kismet.common.signal.last_signal',0)
    ssid_m = dev.get('dot11.device',{}).get('dot11.device.advertised_ssid_map',{})
    ssid   = list(ssid_m.keys())[0] if ssid_m else '[Hidden]'
    cmap   = list(ssid_m.values())[0].get('dot11.advertisedssid.crypt_set',0) if ssid_m else 0
    enc    = 'WPA3' if cmap&512 else ('WPA2' if cmap&64 else ('WPA' if cmap&32 else ('WEP' if cmap&4 else 'Open')))
    print(f"  {row['devmac']:<18}{ssid:<28}{signal:>8}{enc:>10}")

# Alertas
n_alerts = c.execute("SELECT COUNT(*) FROM alerts").fetchone()[0]
if n_alerts:
    print(f"
ALERTAS WIDS ({n_alerts} total):")
    for row in c.execute("SELECT header, text FROM alerts ORDER BY tm DESC LIMIT 10"):
        print(f"  [{row['header']}] {row['text'][:60]}")

db.close()
EOF
Comparativa
⚖️ Kismet vs Aircrack-ng vs Wireshark

Las tres herramientas inalámbricas principales son complementarias y se usan juntas en auditorías completas.

CaracterísticaKismetAircrack-ngWireshark
Tipo de operaciónPasivo — solo escuchaActivo — inyectaPasivo — analiza
Detección de amenazasIDS integradoNoNo
ProtocolosWi-Fi, BT, SDR, IoTSolo Wi-FiTodos (via PCAP)
Análisis de paquetesBásicoNoCompleto
War driving / surveyNativo (GPS, KML)NoNo
Cracking Wi-FiNoSíNo
💡 Flujo combinado recomendadoUsar Kismet para el survey inicial y detección de amenazas (pasivo), Aircrack-ng para auditar redes propias, y Wireshark para análisis forense de las capturas .pcapng que Kismet genera.
Referencia
✅ Referencia Rápida

Cheatsheet de Kismet para análisis y monitorización de redes inalámbricas.

Arranque y Fuentes

  • Arranque básico: kismet -c wlan0
  • Múltiples interfaces: kismet -c wlan0 -c wlan1
  • Canal fijo: kismet -c "wlan0:channels=6"
  • Canales 2.4GHz no solapados: kismet -c "wlan0:channels=1,6,11"
  • Reproducir pcap: kismet -c "pcapfile:/tmp/captura.pcap"
  • En background: kismet -c wlan0 --daemonize
  • Detener daemon: kismet --kill

Logging y Análisis

  • Directorio de log: --log-prefix /tmp/survey/
  • Tipos de log: --log-types kismet,pcapng,wiglecsv
  • Abrir DB: sqlite3 archivo.kismet
  • Exportar JSON: kismetdb_dump_devices --in archivo.kismet --json
  • Exportar KML: kismetdb_to_kml --in archivo.kismet --out mapa.kml
  • Abrir en Wireshark: wireshark archivo.pcapng

REST API

  • Estado: curl -u admin:pass http://localhost:2501/system/status.json
  • Dispositivos: curl -u admin:pass http://localhost:2501/devices/all_devices.json
  • Alertas: curl -u admin:pass http://localhost:2501/alerts/all_alerts.json

Alertas WIDS a vigilar

AlertaIndicaAcción recomendada
DEAUTHFLOODAtaque de deautenticación masivaInvestigar origen, habilitar 802.11w (PMF)
APSPOOFEvil Twin — mismo SSID con MAC diferenteLocalizar AP falso, alertar a usuarios
BEACONFLOODFlood de beacons falsos (mdk3/mdk4)Localizar fuente de interferencia
WEPUSERed usando WEP (criptográficamente roto)Migrar inmediatamente a WPA2/WPA3
CRYPTODROPAP bajando cifrado — downgrade attackVerificar configuración del AP