
Outil de reconnaissance de points de terminaison NTLM non authentifié qui décode les défis Type-2 sur HTTP, SMB, MSSQL, SMTP, IMAP, POP3, NNTP, LDAP et RDP afin d'extraire les détails AD et les IP internes.
____ / // /__ ___ ______________ __ / / / __ / / / __ ` / / / __ / / / / __/ / / / / // / / / / / ( ) // // / // / /_ // //_/// // ///_/___/_,/__/
chasse aux NTLM exposés BoydHacks · github.com/BoydHacks
# ntlmscout
**Un seul outil pour extraire la moindre information des points de terminaison NTLM exposés sur Internet.**
Une négociation NTLM non authentifiée divulgue une quantité surprenante de détails internes sur l'Active Directory avant même qu'un seul identifiant ne soit envoyé. `ntlmscout` envoie un message NTLM Type-1 (NEGOTIATE) sur un large éventail de transports, décode entièrement le Type-2 (CHALLENGE) renvoyé, et en extrait tout : les noms d'hôte et de domaine NetBIOS/DNS internes, la forêt AD, la version du système d'exploitation (associée à un nom de version Windows convivial), l'horloge du serveur (et son décalage), les indicateurs de négociation, et chaque AV_PAIR — puis l'enrichit avec des divulgations non authentifiées adjacentes et un éventuel password spray sûr vis-à-vis du verrouillage de compte.
Bibliothèque standard pure. Fichier unique. Python 3.7+. Aucune dépendance.
## Fonctionnalités
- **Tous les transports dans un seul outil** — HTTP(S) (avec découverte des points de terminaison), SMB2/3, MSSQL/TDS, SMTP, IMAP, POP3, NNTP, LDAP(S), et RDP/CredSSP(NLA).
- **Décodage approfondi du Type-2** — hôte/domaine NetBIOS + DNS, nom de forêt/arborescence, version du système d'exploitation → nom convivial (client vs. serveur désambiguïsé), horodatage du serveur + décalage d'horloge, SPN, MachineID, liaisons de canal, et analyse complète des indicateurs de négociation.
- **Interprète, ne se contente pas de vider** — classification honnête **membre vs. contrôleur de domaine** (un DC n'est affirmé que lorsqu'un service DC répond réellement), et une lecture de la posture de sécurité (signature SMB/LDAP, EPA/liaison de canal, cryptographie faible NTLMv1/LM).
- **Récupère l'IP interne** — la seule chose que NTLM lui-même ne peut pas fournir — via la divulgation de l'en-tête Host d'IIS (CVE-2000-0649), WebDAV PROPFIND, RPC `IOXIDResolver::ServerAlive2` (TCP 135), et les SAN IP des certificats TLS/RDP.
- **Divulgations supplémentaires** — CN + SAN des certificats TLS/RDP, fuites d'en-têtes Exchange `X-FEServer`/`X-CalculatedBETarget`, et enrichissement anonyme du **rootDSE LDAP** (contextes de nommage, `dnsHostName`, niveaux fonctionnels AD).
- **Rapide** — un contrôle de disponibilité des ports ignore chaque sonde sur un port fermé, de sorte que les hôtes filtrés ne vous coûtent pas une avalanche de timeouts.
- **Mode spray sûr vis-à-vis du verrouillage** — ordonnancement en password spray (un mot de passe pour tous les utilisateurs par tour), NTLM Type-3 ou HTTP Basic contre le point de terminaison le plus efficace, avec un verdict clair valide / invalide / non concluant.
- **Sortie prête pour le rapport** — résumé groupé par hôte plus JSON, NDJSON, CSV, et un fichier hosts de style NetExec. Les fichiers de sortie sont écrits avec des permissions réservées au propriétaire.
## Installation
```bash
git clone https://github.com/BoydHacks/ntlmscout
cd ntlmscout
python3 ntlmscout.py --help
Pas de pip install, pas de virtualenv — il n'utilise que la bibliothèque standard de Python.
# reconnaissance d'une seule IP ou hôte (balayage complet de chaque port compatible NTLM)
python3 ntlmscout.py 203.0.113.10
python3 ntlmscout.py mail.example.com
# un point de terminaison spécifique, ou une plage entière, ou une liste de cibles
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
# router tout via Burp / un proxy CONNECT
python3 ntlmscout.py -I targets.txt --proxy 127.0.0.1:8080
# password spray sûr vis-à-vis du verrouillage contre le meilleur point de terminaison
python3 ntlmscout.py --spray -I hosts.txt -u users.txt -p 'Winter2026!' --delay 1800
La reconnaissance est un balayage complet par défaut. Réduisez-la avec --no-discover (ignorer la liste de mots des chemins HTTP) ou --no-internal-ip (ignorer les vérifications cert/OXID/IIS). Voir --help pour le menu complet.
========================================================================
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).
Les points de terminaison découverts sont listés automatiquement à l'écran. Ajoutez -o log.txt
pour un journal complet champ par champ, ou --json/--csv pour une sortie lisible par machine.
Le mode spray est opt-in et câblé en dur sur l'ordonnancement en password spray — un mot de passe est essayé sur tous les comptes par tour, de sorte qu'aucun compte ne voit jamais plus d'une tentative par tour. Réglez --delay sur la fenêtre d'observation du verrouillage de la cible et confirmez la politique de verrouillage avant de lancer. Il rapporte séparément les résultats valides, proprement rejetés, et non concluants, afin qu'un résultat négatif soit fiable plutôt qu'un artefact d'un oracle défaillant.
ntlmscout s'appuie sur les épaules des chercheurs et des outils qui ont été les pionniers de la reconnaissance des points de terminaison NTLM. Leurs idées, techniques et listes de mots de points de terminaison ont directement inspiré ce projet :
*-ntlm-info — Justin Cacak (http/imap/pop3/smtp/nntp/telnet/ms-sql) et Tom Sellers (rdp) : les recettes par protocole pour soutirer un Type-2 à chaque service.IOXIDResolver::ServerAlive2 et des concepts de relais/posture NTLM.Les détails du protocole suivent la [MS-NLMP] Open Specification de Microsoft et les notes classiques d'Eric Glass sur NTLM davenport. La divulgation de l'IP interne d'IIS est CVE-2000-0649.
Si votre travail a sa place ici et que je vous ai oublié, ouvrez une issue — le crédit est dû et je l'ajouterai.
BoydHacks — github.com/BoydHacks