Computadora

Para llevar tu aprendizaje al siguiente nivel y practicar estas técnicas de manera segura y efectiva, te invitamos a adquirir acceso premium a nuestro material de curso. No pierdas esta oportunidad de profundizar tus conocimientos. Para más información y adquirir tu acceso, visita nuestro canal de ventas: https://wa.link/ej3kiu. ¡Te esperamos para empezar este viaje juntos!

Constrained Delegation en Cuentas de Computadora

Para las cuentas de computadora, la delegación restringida se utiliza para controlar los servicios que se ejecutan en una máquina en particular y cómo esos servicios pueden actuar en nombre de los usuarios. Por ejemplo, un servidor web que corre en una máquina específica podría necesitar acceder a otro servidor en nombre del usuario para obtener información. Configurando la delegación restringida en la cuenta de la computadora que hospeda el servidor web, controlamos a qué servicios externos puede este servidor acceder con las credenciales de un usuario.

Esta vulnerabilidad fue previamente detectada con el resultado de ADPeas

[?] +++++ Searching for Computer with Constrained Delegation Rights +++++
[!] Found constrained delegation rights for Computer 'Suspicious-PC$':
sAMAccountName:                         Suspicious-PC$
distinguishedName:                      CN=Suspicious-PC,CN=Computers,DC=spartancybersec,DC=corp
objectSid:                              S-1-5-21-1861162130-2580302541-221646211-1116
[+] msDS-AllowedToDelegateTo:           HTTP/First-DC.spartancybersec.corp/spartancybersec.corp
                                        HTTP/First-DC.spartancybersec.corp
                                        HTTP/First-DC
pwdLastSet:                             09/19/2022 23:40:27
userAccountControl:                     WORKSTATION_TRUST_ACCOUNT

[!] Found constrained delegation rights for Computer 'USER-SERVER$':
sAMAccountName:                         USER-SERVER$
distinguishedName:                      CN=USER-SERVER,CN=Computers,DC=spartancybersec,DC=corp
objectSid:                              S-1-5-21-1861162130-2580302541-221646211-1129
operatingsystem:                        Windows Server 2019 Datacenter
[+] msDS-AllowedToDelegateTo:           HOST/First-DC.spartancybersec.corp/spartancybersec.corp
                                        HOST/First-DC.spartancybersec.corp
                                        HOST/First-DC
pwdLastSet:                             09/19/2022 23:43:39
[*] lastLogonTimestamp:                 09/19/2022 23:43:39 (Computer is likely not online anymore!)
userAccountControl:                     WORKSTATION_TRUST_ACCOUNT, TRUSTED_TO_AUTH_FOR_DELEGATION

El resultado de ejecutar el comando "Get-DomainComputer -TrustedToAuth" en un entorno de Active Directory. Este comando, específico de PowerShell, se utiliza para recuperar información sobre cuentas de computadoras en el dominio que están configuradas para realizar alguna forma de delegación (en este caso, parece ser la delegación restringida).

Los datos muestran dos cuentas de computadoras: "Suspicious-PC" y "USER-SERVER". Ambos tienen campos "msds-allowedtodelegateto", lo que indica que estas cuentas de computadoras están configuradas para usar la delegación restringida, ya que pueden presentar credenciales para servicios específicos en otras computadoras (los valores en "msds-allowedtodelegateto").

Para explotar la delegación restringida y conseguir una escalada de privilegios o acceso a recursos adicionales, un atacante necesitaría obtener un ticket de servicio válido para el servicio al que la cuenta de computadora puede delegar. Aquí es donde herramientas como las incluidas en la suite de Impacket pueden ser útiles.

Uso de Impacket en este escenario:

  1. Identificación del Servicio Delegado: Primero, identificarías el servicio específico al que se permite la delegación. En tu salida, estos están listados bajo "msds-allowedtodelegateto". Parece que "Suspicious-PC" puede delegar a ciertos servicios HTTP en "First-DC", mientras que "USER-SERVER" puede delegar a varios servicios "HOST" y "TERMSRV".

  2. Obtención de un Ticket de Servicio: Luego, podrías usar una herramienta como "getST.py" de Impacket para obtener un ticket de servicio (TGS) para el servicio que se permite delegar. Necesitarías tener acceso a una cuenta que tenga permisos para solicitar dicho ticket, que podría ser cualquier usuario o cuenta de servicio que se autentique con el servidor que tiene la delegación restringida configurada.

  3. Uso del Ticket de Servicio: Una vez que tienes el TGS, puedes usar otra herramienta de Impacket, como "psexec.py" o "wmiexec.py", para usar ese ticket y autenticarte en el servicio de destino, ejecutando comandos o realizando otras acciones como si fueras el usuario cuyo ticket has obtenido.

PS C:\Users\admin> Get-DomainComputer -TrustedToAuth | select samaccountname, samaccounttype,  msds-allowedtodelegateto, serviceprincipalname
samaccountname           : Suspicious-PC$
samaccounttype           : MACHINE_ACCOUNT
msds-allowedtodelegateto : {HTTP/First-DC.spartancybersec.corp/spartancybersec.corp, HTTP/First-DC.spartancybersec.corp, HTTP/First-DC}
useraccountcontrol       : WORKSTATION_TRUST_ACCOUNT

samaccountname                : USER-SERVER$
samaccounttype                : MACHINE_ACCOUNT
msds-allowedtodelegateto      : {HOST/First-DC.spartancybersec.corp/spartancybersec.corp, HOST/First-DC.spartancybersec.corp, HOST/First-DC}
serviceprincipalname          : {WSMAN/User-Server, WSMAN/User-Server.spartancybersec.corp, TERMSRV/USER-SERVER, TERMSRV/User-Server.spartancybersec.corp...}
useraccountcontrol            : WORKSTATION_TRUST_ACCOUNT, TRUSTED_TO_AUTH_FOR_DELEGATION

En la salida, hay dos cuentas de máquinas: Suspicious-PC$ y USER-SERVER$. Ambas tienen configuraciones que les permiten delegar la autenticación a ciertos servicios en First-DC.spartancybersec.corp.

  1. Suspicious-PC$:

    • samaccountname: El nombre de la cuenta de la máquina es Suspicious-PC$.

    • samaccounttype: Indica que esta cuenta es una cuenta de máquina.

    • msds-allowedtodelegateto: Lista los servicios a los que esta máquina puede presentar credenciales en nombre de otro usuario. En este caso, está limitado a ciertos servicios HTTP en First-DC.spartancybersec.corp.

    • useraccountcontrol: Indica el tipo de cuenta, que es una cuenta de confianza de estación de trabajo.

  2. USER-SERVER$:

    • samaccountname: El nombre de la cuenta de la máquina es USER-SERVER$.

    • samaccounttype: Indica que esta cuenta es una cuenta de máquina.

    • msds-allowedtodelegateto: Lista los servicios a los que esta máquina puede presentar credenciales en nombre de otro usuario. Aquí, está limitado a ciertos servicios HOST en First-DC.spartancybersec.corp.

    • serviceprincipalname (SPN): Este es un identificador único para cada instancia del servicio. Se utilizan para la autenticación Kerberos. La presencia de términos como WSMAN y TERMSRV sugiere que esta máquina está ejecutando servicios de administración remota de Windows y servicios de terminal (Remote Desktop Services), respectivamente.

    • useraccountcontrol: Indica el tipo de cuenta, que es una cuenta de confianza de estación de trabajo.

¿Qué significa esto desde una perspectiva de ataque?

Un atacante que ha comprometido cualquiera de estas máquinas (por ejemplo, obteniendo las credenciales adecuadas o explotando alguna vulnerabilidad) puede utilizar la característica de delegación restringida para autenticarse en el First-DC.spartancybersec.corp como cualquier usuario que haya iniciado sesión previamente en la máquina comprometida, limitado a los servicios especificados en msds-allowedtodelegateto.

  1. Si un atacante compromete Suspicious-PC$, podría delegar credenciales para autenticarse hacia servicios HTTP específicos en First-DC.spartancybersec.corp.

  2. Si USER-SERVER$ es comprometido, el atacante podría utilizar esta delegación para autenticarse hacia servicios que utilizan el protocolo HOST (generalmente servicios a nivel de sistema operativo o servicios de red) en First-DC.spartancybersec.corp.

En ambos casos, el atacante necesita encontrar una manera de comprometer primero la máquina (a través de phishing, explotación de vulnerabilidades, escalada de privilegios, etc.) y luego utilizar la delegación restringida para acceder a servicios en el controlador de dominio o a otras máquinas/servicios especificados en la configuración de la delegación.

Última actualización