No universo da segurança corporativa, poucas combinações são tão perigosas quanto a junção de MITM6 (ataque Man-in-the-Middle via IPv6) com NTLM Relay.
Essa técnica mostra como simples padrões deixados ativos no Windows e Active Directory (AD) podem ser explorados para levar ao comprometimento completo de um domínio.
A seguir, vamos entender em profundidade o ataque, como ele acontece passo a passo e por que seu impacto é tão devastador.
1. Por que o IPv6 ainda é um problema para redes corporativas?
Muitos administradores acreditam que, ao não configurar o IPv6, automaticamente estão protegidos. O que acontece na prática é o contrário:
-
Máquinas Windows enviam requisições DHCPv6 automaticamente, mesmo em redes puramente IPv4.
-
Isso significa que, se não houver um servidor DHCPv6 legítimo, o primeiro servidor DHCPv6 que responder será considerado válido pelo Windows.
-
Esse comportamento cria a brecha perfeita para um servidor DHCPv6 malicioso injetar configurações falsas (exemplo: DNS controlado pelo atacante).
Ou seja: mesmo quem nunca ativou IPv6 na rede pode estar exposto sem perceber.
2. O papel do NTLM no ataque
O NTLM Authentication continua sendo usado em ambientes corporativos por razões de compatibilidade.
Apesar de antigo, ele tem uma fraqueza séria: é suscetível a relay attacks.
-
O atacante não precisa quebrar a senha.
-
Ele apenas captura a autenticação e a reaproveita em outro serviço (como LDAP ou SMB).
-
Ferramentas como
ntlmrelayx.py
(do framework Impacket) automatizam esse processo.
Resultado: um simples pedido de autenticação pode ser transformado em acesso privilegiado.
3. WPAD – o elo esquecido da cadeia
O WPAD (Web Proxy Auto-Discovery Protocol) é outra configuração padrão do Windows. Ele foi projetado para facilitar a descoberta de proxies, mas:
-
A máquina cliente pergunta automaticamente pelo servidor WPAD.
-
Se o atacante responde antes, a máquina acredita e envia credenciais NTLM para esse servidor falso.
Isso cria a ponte perfeita entre o MITM6 e o NTLM Relay:
-
O atacante força o cliente a usar DNS malicioso.
-
O DNS resolve WPAD para o servidor do atacante.
-
O atacante captura credenciais.
4. Abuso do Active Directory: como se chega ao domínio inteiro
A genialidade (ou tragédia) desse ataque está no abuso de três configurações padrão do Active Directory:
-
MachineAccountQuota
-
Por padrão, qualquer usuário autenticado pode criar até 10 contas de máquina no AD.
-
Isso significa que um atacante com credenciais mínimas consegue inserir novos computadores no domínio.
-
-
RBCD (Resource-Based Constrained Delegation)
-
A conta de máquina criada pode modificar seu próprio atributo
msDS-AllowedToActOnBehalfOfOtherIdentity
. -
Isso permite impersonar contas privilegiadas (inclusive administradores).
-
-
Execução remota
-
Uma vez que o atacante pode se passar por administrador, ele utiliza ferramentas como WMIExec ou PsExec para executar comandos nos servidores do domínio.
-
A consequência é inevitável: controle total da infraestrutura.
Simulando o ataque em NetCatTest.com
Imagine o cenário de uma empresa fictícia com domínio netcattest.com. Esse domínio roda em um controlador de domínio chamado DC1.netcattest.com, que gerencia toda a autenticação e políticas de rede. Os administradores acreditam estar protegidos porque utilizam apenas IPv4 na infraestrutura, ignorando completamente o IPv6. É justamente aí que o atacante encontra a brecha. O primeiro passo é simples: o atacante conecta seu equipamento à mesma rede em que as estações Windows estão. Automaticamente, as máquinas da empresa enviam solicitações DHCPv6 ao iniciar a conexão. Mesmo que ninguém ali tenha configurado servidores IPv6 legítimos, o Windows, por padrão, continua perguntando. Esse detalhe é o suficiente. O atacante roda a ferramenta mitm6 especificando o domínio da empresa:
python3 mitm6.py -d netcattest.com |
A partir desse momento, todas as requisições DHCPv6 passam a receber resposta do servidor falso do atacante, que injeta um DNS malicioso controlado por ele. Agora, quando qualquer máquina do domínio precisar resolver nomes, quem responde é o atacante, não o servidor legítimo.
É nesse ponto que entra o WPAD. As máquinas Windows, tentando descobrir automaticamente a configuração de proxy da rede, fazem requisições para wpad.netcattest.com
. Como o DNS já está envenenado, essa resolução aponta diretamente para o IP do servidor do atacante. O resultado: as estações começam a enviar credenciais NTLM achando que estão se autenticando em um serviço de rede confiável. Essas credenciais, porém, não ficam paradas. O atacante utiliza o ntlmrelayx, do framework Impacket, para capturar e imediatamente reaproveitar as autenticações contra o LDAP do controlador de domínio. O comando usado é semelhante a:
ntlmrelayx.py -6 -t ldap://DC1.netcattest.com -wh WPAD --delegate-access |
Com isso, cada autenticação interceptada vira uma tentativa legítima de comunicação com o AD. E aqui entra a primeira “falha padrão” do Active Directory: qualquer usuário autenticado pode criar até dez contas de máquina no domínio sem precisar de permissão especial, graças ao atributo ms-DS-MachineAccountQuota. Assim, o atacante consegue cadastrar um computador falso, por exemplo WIN-HACKER$
, dentro de netcattest.com.
O novo computador agora existe oficialmente dentro do domínio e pode interagir com ele. Mas não para por aí. A segunda falha padrão é ainda mais perigosa: máquinas têm a capacidade de modificar o atributo msDS-AllowedToActOnBehalfOfOtherIdentity. Com essa configuração alterada, o atacante faz com que WIN-HACKER$
tenha permissão para agir em nome de outros usuários inclusive administradores de domínio. Essa técnica é conhecida como Resource-Based Constrained Delegation (RBCD) e é uma verdadeira porta dos fundos para a escalada de privilégios. Depois que a delegação maliciosa está configurada, basta ao atacante escolher qual conta privilegiada deseja imitar. Um dos alvos mais comuns é a conta de administração de banco de dados ou mesmo a de Domain Admin. Nesse momento, ele já pode executar comandos remotos em sistemas críticos. Utilizando o módulo wmiexec.py
, a execução ocorre de forma direta:
wmiexec.py netcattest.com/[email protected] -hashes <hashes> |
A tela de resultado não deixa dúvidas. O prompt exibido já não é mais o da máquina atacante, mas sim o de um servidor dentro da rede corporativa. Ao rodar whoami
, o retorno é claro: