
Uma ferramenta para realizar brute-forcing leve em servidores HTTP para identificar endpoints de autenticação NTLM comumente acessíveis.
NTLMRecon é uma versão em Golang do utilitário NTLMRecon original escrito por Sachin Kamath (também conhecido como pwnfoo). O NTLMRecon pode ser utilizado para realizar ataques de força bruta contra um servidor web alvo, a fim de identificar endpoints comuns de aplicações que suportam autenticação NTLM. Isso inclui endpoints como o endpoint do Exchange Web Services, que muitas vezes pode ser explorado para contornar a autenticação multifator.
A ferramenta suporta a coleta de metadados dos endpoints de autenticação NTLM expostos, incluindo informações sobre o nome do computador, nome do domínio do Active Directory e nome da floresta do Active Directory. Essas informações podem ser obtidas sem autenticação prévia, enviando um pacote NTLM NEGOTIATE_MESSAGE ao servidor e examinando o NTLM CHALLENGE_MESSAGE retornado pelo servidor alvo. Também publicamos uma postagem no blog junto com esta ferramenta, discutindo algumas das motivações por trás de seu desenvolvimento e como estamos abordando a coleta de metadados mais avançada dentro do Chariot.
Queríamos realizar a identificação automatizada e por força bruta de endpoints de autenticação NTLM expostos dentro do Chariot, nossa plataforma de gerenciamento de superfície de ataque externa e equipe vermelha automatizada contínua. Nossa infraestrutura principal de varredura de backend é escrita em Golang e não queríamos ter que baixar e executar o utilitário NTLMRecon em Python para coletar essas informações. Também queríamos mais controle sobre o nível de detalhe das informações coletadas, etc.
O comando a seguir pode ser utilizado para instalar o utilitário NTLMRecon. Alternativamente, você pode baixar uma versão pré-compilada do binário na aba de releases do GitHub.
go install github.com/praetorian-inc/NTLMRecon/cmd/NTLMRecon@latest
O comando a seguir pode ser utilizado para invocar o utilitário NTLM recon e descobrir endpoints de autenticação NTLM expostos:
NTLMRecon -t https://autodiscover.contoso.com
O comando a seguir pode ser utilizado para invocar o utilitário NTLM recon e descobrir endpoints NTLM expostos enquanto gera a saída dos metadados coletados no formato JSON:
NTLMRecon -t https://autodiscover.contoso.com -o json
O comando a seguir pode ser utilizado para especificar um cabeçalho Host personalizado ao testar endpoints que o exijam:
NTLMRecon -t https://192.168.1.100 -H mail.contoso.com
O comando a seguir pode ser utilizado para habilitar a saída de depuração para solução de problemas:
NTLMRecon -t https://autodiscover.contoso.com -debug
Abaixo está um exemplo de saída JSON com os dados que coletamos do NTLM CHALLENGE_MESSAGE retornado pelo servidor:
{
"url": "https://autodiscover.contoso.com/EWS/",
"ntlm": {
"netbiosComputerName": "MSEXCH1",
"netbiosDomainName": "CONTOSO",
"dnsDomainName": "na.contoso.local",
"dnsComputerName": "msexch1.na.contoso.local",
"forestName": "contoso.local"
}
}
➜ ~ NTLMRecon -t https://adfs.contoso.com -o json | jq
{
"url": "https://adfs.contoso.com/adfs/services/trust/2005/windowstransport",
"ntlm": {
"netbiosComputerName": "MSFED1",
"netbiosDomainName": "CONTOSO",
"dnsDomainName": "corp.contoso.com",
"dnsComputerName": "MSEXCH1.corp.contoso.com",
"forestName": "contoso.com"
}
}
➜ ~ NTLMRecon -t https://autodiscover.contoso.com
https://autodiscover.contoso.com/Autodiscover
https://autodiscover.contoso.com/Autodiscover/AutodiscoverService.svc/root
https://autodiscover.contoso.com/Autodiscover/Autodiscover.xml
https://autodiscover.contoso.com/EWS/
https://autodiscover.contoso.com/OAB/
https://autodiscover.contoso.com/Rpc/
➜ ~
Nossa metodologia ao desenvolver esta ferramenta teve como alvo a versão mais básica da funcionalidade desejada para o lançamento inicial. O objetivo deste projeto era criar uma ferramenta inicial que pudéssemos integrar ao Chariot e, em seguida, permitir que contribuições da comunidade e feedback impulsionassem melhorias adicionais ou funcionalidades. Abaixo estão algumas ideias para funcionalidades adicionais que poderiam ser adicionadas ao NTLMRecon:
[1] https://www.praetorian.com/blog/automating-the-discovery-of-ntlm-authentication-endpoints/