* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al **grupo de Telegram** o **sígueme** en **Twitter****🐦**[**@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)**.
Consulta la publicación original para [**toda la información sobre esta técnica**](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab).
En **resumen**: si puedes escribir en la propiedad **msDS-KeyCredentialLink** de un usuario/computadora, puedes recuperar el **hash NT de ese objeto**.
Esto se debe a que podrás establecer **credenciales de autenticación de clave pública-privada** para el objeto y usarlas para obtener un **Tique de Servicio especial que contiene su hash NT** dentro del Certificado de Atributos de Privilegio (PAC) en una entidad NTLM\_SUPPLEMENTAL\_CREDENTIAL encriptada que puedes descifrar.
Abusar de Key Trust para objetos de computadora requiere pasos adicionales después de obtener un TGT y el hash NT de la cuenta. Generalmente hay dos opciones:
1. Forjar un **tique de plata RC4** para hacerse pasar por usuarios privilegiados en el host correspondiente.
2. Usar el TGT para llamar a **S4U2Self** para hacerse pasar por **usuarios privilegiados** en el host correspondiente. Esta opción requiere modificar el Tique de Servicio obtenido para incluir una clase de servicio en el nombre del servicio.
El abuso de Key Trust tiene el beneficio adicional de que no delega acceso a otra cuenta que podría ser comprometida, está **restringido a la clave privada generada por el atacante**. Además, no requiere crear una cuenta de computadora que podría ser difícil de limpiar hasta lograr la escalada de privilegios.
Junto con esta publicación, estoy lanzando una herramienta llamada " [Whisker](https://github.com/eladshamir/Whisker) ". Basado en el código de DSInternals de Michael, Whisker proporciona un envoltorio C# para realizar este ataque en compromisos. Whisker actualiza el objeto objetivo utilizando LDAP, mientras que DSInternals permite actualizar objetos utilizando tanto LDAP como RPC con el Servicio de Replicación de Directorio (DRS) Remote Protocol.
* Agregar: Esta función genera un par de claves pública-privada y agrega una nueva credencial de clave al objeto objetivo como si el usuario se hubiera inscrito en WHfB desde un nuevo dispositivo.
* Listar: Esta función lista todas las entradas del atributo msDS-KeyCredentialLink del objeto objetivo.
* Eliminar: Esta función elimina una credencial de clave del objeto objetivo especificada por un GUID de DeviceID.
* Limpiar: Esta función elimina todos los valores del atributo msDS-KeyCredentialLink del objeto objetivo. Si el objeto objetivo está utilizando legítimamente WHfB, se romperá.
Whisker es una herramienta C# para tomar el control de cuentas de usuario y computadora de Active Directory manipulando su atributo `msDS-KeyCredentialLink`, agregando efectivamente "Credenciales en la Sombra" a la cuenta objetivo.
* **Agregar** — Esta función genera un par de claves pública-privada y agrega una nueva credencial de clave al objeto objetivo como si el usuario se hubiera inscrito en WHfB desde un nuevo dispositivo.
* **Listar** — Esta función lista todas las entradas del atributo msDS-KeyCredentialLink del objeto objetivo.
* **Eliminar** — Esta función elimina una credencial de clave del objeto objetivo especificada por un GUID de DeviceID.
* **Limpiar** — Esta función elimina todos los valores del atributo msDS-KeyCredentialLink del objeto objetivo. Si el objeto objetivo está utilizando legítimamente WHfB, se romperá.
*`/objetivo:<samAccountName>`: Requerido. Establece el nombre del objetivo. Los objetos de computadora deben terminar con un signo '$'.
*`/dominio:<FQDN>`: Opcional. Establece el Nombre de Dominio Completo (FQDN) del objetivo. Si no se proporciona, intentará resolver el FQDN del usuario actual.
*`/dc:<IP/HOSTNAME>`: Opcional. Establece el Controlador de Dominio (DC) de destino. Si no se proporciona, intentará apuntar al Controlador de Dominio Principal (PDC).
*`/ruta:<RUTA>`: Opcional. Establece la ruta para almacenar el certificado autofirmado generado para la autenticación. Si no se proporciona, el certificado se imprimirá como un blob Base64.
*`/contraseña:<CONTRASEÑA>`: Opcional. Establece la contraseña para el certificado autofirmado almacenado. Si no se proporciona, se generará una contraseña aleatoria.
pyWhisker es un equivalente en Python del Whisker original creado por Elad Shamir y escrito en C#. Esta herramienta permite a los usuarios manipular el atributo msDS-KeyCredentialLink de un usuario/computadora objetivo para obtener control total sobre ese objeto.
Está basado en Impacket y en un equivalente en Python de DSInternals de Michael Grafnetter llamado PyDSInternals hecho por podalirius.
Esta herramienta, junto con las PKINITtools de Dirk-jan, permiten una explotación primitiva completa solo en sistemas basados en UNIX.
En varios casos, el grupo "Everyone" / "Authenticated Users" / "Domain Users" u otro **grupo amplio** contiene casi todos los usuarios en el dominio y tiene algunos DACLs de **GenericWrite**/ **GenericAll****sobre otros objetos** en el dominio. [**ShadowSpray**](https://github.com/Dec0ne/ShadowSpray/) intenta **abusar** por lo tanto de **Credenciales en la Sombra** sobre todos ellos
1. Intentar **agregar KeyCredential** al atributo `msDS-KeyCredentialLink` del objeto.
2. Si lo anterior es **exitoso**, usar **PKINIT** para solicitar un **TGT** usando el KeyCredential agregado.
3. Si lo anterior es **exitoso**, realizar un ataque **UnPACTheHash** para revelar el hash NT del usuario/computadora.
4. Si se especificó **`--RestoreShadowCred`**: Eliminar el KeyCredential agregado (limpiar después de ti mismo...)
5. Si se especificó **`--Recursive`**: Realizar el **mismo proceso** utilizando cada una de las cuentas de usuario/computadora **que poseemos exitosamente**.
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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 [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al **grupo de Telegram** o **sígueme** en **Twitter****🐦**[**@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)**.