Автор статьи: Александр Колесников В статье мы продолжим знакомиться с атаками Relay в инфраструктуре Windows Active Directory. Начальные настройки тестового стенда можно найти в первой части этого цикла статей. А сейчас попробуем провести Relay атаки на взаимодействие по протоколам SMB->LDAP, HTTP->LDAP и HTTP->RPC. Перечень протоколов, которые могут быть использованы для проведения атак типа Relay на самом деле довольно обширен. Все используемые протоколы продиктованы функционалом операционной системы Windows, а именно - NTLMSSP (NT Lan Manager (HTLM) Security Support Provider) этот механизм как раз и срабатывает автоматически в ОС, когда необходимо пройти процедуру аутентификации. Беда этого механизма заключается лишь в том, что аутентификация основана на challenge-response методах, которые изначально никак не были защищены, и только со временем в Windows были добавлены митигации, которые требуют проверки целостности и подлинности от пересылаемых данных. Поэтому сегодня пользователь для любого используемого протокола может настраивать состояние механизмов проверки целостности и подписи запросов и ответов. Причем некоторые настройки устанавливаются автоматически как устанавливается дополнительный функционал в операционную систему. Для примера, приведем часть из списка протоколов, которые могут использовать NTLM в качестве способа проведения аутентификации: RPC SMB HTTP LDAP IMAP SMTP POP3 ... Стоит еще так же упомянуть, что протоколы, которые перечислены выше, могут использоваться клиентским программным обеспечением, которое устанавливается в операционную систему и оно тоже может стать целью для атаки. Кстати, если говорить о программном обеспечении, которое можно атаковать через Relay, то здесь можно вспомнить один интересный пример. Наверное одна из самых первых относительно простых Relay атак, которую легко использовать для эскалации привилегий - Hot Potato. Да, атака довольно старая, но метод, который лежит в её основе как раз демонстрирует, что использование  Relay атак даже на локальной машине может принести очень много пользы. Суть атаки заключается в том, что атакующему нужно выполнить несколько условий: Заставить систему запросить WPAD Подменить адрес на WPAD 127.0.0.1 Подложить свой собственный WPAD Провести аутентификацию от имени ОС Визуально весь алгоритм выглядит так: Конечно же набор уязвимостей, которые позволяли так здорово заполучить привилегии пользователя SYSTEM исправили в далеком 16м году. Однако для эскалации привилегий на системах Windows 7, которые не содержат патчей MS16-077 и MS16-075, метод все еще может быть действенным. Атаки Relay для получения повышенных привилегий развиваются и сегодня, перечень известных Potato можно найти ниже: Hot Potato Rotten Potato Lonely Potato Juicy Potato Rouge Potato Sweet Potato Generic Potato Local Potato God Potato Для каждой атаки можно подобрать ОС Windows той версии, которая является уязвимой. Итак, просмотрев небольшой экскурс по Relay атакам, попробуем провести атаку HTTP->LDAP. Для этого нам потребуется: Windows Server Core 2016 - контроллер домена. Windows Server 2016 Desktop Experience - сервер в AD (можно делать контроллером, можно просто сервером в AD). Ubuntu Server 20.04 в качестве системы, которая будет проводить атаку. Инструменты на системе Ubuntu Server 20.04: impacket mitm6 Атаки Relay, где конечным протоколом взаимодействия становится LDAP сложны тем, что последний даже в установке по умолчанию может требовать специальное подтверждение целостности, без которого не будет происходить подключение и взаимодействие системы. Поэтому провести атаку SMB->LDAP получится только вот с таким результатом: Команды с картинки: Можно ли с этим что-то сделать? Да, только нужно чтобы на сервере не была установлена настройка Forced Sign для взаимодействия LDAP (по умолчанию не выставлено). Поэтому мы можем прибегнуть к небольшой модификации запроса это достаточно просто сделать через флаг ntlmrelayx - remove-mic. Remove-mic это флажок, который просто уберет Message Integrity Check параметр из данных, которые отправил клиент. Попробуем: Похоже, что работает. Теперь попробуем сделать Relay HTTP->LDAP, сложность этой атаки по сути не отличается ничем от предыдущей, разница только в запуске ntlmrelayx, вместо smb нужно написать ldap. Для этой атаки стоит помнить, что запуск аутентификации для сервера из powershell или просто обращением к Relay серверу недостаточно, нужно чтобы NTLM SSP действительно начал процесс аутентификации. В большинстве случаев Relay HTTP->LDAP выполняется с небольшим дополнением - сервер Relay будет запрашивать введение пароля пользователя. Ниже пример таких действий: Получается, если пользователь не введет логин и пароль, то чуда не произойдет, поэтому это может быть более сложным вариантом Relay. Последний вариант Relay, который хотелось бы практически разобрать это HTTP->RPC. RPC протокол интересен тем, что позволяет обращаться не просто в стандартные приложения типа веб серверов, но и так же "общаться" с операционной системой. Как при этом выглядит атака: И проверка результата: Кстати, помимо запуска команд и создания пользователя из-под которого можно теперь достать копию базы с хэшами пользовательских паролей, можно так же собрать данных о Active Directory: В следующей статье попробуем разобраться в последних версиях Potato эксплойтов и заставим системы без взаимодействия с пользователем. Напомню, что данная серия статей подготовлена в преддверии старта курса: «Пентест. Практика тестирования на проникновение».