ARP spoofing e MITM — envenenar a tabela ARP
ARP (Address Resolution Protocol) associa endereços IP a endereços MAC na rede local. O problema: ARP não tem autenticação. Qualquer máquina pode anunciar falsos mapeamentos — e a rede acredita.
Como ARP funciona normalmente
Host A quer falar com 192.168.1.1:
→ Broadcast: "Quem tem 192.168.1.1?"
← Gateway responde: "Sou eu, MAC aa:bb:cc:dd:ee:ff"
Host A armazena: 192.168.1.1 → aa:bb:cc:dd:ee:ff
Essa tabela (ARP cache) não é verificada — qualquer resposta ARP é aceita.
ARP Spoofing: o ataque
Em um ambiente de teste autorizado (ex: lab 192.168.1.0/24):
Atacante envia gratuitous ARP para a vítima:
"192.168.1.1 (gateway) está no MAC do atacante"
Atacante envia gratuitous ARP para o gateway:
"192.168.1.50 (vítima) está no MAC do atacante"
Resultado:
Vítima → [pensa que fala com gateway] → Atacante → Gateway
Atacante vê TODO o tráfego: Man-in-the-Middle (MITM)
Verificar a tabela ARP
# Linux/macOS
arp -n
# Saída suspeita: dois IPs com o mesmo MAC
192.168.1.1 aa:bb:cc:dd:ee:ff eth0
192.168.1.50 aa:bb:cc:dd:ee:ff eth0 ← mesmo MAC = ARP poisoning
Consequências do MITM
- Leitura de tráfego HTTP (credenciais, cookies)
- Injeção de conteúdo em páginas não-HTTPS
- Captura de hashes NTLMv2 para cracking offline
- Downgrade de HTTPS para HTTP (SSLstrip)
- Redirecionamento para páginas falsas
Defesas contra ARP Spoofing
Dynamic ARP Inspection (DAI) — switches gerenciáveis verificam se a resposta ARP é legítima comparando com a tabela DHCP snooping:
Switch descarta resposta ARP se:
IP anunciado ≠ IP atribuído pelo DHCP para aquele MAC/porta
Entradas ARP estáticas — para hosts críticos (gateway, DNS):
# Linux — adicionar entrada ARP estática
sudo arp -s 192.168.1.1 aa:bb:cc:dd:ee:ff
Monitoramento com arpwatch:
sudo apt install arpwatch
sudo arpwatch -i eth0
# Alerta por e-mail quando um par IP/MAC muda
HTTPS obrigatório — mesmo sob MITM, TLS impede leitura do conteúdo se o certificado for validado corretamente.
Por que HTTPS não é suficiente sozinho
HSTS (HTTP Strict Transport Security) previne downgrade para HTTP. Mas se o usuário ignora avisos de certificado inválido, a proteção cai.
Atacante → certificado falso → vítima vê aviso "conexão não segura"
Usuário clica "Avançar assim mesmo" → MITM estabelecido mesmo com TLS
Treine usuários para nunca ignorar avisos de certificado.