Capital Software Blog

Vulnerabilidades en Active Directory: CVE-2021-42278 / CVE-2021-42287

CVE-2021-42278 / CVE-2021-42287

El martes de parches de noviembre pasado, Microsoft publicó avisos para abordar varias vulnerabilidades en Active Directory. El análisis de estas vulnerabilidades mostró que al combinar CVE-2021-42278 y CVE-2021-42287 es posible, en condiciones predeterminadas, que un usuario habitual se haga pasar por un administrador de dominio fácilmente. Esto significa que cualquier usuario de dominio puede convertirse efectivamente en administrador de dominio, lo que hace que estas vulnerabilidades sean extremadamente graves. Además, ya existen varios repositorios de Github con código PoC de uso gratuito que facilita la explotación de estas vulnerabilidades.

 

CVE-2021-42278: nombre de cuenta de computadora no v√°lido

 

Los nombres de cuentas de equipo en entornos de Active Directory siempre deben terminar con ¬ę$¬Ľ, sin embargo, esto no se aplica correctamente.¬†El atributo del nombre de la cuenta de la computadora es ¬ęsAMAccountName¬Ľ.¬†Es posible ver y editar este atributo manualmente usando la herramienta ADSIEdit, como se puede ver en la Figura 1.¬†

 

Figura 1: Editando el atributo del nombre de la cuenta de la computadora usando ADSIEdit

Figura 1: Editando el atributo del nombre de la cuenta de la computadora usando ADSIEdit

 

En máquinas vulnerables, es posible cambiarle el nombre a un nombre de cuenta de controlador de dominio, que es un paso clave en la cadena de explotación.

 

Nombre principal de seguridad

 

Un nombre principal de seguridad (SPN) es el nombre que identifica una entidad autenticada, por ejemplo, [email protected]¬†Kerberos utiliza los¬†SPN¬†como parte de los procedimientos de autenticaci√≥n de varias entidades.¬†B√°sicamente, es un identificador √ļnico de una instancia de servicio y lo utiliza la autenticaci√≥n Kerberos para asociar una instancia de servicio con una cuenta de inicio de sesi√≥n de servicio.

 

Esto puede plantear un problema al intentar cambiar el nombre de una cuenta de computadora a una cuenta de controlador de dominio porque cambiar el atributo samAccountName desencadenar√° un cambio respectivo en el SPN de la cuenta.¬†El intento de cambiarlo fallar√° porque ya existe un SPN con este nombre.¬†Para superar esto, es posible borrar el atributo ¬ęservicePrincipalName¬Ľ de la m√°quina.¬†Como resultado, tambi√©n se requieren privilegios para editar el atributo ¬ęservicePrincipalName¬Ľ para aprovechar esta vulnerabilidad.

 

CVE-2021-42287 РConfusión del centro de distribución de claves Kerberos

 

El Centro de distribuci√≥n de claves de Kerberos (KDC) es un servicio de Active Directory que gestiona las solicitudes de tickets de Kerberos. Un boleto de concesi√≥n de boletos, o TGT, es un tipo especial de boleto que se puede usar para obtener otros boletos. TGT se utiliza para solicitar tokens de acceso del Ticket Granting Service (TGS) para recursos/sistemas espec√≠ficos en el dominio. Cuando se env√≠a una solicitud de un ticket de servicio y no se encuentra, el KDC buscar√° autom√°ticamente el ticket solicitado junto con ¬ę$¬Ľ.

S4U2self, o Service for User to Self, es una extensión que permite a un servicio obtener un ticket de servicio Kerberos por sí mismo. El ticket de servicio contiene los grupos de usuarios y, por lo tanto, se puede utilizar en decisiones de autorización. Todos los términos de Active Directory y las explicaciones completas se pueden encontrar aquí .

 

La vulnerabilidad puede desencadenarse en un escenario en el que un usuario obtiene un TGT, el usuario es eliminado y el TGT obtenido previamente se utiliza para solicitar un ticket de servicio para otro usuario para ellos mismos, b√°sicamente, S4U2self.¬†En este caso, no se encontrar√° al usuario y se ejecutar√° una b√ļsqueda del usuario con ¬ę$¬Ľ adjunto.¬†Y si existe una cuenta de controlador de dominio con el nombre, se otorgar√° un ticket de servicio al usuario solicitante, convirtiendo al usuario solicitante en administrador de dominio.

 

Combinando las vulnerabilidades

 

Para aprovechar este problema, un atacante necesita la capacidad de controlar una cuenta de computadora.¬†Como se mencion√≥, el atacante debe poder modificar tanto el atributo ¬ęservicePrincipalName¬Ľ como el atributo ¬ęsAMAccountName¬Ľ.¬†La forma m√°s sencilla de lograrlo es crear uno.¬†La configuraci√≥n predeterminada en un dominio permite que un usuario sin privilegios cree hasta 10 cuentas de computadora.¬†Esto est√° controlado por el atributo MachineAccountQuota.

 

En resumen, los pasos para aprovechar estas vulnerabilidades y obtener privilegios de administrador de dominio son los siguientes:

 

1. Enumere el Active-Directory para encontrar una cuenta de administrador de dominio.
2. Cree una nueva cuenta de computadora con ¬ęservicePrincipalName¬Ľ despejado.
3. Aproveche CVE-2021-42278 para modificar ¬ęsAMAccountName¬Ľ al nombre de la cuenta del administrador del dominio.
4. Obtenga un TGT de la cuenta de la computadora.
5. Restaure el nombre de la cuenta de la computadora para que no se encuentre cuando el KDC lo busque.
6. Aproveche CVE-2021-42287 utilizando el TGT obtenido para solicitar un ticket de servicio con S4U2Self.

 

La implementación del exploit se puede encontrar aquí . La Figura 2, a continuación, muestra la ejecución del código de explotación contra un servidor vulnerable:

 

Figura 2: Explotación de vulnerabilidades CVE-2021-42278 / CVE-2021-42287

 

Figura 2: Explotación de vulnerabilidades CVE-2021-42278/CVE-2021-42287

 

Protección contra la explotación

 

La combinación de las vulnerabilidades CVE-2021-42278 y CVE-2021-42287 permite a los usuarios sin privilegios convertirse fácilmente en administradores de dominio. Como resultado, instamos a las organizaciones a que apliquen los parches KB5008380 y KB5008602 de Microsoft lo antes posible para mitigar el problema.

Fuente: FortiGuard Labs Threat Research Report

¬ŅNECESITAS ASESOR√ćA?

Conéctate con un experto