TL;DR – Utilizando plantillas de certificado integradas predeterminadas interpretación 1, un atacante puede crear una CSR para incluir políticas de aplicación que sean preferidas a los atributos de uso de esencia extendido configurados especificados en la plantilla. El único requisito son los derechos de inscripción y se puede utilizar para producir autenticación de cliente, agente de solicitud de certificados y códigos de diseño de certificados utilizando el Servidor web plantilla.
En 2021, los investigadores Will Schroeder y Lee Christensen de SpecterOps publicaron un documento técnico que detalla ocho (8) técnicas de subida contra los Servicios de certificados de Active Directory (AD CS), a las que denominaron ESC1 – ESC8. Si no ha culto ese documento técnico, hágalo primero; Hará que el resto de esto sea más claro de seguir. Su investigación innovador condujo a investigaciones adicionales en AD CS y, durante los dos primaveras siguientes, se identificaron técnicas de subida adicionales (ESC9 – ESC14).
Hora del descripción
Son las 4:30 a. m. y el período de prueba finaliza a las 6:00 a. m. Tenemos un punto de apoyo, pero solo paso oficial a un (1) sistema. Entro de forma remota al servidor usando RDP y empiezo a husmear en el MMC. Como tengo paso oficial al sistema, asimismo puedo ver los certificados del sistema. Decidí revisar si había alguna plantilla que tal vez me perdí con el escaneo inconsciente de ESC1.
Entonces noté poco. Esto se parece a ESC1 porque le permite proporcionar el tema. Estoy conveniente seguro de que el Servidor web La plantilla de certificado no tendría configurado el EKU de autenticación de cliente, que es un requisito para ESC1, pero decidí hacer clic en Se requiere más información para inscribir este certificado. Haga clic aquí para configurar los ajustes.
Completé los campos de asunto y UPN para que coincidan con el Administrador cuenta al igual que el ataque ESC1.
Fui a revisar que el uso de claves estuviera configurado como autenticación del servidor, como debería deber sido configurado por la plantilla, y me di cuenta de que la GUI no estaba atenuada. Pensé que era extraño, así que intenté quitar el autenticación del servidor, ayudante Autenticación del cliente a las EKU y solicitó el certificado.
Pensé para mis adentros: “Seguramente eso no funcionó”. Miré el certificado y todavía decía Autenticación del servidor debajo del campo EKU, pero había poco extraño. Había un nuevo campo etiquetado Política de aplicación. El Autenticación del cliente que había especificado en la solicitud estaba presente en el certificado pero en un campo diferente.
Decidí intentar autenticarme en AD con él. Con la útil PKINIT de Dirk-jan, Utilicé el certificado para solicitar un TGT de Kerberos pero recibí un error.
Pero luego recordé un blog que mostraba una técnica denominada PassTheCert para usar el certificado para autenticarse a través de schannel contra LDAP. Milagrosamente, funcionó. Me autentiqué en LDAP como administrador. Más tarde, asimismo confirmé que el método era posible con Certificación con el -ldap-shell característica.
Una vez que me di cuenta de que el problema era novedoso, abrí un caso en el Centro de respuesta de seguridad de Microsoft (MSRC). Mientras esperábamos a Microsoft, seguimos investigando.
Clase del historial de versiones de la plantilla AD CS
Durante su inmersión en Windows Server 2000, AD CS incluyó varias plantillas predeterminadas para tareas de uso popular, incluida la Servidor web plantilla entre otros. Las plantillas integradas eran ejemplos para fines de certificados de uso popular, incluidos Autenticación del servidor. Más delante, en Windows Server 2003, se introdujeron las plantillas de la interpretación 2, que dieron a las plantillas de certificado más funciones, incluida la inscripción cibernética.
“Un administrador puede configurar plantillas de la interpretación 2 para controlar la forma en que se solicitan, emiten y utilizan los certificados”. -Microsoft
Las plantillas de la interpretación 1 son plantillas muy básicas y no se pueden personalizar. Los únicos cambios de configuración que se permiten son los derechos de inscripción. Si necesita personalizar una plantilla de la interpretación 1, debe clonar la plantilla. Esto crea una copia de la plantilla, pero asimismo convierte automáticamente la plantilla resultante a la interpretación 2 (esto es importante para más delante).A
EKU y políticas de aplicación
He aurícula conversar de una EKU antaño, pero ¿qué es una Política de aplicación? Incluso la documentación de Microsoft confunde los dos, pero como descubrí, son atributos muy diferentes. EKU significa Uso extendido de claves tal como se define en IETF RFC5280. Sin secuestro, Microsoft utiliza los términos Uso extendido de claves y Uso mejorado de claves indistintamente en la documentación. Interiormente de esta categoría, Microsoft tiene una extensión propietaria llamamiento Políticas de aplicación bajo el OID 1.3.6.1.4.1.311. Similar al EKU x509, define el propósito del certificado e incluso utiliza los mismos números OID que los EKU x509, por ejemplo, Autenticación del cliente (1.3.6.1.5.5.7.3.2). Resulta que si hay un conflicto entre una Política de aplicación y una EKU, entonces Microsoft prefiere la Política de aplicación propietaria.
“La política de aplicación es específica de Microsoft y se negociación de forma muy similar al uso extendido de claves. Si un certificado tiene una extensión que contiene una política de aplicación y asimismo tiene una extensión EKU, la extensión EKU se ignora”. -Microsoft
Inicialmente, pensamos que el problema se limitaba a schannel, pero al conversar con @_dru1d en conversaciones privadas, nos dimos cuenta de que el problema no se limitaba a schannel y descubrió que se podían añadir otros OID más peligrosos, incluido el Agente de solicitud de certificados (1.3 .6.1.4.1.311.20.2.1).
En empleo de ser como ESC1, ESC15 en ingenuidad se parecía más a ESC2, que es mucho más peligroso. No sólo puede cambiar el asunto del certificado, sino que asimismo puede cambiar el propósito del certificado.
La diferencia entre ESC2 y ESC15 era que ESC15 estaba oculto a plena clarividencia. Todos los ataques ESC son “configuraciones erróneas de las plantillas” que permiten el atropello. Pero esto no es una mala configuración; este es un error que nos permite añadir las Políticas de la Aplicación. Es por eso que decidimos darle un nombre a la vulnerabilidad, KUWU.
De forma predeterminada, todas las plantillas de la interpretación 1 son vulnerables; sin secuestro, para servirse la vulnerabilidad, el atacante debe tener derechos de inscripción. Cuando se envió originalmente el caso MSRC, pensamos que la vulnerabilidad estaba en el interior de LDAP/schannel y que era solo un ataque de subida de privilegios. Actualizamos MSRC con nuestros hallazgos en tiempo existente a medida que los descubrimos.
A posteriori de cuatro (4) semanas de prórroga por una modernización de Microsoft, TrustedSec ya había confirmado el problema en 10 de los 15 clientes analizados. Recibí un correo electrónico de MSRC que indicaba que la configuración predeterminada no era débil porque modifiqué los permisos de inscripción. Del porcentaje de nuestros clientes afectados, no estamos de acuerdo con la valoración.
Con la ayuda del asesor senior de TrustedSec, Lou Scicchitano (@LouScicchitano), el asesor principal Scot Berner (@slobtresix0) y el líder de destreza de investigación, Christopher Paschen (@freefirex2).), Descubrimos casos de uso adicionales que utilizan ESC15 como arsenal, incluida la firma de código. Adicionalmente, se actualizaron los archivos de objetos Beacon (BOF) para favorecer el ataque en marcos C2 extensibles mediante la modernización. solicitud_adcs y agregando adcs_request_on_behalf.
¿Qué se puede hacer?
Microsoft todavía está trabajando en su respuesta oficial, pero lo que TrustedSec ha determinado es que sólo las plantillas de la interpretación 1 que permiten al solicitante proporcionar el tema parecen ser vulnerables a ESC15. Si se clona una plantilla de la interpretación 1, se actualiza automáticamente a la interpretación 2 y la plantilla ya no es débil. Se ha creado un script de PowerShell para automatizar la desactivación de las plantillas vulnerables conocidas. Ayer de deshabilitar cualquier plantilla de certificado, verifique que no se emitan certificados a partir de esas plantillas.
agradecimiento específico
Un agradecimiento específico al Director de Inteligencia de Seguridad de TrustedSec, Carlos Pérez @carlos_Perez, por proporcionar el script de PowerShell para automatizar las mitigaciones.
Un agradecimiento específico a @freefirex2 por la creación de un nuevo BOF para habilitar el ataque ESC15 e implementar el ataque del Agente de solicitud de certificado.
Un agradecimiento específico a @_dru1d de CDW que creó el primero Certificación fork y posterior solicitud de ascendencia.
Capital adicionales
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-crtd/44012f2d-5ef3-440d-a61b-b30d3d978130
https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/jj129696(v=ws.11)
https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc754305(v=ws.10)
https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc731792(v=ws.10)?redirectedfrom=MSDN