Давайте перейдем к перечислению списков управления доступом с помощью PowerView и рассмотрим некоторые графические представления с помощью BloodHound. Затем мы рассмотрим несколько сценариев / атак, в которых перечисленные нами преимущества могут быть использованы для получения нами дальнейшего доступа во внутреннюю среду.
Мы можем использовать PowerView для перечисления списков управления доступом, но задача поиска всех результатов будет чрезвычайно трудоемкой и, вероятно, неточной. Например, если мы запустим функцию 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 минуты.
Перечисление 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.
Перечисление ACL