Содержание статьи
- Разведка
- Леса
- Домены
- Trust Keys
- Домены
- Леса
- Выдаем себя за контроллер домена
- Неограниченное делегирование
- Ограниченное делегирование
- PAM Trust
- Обнаружение
- Проверка, не в бастионном лесе ли мы
- Проверяем, не управляется ли текущий лес каким-то другим по PAM Trust
- Дополнительные проверки и новые угрозы
- Эксплуатация
- Заключение
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Множество компаний использует среду Active Directory для администрирования сети своей организации. Компании растут, домен расширяется, и рано или поздно наступает момент, когда требуется создать в домене другие домены, чтобы разграничить пользователей, обязанности, да и, в конце концов, позаботиться о безопасности.
Допустим, у нас есть компания MISHA Corporation. У нее может быть домен misha.
для администраторов, bank.
для финансового отдела, dev.
для разработчиков и так далее.
Доверие между двумя доменами может быть двусторонним — пользователи домена bank.
могут получать доступ к ресурсам dev.
, а пользователи dev.
— к bank.
. А может быть односторонним — в таком случае лишь пользователи одного определенного домена имеют доступ к ресурсам другого. Допустим, учетные записи домена dev.
могут ходить в домен bank.
, а вот пользователи bank.
в dev.
не могут.
Наша прекрасная компания продолжает расширяться и покупает другую компанию, назовем ее MYCRASOFT Corporation. У этой фирмы также есть домен — mycra.
, в нем имеются пользователи, сервисы, группы. Все настроено и отлично работает. Само собой, теперь пользователям домена misha
хотелось бы получить доступ к этому домену. Здесь мы плавно переходим к понятию леса.
Лес — самая крупная структура в AD. Внутри леса находятся деревья — некий набор доменов (misha.
, bank.
, dev.
). Между лесами также можно настроить как одностороннее, так и двустороннее доверие.
Мы рассмотрим безопасность этих доверенных отношений. Опишем набор атак — от простых к сложным — и разберем такие темы, как SID Filtering, PAM Trust, TGT Delegation.
Когда я пишу «между лесами», я имею в виду атаку, которая выполняется из одного леса на другой, например misha.
. Если я пишу «между доменами», то я имею в виду атаку между деревьями (dev.
). Чтобы понимать, о чем тут идет речь, читателю нужно разбираться в Kerberos, делегировании, а также иметь базовые знания в Active Directory, так как статья не предполагает объяснение этих технологий, а лишь рассматривает их возможные недостатки.
Разведка
Сначала предлагаю определить масштаб проблемы. Иногда мы будем использовать PowerView
и Active
для перечисления объектов.
Леса
Выявить все отношения между лесами поможет встроенный инструмент nltest:
nltest /domain_trusts
Из вывода мы видим, что в исследуемой сети целых три леса. Между ними всеми установлено двустороннее доверие, а production.
имеет атрибут enable_tgt
, о котором мы поговорим немного позже.
Соберем чуть больше информации с помощью следующих инструментов:
# Получить информацию о лесе # PowerView Get-Forest Get-Forest -Forest priv.local # AD Module Get-ADForest Get-ADForest -Identity priv.local# Получить все домены в лесе # PowerView # PowerView v3 Get-ForestDomain Get-ForestDomain -Forest priv.local # PowerView v2 Get-NetForestDomain -Verbose Get-NetForestDomain -Forest priv.local # AD Module (Get-ADForest).Domains
Домены
Конечно же, мы можем использовать nltest с приведенным выше синтаксисом, чтобы узнать отношения и внутри леса, но рассмотрим вариант с PowerView и AD Module:
# PowerView #v3 Get-DomainTrust Get-DomainTrust -Domain priv.local Get-DomainTrust -SearchBase GC://priv.local # v2 Get-NetDomainTrust -Domain priv.local # Найти все внешние (external) доверия в текущем лесе Get-NetDomainTrust | ?{$_.TrustType -eq 'External'}# AD Module Get-ADTrust Get-ADTrust -Identity priv.local
Полученный нами вывод показывает связи и отношения внутри леса в исследуемой сети.
Trust Keys
Домены
Обеспечивает безопасность специальный ключ — ключ доверия, который автоматически генерируется при создании отношений. При установлении доверия в каждом домене создается связанный пользовательский объект для хранения ключа доверия. Имя пользователя — это NetBIOS-имя другого домена, которое заканчивается символом $
(аналогично имени учетной записи компьютера). Например, в случае доверия между доменами misha.
и mycra.
домен misha
будет хранить ключ доверия в пользователе mycra$
, а домен mycra
будет хранить его в пользователе misha$
.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»