===== Powershell скрипт для получения списка всех учётных записей с Kerberos Unconstrained Delegation в домене Active Directory ===== {{:powershell:active-directory:pasted:20180909-144237.png }} В рамках аудита безопасности в домене **Active Directory** бывает полезно получить перечень всех учётных записей разных типов, имеющих включённое делегирование. Особенно в этом контексте интересны учётные записи __с полным делегированием__ **Kerberos** (**Unconstrained Delegation**). Представленный ниже скрипт позаимствован из статьи [[https://learn.microsoft.com/en-us/archive/blogs/389thoughts/get-rid-of-accounts-that-use-kerberos-unconstrained-delegation|"Microsoft Learn : Get rid of accounts that use Kerberos Unconstrained Delegation"]] и позволяет получить соответствующий перечень учётных записей. Перед запуском скрипта необходимо изменить переменную **$DN**, указав путь в каталоге Active Directory (в формате distinguishedName) к корневому контейнеру, в рамках которого нужно выполнять поиск. [CmdletBinding()] Param ( # start the search at this DN. Default is to search all of the domain. [string]$DN = "OU=SUB,DC=my,DC=domain,DC=com" ) $SERVER_TRUST_ACCOUNT = 0x2000 $TRUSTED_FOR_DELEGATION = 0x80000 $TRUSTED_TO_AUTH_FOR_DELEGATION= 0x1000000 $PARTIAL_SECRETS_ACCOUNT = 0x4000000 $bitmask = $TRUSTED_FOR_DELEGATION -bor $TRUSTED_TO_AUTH_FOR_DELEGATION -bor $PARTIAL_SECRETS_ACCOUNT # LDAP filter to find all accounts having some form of delegation. # 1.2.840.113556.1.4.804 is an OR query. $filter = @" (& (servicePrincipalname=*) (| (msDS-AllowedToActOnBehalfOfOtherIdentity=*) (msDS-AllowedToDelegateTo=*) (UserAccountControl:1.2.840.113556.1.4.804:=$bitmask) ) (| (objectcategory=computer) (objectcategory=person) (objectcategory=msDS-GroupManagedServiceAccount) (objectcategory=msDS-ManagedServiceAccount) ) ) "@ -replace "[\s\n]", '' $propertylist = @( "servicePrincipalname", "useraccountcontrol", "samaccountname", "msDS-AllowedToDelegateTo", "msDS-AllowedToActOnBehalfOfOtherIdentity" ) Get-ADObject -LDAPFilter $filter -SearchBase $DN -SearchScope Subtree -Properties $propertylist -PipelineVariable account | ForEach-Object { $isDC = ($account.useraccountcontrol -band $SERVER_TRUST_ACCOUNT) -ne 0 $fullDelegation = ($account.useraccountcontrol -band $TRUSTED_FOR_DELEGATION) -ne 0 $constrainedDelegation = ($account.'msDS-AllowedToDelegateTo').count -gt 0 $isRODC = ($account.useraccountcontrol -band $PARTIAL_SECRETS_ACCOUNT) -ne 0 $resourceDelegation = $account.'msDS-AllowedToActOnBehalfOfOtherIdentity' -ne $null $comment = "" if ((-not $isDC) -and $fullDelegation) { $comment += "WARNING: full delegation to non-DC is not recommended!; " } if ($isRODC) { $comment += "WARNING: investigation needed if this is not a real RODC; " } if ($resourceDelegation) { # to count it using PS, we need the object type to select the correct function... broken, but there we are. $comment += "INFO: Account allows delegation FROM other server(s); " } if ($constrainedDelegation) { $comment += "INFO: constrained delegation service count: $(($account.'msDS-AllowedToDelegateTo').count); " } [PSCustomobject] @{ samaccountname = $account.samaccountname objectClass = $account.objectclass uac = ('{0:x}' -f $account.useraccountcontrol) isDC = $isDC isRODC = $isRODC fullDelegation = $fullDelegation constrainedDelegation = $constrainedDelegation resourceDelegation = $resourceDelegation comment = $comment } } | Out-Gridview В результате выполнения скрипта мы получим перечень всех учётных записей, имеющих настроенное делегирование с предупреждениями для учётных записей, в свойствах которых включено полное делегирование. {{:powershell:active-directory:pasted:20221215-163851.png}} \\ ---- Проверено на следующих конфигурациях: ^ Версия ОС ^ Версия PowerShell ^ | Microsoft Windows Server 2016 Standard 10.0.14393 (Build 14393) | PowerShell 5.1.14393.5127 | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 15.12.2022 16:44 {{tag>Powershell "Active Directory" Delegation Kerberos "Unconstrained Delegation"}} ~~DISCUSSION~~