Domain Trust Abuse
Domain trusts extend the attack surface beyond the compromised domain. A bidirectional transitive trust between a child and parent domain means full compromise of the child domain translates directly to full compromise of the parent and the entire forest. The technique abuses SID history to forge a ticket that includes the Enterprise Admins SID of the parent domain.
Requires the krbtgt hash of the child domain, the SID of both domains, and a bidirectional or parent-child trust. All available after DCSync on the child domain.
Enumerate trusts
Confirm the trust relationship and direction before attempting any cross-domain technique. A parent-child trust is always bidirectional and transitive.
name: corp.local trustDirection: 3 trustAttributes: 32 flatName: CORP # trustDirection 3 = bidirectional # trustAttributes 32 = intra-forest (parent-child)
trustDirection: 3 is bidirectional. trustAttributes: 32 indicates an intra-forest trust (parent-child) where escalation applies. trustAttributes: 8 indicates a transitive forest trust.
Collect required material from child domain
The child-to-parent escalation needs the child domain krbtgt hash and both domain SIDs.
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:7b5b518b1c33d1b22c3d0b70e76a6f90::: Child domain SID: S-1-5-21-1111111111-2222222222-3333333333 Parent domain SID: S-1-5-21-4444444444-5555555555-6666666666
Object : krbtgt Hash NTLM: 7b5b518b1c33d1b22c3d0b70e76a6f90
Forge inter-realm ticket with SID history injection
The attack forges a TGT for the child domain that includes the Enterprise Admins SID ($PARENT_DOMAIN_SID-519) in the PAC. When the parent DC sees this SID, it grants Enterprise Admin access across the forest.
[*] Creating basic skeleton ticket and PAC Infos [*] Signing/Encrypting final ticket [*] Saving ticket in Administrator.ccache
Administrator:500:aad3b435b51404eeaad3b435b51404ee:fc525c9683e8fe067095ba2ddc971889::: krbtgt:502:aad3b435b51404eeaad3b435b51404ee:9a8b7c6d5e4f...
SID filtering
SID filtering blocks SID history injection across forest boundaries. It is enabled by default on external trusts between separate forests but is not enabled on intra-forest parent-child trusts. Microsoft considers intra-forest trusts to be within the same security boundary, so any child domain compromise is a full forest compromise by design.
On external forest trusts, SID filtering blocks the -extra-sid technique. In that scenario, direct credential reuse or Kerberoasting across the trust are the viable paths.
References
-
Impacket (GitHub)github.com/fortra/impacket (opens in new tab)
ticketer -extra-sid flag for SID history injection
-
NetExec / nxc (GitHub)github.com/Pennyw0rth/NetExec (opens in new tab)
enum_trusts module and --get-sid flag
-
Rubeus (GitHub)github.com/GhostPack/Rubeus (opens in new tab)
golden /sids flag for Windows inter-realm ticket forging
Was this helpful?
Your feedback helps improve this page.