volvervolver
Inteligencia artificial en Ciberseguridad

POR:
Caique Garbim
(Offensive Operations Team)

COMPARTIR

Delegación de Kerberos: cuando la seguridad se convierte en vulnerabilidad

En Active Directory (AD), la delegación restringida (constrained delegation) es una característica de seguridad que permite que un servicio (cuenta de servicio o servidor) actúe en nombre de un usuario solo para servicios definidos específicos. La delegación restringida es configurada para evitar el uso indebido de credenciales y limitar la posible exposición de las credenciales.

Sin embargo, esta funcionalidad ha presentado vulnerabilidades críticas. Estas fallas pueden permitir a atacantes malintencionados elevar privilegios y acceder a recursos sensibles de manera indebida.

Uso

Imagine un entorno en el que un servidor web necesita acceder a una base de datos SQL en nombre de usuarios autenticados. Con la delegación restringida, configuraría la cuenta de servicio del servidor web para que solo pueda delegar credenciales al servicio SQL. Esto evita que esta cuenta acceda a otros servicios no relacionados. O sea:

 • El servidor web, con la delegación restringida configurada, puede utilizar el ticket Kerberos del usuario para solicitar un ticket de servicio para la base de datos SQL.

 • Active Directory comprueba la configuración de delegación restringida del servidor web para garantizar que esté autorizado para delegar credenciales únicamente a la base de datos SQL SPN.

Ejemplo

 • Un usuario, John, se autentica en el servicio web (que se ejecuta con la cuenta de servicio "webservice") mediante un mecanismo de autenticación (no compatible con Kerberos).

 • El servicio web solicita un ticket del Key Distribution Center (KDC) para la cuenta de John sin proporcionar una contraseña, como la cuenta "webservice".

 • El KDC verifica el valor userAccountControl del "webservice" para el atributo TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION y que la cuenta de John no esté bloqueada para delegación. Si está bien, devuelve un forwardable ticket para la cuenta de John (S4U2Self).

 • Luego, el servicio devuelve este ticket al KDC y solicita un ticket de servicio para el servicio "CIFS/arg-mssql.argentina.contoso.corp".

 • El KDC comprueba el campo "msDS-AllowedToDelegateTo" en la cuenta webservice. Si el servicio aparece en la lista, devolverá un ticket de servicio para "arg-mssql" (S4U2Proxy).

 • El servicio web ahora puede autenticarse en CIFS en "arg-mssql" como John utilizando el TGS suministrado.


Enumeración

Para enumerar usuarios con delegación restringida podemos usar PowerView. Ejecute el siguiente comando en una sesión de PowerShell:


El comando enumera los usuarios con el permiso "Trusted to Authenticate for Delegation" y muestra que el usuario "webservice" puede delegar credenciales a los servicios CIFS especificados.

Abuso

En teoría, la delegación restringida limita el daño que podría resultar si una cuenta AD se ve comprometida. Pero se puede abusar de la delegación restringida: un adversario que comprometa la contraseña en texto plano o el hash de contraseña de una cuenta que está configurada con delegación restringida a un servicio puede hacerse pasar por cualquier usuario en el entorno para acceder a ese servicio. Por ejemplo, si la delegación restringida está configurada en un SPN de Microsoft SQL, un atacante podría obtener acceso privilegiado a esa base de datos.

Para abusar de la delegación restringida en el escenario anterior, necesitamos tener acceso a la cuenta "webservice". El acceso inicial puede ser posible a través de vulnerabilidades en el servicio web que podrían permitir la ejecución de comandos en el sistema operativo u otras vulnerabilidades en Active Directory.

Si tenemos acceso a esta cuenta, podemos acceder a los servicios enumerados en "msDS-AllowedToDelegateTo" de la cuenta "webservice" como CUALQUIER usuario.

Tenga en cuenta que todavía no tenemos acceso al C$ admin share en el host de destino:


Para realizar la exploración, podemos utilizar el siguiente comando:


El comando mencionado es una ejecución de Rubeus (una herramienta post-explotación para manejar tickets de Kerberos en Windows). Este comando en particular utiliza la funcionalidad S4U (Service for User) para realizar una delegación restringida con el fin de obtener un ticket de servicio (TGS) para otro servicio en nombre de un usuario:

 • /user:webservice: Indica el nombre del usuario del servicio (service account) que se utilizará. En este caso, el usuario es "webservice".

 • /aes256:7d214...: Proporciona la clave AES256 del usuario "webservice". Esta clave es necesaria para generar tickets de Kerberos.

 • /impersonateuser:Administrator: Especifica el usuario que se va a suplantar, en este caso es "Administrator".

 • /msdsspn:"CIFS/arg-mssql.argentina.contoso.corp: Define el Service Principal Name (SPN) del servicio al que desea acceder. Aquí el SPN es para el servicio CIFS en el servidor "arg-mssql.argentina.contoso.corp".

 • /ptt: Significa "Pass-The-Ticket". Este parámetro le indica a Rubeus que inyecte el ticket TGS generado directamente en la sesión actual, "pasando" efectivamente el ticket.

Después de ejecutar, el ticket se importa exitosamente:


Al ejecutar el siguiente comando, podemos ver que el ticket existe:


De esta manera podemos acceder al sistema de archivos en "arg-mssql", demostrando que el movimiento lateral es posible mediante esta técnica:


Mitigación

Configuracion de cuenta

Una técnica para defenderse contra ataques relacionados con la delegación es colocar cuentas confidenciales que no deben delegarse en el grupo Protected Users o marcar la casilla "Account is sensitive and cannot be delegated" en "Active Directory Users and Computers" en la pestaña "Account".

Monitorear registros de seguridad

Implemente una auditoría detallada de los registros de seguridad de Windows, especialmente los eventos relacionados con Kerberos:

 • 4768 (Ticket Granting Ticket request)
 • 4769 (Service Ticket request)
 • 4770 (TGT renewal)
 • 4771 (Kerberos pre-authentication failure)

Utilice herramientas SIEM

Las herramientas de gestión de eventos e información de seguridad (SIEM) pueden ayudar a detectar patrones anómalos y comportamientos sospechosos.

Rotación regular de contraseñas y claves

Cambie periódicamente las contraseñas y claves de las cuentas de servicio y los privilegios elevados para reducir la ventana de oportunidad para los atacantes.