Why Tier 0 Still Falls: Practical Active Directory Hardening Beyond Default Group Scrutiny
#The High-Value Target Illusion: Defense Beyond 'Domain Admins'#link
During the 2023 MGM Resorts intrusion, attackers did not breach the perimeter by cracking the Domain Admin password on a domain controller. They targeted identity infrastructure laterally, abusing delegated permissions, hybrid identity flows, and workstation-credential remnants to seize total administrative control. Most defenders spend 90% of their auditing cycles looking at the members of Enterprise Admins and Domain Admins, completely ignoring the structural ACL relationships, credential exposure chains, and delegation configurations that create unmonitored Tier 0 identities.
Unconstrained and Constrained Delegation: Token Extraction at Rest
Kerberos delegation exists to solve multi-tier application authentication, allowing a web service to impersonate an authenticated user to an internal SQL cluster. However, Unconstrained Delegation (indicated by the `TRUSTED_FOR_DELEGATION` flag in userAccountControl) forces a connecting user's Ticket Granting Service (TGS) and their primary Ticket Granting Ticket (TGT) directly into the hosting service's LSASS process memory. If an attacker compromises a server configured with unconstrained delegation, they simply coerce an authentication from a Domain Controller using the PrinterBug (MS-RPRN) or PetitPotam (MS-EFSR), extract the DC machine account's TGT from LSASS, and execute DCSync.
Constrained Delegation with Protocol Transition (S4U2Self / S4U2Proxy) presents a similar bypass. If an account has `msDS-AllowedToDelegateTo` populated and the protocol transition bit enabled, that compromised service account can forge a service ticket to the target service on behalf of any arbitrary domain identity—including a Domain Admin—without requiring that admin to ever interact with the service.
Auditing Vulnerable Delegation Accounts with ActiveDirectory PowerShell
Finding accounts with unconstrained delegation must be a weekly automated query, not an annual third-party audit item. The following PowerShell snippet locates non-Domain Controller computer accounts and user accounts permitted to extract TGTs into local memory:
# Enumerate non-DC accounts running with Unconstrained Kerberos DelegationGet-ADObject -Filter {(UserAccountControl -band 0x00080000) -and (OperatingSystem -notlike "*Server*DC*")} -Properties SamAccountName, OperatingSystem, ServicePrincipalNames, distinguishedName |Select-Object SamAccountName, OperatingSystem, distinguishedName, @{Name="SPNs";Expression={$_.ServicePrincipalNames -join "; "}}
The Shadow Admin Problem: Hidden Paths to Domain Compromise
A shadow admin is an identity with explicit discretionary access control list (DACL) rights granting functional domain ownership without membership in privileged Active Directory groups. Rights such as `GenericAll`, `WriteDacl`, `WriteOwner`, or `GenericWrite` on an Organizational Unit containing administrative accounts give an attacker the ability to rewrite group memberships or force-reset credentials. Attackers running tools like BloodHound or Sharphound seek these DACL chains specifically because SIEM rules focused on event ID 4728 (member added to security-enabled global group) fail to trigger when an access right is altered directly on an object.
| Abused Active Directory ACE | Attacker Mechanism | Immediate Operational Consequence |
|---|---|---|
| GenericAll on Group Object | Direct membership modification via LDAP | Attacker adds their own low-privilege user straight into a Tier 0 group. |
| WriteDacl on User/OU | Alters security descriptor via Set-Acl | Attacker grants themselves Full Control, then executes an unlogged password reset. |
| ExtendedRight: User-Force-Change-Password | Direct credential reset over Kerberos/LDAP | Forces password change on privileged account without knowing the current password. |
| WriteProperty (member) on Group | Appends objects to target group list | Bypasses monitors alerting exclusively on full DACL ownership changes. |
Protected Users Group Pitfall: Adding accounts to the 'Protected Users' security group disables NTLM, Kerberos DES/RC4 encryption, and credential caching in LSASS. However, service accounts running scheduled jobs or Kerberos Constrained Delegation will instantly break if placed into Protected Users because TGT renewal and delegation mechanics are explicitly barred for group members.
Mitigating the Tier Collapse: Authentication Policies and Silos
Relying strictly on administrative tiering policies documented in runbooks fails in production. Administrators inevitably log into a Tier 1 application server or a Tier 2 workstation with their Tier 0 credentials during an incident. The moment an administrative session touches a Tier 1 or Tier 2 asset, LSASS retains the plaintext credential, Kerberos tickets, or NTLM hashes, enabling tools like Mimikatz to scrape them via `sekurlsa::logonpasswords` or handle duplication.
Active Directory Authentication Silos and Authentication Policies (introduced in Windows Server 2012 R2 functional levels) programmatically enforce credential boundaries at the Kerberos Key Distribution Center (KDC) layer. Even if an administrator types their Tier 0 domain credentials into an unauthorized host, the domain controller outright refuses to issue a Kerberos ticket unless that specific computer account belongs to the corresponding Authentication Silo.
# Create an explicit Authentication Policy enforcing Tier 0 host restrictionsNew-ADAuthenticationPolicy -Name "Tier0-KDC-Enforcement" -Description "Enforce T0 admin Kerberos issuance solely to dedicated PAWs" -UserAllowedToAuthenticateFrom "O:SYG:SYD:(A;;CC;;;W-PAW-HOST-SID)" -Enforce# Bind the policy to an Authentication Policy SiloNew-ADAuthenticationPolicySilo -Name "Tier0-Isolation-Silo" -EnforceGrant-ADAuthenticationPolicySiloAccess -Identity "Tier0-Isolation-Silo" -Account "T0-Admins", "DC-Cluster-Computers", "PAW-Computers"Set-ADAccountAuthenticationPolicySilo -Identity "Tier0-Isolation-Silo" -AuthenticationPolicy "Tier0-KDC-Enforcement"
Immediate Action Items for Blue Teams
- ▪Flag sensitive accounts with 'Account is sensitive and cannot be delegated' (sets userAccountControl NOT_DELEGATED bit, preventing ticket caching during lateral delegation).
- ▪Enable AES-128 and AES-256 exclusively for Kerberos support; explicitly audit and remove RC4-HMAC to kill Kerberoasting vulnerability margins on Tier 0 assets.
- ▪Deploy Privileged Access Workstations (PAWs) stripped of internet access, and establish GPO user rights assignments removing 'Allow log on locally' and 'Access this computer from the network' for Tier 0 accounts on any machine outside Tier 0.
- ▪Audit Active Directory AdminSDHolder container ACLs; rogue permissions applied here replicate downstream to all protected groups every 60 minutes via SDProp.
Do not treat Active Directory hygiene as an inventory checklist. Attackers navigate directory graphs through structural relationships and delegation capabilities, not group membership titles. Secure the pathing, enforce strict KDC issuance boundaries, and eradicate delegation inheritance before focusing on individual group counts.