Дальше в лес. Как работают атаки на доверенные отношения доменов и лесов AD

  • Партнер

  • Содержание статьи

    • Разведка
    • Леса
    • Домены
    • Trust Keys
    • Домены
    • Леса
    • Выдаем себя за контроллер домена
    • Неограниченное делегирование
    • Ограниченное делегирование
    • PAM Trust
    • Обнаружение
    • Проверка, не в бастионном лесу ли мы
    • Проверяем, не управляется ли текущий лес каким-то другим по PAM Trust
    • Дополнительные проверки и новые угрозы
    • Эксплуатация
    • Заключение

    Active Directory поз­воля­ет стро­ить сети со слож­ной архи­тек­турой, вклю­чающей нес­коль­ко доменов и лесов, которые под­держи­вают опре­делен­ную иерар­хию вза­имно­го доверия. Подоб­ные сис­темы неидеаль­ны с точ­ки зре­ния безопас­ности, и, хорошо раз­бира­ясь в их устрой­стве, взлом­щик может получить к ним несан­кци­они­рован­ный дос­туп. В этой статье мы раз­берем нес­коль­ко видов атак на отно­шения доменов и лесов в Active Directory.

    warning

    Статья име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности, про­водя­щих тес­тирова­ние в рам­ках кон­трак­та. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Рас­простра­нение вре­донос­ных прог­рамм, наруше­ние работы сис­тем и наруше­ние тай­ны перепис­ки прес­леду­ются по закону.

    Мно­жес­тво ком­паний исполь­зует сре­ду Active Directory для адми­нис­три­рова­ния сети сво­ей орга­низа­ции. Ком­пании рас­тут, домен рас­ширя­ется, и рано или поз­дно нас­тупа­ет момент, ког­да тре­бует­ся соз­дать в домене дру­гие домены, что­бы раз­гра­ничить поль­зовате­лей, обя­зан­ности, да и, в кон­це кон­цов, позабо­тить­ся о безопас­ности.

    До­пус­тим, у нас есть ком­пания MISHA Corporation. У нее может быть домен misha.local для адми­нис­тра­торов, bank.misha.local для финан­сового отде­ла, dev.misha.local для раз­работ­чиков и так далее.

    До­верие меж­ду дву­мя домена­ми может быть двус­торон­ним — поль­зовате­ли домена bank.misha.local могут получать дос­туп к ресур­сам dev.misha.local, а поль­зовате­ли dev.misha.local — к bank.misha.local. А может быть односто­рон­ним — в таком слу­чае лишь поль­зовате­ли одно­го опре­делен­ного домена име­ют дос­туп к ресур­сам дру­гого. Допус­тим, учет­ные записи домена dev.misha.local могут ходить в домен bank.misha.local, а вот поль­зовате­ли bank.misha.local в dev.misha.local не могут.

    На­ша прек­расная ком­пания про­дол­жает рас­ширять­ся и покупа­ет дру­гую ком­панию, назовем ее MYCRASOFT Corporation. У этой фир­мы так­же есть домен — mycra.local, в нем име­ются поль­зовате­ли, сер­висы, груп­пы. Все нас­тро­ено и отлично работа­ет. Само собой, теперь поль­зовате­лям домена misha хотелось бы получить дос­туп к это­му домену. Здесь мы плав­но перехо­дим к понятию леса.

    Лес — самая круп­ная струк­тура в AD. Внут­ри леса находят­ся деревья — некий набор доменов (misha.local, bank.misha.local, dev.misha.local). Меж­ду лесами так­же мож­но нас­тро­ить как односто­рон­нее, так и двус­торон­нее доверие.

    Мы рас­смот­рим безопас­ность этих доверен­ных отно­шений. Опи­шем набор атак — от прос­тых к слож­ным — и раз­берем такие темы, как SID Filtering, PAM Trust, TGT Delegation.

    Ког­да я пишу «меж­ду лесами», я имею в виду ата­ку, которая выпол­няет­ся из одно­го леса на дру­гой, нап­ример misha.local <-> priv.local. Если я пишу «меж­ду домена­ми», то я имею в виду ата­ку меж­ду деревь­ями (dev.misha.local <-> misha.local). Что­бы понимать, о чем тут идет речь, читате­лю нуж­но раз­бирать­ся в Kerberos, делеги­рова­нии, а так­же иметь базовые зна­ния в Active Directory, так как статья не пред­полага­ет объ­ясне­ние этих тех­нологий, а лишь рас­смат­рива­ет их воз­можные недос­татки.

     

    Разведка

    Сна­чала пред­лагаю опре­делить мас­штаб проб­лемы. Иног­да мы будем исполь­зовать PowerView и Active Directory Module для перечис­ления объ­ектов.

     

    Леса

    Вы­явить все отно­шения меж­ду лесами поможет встро­енный инс­тру­мент nltest:

    nltest /domain_trusts

    Nltest

    Из вывода мы видим, что в иссле­дуемой сети целых три леса. Меж­ду ними все­ми уста­нов­лено двус­торон­нее доверие, а production.local име­ет атри­бут 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.local и mycra.local домен misha будет хра­нить ключ доверия в поль­зовате­ле mycra$, а домен mycra будет хра­нить его в поль­зовате­ле misha$.

    Источник: xakep.ru

    Ответить

    Ваш адрес email не будет опубликован. Обязательные поля помечены *