
Un outil de relais NTLM vers le point de terminaison EWS pour les serveurs Exchange sur site. Fournit un OWA pour les hackers.
Version 1.0.0. Cet outil est une preuve de concept (PoC) pour démontrer la capacité d'un attaquant à effectuer une attaque de relais NTLM basée sur SMB ou HTTP vers le point de terminaison EWS sur un serveur Microsoft Exchange sur site afin de compromettre la boîte aux lettres de la victime. Cet outil fournit à l'attaquant une interface ressemblant à OWA, avec accès à la boîte aux lettres et aux contacts de l'utilisateur.
Publié à Defcon26. Consultez le contexte de l'outil, les problèmes principaux exploités et une démo enregistrée ici : https://blog.quickbreach.io/one-click-to-owa/
pip install -r requirements.txt
./exchangeRelayx.py -t https://mail.quickbreach.com
L'application se divise en owaServer, les serveurs de relais, et le client HTTPAttack (exchangePlugin) qui est créé pour chaque nouvelle connexion relayée.
owaServer est un serveur web basé sur Flask qui écoute sur http://127.0.0.1:8000 par défaut. Ce serveur web sert des fichiers HTML statiques (index.html, OWA.html et ComposeEmail.html) – tout le reste est chargé à partir de requêtes JSON (depuis EWS.js) vers les points de terminaison d'owaServer. Lorsqu'une requête est faite à owaServer, celui-ci génère l'appel EWS approprié et le place dans le dictionnaire mémoire partagée utilisé à la fois par owaServer et exchangePlugin. Une fois que exchangePlugin reçoit la requête, il l'envoie à Exchange puis charge la réponse dans le même dictionnaire mémoire partagée. Enfin, lorsque owaServer obtient la réponse depuis le dictionnaire, il parse les données et retourne les résultats. Vous remarquerez que la fonctionnalité de téléchargement de fichiers n'est pas celle d'un site web standard, en raison de la nature asynchrone de l'application.
Les serveurs de relais sont des serveurs de relais NTLM standard basés sur impacket pour HTTP et SMB, et ils créent une nouvelle instance exchangePlugin pour chaque nouvelle connexion relayée.
exchangePlugin est, en résumé, le HTTPClient réel qui envoie et reçoit les requêtes du serveur EWS. Tous les exchangePlugin reçoivent le même dictionnaire mémoire partagée lors de l'initialisation, et l'utilisent pour la communication interprocessus. Cela permet aux requêtes provenant d'owaServer d'être transmises à la connexion relayée de l'utilisateur approprié – ce qui offre plus de flexibilité pour la gestion de plusieurs victimes.
Cet outil a été construit et testé contre Exchange 2013 sur un système Server 2012 R2, donc je parie que des ajustements seront nécessaires pour d'autres environnements. Quelques objectifs pour les prochaines itérations de l'outil :
Les pull requests sont grandement appréciées.