
Uno strumento per eseguire un brute-forcing leggero su server HTTP per identificare endpoint di autenticazione NTLM comunemente accessibili.
NTLMRecon è una versione in Golang dell'utilità originale NTLMRecon scritta da Sachin Kamath (AKA pwnfoo). NTLMRecon può essere utilizzato per eseguire brute forcing contro un server web target per identificare endpoint applicativi comuni che supportano l'autenticazione NTLM. Questo include endpoint come l'endpoint Exchange Web Services che spesso può essere sfruttato per bypassare l'autenticazione multi-fattore.
Lo strumento supporta la raccolta di metadati dagli endpoint di autenticazione NTLM esposti, incluse informazioni sul nome del computer, nome del dominio Active Directory e nome della foresta Active Directory. Queste informazioni possono essere ottenute senza autenticazione precedente inviando un pacchetto NTLM NEGOTIATE_MESSAGE al server ed esaminando il NTLM CHALLENGE_MESSAGE restituito dal server target. Abbiamo anche pubblicato un post sul blog insieme a questo strumento che discute alcune delle motivazioni dietro il suo sviluppo e come stiamo affrontando la raccolta di metadati più avanzata all'interno di Chariot.
Volevamo eseguire brute forcing e identificazione automatizzata degli endpoint di autenticazione NTLM esposti all'interno di Chariot, la nostra piattaforma di gestione della superficie d'attacco esterna e di red teaming automatizzato continuo. La nostra infrastruttura di scansione backend principale è scritta in Golang e non volevamo dover scaricare e invocare l'utilità NTLMRecon in Python per raccogliere queste informazioni. Volevamo anche un maggiore controllo sul livello di dettaglio delle informazioni raccolte, ecc.
Il seguente comando può essere utilizzato per installare l'utilità NTLMRecon. In alternativa, è possibile scaricare una versione precompilata del binario dalla scheda releases su GitHub.
go install github.com/praetorian-inc/NTLMRecon/cmd/NTLMRecon@latest
Il seguente comando può essere utilizzato per invocare l'utilità di ricognizione NTLM e scoprire endpoint di autenticazione NTLM esposti:
NTLMRecon -t https://autodiscover.contoso.com
Il seguente comando può essere utilizzato per invocare l'utilità di ricognizione NTLM e scoprire endpoint NTLM esposti mentre si emette in output i metadati raccolti in formato JSON:
NTLMRecon -t https://autodiscover.contoso.com -o json
Il seguente comando può essere utilizzato per specificare un'intestazione Host personalizzata quando si testano endpoint che lo richiedono:
NTLMRecon -t https://192.168.1.100 -H mail.contoso.com
Il seguente comando può essere utilizzato per abilitare l'output di debug per la risoluzione dei problemi:
NTLMRecon -t https://autodiscover.contoso.com -debug
Di seguito è riportato un esempio di output JSON con i dati che raccogliamo dal NTLM CHALLENGE_MESSAGE restituito dal server:
{
"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/
➜ ~
La nostra metodologia nello sviluppo di questo strumento ha mirato alla versione più essenziale della funzionalità desiderata per il rilascio iniziale. L'obiettivo di questo progetto era creare uno strumento iniziale che potessimo integrare in Chariot e poi consentire contributi e feedback della comunità per guidare ulteriori miglioramenti o funzionalità dello strumento. Di seguito sono riportate alcune idee per funzionalità aggiuntive che potrebbero essere aggiunte a NTLMRecon:
[1] https://www.praetorian.com/blog/automating-the-discovery-of-ntlm-authentication-endpoints/