
Un outil pour effectuer un brute-force léger de serveurs HTTP afin d'identifier les points de terminaison d'authentification NTLM couramment accessibles.
NTLMRecon est une version en Golang de l'utilitaire NTLMRecon original écrit par Sachin Kamath (AKA pwnfoo). NTLMRecon peut être utilisé pour effectuer du brute force contre un serveur web ciblé afin d'identifier les points d'accès applicatifs courants prenant en charge l'authentification NTLM. Cela inclut des points d'accès tels que le point d'accès Exchange Web Services, qui peut souvent être utilisé pour contourner l'authentification multi-facteurs.
L'outil permet de collecter des métadonnées à partir des points d'accès d'authentification NTLM exposés, notamment des informations sur le nom de l'ordinateur, le nom du domaine Active Directory et le nom de la forêt Active Directory. Ces informations peuvent être obtenues sans authentification préalable en envoyant un paquet NTLM NEGOTIATE_MESSAGE au serveur et en examinant le NTLM CHALLENGE_MESSAGE renvoyé par le serveur ciblé. Nous avons également publié un article de blog accompagnant cet outil, discutant de certaines des motivations derrière son développement et de la manière dont nous abordons une collecte de métadonnées plus avancée dans Chariot.
Nous souhaitions effectuer du brute force et l'identification automatisée des points d'accès d'authentification NTLM exposés au sein de Chariot, notre plateforme de gestion de la surface d'attaque externe et d'équipe rouge automatisée continue. Notre infrastructure de scan backend principale est écrite en Golang et nous ne voulions pas avoir à télécharger et à exécuter l'utilitaire NTLMRecon en Python pour collecter ces informations. Nous souhaitions également avoir plus de contrôle sur le niveau de détail des informations collectées, etc.
La commande suivante peut être utilisée pour installer l'utilitaire NTLMRecon. Vous pouvez également télécharger une version précompilée du binaire depuis l'onglet des versions (releases) sur GitHub.
go install github.com/praetorian-inc/NTLMRecon/cmd/NTLMRecon@latest
La commande suivante peut être utilisée pour invoquer l'utilitaire de reconnaissance NTLM et découvrir les points d'accès d'authentification NTLM exposés :
NTLMRecon -t https://autodiscover.contoso.com
La commande suivante peut être utilisée pour invoquer l'utilitaire de reconnaissance NTLM et découvrir les points d'accès NTLM exposés tout en produisant les métadonnées collectées au format JSON :
NTLMRecon -t https://autodiscover.contoso.com -o json
La commande suivante peut être utilisée pour spécifier un en-tête Host personnalisé lors du test de points d'accès qui l'exigent :
NTLMRecon -t https://192.168.1.100 -H mail.contoso.com
La commande suivante peut être utilisée pour activer la sortie de débogage en cas de problème :
NTLMRecon -t https://autodiscover.contoso.com -debug
Voici un exemple de sortie JSON avec les données que nous collectons à partir du NTLM CHALLENGE_MESSAGE renvoyé par le serveur :
{
"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/
➜ ~
Notre méthodologie lors du développement de cet outil a ciblé la version la plus basique de la capacité souhaitée pour la version initiale. L'objectif de ce projet était de créer un outil initial que nous pourrions intégrer dans Chariot, puis de laisser les contributions et les retours de la communauté guider les améliorations ou fonctionnalités supplémentaires de l'outil. Voici quelques idées de fonctionnalités supplémentaires qui pourraient être ajoutées à NTLMRecon :
[1] https://www.praetorian.com/blog/automating-the-discovery-of-ntlm-authentication-endpoints/