Перечисление ACL


Давайте перейдем к перечислению списков управления доступом с помощью PowerView и рассмотрим некоторые графические представления с помощью BloodHound. Затем мы рассмотрим несколько сценариев / атак, в которых перечисленные нами преимущества могут быть использованы для получения нами дальнейшего доступа во внутреннюю среду.


Перечисление списков управления доступом с помощью PowerView

Мы можем использовать PowerView для перечисления списков управления доступом, но задача поиска всех результатов будет чрезвычайно трудоемкой и, вероятно, неточной. Например, если мы запустим функцию Find-InterestingDomainAcl, мы получим обратно огромное количество информации, в которой нам нужно будет разобраться, чтобы все понять:

С помощью Find-InterestingDomainAcl

Перечисление ACL

PS C:\\htb> Find-InterestingDomainAcl

ObjectDN                : DC=INLANEFREIGHT,DC=LOCAL
AceQualifier            : AccessAllowed
ActiveDirectoryRights   : ExtendedRight
ObjectAceType           : ab721a53-1e2f-11d0-9819-00aa0040529b
AceFlags                : ContainerInherit
AceType                 : AccessAllowedObject
InheritanceFlags        : ContainerInherit
SecurityIdentifier      : S-1-5-21-3842939050-3880317879-2865463114-5189
IdentityReferenceName   : Exchange Windows Permissions
IdentityReferenceDomain : INLANEFREIGHT.LOCAL
IdentityReferenceDN     : CN=Exchange Windows Permissions,OU=Microsoft Exchange Security
                          Groups,DC=INLANEFREIGHT,DC=LOCAL
IdentityReferenceClass  : group

ObjectDN                : DC=INLANEFREIGHT,DC=LOCAL
AceQualifier            : AccessAllowed
ActiveDirectoryRights   : ExtendedRight
ObjectAceType           : 00299570-246d-11d0-a768-00aa006e0529
AceFlags                : ContainerInherit
AceType                 : AccessAllowedObject
InheritanceFlags        : ContainerInherit
SecurityIdentifier      : S-1-5-21-3842939050-3880317879-2865463114-5189
IdentityReferenceName   : Exchange Windows Permissions
IdentityReferenceDomain : INLANEFREIGHT.LOCAL
IdentityReferenceDN     : CN=Exchange Windows Permissions,OU=Microsoft Exchange Security
                          Groups,DC=INLANEFREIGHT,DC=LOCAL
IdentityReferenceClass  : group

<SNIP>

Если мы попытаемся просмотреть все эти данные во время оценки с ограниченным временем, мы, скорее всего, никогда не пройдем через все это или не найдем ничего интересного до окончания оценки. Теперь есть способ более эффективно использовать такой инструмент, как PowerView, - выполняя целевое перечисление, начиная с пользователя, которого мы контролируем. Давайте сосредоточимся на пользователе wley, которого мы получили после решения последнего вопроса в LLMNR/NBT-NS Poisonining. Давайте углубимся и посмотрим, есть ли у этого пользователя какие-либо интересные права ACL, которыми мы могли бы воспользоваться. Сначала нам нужно получить SID нашего целевого пользователя для эффективного поиска.

Перечисление ACL

PS C:\\htb> Import-Module .\\PowerView.ps1
PS C:\\htb> $sid = Convert-NameToSid wley

Затем мы можем использовать функцию Get-DomainObjectACL для выполнения нашего целевого поиска. мы используем эту функцию для поиска всех объектов домена, на которые у нашего пользователя есть права, путем сопоставления SID пользователя с помощью $sid переменной со свойством SecurityIdentifier, которое сообщает нам, кто имеет данное право на объект. Важно отметить одну вещь: если мы будем выполнять поиск без флага ResolveGUIDs, мы увидим результаты, подобные приведенным ниже, где право ExtendedRight не дает нам четкого представления о том, какая запись ACE у пользователя wley выше damundsen. Это происходит потому, что ObjectAceType свойство возвращает значение GUID, которое не доступно для чтения человеком.

Обратите внимание, что выполнение этой команды займет некоторое время, особенно в большой среде. Получение результата в нашей лаборатории может занять 1-2 минуты.

Используя Get-DomainObjectACL

Перечисление ACL

PS C:\\htb> Get-DomainObjectACL -Identity * | ? {$_.SecurityIdentifier -eq $sid}
ObjectDN               : CN=Dana Amundsen,OU=DevOps,OU=IT,OU=HQ-NYC,OU=Employees,OU=Corp,DC=INLANEFREIGHT,DC=LOCAL
ObjectSID              : S-1-5-21-3842939050-3880317879-2865463114-1176
ActiveDirectoryRights  : ExtendedRight
ObjectAceFlags         : ObjectAceTypePresent
ObjectAceType          : 00299570-246d-11d0-a768-00aa006e0529
InheritedObjectAceType : 00000000-0000-0000-0000-000000000000
BinaryLength           : 56
AceQualifier           : AccessAllowed
IsCallback             : False
OpaqueLength           : 0
AccessMask             : 256
SecurityIdentifier     : S-1-5-21-3842939050-3880317879-2865463114-1181
AceType                : AccessAllowedObject
AceFlags               : ContainerInherit
IsInherited            : False
InheritanceFlags       : ContainerInherit
PropagationFlags       : None
AuditFlags             : None

Мы могли бы поискать в Google значение GUID 00299570-246d-11d0-a768-00aa006e0529 и найти эту страницу, показывающую, что пользователь имеет право принудительно изменить пароль другого пользователя. В качестве альтернативы мы могли бы выполнить обратный поиск с помощью PowerShell, чтобы снова сопоставить правильное имя со значением GUID.

Выполнение обратного поиска и сопоставление со значением GUID

Перечисление ACL