Mapeamento de redes IEEE 802.11 sem transmitir nenhum pacote. Identificação de access points, clientes, protocolos, probe requests e uso do Kismet como sistema de detecção de intrusão (IDS) na própria rede.
Este laboratório demonstra como realizar reconhecimento passivo de redes IEEE 802.11 sem enviar qualquer pacote ao meio. A abordagem passiva é fundamental em auditorias onde a discreta observação do ambiente é necessária antes de qualquer ação ativa.
| Conceito | Descrição |
|---|---|
| Monitor Mode | Interface captura todos os frames 802.11 sem se associar a nenhum AP — modo exclusivamente de escuta |
| Probe Request | Frame enviado por dispositivos buscando redes salvas anteriormente — revela histórico de conexões |
| Beacon Frame | Frame de anúncio enviado pelo AP a cada 100 ms com SSID, capacidades e parâmetros de segurança |
| BSSID | Endereço MAC do rádio do AP — identifica univocamente cada rádio wireless |
| Passive Scan | Escuta em cada canal aguardando beacons, sem enviar probe requests ativos |
O Kismet requer um adaptador com suporte a monitor mode. Nenhuma transmissão é feita — o adaptador apenas escuta.
# Kali Linux / Parrot OS — Kismet disponível nos repositórios
apt update && apt install -y kismet
# Verificar versão instalada
kismet --version
Kismet 2023-07-R1
# Adicionar usuário ao grupo kismet (evita root)
usermod -aG kismet
# Listar modos suportados pelo adaptador
iw list | grep -A 10 "Supported interface modes"
Supported interface modes:
* managed
* AP
* monitor ← obrigatório
* P2P-client
# Identificar interface
ip link show | grep wlan
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 state DOWN
| Chipset | Modelo | Observação |
|---|---|---|
| RTL8812AU | Alfa AWUS036ACH | Dual-band, excelente para passivo |
| MT7612U | Alfa AWUS036ACM | Boa compatibilidade nativa Linux |
| AR9271 | TP-Link TL-WN722N v1 | Clássico 2.4 GHz, plug-and-play |
# Iniciar Kismet — ele ativa monitor mode automaticamente
kismet -c wlan0
[INFO] Launched kismet server in background
[INFO] Web UI disponível → http://localhost:2501
[INFO] Iniciando captura passiva em wlan0
[INFO] Modo monitor ativado automaticamente
# Alternativa: modo terminal (sem web UI)
kismet -c wlan0 --no-ncurses
Abra o navegador em http://localhost:2501. Na primeira execução, o Kismet solicitará criação de usuário e senha. A interface exibe mapa de APs, lista de clientes e alertas em tempo real.
# Capturar em 2.4 GHz e 5 GHz ao mesmo tempo
kismet -c wlan0 -c wlan1
# Fixar em um canal específico (sem channel hopping)
kismet -c wlan0:channel=6
[FOUND] AP SSID:"HomeNet_5G" BSSID:AA:BB:CC:11:22:33 Ch:6 ENC:WPA2 Sig:-62dBm
[FOUND] AP SSID:"LabRouter" BSSID:AA:BB:CC:44:55:66 Ch:36 ENC:WPA3 Sig:-55dBm
[WARN] AP SSID:"OLD_ROUTER" BSSID:AA:BB:CC:77:88:99 Ch:1 ENC:WEP Sig:-78dBm ← VULNERÁVEL
[CLIENT] Device DD:EE:FF:00:11:22 → associado a AA:BB:CC:11:22:33
[PROBE] Device DD:EE:FF:00:11:22 → buscando "CasaAntiga_WiFi"
# Converter banco de dados Kismet para PCAP
kismetdb_to_wireshark --in kismet.kismet --out captura.pcap
✓ captura.pcap exportado (1.2 MB, 4832 frames)
# Abrir diretamente no Wireshark
wireshark captura.pcap &
# Filtros úteis no Wireshark para 802.11
wlan.fc.type_subtype == 8 # Beacon frames
wlan.fc.type_subtype == 4 # Probe requests
wlan.fc.type_subtype == 5 # Probe responses
eapol # Handshakes WPA (4-way)
# Exportar redes detectadas
kismetdb_to_json --in kismet.kismet --out redes.json
# Via Python: processar JSON e gerar CSV
python3 -c "
import json,csv
data=json.load(open('redes.json'))
with open('redes.csv','w') as f:
w=csv.writer(f)
w.writerow(['SSID','BSSID','Canal','Criptografia','Sinal'])
for ap in data:
w.writerow([ap.get('ssid'),ap.get('bssid'),ap.get('channel'),ap.get('crypt'),ap.get('signal')])
print('redes.csv gerado')
"
# Listar dispositivos e redes que estão procurando
grep "probe" kismet.log | awk '{print , }'
Device AA:11:22:33:44:55 → "CasaAntiga_WiFi"
Device BB:66:77:88:99:00 → "HotelABC_Guest"
Device CC:12:34:56:78:90 → "Empresa_Corp_WiFi"
# Risco: dispositivos revelam redes visitadas anteriormente
# Um rogue AP pode responder a esses probes e capturar o cliente
| Protocolo | Risco | Ação recomendada |
|---|---|---|
| WEP | Crítico — chave quebrável em minutos | Substituir imediatamente por WPA2-AES ou WPA3 |
| WPA-TKIP | Alto — TKIP vulnerável a ataques | Migrar para WPA2-AES ou WPA3 |
| WPA2-CCMP | Médio — depende da senha e PMF | Habilitar PMF, usar senha forte ≥ 16 chars |
| WPA3-SAE | Baixo — SAE protege contra offline crack | Manter atualizado, habilitar PMF obrigatório |
O Kismet pode monitorar a própria rede e alertar sobre comportamentos anômalos como flood de desautenticação, rogue APs com SSID idêntico e clientes não autorizados.
# Alertar sobre flood de desautenticação (ataque DeAuth)
kismet -c wlan0 --alert DEAUTHFLOOD,5,1
# Alertar sobre AP com SSID idêntico ao legítimo (Evil Twin)
kismet -c wlan0 --alert APSPOOF,10,60
# Combinar múltiplos alertas
kismet -c wlan0 --alert DEAUTHFLOOD,5,1 --alert APSPOOF,10,60 --alert BSSTIMESTAMP,5,60
[ALERT] DEAUTHFLOOD: possível ataque de desautenticação detectado!
Origem: AA:BB:CC:11:22:33 Alvo: broadcast
5 frames em 1 segundo — possível aireplay-ng em execução
[ALERT] APSPOOF: AP com SSID "LabRouter" detectado com BSSID diferente!
BSSID legítimo: AA:BB:CC:44:55:66
BSSID suspeito: FF:EE:DD:CC:BB:AA ← possível Evil Twin
# Redirecionar alertas para syslog
kismet -c wlan0 --log-types alert --log-prefix /var/log/kismet/
# Monitorar em tempo real
tail -f /var/log/kismet/Kismet-*.alert.log