Research — LLMNR e NBT-NS poisoning attack

Matheus Fernandes
CoreShield
Published in
4 min readMay 25, 2020

O ataque LLMNR/NBT-NS Poisoning trata-se de um dos ataques mais comuns nos dias atuais, é usualmente um dos primeiros vetores de ataques utilizados para se obter credenciais uma vez que a segurança interna já foi comprometida. Nos próximos tópicos abordaremos o ataque em mais detalhes fornecendo evidências reais produzidas em nosso laboratório como também os métodos para sua proteção.

O que é LLMNR/NBT-NS Poisoning?

LMNR (link-local multicast name resolution) seu antecessor trata-se do NBT-NS, ambos são utilizados para identificar um host quando o DNS falha, o modo que utilizam para identificar os dispositivos é através de um hash NTML/NTMLv2, o qual pode ser facilmente exploitado. Vejamos abaixo um exemplo do ataque:

No exemplo acima, temos uma vítima tentando se conectar a um driver compartilhado em um server, porém a vítima digitou o nome do driver de forma incorreta. Como o driver compartilhado não existe, o servidor responde informando que não existe nenhum arquivo na rede com o nome solicitado, o que aparenta ser uma falha de DNS, por esse motivo o host da vítima enviara uma mensagem de broadcast para todos na rede na procura de algum host que saiba como se conectar ao endereço digitado de forma incorreta. Neste momento, o atacante pode estar posicionado em algum host comprometido na mesma rede, respondendo que sabe o caminho para se conectar ao endereço, solicitando o hash das credenciais para que ele mesmo faça a conexão. A parte perigosa deste ataque é que o hash capturado pelo atacante pode ser facilmente crackeado de forma offline ou pode ser replicado pelo atacante para ganhar acesso a outros recursos na rede.

Exemplo real do ataque

No cenário do nosso LAB temos um Active Directory 2019 / Windows 10 Professional (Maquina da vítima) / Kali Linux (Máquina do atacante)

  1. Primeiro o atacante iniciara uma ferramenta de escuta executada por um script em python conhecida como “Responder” que permitira o atacante executar o LLMNR/NBT-NS poisoning capturando o hash de senha do usuário:

2. Na máquina da vítima, o mesmo tenta se conectar a um endereço não existente ou digitado de forma incorreta (no exemplo utilizamos o endereço de IP para melhor didática):

3. Imediatamente o Responder em execução na máquina do atacante recebe o hash da senha do usuário:

4. Em seguida o atacante utiliza a ferramenta “Jhon The Ripper” utilizando uma word list simples para crackear o hash capturado (para fins do laboratório utilizamos uma word list padrão “rockyou.txt”, em um ataque real o atacante pode customizar a word list de acordo com os nomes e padrões de sua organização para acelerar o processo) e em segundos as credenciais do usuário são decodificadas:

Recomendações

O melhor método para se defender contra o ataque descrito acima é desabilitar o LLMNR e NBT-NS no seu servidor.

• Para desabilitar o LLMNR, selecione “Desligar Resolução de nome Multicast” em política local do computador > Configurações do Computador > Templates Administrativos > Rede > Cliente de DNS no grupo de Edição de Políticas.

• Para desabilitar o NBT-NS, navegue até Rede > Conexões > Propriedades do adaptador > TCP/IPV4 Propriedades > Avançado > WINS > selecione “Desabilitar NetBIOS sob TCP/IP”

Caso não seja possível desabilitar os recursos descritos a melhor decisão a se tomar é:

• Aceitar apenas conexões via NAC (Network Access Control), se o atacante não conseguir se conectar a sua rede, o ataque não pode ser executado.

• Aplicar politicas de “Strong password” (e.g.,>12 caracteres de tamanho e limitar o uso de palavras comuns). Enquanto mais complexo o password, mais difícil será para o atacante crackear o hash.

--

--

Matheus Fernandes
CoreShield

Hello! I Am a Cyber Security enthusiast. Current acting as a blue team at Zup Innovation. Hope you enjoy my articles!