Категория > Новости > ЖэПэО. Эксплуатируем небезопасные групповые политики - «Новости»

ЖэПэО. Эксплуатируем небезопасные групповые политики - «Новости»


18-03-2023, 17:05. Автор: Gilmore
Ос­новная при­чина успе­ха боль­шинс­тва взло­мов, будь то пен­тест или реаль­ное про­ник­новение зло­умыш­ленни­ков, — это допущен­ные адми­нис­тра­тора­ми ошиб­ки в нас­трой­ках и кон­фигура­ции. Сегод­ня мы погово­рим о спо­собах экс­плу­ата­ции небезо­пас­ных груп­повых политик в сетях Active Directory.

warning


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


Читайте также - Для того, чтобы поднять настроение и зарядиться положительной энергией на целый день рекомендуется смотреть красивые картинки, поделки и многое другое. Veronica Leal посмотреть.


 

Структура


Груп­повые полити­ки исполь­зуют­ся пов­семес­тно. Это удоб­ный инс­тру­мент, поз­воля­ющий сис­темным адми­нис­тра­торам управлять нас­трой­ками кли­ент­ских сис­тем в домене. Сама «архи­тек­тура» груп­повых политик — кли­ент‑сер­верная. Чаще все­го кон­трол­лер домена выс­тупа­ет в роли сер­вера, на котором соз­дают­ся, нас­тра­ивают­ся и изме­няют­ся полити­ки, а домен­ные компь­юте­ры, поль­зовате­ли и иные объ­екты в AD — кли­енты, которые эти самые полити­ки получа­ют и при­меня­ют.


Груп­повая полити­ка называ­ется Group Policy Object (GPO). Внут­ри каж­дой GPO есть две сущ­ности:



  • Group Policy Container — спе­циаль­ный объ­ект, который име­ет иден­тифика­тор GUID, обоз­нача­ющий груп­повую полити­ку. Находит­ся в CN=Policies,CN=System;

  • Group Policy Template — фай­лы .ADMX и .ADML, поз­воля­ющие с помощью GPO управлять объ­екта­ми в AD.


GPO при­меня­ется к Organizational Units (орга­низа­цион­ным еди­ницам). Мож­но счи­тать это некой пап­кой, в которой находят­ся поль­зовате­ли, компь­юте­ры и дру­гие объ­екты.


Из­началь­но в толь­ко что соз­данном домене будут две полити­ки:



  • Default Domain Policy — наз­нача­ется текуще­му домену;

  • Default Domain Controller’s Policy — наз­нача­ется OU, в сос­тав которо­го вхо­дит кон­трол­лер домена. По умол­чанию имя этой OU — Domain Controllers.


А теперь зай­дем в ADUC и уви­дим, что нарав­не с OU в домене сущес­тву­ют и кон­тей­неры.


ЖэПэО. Эксплуатируем небезопасные групповые политики - «Новости»

Кон­тей­неры — это лишь допол­нитель­ные объ­екты, поз­воля­ющие орга­низо­вать струк­туру AD. К кон­тей­неру нель­зя при­вязать GPO. Что­бы при­менить GPO к кон­тей­неру, сна­чала сле­дует добавить его в соот­ветс­тву­ющую OU и уже к ней при­вязы­вать GPO.


GPO рас­простра­няет­ся по сети через общий сетевой ресурс SYSVOL, который хра­нит­ся на кон­трол­лере домена. Все поль­зовате­ли в домене обыч­но име­ют к нему дос­туп и пери­оди­чес­ки син­хро­низи­руют­ся для обновле­ния нас­тро­ек сво­их объ­ектов груп­повой полити­ки. Общий ресурс SYSVOL по умол­чанию ука­зыва­ет на каталог C:WindowsSYSVOLsysvol на кон­трол­лере домена.


Для син­хро­низа­ции нуж­но вре­мя. Иног­да на обновле­ние нас­тро­ек может уйти до двух часов. Если нам тре­бует­ся немед­ленная син­хро­низа­ция, то на компь­юте­ре надо ввес­ти коман­ду


gpupdate /force

С GPO могут быть свя­заны какие‑либо пра­ва. Нап­ример, поль­зователь Admin11111 име­ет пра­во GenericAll на полити­ку UsersInfo. Неп­равиль­ная нас­трой­ка таких прав при­водит к появ­лению век­торов экс­плу­ата­ции, которые мы рас­смот­рим в сегод­няшней статье.


 

Обнаружение


Об­наружить дос­тупные GPO мож­но сле­дующим обра­зом:


В резуль­тате мы получим GUID всех дос­тупных политик.


Ес­ли у нас есть дос­туп к Active Directory Module, то смо­жем получить информа­цию вот так:


Get-ADObject-LDAPFilter"(ObjectClass=GroupPolicyContainer)"-PropertiesName,DisplayName,gPCFileSysPath|selectName,DisplayName,GPCFileSysPath|Format-List

На­конец, PowerView име­ет такую же фун­кци­ональ­ность:


Get-NetGpo

Те­перь желатель­но из GUID получить имя полити­ки. Конеч­но, AD Module и PowerView уме­ют делать это самос­тоятель­но, но в слу­чае, если у нас есть толь­ко GUID, имя мож­но получить сле­дующим обра­зом:


RSAT
Get-Gpo -GUID '{205F0E03-17C3-4E9B-925E-330FAD565CA1}'

PowerView v3
Get-DomainGPO -Identity '{205F0E03-17C3-4E9B-925E-330FAD565CA1}' | select DisplayName

Мы так­же можем изу­чить полити­ки, при­вязан­ные к опре­делен­ному устрой­ству:


PowerView v2
Get-NetGPO -ComputerNamename.domain.com

PowerView v3
Get-DomainGPO -ComputerIdentityname.domain.com -PropertiesName,DisplayName

На­конец, самое инте­рес­ное. Пора изу­чать все ACL на най­ден­ные GPO, пыта­ясь най­ти мис­конфиг. Сде­лать это мож­но с помощью раз­ных средств. Чаще все­го исполь­зуют­ся или BloodHound, или PowerView:


Получение ACL на все политикиGet-NetGPO|%{Get-ObjectAcl-ResolveGUIDs-Name$_.Name}Найти GPO, на которые пользователь student имеет праваGet-NetGPO|%{Get-ObjectAcl-ResolveGUIDs-Name$_.Name}|?{$_.IdentityReference-match"student"}

Поль­зователь vaska име­ет подоз­ритель­но высокие пра­ва на GPO с GUID {31B2F340-016D-11D2-945F-00C04FB984F9}. PowerView треть­ей вер­сии (он же PowerView DEV) не отста­ет от сво­его млад­шего соб­рата, но отли­чает­ся тем, что не уме­ет авто­мати­чес­ки пре­обра­зовы­вать SID в понят­ное для челове­ка имя поль­зовате­ля, поэто­му в конец каж­дого коман­дле­та добав­ляет­ся огромная стро­ка:


Находим ACL на все политикиGet-DomainGPO|Get-DomainObjectAcl-ResolveGUIDs|Foreach-Object{$_|Add-Member-NotePropertyNameIdentity-NotePropertyValue(ConvertFrom-SID$_.SecurityIdentifier.value)-Force;$_}Находим GPO, на которые у пользователя domainuser есть праваGet-DomainGPO|Get-DomainObjectAcl-ResolveGUIDs|Foreach-Object{$_|Add-Member-NotePropertyNameIdentity-NotePropertyValue(ConvertFrom-SID$_.SecurityIdentifier.value)-Force;$_}|Foreach-Object{if($_.Identity-eq$("domainuser")){$_}}Находим GPO, на которую пользователи с RID 1000 имеют какие-нибудь права:Get-DomainObjectAcl-LDAPFilter'(objectCategory=groupPolicyContainer)'|?{($_.SecurityIdentifier-match'^S-1-5-.*-[1-9]d{3,}$')-and($_.ActiveDirectoryRights-match'WriteProperty|GenericAll|GenericWrite|WriteDacl|WriteOwner')}Обнаружение пользователей (кроме ожидаемых, таких как Enterprise Admins, Domain Admins), которые могут изменять GPOGet-DomainGPO|Get-DomainObjectAcl-ResolveGUIDs|where{$_.ActiveDirectoryRights-match"GenericWrite|AllExtendedRights|WriteDacl|WriteProperty|WriteMember|GenericAll|WriteOwner"-and$_.SecurityIdentifier-match"S-1-5-21-3301805923-005976665-244893303-[d]{4,10}"}
Перейти обратно к новости