
Ein NTLM-Relay-Tool für den EWS-Endpunkt für lokale Exchange-Server. Bietet eine OWA für Hacker.
Version 1.0.0. Dieses Tool ist ein PoC, der die Fähigkeit eines Angreifers demonstriert, einen SMB- oder HTTP-basierten NTLM-Relay-Angriff auf den EWS-Endpunkt eines lokalen Microsoft Exchange-Servers durchzuführen, um das Postfach des Opfers zu kompromittieren. Das Tool bietet dem Angreifer eine OWA-ähnliche Oberfläche mit Zugriff auf das Postfach und die Kontakte des Benutzers.
Veröffentlicht auf der Defcon26. Weitere Informationen zum Tool, den grundlegenden ausgenutzten Schwachstellen und einer aufgezeichneten Demo finden Sie hier: https://blog.quickbreach.io/one-click-to-owa/
pip install -r requirements.txt
./exchangeRelayx.py -t https://mail.quickbreach.com
Die Anwendung gliedert sich in den owaServer, die Relay-Server und den HTTPAttack-Client (exchangePlugin), der für jede neue weitergeleitete Verbindung erstellt wird.
Der owaServer ist ein Flask-basierter Webserver, der standardmäßig auf http://127.0.0.1:8000 lauscht. Dieser Webserver stellt statische HTML-Dateien von index.html, OWA.html und ComposeEmail.html bereit – und alles andere wird aus JSON-Anfragen (von EWS.js) an die owaServer-Endpunkte geladen. Wenn eine Anfrage an den owaServer gestellt wird, erzeugt der owaServer den entsprechenden EWS-Aufruf und gibt ihn in das Shared-Memory-Wörterbuch ein, das sowohl vom owaServer als auch vom exchangePlugin verwendet wird. Sobald das exchangePlugin die Anfrage erhält, sendet es sie an Exchange und lädt die Antwort in dasselbe Shared-Memory-Wörterbuch. Wenn der owaServer schließlich die Antwort aus dem Wörterbuch erhält, parst er die Daten und gibt die Ergebnisse zurück. Sie werden feststellen, dass die Datei-Download-Funktionalität nicht der einer Standard-Website entspricht – das liegt an der asynchronen Natur der App.
Die Relay-Server sind standardmäßige Impacket-HTTP- und SMB-basierte NTLM-Relay-Server, und sie erstellen für jede neu weitergeleitete Verbindung eine neue exchangePlugin-Instanz.
Das exchangePlugin ist im Wesentlichen der HTTPClient, der die Anfragen an den EWS-Server sendet und die Antworten empfängt. Allen exchangePlugin-Instanzen wird bei der Initialisierung dasselbe Shared-Memory-Wörterbuch übergeben, das sie für die Interprozesskommunikation nutzen. Dadurch können die Anfragen vom owaServer an die entsprechende weitergeleitete Verbindung des Benutzers zurückgegeben werden – was mehr Flexibilität bei der Verwaltung mehrerer Opfer bietet.
Dieses Tool wurde gegen Exchange 2013 auf einem Server 2012 R2-System erstellt und getestet. Ich gehe daher davon aus, dass für andere Umgebungen Anpassungen erforderlich sein werden. Einige Ziele für die nächsten Iterationen des Tools sind:
Pull-Requests sind sehr willkommen