
Ein Werkzeug zum Durchführen von leichtem Brute-Forcing von HTTP-Servern, um allgemein zugängliche NTLM-Authentifizierungsendpunkte zu identifizieren.
NTLMRecon ist eine Golang-Version des ursprünglichen NTLMRecon-Dienstprogramms von Sachin Kamath (AKA pwnfoo). NTLMRecon kann genutzt werden, um Brute-Force-Angriffe gegen einen bestimmten Webserver durchzuführen und gängige Anwendungsendpunkte zu identifizieren, die NTLM-Authentifizierung unterstützen. Dazu gehören Endpunkte wie der Exchange-Webdienste-Endpunkt, der oft genutzt werden kann, um die Multi-Faktor-Authentifizierung zu umgehen.
Das Tool unterstützt das Sammeln von Metadaten von den exponierten NTLM-Authentifizierungsendpunkten, einschließlich Informationen über den Computernamen, den Active Directory-Domänennamen und den Active Directory-Gesamtstrukturnamen. Diese Informationen können ohne vorherige Authentifizierung gewonnen werden, indem ein NTLM NEGOTIATE_MESSAGE-Paket an den Server gesendet und die vom Zielserver zurückgegebene NTLM CHALLENGE_MESSAGE untersucht wird. Wir haben zusammen mit diesem Tool auch einen Blogbeitrag veröffentlicht, der einige der Beweggründe für seine Entwicklung erläutert und wie wir die erweiterte Metadatenerfassung in Chariot angehen.
Wir wollten Brute-Force-Angriffe und die automatisierte Identifizierung exponierter NTLM-Authentifizierungsendpunkte in Chariot, unserer Plattform für externes Angriffsflächenmanagement und kontinuierliches automatisiertes Red Teaming, durchführen. Unsere primäre Backend-Scanner-Infrastruktur ist in Golang geschrieben und wir wollten nicht das NTLMRecon-Dienstprogramm in Python herunterladen und per Shell-Aufruf ausführen müssen, um diese Informationen zu sammeln. Wir wollten auch mehr Kontrolle über den Detaillierungsgrad der gesammelten Informationen usw.
Der folgende Befehl kann verwendet werden, um das NTLMRecon-Dienstprogramm zu installieren. Alternativ können Sie eine vorkompilierte Version der Binärdatei aus dem Reiter „Releases“ auf GitHub herunterladen.
go install github.com/praetorian-inc/NTLMRecon/cmd/NTLMRecon@latest
Der folgende Befehl kann verwendet werden, um das NTLM-Recon-Dienstprogramm aufzurufen und exponierte NTLM-Authentifizierungsendpunkte zu entdecken:
NTLMRecon -t https://autodiscover.contoso.com
Der folgende Befehl kann verwendet werden, um das NTLM-Recon-Dienstprogramm aufzurufen und exponierte NTLM-Endpunkte zu entdecken, während die gesammelten Metadaten im JSON-Format ausgegeben werden:
NTLMRecon -t https://autodiscover.contoso.com -o json
Der folgende Befehl kann verwendet werden, um einen benutzerdefinierten Host-Header anzugeben, wenn Endpunkte getestet werden, die dies erfordern:
NTLMRecon -t https://192.168.1.100 -H mail.contoso.com
Der folgende Befehl kann verwendet werden, um die Debug-Ausgabe für die Fehlerbehebung zu aktivieren:
NTLMRecon -t https://autodiscover.contoso.com -debug
Nachfolgend ist ein Beispiel-JSON-Output mit den Daten, die wir aus der vom Server zurückgegebenen NTLM CHALLENGE_MESSAGE sammeln:
{
"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/
➜ ~
Unsere Methodik bei der Entwicklung dieses Tools zielte auf die minimalste Version der gewünschten Funktionalität für die Erstveröffentlichung ab. Das Ziel dieses Projekts war es, ein erstes Tool zu erstellen, das wir in Chariot integrieren können, und dann Community-Beiträge und Feedback zu ermöglichen, um weitere Verbesserungen oder Funktionalitäten des Tools voranzutreiben. Nachfolgend sind einige Ideen für zusätzliche Funktionalitäten aufgeführt, die zu NTLMRecon hinzugefügt werden könnten:
[1] https://www.praetorian.com/blog/automating-the-discovery-of-ntlm-authentication-endpoints/