Категория > Новости > Дальше в лес. Как работают атаки на доверенные отношения доменов и лесов AD - «Новости»

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


12-08-2022, 00:02. Автор: Higgins
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-Forestpriv.local
# AD Module
Get-ADForest
Get-ADForest-Identitypriv.local
# Получить все домены в лесу
# PowerView
# PowerView v3
Get-ForestDomain
Get-ForestDomain-Forestpriv.local
# PowerView v2
Get-NetForestDomain-Verbose
Get-NetForestDomain-Forestpriv.local
# AD Module
(Get-ADForest).Domains
Дальше в лес. Как работают атаки на доверенные отношения доменов и лесов AD - «Новости»
 

Домены


Ко­неч­но же, мы можем исполь­зовать nltest с при­веден­ным выше син­такси­сом, что­бы узнать отно­шения и внут­ри леса, но рас­смот­рим вари­ант с PowerView и AD Module:


#v3Get-DomainTrustGet-DomainTrust-Domainpriv.localGet-DomainTrust-SearchBaseGC://priv.local# v2Get-NetDomainTrust-Domainpriv.local# Найти все внешние (external) доверия в текущем лесуGet-NetDomainTrust|?{$_.TrustType-eq'External'}# AD ModuleGet-ADTrustGet-ADTrust-Identitypriv.local

По­лучен­ный нами вывод показы­вает свя­зи и отно­шения внут­ри леса в иссле­дуемой сети.


 

Trust Keys


 

Домены


Обес­печива­ет безопас­ность спе­циаль­ный ключ — ключ доверия, который авто­мати­чес­ки генери­рует­ся при соз­дании отно­шений. При уста­нов­лении доверия в каж­дом домене соз­дает­ся свя­зан­ный поль­зователь­ский объ­ект для хра­нения клю­ча доверия. Имя поль­зовате­ля — это NetBIOS-имя дру­гого домена, которое закан­чива­ется сим­волом $ (ана­логич­но име­ни учет­ной записи компь­юте­ра). Нап­ример, в слу­чае доверия меж­ду домена­ми misha.local и mycra.local домен misha будет хра­нить ключ доверия в поль­зовате­ле mycra$, а домен mycra будет хра­нить его в поль­зовате­ле misha$.



Перейти обратно к новости