
Ferramenta de reconhecimento de endpoints NTLM não autenticado que decodifica desafios Type-2 em HTTP, SMB, MSSQL, SMTP, IMAP, POP3, NNTP, LDAP e RDP para extrair detalhes do AD e IPs internos.
____ / // /__ ___ ______________ __ / / / __ / / / __ ` / / / __ / / / / __/ / / / / // / / / / / ( ) // // / // / /_ // //_/// // ///_/___/_,/__/
hunting exposed NTLM BoydHacks · github.com/BoydHacks
# ntlmscout
**Uma ferramenta para extrair cada gota de informação de endpoints NTLM expostos à internet.**
Uma negociação NTLM não autenticada vaza uma quantidade surpreendente de detalhes internos do Active Directory antes mesmo que qualquer credencial seja enviada. O `ntlmscout` envia uma mensagem NTLM Type-1 (NEGOTIATE) através de uma ampla variedade de transportes, decodifica completamente o Type-2 (CHALLENGE) que retorna e extrai tudo: nomes internos de host e domínio NetBIOS/DNS, a floresta AD, a build do SO (mapeada para uma versão amigável do Windows), o relógio do servidor (e o desvio), flags de negociação e todos os AV_PAIRs — depois enriquece isso com divulgações não autenticadas adjacentes e um password spray opcional e seguro contra lockout.
Somente biblioteca padrão. Arquivo único. Python 3.7+. Sem dependências.
## Recursos
- **Todos os transportes em uma ferramenta** — HTTP(S) (com descoberta de endpoint), SMB2/3, MSSQL/TDS, SMTP, IMAP, POP3, NNTP, LDAP(S) e RDP/CredSSP(NLA).
- **Decodificação profunda do Type-2** — host/domínio NetBIOS + DNS, nome da floresta/árvore, build do SO → nome amigável (cliente vs. servidor desambiguado), timestamp do servidor + desvio de relógio, SPN, MachineID, channel bindings e detalhamento completo das flags de negociação.
- **Interpreta, não apenas despeja** — classificação honesta de **membro vs. Domain Controller** (um DC só é declarado quando um serviço de DC realmente responde) e uma leitura da postura de segurança (assinatura SMB/LDAP, EPA/channel-binding, criptografia fraca NTLMv1/LM).
- **Recupera o IP interno** — a única coisa que o próprio NTLM não consegue fornecer — via divulgação do cabeçalho Host do IIS (CVE-2000-0649), WebDAV PROPFIND, RPC `IOXIDResolver::ServerAlive2` (TCP 135) e IP SANs do certificado TLS/RDP.
- **Divulgações extras** — CN + SANs do certificado TLS/RDP, vazamentos de cabeçalhos `X-FEServer`/`X-CalculatedBETarget` do Exchange e enriquecimento anônimo do **LDAP rootDSE** (naming contexts, `dnsHostName`, níveis funcionais do AD).
- **Rápido** — um portão de verificação de porta ativa pula todas as sondagens em uma porta fechada, então hosts filtrados não custam uma parede de timeouts.
- **Modo spray seguro contra lockout** — ordenação de password-spray (uma senha para todos os usuários por rodada), NTLM Type-3 ou HTTP Basic contra o endpoint mais eficaz, com um veredito claro de válido / inválido / inconclusivo.
- **Saída pronta para relatório** — resumo agrupado por host mais JSON, NDJSON, CSV e um arquivo de hosts no estilo NetExec. Os arquivos de saída são gravados com permissões somente do proprietário.
## Instalação
```bash
git clone https://github.com/BoydHacks/ntlmscout
cd ntlmscout
python3 ntlmscout.py --help
Sem pip install, sem virtualenv — usa apenas a biblioteca padrão do Python.
# recon de um único IP ou host (varredura completa de todas as portas compatíveis com NTLM)
python3 ntlmscout.py 203.0.113.10
python3 ntlmscout.py mail.example.com
# um endpoint específico, ou um range inteiro, ou uma lista de alvos
python3 ntlmscout.py https://mail.example.com/ews/
python3 ntlmscout.py 10.0.0.0/24
python3 ntlmscout.py -I targets.txt --json results.json
# rotear tudo através do Burp / um proxy CONNECT
python3 ntlmscout.py -I targets.txt --proxy 127.0.0.1:8080
# password spray seguro contra lockout no melhor endpoint
python3 ntlmscout.py --spray -I hosts.txt -u users.txt -p 'Winter2026!' --delay 1800
O recon é uma varredura completa por padrão. Reduza-a com --no-discover (pula a wordlist de caminhos HTTP) ou --no-internal-ip (pula as verificações de cert/OXID/IIS). Veja --help para o menu completo.
========================================================================
HOST: 203.0.113.10 (EXCH01.corp.example.com)
------------------------------------------------------------------------
External address : 203.0.113.10
Internal address : 10.0.0.25
Realm : CORP
Realm type : domain
NetBIOS host : EXCH01
NetBIOS domain : CORP
DNS host : EXCH01.corp.example.com
DNS domain : corp.example.com
DNS forest : corp.example.com
OS : Windows Server 2019
OS build : 10.0.17763
Server time (UTC) : 2026-01-01 12:00:00
Time skew (s) : -0.1
Role : Domain member
NTLM endpoints identified: 4
- https://203.0.113.10/ews/
- https://203.0.113.10/rpc/
- https://203.0.113.10/autodiscover/
- smb://203.0.113.10:445
========================================================================
[+] 4 exposed NTLM endpoint(s) on 1 of 1 host(s).
Os endpoints descobertos são listados na tela automaticamente. Adicione -o log.txt
para um log completo por campo, ou --json/--csv para saída legível por máquina.
O modo spray é opt-in e fixado na ordenação de password-spray — uma senha é testada em todas as contas por rodada, então nenhuma conta vê mais de uma tentativa por rodada. Defina --delay para a janela de observação de lockout do alvo e confirme a política de lockout antes de executar. Ele reporta resultados válidos, rejeitados de forma limpa e inconclusivos separadamente, para que um resultado negativo seja confiável em vez de um artefato de um oráculo quebrado.
O ntlmscout está sobre os ombros dos pesquisadores e ferramentas que pioneiraram o reconhecimento de endpoints NTLM. Suas ideias, técnicas e wordlists de endpoints informaram diretamente este projeto:
*-ntlm-info do nmap — Justin Cacak (http/imap/pop3/smtp/nntp/telnet/ms-sql) e Tom Sellers (rdp): as receitas por protocolo para extrair um Type-2 de cada serviço.IOXIDResolver::ServerAlive2 e conceitos de relay/postura NTLM.Os detalhes de protocolo seguem a [MS-NLMP] Open Specification da Microsoft e as clássicas notas NTLM de davenport de Eric Glass. A divulgação de IP interno do IIS é a CVE-2000-0649.
Se o seu trabalho pertence aqui e eu esqueci você, abra uma issue — o crédito é devido e eu adicionarei.
BoydHacks — github.com/BoydHacks