
Herramienta de reconocimiento de endpoints NTLM no autenticada que decodifica desafíos Type-2 en HTTP, SMB, MSSQL, SMTP, IMAP, POP3, NNTP, LDAP y RDP para extraer detalles de AD e IPs internas.
____ / // /__ ___ ______________ __ / / / __ / / / __ ` / / / __ / / / / __/ / / / / // / / / / / ( ) // // / // / /_ // //_/// // ///_/___/_,/__/
cazando NTLM expuesto BoydHacks · github.com/BoydHacks
# ntlmscout
**Una herramienta para exprimir hasta la última gota de información de endpoints NTLM expuestos a internet.**
Una negociación NTLM no autenticada filtra una cantidad sorprendente de detalles internos de Active Directory antes de que se envíe una sola credencial. `ntlmscout` envía un mensaje NTLM Type-1 (NEGOTIATE) a través de una amplia gama de transportes, decodifica por completo el Type-2 (CHALLENGE) que devuelve y extrae todo: nombres de host y dominio internos NetBIOS/DNS, el bosque de AD, la compilación del SO (mapeada a una versión amigable de Windows), el reloj del servidor (y su desfase), los flags de negociación y cada AV_PAIR — luego lo enriquece con divulgaciones adyacentes no autenticadas y un password spray opcional y seguro frente a bloqueos.
Solo biblioteca estándar. Un único archivo. Python 3.7+. Sin dependencias.
## Características
- **Todos los transportes en una sola herramienta** — HTTP(S) (con descubrimiento de endpoints), SMB2/3, MSSQL/TDS, SMTP, IMAP, POP3, NNTP, LDAP(S) y RDP/CredSSP(NLA).
- **Decodificación profunda del Type-2** — host/dominio NetBIOS + DNS, nombre de bosque/árbol, compilación del SO → nombre amigable (cliente vs. servidor desambiguado), marca de tiempo del servidor + desfase de reloj, SPN, MachineID, channel bindings y desglose completo de los flags de negociación.
- **Interpreta, no solo vuelca** — clasificación honesta de **miembro vs. Controlador de Dominio** (solo se afirma que es un DC cuando un servicio de DC responde realmente) y una lectura de la postura de seguridad (firma SMB/LDAP, EPA/channel-binding, criptografía débil NTLMv1/LM).
- **Recupera la IP interna** — lo único que NTLM por sí mismo no puede darte — mediante la divulgación del encabezado Host de IIS (CVE-2000-0649), WebDAV PROPFIND, RPC `IOXIDResolver::ServerAlive2` (TCP 135) y los IP SANs del certificado TLS/RDP.
- **Divulgaciones adicionales** — CN + SANs del certificado TLS/RDP, fugas de encabezados `X-FEServer`/`X-CalculatedBETarget` de Exchange y enriquecimiento anónimo del **rootDSE de LDAP** (naming contexts, `dnsHostName`, niveles funcionales de AD).
- **Rápida** — una compuerta de vivacidad de puertos omite cada sonda en un puerto cerrado, así que los hosts filtrados no te cuestan una pared de timeouts.
- **Modo spray seguro frente a bloqueos** — ordenación de password-spray (una contraseña para todas las cuentas por ronda), NTLM Type-3 o HTTP Basic contra el endpoint más efectivo, con un veredicto claro de válido / inválido / no concluyente.
- **Salida lista para informes** — resumen agrupado por host más JSON, NDJSON, CSV y un archivo de hosts estilo NetExec. Los archivos de salida se escriben con permisos solo para el propietario.
## Instalación
```bash
git clone https://github.com/BoydHacks/ntlmscout
cd ntlmscout
python3 ntlmscout.py --help
Sin pip install, sin virtualenv — solo usa la biblioteca estándar de Python.
# reconocer una única IP o host (barrido completo de cada puerto con capacidad NTLM)
python3 ntlmscout.py 203.0.113.10
python3 ntlmscout.py mail.example.com
# un endpoint específico, o un rango completo, o una lista de objetivos
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
# enrutar todo a través de Burp / un proxy CONNECT
python3 ntlmscout.py -I targets.txt --proxy 127.0.0.1:8080
# password spray seguro frente a bloqueos contra el mejor endpoint
python3 ntlmscout.py --spray -I hosts.txt -u users.txt -p 'Winter2026!' --delay 1800
El reconocimiento es un barrido completo por defecto. Recórtalo con --no-discover (omitir la wordlist de rutas HTTP) o --no-internal-ip (omitir las comprobaciones de cert/OXID/IIS). Consulta --help para el menú 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).
Los endpoints descubiertos se listan en pantalla automáticamente. Añade -o log.txt
para un log completo campo por campo, o --json/--csv para salida legible por máquina.
El modo spray es opcional y está cableado a la ordenación de password-spray — se prueba una contraseña en todas las cuentas por ronda, así que ninguna cuenta ve más de un intento por ronda. Configura --delay con la ventana de observación de bloqueos del objetivo y confirma la política de bloqueo antes de ejecutar. Informa por separado los resultados válidos, limpiamente rechazados y no concluyentes, de modo que un resultado negativo es fiable en lugar de un artefacto de un oráculo roto.
ntlmscout se apoya sobre los hombros de los investigadores y herramientas que fueron pioneros en el reconocimiento de endpoints NTLM. Sus ideas, técnicas y wordlists de endpoints informaron directamente este proyecto:
*-ntlm-info de nmap — Justin Cacak (http/imap/pop3/smtp/nntp/telnet/ms-sql) y Tom Sellers (rdp): las recetas por protocolo para sonsacar un Type-2 a cada servicio.IOXIDResolver::ServerAlive2 y conceptos de relay/postura de NTLM.Los detalles del protocolo siguen la [MS-NLMP] Open Specification de Microsoft y las clásicas notas de NTLM de davenport de Eric Glass. La divulgación de IP interna de IIS es CVE-2000-0649.
Si tu trabajo pertenece aquí y te he omitido, abre un issue — el crédito es merecido y lo añadiré.
BoydHacks — github.com/BoydHacks