PowerView — Enumerating AD Trusts
Tipos de Trust
Parent-child → bidireccional y transitivo, dentro del mismo bosque
Cross-link → entre dominios hijo para acelerar autenticación
External → no transitivo, entre bosques distintos sin forest trust, usa SID Filtering
Tree-root → bidireccional y transitivo al agregar un árbol nuevo al bosque
Forest → transitivo entre dos dominios raíz de bosques distintosTransitivo significa que la confianza se extiende en cadena: si A confía en B y B confía en C, A confía en C automáticamente.
Enumerar trusts del dominio actual
# Trusts del dominio actual
Get-DomainTrust
# Mapeo completo de todos los trusts alcanzables
Get-DomainTrustMapping
# Trusts del bosque
Get-ForestTrust
Get-ForestDomain
# Trusts de un dominio específico
Get-DomainTrust -Domain LOGISTICS.INLANEFREIGHT.LOCAL
# Con módulo nativo AD
Get-ADTrust -Filter *
# Con netdom (no requiere PowerView)
netdom query /domain:inlanefreight.local trustCampos clave en la salida de Get-DomainTrust:
TrustDirection — Bidirectional significa que usuarios de ambos dominios pueden autenticarse entre sí. Inbound significa que usuarios del dominio remoto pueden autenticarse en el nuestro. Outbound es lo contrario.
TrustAttributes — WITHIN_FOREST indica trust parent-child dentro del mismo bosque. FOREST_TRANSITIVE indica forest trust entre dos bosques.
Ataques posibles según el tipo de trust
Parent-child (mismo bosque, bidireccional)
Si comprometes el dominio hijo puedes hacer el ExtraSids attack para comprometer el dominio padre. El atributo sidHistory se respeta dentro del mismo bosque sin SID Filtering. Agregando el SID de Enterprise Admins del padre al ticket del hijo obtienes acceso al bosque completo.
También puedes hacer Kerberoasting y ASREPRoasting en ambas direcciones a través del trust.
# Buscar usuarios con SPN en el dominio hijo o padre
Get-DomainUser -SPN -Domain LOGISTICS.INLANEFREIGHT.LOCAL | select samaccountname,serviceprincipalnameForest trust (bidireccional entre bosques)
Kerberoasting y ASREPRoasting cross-forest si el trust es bidireccional.
Get-DomainUser -SPN -Domain freightlogistics.local | select samaccountname,serviceprincipalname | fl
Get-DomainUser -PreauthNotRequired -Domain freightlogistics.local | select samaccountnameSID History abuse cross-forest si SID Filtering no está activo. Verificar:
Get-DomainTrust | select TargetName,TrustAttributes,SIDFilteringQuarantinedSi SIDFilteringQuarantined es False en un forest trust, el SID History abuse es posible.
Reutilización de contraseñas entre bosques: buscar cuentas con el mismo nombre en ambos dominios.
# Usuarios foráneos en grupos del bosque remoto
Get-DomainForeignGroupMember -Domain freightlogistics.local
Get-DomainForeignUser -Domain freightlogistics.localFlujo recomendado al enumerar trusts
# 1. Ver todos los trusts del dominio actual
Get-DomainTrust
# 2. Mapear todos los trusts alcanzables
Get-DomainTrustMapping
# 3. Para cada dominio confiado — enumerar usuarios con SPN
Get-DomainUser -SPN -Domain <dominio_remoto> | select samaccountname,serviceprincipalname
# 4. Buscar usuarios ASREPRoasteables en el dominio remoto
Get-DomainUser -PreauthNotRequired -Domain <dominio_remoto> | select samaccountname
# 5. Buscar cuentas foráneas en grupos del dominio remoto
Get-DomainForeignGroupMember -Domain <dominio_remoto>
Get-DomainForeignUser -Domain <dominio_remoto>
# 6. Verificar si SID Filtering está activo
Get-DomainTrust | select TargetName,TrustAttributes,SIDFilteringQuarantined
# 7. Buscar cuentas con mismo nombre en ambos dominios (password reuse)
Get-DomainUser -Domain <dominio_remoto> | select samaccountname | sort samaccountname