Domain Trusts Primer
Enumerating Trust Relationships
We can use the Get-ADTrust cmdlet to enumerate domain trust relationships. This is especially helpful if we are limited to just using built-in tools.
PS C:\xyz> Import-Module activedirectory
PS C:\xyz> Get-ADTrust -Filter *
Direction : BiDirectional
DisallowTransivity : False
DistinguishedName : CN=LOGISTICS.legalcorp.local,CN=System,DC=LEGALCORP,DC=LOCAL
ForestTransitive : False
IntraForest : True
IsTreeParent : False
IsTreeRoot : False
Name : LOGISTICS.legalcorp.local
ObjectClass : trustedDomain
ObjectGUID : f48a1169-2e58-42c1-ba32-a6ccb10057ec
SelectiveAuthentication : False
SIDFilteringForestAware : False
SIDFilteringQuarantined : False
Source : DC=LEGALCORP,DC=LOCAL
Target : LOGISTICS.legalcorp.local
TGTDelegation : False
TrustAttributes : 32
TrustedPolicy :
TrustingPolicy :
TrustType : Uplevel
UplevelOnly : False
UsesAESKeys : False
UsesRC4Encryption : False
Direction : BiDirectional
DisallowTransivity : False
DistinguishedName : CN=LEGALLOGISTICS.LOCAL,CN=System,DC=LEGALCORP,DC=LOCAL
ForestTransitive : True
IntraForest : False
IsTreeParent : False
IsTreeRoot : False
Name : LEGALLOGISTICS.LOCAL
ObjectClass : trustedDomain
ObjectGUID : 1597717f-89b7-49b8-9cd9-0801d52475ca
SelectiveAuthentication : False
SIDFilteringForestAware : False
SIDFilteringQuarantined : False
Source : DC=LEGALCORP,DC=LOCAL
Target : LEGALLOGISTICS.LOCAL
TGTDelegation : False
TrustAttributes : 8
TrustedPolicy :
TrustingPolicy :
TrustType : Uplevel
UplevelOnly : False
UsesAESKeys : False
UsesRC4Encryption : False
The above output shows that our current domain legalcorp.local
has two domain trusts. The first is with LOGISTICS.legalcorp.local
, and the IntraForest
property shows that this is a child domain, and we are currently positioned in the root domain of the forest. The second trust is with the domain LEGALLOGISTICS.LOCAL,
and the ForestTransitive
property is set to True
, which means that this is a forest trust or external trust. We can see that both trusts are set up to be bidirectional, meaning that users can authenticate back and forth across both trusts. If we cannot authenticate across a trust, we cannot perform any enumeration or attacks across the trust.
After importing PowerView, we can use the Get-DomainTrust function to enumerate what trusts exist, if any.
PS C:\xyz> Get-DomainTrust
SourceName : legalcorp.local
TargetName : LOGISTICS.legalcorp.local
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : WITHIN_FOREST
TrustDirection : Bidirectional
WhenCreated : 11/1/2021 6:20:22 PM
WhenChanged : 2/26/2022 11:55:55 PM
SourceName : legalcorp.local
TargetName : LEGALLOGISTICS.LOCAL
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection : Bidirectional
WhenCreated : 11/1/2021 8:07:09 PM
WhenChanged : 2/27/2022 12:02:39 AM
PowerView can be used to perform a domain trust mapping and provide information such as the type of trust (parent/child, external, forest) and the direction of the trust (one-way or bidirectional). This information is beneficial once a foothold is obtained, and we plan to compromise the environment further.
PS C:\xyz> Get-DomainTrustMapping
SourceName : legalcorp.local
TargetName : LOGISTICS.legalcorp.local
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : WITHIN_FOREST
TrustDirection : Bidirectional
WhenCreated : 11/1/2021 6:20:22 PM
WhenChanged : 2/26/2022 11:55:55 PM
SourceName : legalcorp.local
TargetName : LEGALLOGISTICS.LOCAL
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection : Bidirectional
WhenCreated : 11/1/2021 8:07:09 PM
WhenChanged : 2/27/2022 12:02:39 AM
SourceName : LEGALLOGISTICS.LOCAL
TargetName : legalcorp.local
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection : Bidirectional
WhenCreated : 11/1/2021 8:07:08 PM
WhenChanged : 2/27/2022 12:02:41 AM
SourceName : LOGISTICS.legalcorp.local
TargetName : legalcorp.local
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : WITHIN_FOREST
TrustDirection : Bidirectional
WhenCreated : 11/1/2021 6:20:22 PM
WhenChanged : 2/26/2022 11:55:55 PM
From here, we could begin performing enumeration across the trusts. For example, we could look at all users in the child domain:
PS C:\xyz> Get-DomainUser -Domain LOGISTICS.legalcorp.local | select SamAccountName
samaccountname
--------------
user_adm
Administrator
Guest
lab_adm
krbtgt
We can also use BloodHound to visualize these trust relationships by using the Map Domain Trusts
pre-built query.