
Инструмент для ретрансляции NTLM к конечной точке EWS для локальных серверов Exchange. Предоставляет OWA для хакеров.
Версия 1.0.0. Этот инструмент является PoC для демонстрации возможности атакующего выполнить NTLM relay-атаку на основе SMB или HTTP на конечную точку EWS локального сервера Microsoft Exchange с целью компрометации почтового ящика жертвы. Инструмент предоставляет атакующему интерфейс, напоминающий OWA, с доступом к почтовому ящику и контактам пользователя.
Выпущен на Defcon26. Ознакомиться с предысторией инструмента, основными эксплуатируемыми уязвимостями и записью демонстрации можно здесь: https://blog.quickbreach.io/one-click-to-owa/
pip install -r requirements.txt
./exchangeRelayx.py -t https://mail.quickbreach.com
Приложение разделяется на owaServer, relay-серверы и HTTPAttack-клиент (exchangePlugin), который создается для каждого нового ретранслируемого соединения.
owaServer — это веб-сервер на основе Flask, который по умолчанию прослушивает http://127.0.0.1:8000. Этот веб-сервер обслуживает статические HTML-файлы: index.html, OWA.html и ComposeEmail.html, а все остальное загружается из JSON-запросов (от EWS.js) к конечным точкам owaServer. Когда поступает запрос к owaServer, он генерирует соответствующий вызов EWS и помещает его в словарь общей памяти, используемый как owaServer, так и exchangePlugin. Как только exchangePlugin получает запрос, он отправляет его на Exchange, а затем загружает ответ в тот же словарь общей памяти. Наконец, когда owaServer получает ответ из словаря, он разбирает данные и возвращает результаты. Вы заметите, что функциональность загрузки файлов не похожа на стандартную веб-сайту, что связано с асинхронной природой приложения.
Relay-серверы являются стандартными NTLM relay-серверами на основе HTTP и SMB из impacket, и они создают новый экземпляр exchangePlugin для каждого нового ретранслируемого соединения.
exchangePlugin, по сути, является фактическим HTTPClient, который отправляет и получает запросы от сервера EWS. Все экземпляры exchangePlugin при инициализации получают один и тот же словарь общей памяти и используют его для межпроцессного взаимодействия. Это позволяет передавать запросы от owaServer обратно к соответствующему ретранслируемому соединению пользователя, что обеспечивает большую гибкость для управления несколькими жертвами.
Этот инструмент был разработан и протестирован для Exchange 2013 на системе Server 2012 R2, поэтому, вероятно, потребуются корректировки для других сред. Некоторые цели на следующие несколько итераций инструмента:
Pull requests приветствуются