![]() |
https://forum.antichat.xyz/attachmen...599d19f158.png
Закрепился в домене под рядовым пользователем - и что дальше? Брутфорс паролей, эксплуатация CVE - пути очевидные. Но самые жирные цепочки privilege escalation в Active Directory идут через ACL-мисконфигурации и злоупотребление делегированием Kerberos - два вектора, которые я подробно вписал в общий гайд по пентесту Active Directory среди прочих техник от разведки до Domain Admin. Эти векторы не требуют zero-day, не генерируют аномальный трафик и используют штатные механизмы AD ровно так, как они задуманы - просто не для тех целей. Красота в том, что ты не ломаешь систему, а пользуешься ею «по инструкции». Здесь разберу конкретные ACL-права, которые превращают обычного доменного пользователя в Domain Admin, покажу цепочки эскалации через GenericAll, WriteDACL и WriteOwner, объясню, почему Resource-Based Constrained Delegation - полноценный вектор компрометации, и дам практическое руководство по эксплуатации каждого шага. Как устроены ACL в Active Directory и почему они - золотая жила для атакующего Каждый объект в AD - пользователь, группа, компьютер, OU - защищён списком управления доступом (DACL). DACL состоит из записей Access Control Entry (ACE), каждая из которых определяет: какой принципал (trustee) какие действия может выполнять над объектом. Принципал идентифицируется по SID, действие - по набору битовых флагов: GenericAll, WriteProperty, WriteDACL, WriteOwner и другие. Проблема в том, что в реальных доменах ACL копятся годами. Helpdesk получает право сбрасывать пароли, но scope не ограничен Tier-2 аккаунтами. Сервисная учётка, создавшая компьютерный объект, сохраняет над ним полный контроль навсегда. Подрядчик ушёл - а его ACE на OU с серверами осталась. По данным Semperis, именно такие legacy-конфигурации создают ACL-пути, которые BloodHound визуализирует как прямые дороги до Domain Admin. На каждом engagement я вижу одно и то же: домену 10+ лет, три поколения админов сменилось, а ACL - как геологические слои. Копнёшь - и найдёшь артефакт эпохи Windows Server 2003. Для атакующего критичны не все ACE, а конкретный набор опасных прав. Разберу каждое. Опасные ACL-права: GenericAll, WriteDACL, WriteOwner и другие GenericAll - полный контроль над объектом GenericAll на пользователе - это карт-бланш: сброс пароля, установка SPN для Kerberoasting (T1558.003, Credential Access), запись в Код:
msDS-KeyCredentialLinkКлассический сценарий с реального engagement: пользователь JSMITH состоит в группе TIER2 Helpdesk, у которой GenericAll на привилегированного пользователя RPERRY. RPERRY - член Windows Administrators, а эта группа может сбросить пароль учётки Azure AD Sync. У той учётки - права репликации AD. Три ACL-хопа - и вот тебе DCSync (T1003.006, Credential Access). Praetorian описывает это как один из самых частых паттернов, и я с ними согласен: видел подобное раз пять за последний год. WriteDACL - право переписать правила игры WriteDACL позволяет редактировать DACL объекта - добавлять новые ACE. Имея WriteDACL на объекте домена (DC), атакующий добавляет себе DS-Replication-Get-Changes и DS-Replication-Get-Changes-All, после чего выполняет DCSync. На группе - добавляет себе GenericAll и вписывает себя в Domain Admins. Почему WriteDACL опаснее WriteOwner в большинстве сценариев? WriteOwner позволяет стать владельцем объекта, а владелец может модифицировать DACL. Но это двухшаговая операция: сначала Код:
Set-DomainObjectOwnerКод:
Add-DomainObjectAclForceChangePassword и WriteProperty ForceChangePassword - сброс пароля без знания текущего. Грубо, зато работает. WriteProperty на конкретные атрибуты - тоньше: запись в Код:
servicePrincipalNameКод:
msDS-AllowedToActOnBehalfOfOtherIdentityКод:
msDS-KeyCredentialLinkКаждое из этих прав маппится на технику Account Manipulation (T1098, Persistence / Privilege Escalation) по MITRE ATT&CK. BloodHound и ACL-пути атак: от разведки до цепочки эскалации BloodHound - основной инструмент для построения ACL-путей атак в домене. Стандартные запросы «Shortest Path to Domain Admins» находят очевидные маршруты, но в крупных доменах самое вкусное скрыто в кастомных Cypher-запросах. Для поиска объектов с WriteDACL на домен (ключевой путь к DCSync) - запрос к Neo4j: Код: Код:
MATCH p=(n)-[:WriteDacl]->(m:Domain)Для поиска цепочек через GenericAll стоит строить запросы с переменной глубиной: Код:
MATCH p=shortestPath((n:User {name:'JSMITH@CONTOSO.LOCAL'})-[r:GenericAll|WriteDacl|WriteOwner|ForceChangePassword1..5]->(m:Group {name:'DOMAIN ADMINS@CONTOSO.LOCAL'})) RETURN p. Параметр Код:
Код:
1..5Злоупотребление делегированием Kerberos Делегирование Kerberos - механизм, позволяющий сервису обращаться к другим ресурсам от имени пользователя. Три типа делегирования - три разных вектора атаки. Unconstrained Delegation Компьютер с unconstrained delegation кеширует TGT всех пользователей, которые к нему обращаются. Контроль над таким хостом = все TGT из памяти (включая привилегированные учётки) = доступ куда угодно. В связке с принуждением к аутентификации (PrinterBug через MS-RPRN) атакующий вынуждает контроллер домена отправить свой TGT на скомпрометированный хост. Прямой путь к компрометации домена - без единого эксплойта. Найти такие хосты можно через PowerView: Код:
Get-DomainComputer -UnconstrainedConstrained Delegation и S4U2Proxy Constrained delegation ограничивает перечень сервисов, к которым учётка может обращаться от имени пользователя. Список лежит в атрибуте Код:
msDS-AllowedToDelegateToКод:
cifs/serverКод:
ldap/serverResource-Based Constrained Delegation - главный вектор RBCD отличается тем, что конфигурация хранится не на делегирующей стороне, а на целевом компьютере в атрибуте Код:
msDS-AllowedToActOnBehalfOfOtherIdentityЦепочка атаки RBCD:
Код:
addcomputer.pyКод:
rbcd.pyКод:
getST.pyПрактическая цепочка: от WriteDACL до DCSync за четыре шага Полная цепочка, которую я использовал на реальных проектах. Допустим, BloodHound показал, что скомпрометированный пользователь svc-monitor имеет WriteDACL на объект домена CONTOSO.LOCAL. 🔓 Часть контента скрыта: Эксклюзивный контент для зарегистрированных пользователей. Зарегистрироваться или Войти Шаг 1: добавление ACE с правами репликации. Через PowerView: Код:
Add-DomainObjectAcl -TargetIdentity "DC=contoso,DC=local" -PrincipalIdentity svc-monitor -Rights DCSyncКод:
dacledit.pyКод:
--action write --rights DCSync --principal svc-monitorШаг 2: DCSync. Теперь svc-monitor может запросить репликацию у контроллера домена. Через Код:
secretsdump.pyКод:
-just-dc-ntlmШаг 3: Golden Ticket (при необходимости). Хеш krbtgt позволяет генерировать Golden Ticket (T1558.001, Credential Access) с произвольным SID и сроком действия. Но на практике после DCSync обычно хватает pass-the-hash с хешем Domain Admin. Шаг 4: очистка. Удаляем добавленные ACE - Код:
Remove-DomainObjectAclАльтернативная цепочка через GenericAll на пользователя: сброс пароля целевой учётки через Код:
Set-DomainUserPasswordКод:
net rpc passwordКод:
impacket-changepasswdLDAP Relay и ACL-атаки: комбинированный вектор Отдельная история - комбинация NTLM relay с ACL-эксплуатацией (Praetorian детально это описывает). Атакующий принуждает жертву к NTLM-аутентификации на контролируемый хост (через IWA - Integrated Windows Authentication, где любой URL без точек классифицируется как Intranet-сайт), затем релеит аутентификацию на LDAP контроллера домена. Через интерактивный LDAP-shell в NTLMRelayX атакующий действует от имени жертвы: сбрасывает пароли (если у жертвы есть ForceChangePassword), добавляет RBCD (если есть WriteProperty на компьютер), вписывает себя в группу (если есть ModifyGroupMembership). Этот вектор особенно неприятен тем, что организации, внедрившие SMB Signing, часто забывают про LDAP Signing - а без него relay на LDAP работает штатно. Типичная история: одну дверь заколотили, а соседнюю оставили нараспашку. Ключевая деталь: для relay на LDAP нужно, чтобы жертва аутентифицировалась по HTTP, а не по SMB. Методы принуждения к HTTP-аутентификации - подмена DNS-записей через ADIDNS (любой доменный пользователь может создать запись, если она не существует) и эксплуатация WebDAV. Обнаружение и защита: что должен знать пентестер Понимание детекции - часть OPSEC. Ключевые события Windows Security Log:
Защитные рекомендации для отчёта:
При RBCD-атаке ключевой prerequisite - возможность создать машинный аккаунт в домене ( Код:
ms-DS-MachineAccountQuota > 0Код:
addcomputer.pyКод:
New-MachineAccountКод:
MachineAccountQuota=0 |
| Время: 20:24 |