Domain Trusts Primer
🧩 Scenario
Un Domain Trust es una relación creada entre dos dominios de Active Directory que permite:
-
🧑💻 Autenticación cruzada (un usuario de un dominio puede autenticarse en otro).
-
📁 Acceso a recursos entre dominios.
-
🔁 Confianza entre controladores de dominio (DCs) para validar identidades.
En general, un trust no da acceso automático, solo permite que la autenticación viaje entre dominios.
El nivel de acceso depende de grupos, ACLs, permisos, GPOs, etc.
🏰 Domain Trusts Overview
Un trust permite que usuarios de un dominio accedan a recursos o realicen tareas administrativas en otro dominio.
El trust define cómo los sistemas de autenticación se comunican entre sí.
🔗 Tipos de Trusts
🌳 Parent-child
-
Se genera automáticamente cuando creas un dominio hijo.
-
Es transitivo y bidireccional.
-
Ambos dominios confían mutuamente y transmiten confianza al resto del árbol.
-
Ejemplo:
-
corp.local(parent) -
sales.corp.local(child)
-
📌 Implicación:
Si comprometes un dominio hijo, normalmente puedes pivotar hacia el padre.
🌐 External Trust**
-
Conecta dos dominios que NO pertenecen a la misma forest.
-
Es no transitivo.
-
Se usa cuando dos organizaciones necesitan acceso entre dominios sin querer unir forests completas.
-
Utiliza SID Filtering, lo cual evita que un dominio externo envíe SIDs falsos para escalar privilegios.
📌 Usado mucho cuando:
-
Dos empresas colaboran.
-
Existe una solución heredada fuera de la forest principal.
🏞️ Forest Trust
-
Une dos forests completas.
-
Puede ser transitivo entre los root domains de ambas forests.
-
Mucho más amplio que un External Trust.
-
Permite que cualquier dominio de una forest confíe en otra (si la configuración lo permite).
📌 Peligro:
Una forest entera puede convertirse en vector de entrada si tiene mala seguridad.
🔁 Cross-Link Trust
-
Conecta dos dominios que ya tienen una ruta transitiva, pero se quiere acelerar el proceso.
-
Mejora rendimiento en autenticaciones.
-
Ejemplo:
A → B → C
Crear un cross-link entreA ↔ Cacelera la autenticación.
📌 Importante:
No añade nuevos accesos, solo reduce latencia.
🌳➡️🌳 Tree-Root Trust
-
Se crea cuando agregas un nuevo árbol a una forest.
-
Es transitivo y bidireccional.
-
Une dos dominios raíz dentro de la misma forest.
Ejemplo:
inlanefreight.local y freightops.local dentro de la misma forest.
🛡️ ESAE / Red Forest
-
No es un trust “normal”, sino una forest separada dedicada a administración segura.
-
Se establecen trusts selectivos y autenticación controlada.
-
Usado para proteger cuentas Tier-0.
🔄 Transitive vs Non-Transitive Trusts
🔀 Transitive Trust
Confianza se extiende a los objetos que confía el dominio hijo.
A → B → C ⇒ A confía automáticamente en C.
🚫 Non-Transitive Trust
Solo confía en el dominio directamente especificado.
A → B (pero no C aunque B confíe en C)
📦 Analogía (Callout)
Trust Transitivo = Cualquiera en casa puede recibir paquetes.
Trust No Transitivo = Solo tú puedes recibir el paquete.
🔁 One-way vs Two-way Trusts
1️⃣➡️2️⃣ One-way
Usuarios del dominio confiado pueden acceder al que confía.
No viceversa.
↔️ Bidirectional
Ambos dominios confían mutuamente.
Muy común pero altamente riesgoso si no se configura bien.
⚠️ Riesgos y Consecuencias
Una compañía adquirida con mala postura de seguridad puede convertirse en un vector de entrada hacia la empresa principal.
Ejemplos reales:
-
Kerberoasting en dominios secundarios que otorga privilegios en el principal.
-
Abuso de trusts bidireccionales mal configurados durante pentests.
🔎 Enumerating Trust Relationships
🛠️ 1. Usando PowerShell — Get-ADTrust
Import-Module activedirectory
Get-ADTrust -Filter *
📌 Muestra:
-
Dirección (BiDirectional / One-way)
-
Tipo de trust
-
Atributos
-
Si es intra-forest
-
Si es transitive
🧾 Ejemplo real de salida

🛠️ 2. Usando PowerView — Get-DomainTrust
Import-Module .\PowerView.ps1
Get-DomainTrust
Muestra trusts dentro y fuera de la forest.
Ejemplo:

🛠️ 3. Domain Trust Mapping (PowerView)
Get-DomainTrustMapping

Permite ver:
-
Tipo de trust
-
Dirección
-
Forest / Parent-child
🧍♂️ 4. Enumerando usuarios en un dominio confiado
Get-DomainUser -Domain LOGISTICS.INLANEFREIGHT.LOCAL | select SamAccountName
Salida:
samaccountname -------------- htb-student_adm Administrator Guest lab_adm krbtgt
🛠️ 5. Usando netdom
🔍 Consultar trusts
netdom query /domain:inlanefreight.local trust
🔎 Consultar domain controllers
netdom query /domain:inlanefreight.local dc
🖥️ Consultar workstations/servers
netdom query /domain:inlanefreight.local workstation
🦈 BloodHound — Visualización de Trusts
Usa queries preconstruidas como Map Domain Trusts para visualizar trusts bidireccionales, forest trusts, relaciones entre dominios, etc.
Ejemplo visual (simplificado):

🚀 Onwards
Los siguientes módulos del curso cubren:
-
Ataques child → parent domain
-
Abuso de trusts bidireccionales
-
Ataques en forest trusts
-
Vectores comunes en M&A y MSPs
Siempre validar con el cliente si los dominios confiados están dentro del scope antes de atacarlos.
📚 Resumen Final (Knowledge Base)
🧠 Conceptos Clave
-
Un trust conecta autenticación entre dominios.
-
Puede ser transitivo o no transitivo, one-way o two-way.
-
Trusts mal configurados → ataques laterales entre dominios.
-
Usar Get-ADTrust, PowerView, netdom, BloodHound para enumeración.
⚔️ Riesgos
-
Compromiso de dominios secundarios = acceso al dominio principal.
-
Trusts bidireccionales permiten movimiento lateral masivo.
🛠️ Herramientas
-
PowerShell AD Module
-
PowerView
-
netdom
-
BloodHound