
Инструмент для обнаружения путей атак Resource-Based Constrained Delegation в средах Active Directory
Инструмент для поиска путей атаки Resource-Based Constrained Delegation в средах Active Directory
Основан почти полностью на замечательных статьях в блогах: "Wagging the Dog: Abusing Resource-Based Constrained Delegation to Attack Active Directory" от Elad Shamir и "A Case Study in Wagging the Dog: Computer Takeover" от harmj0y. Прочитайте эти две статьи, если вы действительно хотите понять, что здесь происходит. Честно говоря, я сам понимаю это лишь наполовину (и это ещё щедрая оценка).
Я не умею хорошо писать на C#, поэтому разобрался, как взаимодействовать с доменом на C#, читая исходный код SharpSploit и SharpView.
Get-RBCD-Threaded запрашивает все объекты пользователей, групп (кроме привилегированных групп, таких как "Domain Admins" и "BUILTIN\Administrators") и компьютеров Active Directory в вашем текущем домене и составляет список их SID. Затем Get-RBCD-Threaded запрашивает AD все DACL на объектах компьютеров в домене. Каждая ACE в DACL проверяется, имеет ли один из SID пользователей/групп/компьютеров права "GenericAll", "GenericWrite", "WriteOwner" или "WriteDacl" на объект компьютера, или если SID имеют разрешения "WriteProp" на атрибут ms-DS-Allowed-To-Act-On-Behalf-Of-Other-Identity (GUID:3f78c3e5-f79a-46bd-a0b8-9d18116ddc79). Если да, то, мой друг, вы на пути к атаке Resource-Based Constrained Delegation!
Скомпилируйте в Visual Studio. Для ускорения поиска по объекту DACL используется Parallel.ForEach, поэтому требуется .NET v4 как минимум.
-u|-username=, Имя пользователя для аутентификации
-p|-password=, Пароль пользователя
-d|-domain=, Полное доменное имя для аутентификации
-s|-searchforest, Обнаружение доменов и лесов через доверительные отношения. Перечисление всех доменов и лесов
-pwdlastset=, Фильтрация компьютеров по pwdLastSet для удаления устаревших объектов компьютеров. Если установить значение 90, будут отфильтрованы объекты компьютеров, чья дата pwdLastSet старше 90 дней
-i|-insecure, Принудительное небезопасное подключение LDAP, если LDAPS вызывает проблемы с подключением.
-o|-outputfile=, Вывод в CSV-файл. Укажите полный путь к файлу и имя файла.
-h|-?|-help, Показать справку по параметрам
Теперь можно указать имя пользователя, пароль и домен для аутентификации. Если параметры u/p/d пусты, Get-RBCD-Threaded попытается аутентифицироваться в домене в контексте текущего пользователя.
-o выводит результат в CSV-файл. Укажите полный путь к файлу и имя файла для сохранения вывода.
По умолчанию в поиске указывается порт 636 для принудительного использования LDAPS. Это может вызвать проблемы. Если вы получите ошибку о том, что сервер недоступен или что-то подобное, попробуйте флаг "-i", чтобы удалить порт 636 из строки подключения.
Добавлен параметр "pwdLastSet" для фильтрации. В больших средах может быть много устаревших объектов компьютеров, которые больше не существуют как "целевые" объекты в ACL и не могут быть использованы для атаки RBCD (по крайней мере, насколько мне известно). Установите pwdLastSet в количество дней. Пример: "-pwdlastset=90" отфильтрует из результатов любые объекты компьютеров, у которых дата pwdLastSet больше или равна 90 дням от текущей даты и времени.
Протестировано в среде с более чем 20 тыс. пользователей, групп и компьютеров (всего более 60 тыс. объектов). Get-RBCD-Threaded завершился примерно за 60 секунд. Для сравнения, мои костыльные команды PowerView из этого gist для аналогичного поиска выполнялись несколько часов и так и не завершились.
Этот инструмент не будет выполнять атаку делегирования за вас. Вам нужно прочитать блоги Elad Shamir и harmj0y, чтобы понять, как это сделать. Он поможет только найти возможные цели для атаки RBCD.
Пример использования из моей AD-лаборатории:

Этот инструмент не делает ничего, кроме запросов к Active Directory с помощью LDAP-запросов, что может быть трудно обнаружить. Netflow может быть использован для обнаружения большого количества LDAP-запросов / трафика к одной системе.
Другой возможный способ обнаружения — использование учётных записей-приманок (honeypot). Идея в том, чтобы создать объект компьютера, к которому какой-либо пользователь/группа имеет права на запись. Атака RBCD основана на модификации объекта компьютера и последующем делегировании билетов Kerberos на него. Возможные точки обнаружения для такого компьютера-приманки:
Я создал этот инструмент, чтобы помогать себе в тестах на проникновение. Однако защитники / синие команды / системные администраторы могут легко использовать его для поиска слабых мест в своих средах и (надеюсь) приступить к их устранению.