Категория > Новости > ЖэПэО. Эксплуатируем небезопасные групповые политики - «Новости»
ЖэПэО. Эксплуатируем небезопасные групповые политики - «Новости»18-03-2023, 17:05. Автор: Gilmore |
Основная причина успеха большинства взломов, будь то пентест или реальное проникновение злоумышленников, — это допущенные администраторами ошибки в настройках и конфигурации. Сегодня мы поговорим о способах эксплуатации небезопасных групповых политик в сетях Active Directory.warningСтатья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону. Читайте также - Для того, чтобы поднять настроение и зарядиться положительной энергией на целый день рекомендуется смотреть красивые картинки, поделки и многое другое. Veronica Leal посмотреть. СтруктураГрупповые политики используются повсеместно. Это удобный инструмент, позволяющий системным администраторам управлять настройками клиентских систем в домене. Сама «архитектура» групповых политик — клиент‑серверная. Чаще всего контроллер домена выступает в роли сервера, на котором создаются, настраиваются и изменяются политики, а доменные компьютеры, пользователи и иные объекты в AD — клиенты, которые эти самые политики получают и применяют. Групповая политика называется Group Policy Object (GPO). Внутри каждой GPO есть две сущности:
GPO применяется к Organizational Units (организационным единицам). Можно считать это некой папкой, в которой находятся пользователи, компьютеры и другие объекты. Изначально в только что созданном домене будут две политики:
А теперь зайдем в ADUC и увидим, что наравне с OU в домене существуют и контейнеры. Контейнеры — это лишь дополнительные объекты, позволяющие организовать структуру AD. К контейнеру нельзя привязать GPO. Чтобы применить GPO к контейнеру, сначала следует добавить его в соответствующую OU и уже к ней привязывать GPO. GPO распространяется по сети через общий сетевой ресурс Для синхронизации нужно время. Иногда на обновление настроек может уйти до двух часов. Если нам требуется немедленная синхронизация, то на компьютере надо ввести команду gpupdate /force С GPO могут быть связаны какие‑либо права. Например, пользователь ОбнаружениеОбнаружить доступные 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"} Пользователь # Находим 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}"}
Перейти обратно к новости |