20 dic 2021

Tomar el control de un AD mediante dos vulnerabilidades de diciembre

En medio de la tormenta #Log4Shell hay una cadena de vulnerabilidades (NoPaC, sAMAccountName) que está pasando algo desapercibida pero mediante la cual cualquier persona dentro de la red podría usar para ownear un DC. Hablamos de CVE-2021-42287 y CVE-2021-42278.

Más información en las actualizaciones de Microsoft de diciembre: CVE-2021-42278, CVE-2021-42291, CVE-2021-42287 y CVE-2021-42282.

Para explicarlo vamos a partir de la premisa de que Kerberos (y otros paquetes de autenticación) por diseño cuando no encuentran una cuenta de usuario vuelven a intentarlo agregando un $ para determinar si la cuenta es una cuenta de computadora/equipo o una cuenta de usuario, porque los dominios de Windows almacenan nombres de cuentas de equipo con un $.

Se sabe también que en el proceso de autenticación de Kerberos requiere un TGT (Ticket Granting Ticket) cuando se solicita un Ticket de servicio o TGS (Ticket Granting Service). El tema es que si por ejemplo "Pepito"   obtiene un TGT y ese usuario es eliminado o renombrado después, al usarlo para solicitar un ticket de servicio de otro usuario (el llamado S4U2self) provocará que el KDC busque pepito$ en la base de datos del AD, como recién comentamos.

Seguro que ya has visto la jugada... un atacante renombra la cuenta de equipo con el nombre del controlador de dominio (DC$) y cuando usa el TGT modifica el nombre de usuario, de modo que la respuesta (TGS_REP) al no encontrar la cuenta de usuario devolverá el ticket de servicio para la cuenta de equipo, es decir, para el controlador de dominio spoofeado.

El problema es que ni se comprueba el PAC (Privilege Attribute Certificate) ni hay ninguna otra validación que verifique que las cuentas que tienen un $ al final de su nombre (es decir, el atributo sAMAccountName) son de equipo. Esa sería la vulnerabilidad CVE-2021-42278 que en combinación con la del engaño al KDC, la CVE-2021-42287, permite a cualquier atacante hacerse pasar por cuentas de controlador de dominio.

El único prerequisito es que hay que tener permiso de escritura para el atributo sAMAccountName. Sin embargo, por defecto los usuarios normales en el dominio pueden crear 10 cuentas de equipo (MachineAccountQuota), y el creador tiene permisos de escritura para las cuentas de equipo y, por supuesto, estos dos atributos se pueden cambiar. Las combinaciones perfectas.

El ataque completo

Primero se necesitan las siguientes herramientas en vuestra arsenal para llevar acabo el ataque paso a paso:

Contenido completo en fuente original HackPlayers

Suscríbete a nuestro Boletín

0 Comments:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!