fbpx
Capital Software

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

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, machinename$@domainname. 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

Abrir chat
1
Escanea el código
Hola, bienvenido a Capital Software, somos una empresa de soluciones informáticas. ¿En qué podemos ayudarte hoy?