AD Certificates

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Introducci贸n

Componentes de un Certificado

  • El Sujeto del certificado denota su propietario.
  • Una Clave P煤blica se empareja con una clave privada para vincular el certificado a su leg铆timo propietario.
  • El Per铆odo de Validez, definido por las fechas NotBefore y NotAfter, marca la duraci贸n efectiva del certificado.
  • Un N煤mero de Serie 煤nico, proporcionado por la Autoridad de Certificaci贸n (CA), identifica cada certificado.
  • El Emisor se refiere a la CA que ha emitido el certificado.
  • SubjectAlternativeName permite nombres adicionales para el sujeto, mejorando la flexibilidad de identificaci贸n.
  • Restricciones B谩sicas identifican si el certificado es para una CA o una entidad final y definen restricciones de uso.
  • Usos de Clave Extendidos (EKUs) delinean los prop贸sitos espec铆ficos del certificado, como la firma de c贸digo o la encriptaci贸n de correos electr贸nicos, a trav茅s de Identificadores de Objetos (OIDs).
  • El Algoritmo de Firma especifica el m茅todo para firmar el certificado.
  • La Firma, creada con la clave privada del emisor, garantiza la autenticidad del certificado.

Consideraciones Especiales

  • Nombres Alternativos del Sujeto (SANs) ampl铆an la aplicabilidad de un certificado a m煤ltiples identidades, crucial para servidores con m煤ltiples dominios. Los procesos de emisi贸n seguros son vitales para evitar riesgos de suplantaci贸n por parte de atacantes que manipulan la especificaci贸n SAN.

Autoridades de Certificaci贸n (CAs) en Active Directory (AD)

AD CS reconoce los certificados de CA en un bosque de AD a trav茅s de contenedores designados, cada uno con roles 煤nicos:

  • El contenedor de Autoridades de Certificaci贸n contiene certificados de CA ra铆z de confianza.
  • El contenedor de Servicios de Inscripci贸n detalla las CAs Empresariales y sus plantillas de certificados.
  • El objeto NTAuthCertificates incluye certificados de CA autorizados para la autenticaci贸n de AD.
  • El contenedor de AIA (Acceso a Informaci贸n de Autoridad) facilita la validaci贸n de la cadena de certificados con certificados de CA intermedios y cruzados.

Adquisici贸n de Certificados: Flujo de Solicitud de Certificado del Cliente

  1. El proceso de solicitud comienza con los clientes encontrando una CA Empresarial.
  2. Se crea un CSR, que contiene una clave p煤blica y otros detalles, despu茅s de generar un par de claves p煤blica-privada.
  3. La CA eval煤a el CSR en funci贸n de las plantillas de certificados disponibles, emitiendo el certificado seg煤n los permisos de la plantilla.
  4. Tras la aprobaci贸n, la CA firma el certificado con su clave privada y se lo devuelve al cliente.

Plantillas de Certificados

Definidas dentro de AD, estas plantillas describen la configuraci贸n y permisos para emitir certificados, incluyendo EKUs permitidos y derechos de inscripci贸n o modificaci贸n, cr铆ticos para gestionar el acceso a los servicios de certificados.

Inscripci贸n de Certificados

El proceso de inscripci贸n para certificados es iniciado por un administrador que crea una plantilla de certificado, que luego es publicada por una Autoridad de Certificaci贸n Empresarial (CA). Esto hace que la plantilla est茅 disponible para la inscripci贸n del cliente, un paso logrado al agregar el nombre de la plantilla al campo certificatetemplates de un objeto de Active Directory.

Para que un cliente solicite un certificado, deben otorgarse derechos de inscripci贸n. Estos derechos est谩n definidos por descriptores de seguridad en la plantilla de certificado y en la CA Empresarial misma. Los permisos deben otorgarse en ambas ubicaciones para que una solicitud sea exitosa.

Derechos de Inscripci贸n de Plantilla

Estos derechos se especifican a trav茅s de Entradas de Control de Acceso (ACEs), detallando permisos como:

  • Derechos de Inscripci贸n de Certificado y Autoinscripci贸n de Certificado, cada uno asociado con GUIDs espec铆ficos.
  • Derechos Extendidos, que permiten todos los permisos extendidos.
  • ControlTotal/GenericAll, proporcionando control completo sobre la plantilla.

Derechos de Inscripci贸n de CA Empresarial

Los derechos de la CA est谩n delineados en su descriptor de seguridad, accesible a trav茅s de la consola de gesti贸n de la Autoridad de Certificaci贸n. Algunas configuraciones incluso permiten a usuarios con bajos privilegios acceso remoto, lo que podr铆a ser una preocupaci贸n de seguridad.

Controles Adicionales de Emisi贸n

Ciertos controles pueden aplicarse, como:

  • Aprobaci贸n del Gerente: Coloca las solicitudes en un estado pendiente hasta que sean aprobadas por un gerente de certificados.
  • Agentes de Inscripci贸n y Firmas Autorizadas: Especifican el n煤mero de firmas requeridas en un CSR y los OIDs de Pol铆tica de Aplicaci贸n necesarios.

M茅todos para Solicitar Certificados

Los certificados se pueden solicitar a trav茅s de:

  1. Protocolo de Inscripci贸n de Certificados de Cliente de Windows (MS-WCCE), utilizando interfaces DCOM.
  2. Protocolo Remoto ICertPassage (MS-ICPR), a trav茅s de pipes nombrados o TCP/IP.
  3. La interfaz web de inscripci贸n de certificados, con el rol de Inscripci贸n Web de la Autoridad de Certificaci贸n instalado.
  4. El Servicio de Inscripci贸n de Certificados (CES), en conjunto con el servicio de Pol铆tica de Inscripci贸n de Certificados (CEP).
  5. El Servicio de Inscripci贸n de Dispositivos de Red (NDES) para dispositivos de red, utilizando el Protocolo Simple de Inscripci贸n de Certificados (SCEP).

Los usuarios de Windows tambi茅n pueden solicitar certificados a trav茅s de la GUI (certmgr.msc o certlm.msc) o herramientas de l铆nea de comandos (certreq.exe o el comando Get-Certificate de PowerShell).

powershell
# Example of requesting a certificate using PowerShell
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"

Autenticaci贸n de Certificados

Active Directory (AD) admite la autenticaci贸n de certificados, utilizando principalmente los protocolos Kerberos y Secure Channel (Schannel).

Proceso de Autenticaci贸n Kerberos

En el proceso de autenticaci贸n Kerberos, la solicitud de un usuario para un Ticket Granting Ticket (TGT) se firma utilizando la clave privada del certificado del usuario. Esta solicitud pasa por varias validaciones por parte del controlador de dominio, incluyendo la validez, ruta y estado de revocaci贸n del certificado. Las validaciones tambi茅n incluyen verificar que el certificado provenga de una fuente confiable y confirmar la presencia del emisor en el almac茅n de certificados NTAUTH. Las validaciones exitosas resultan en la emisi贸n de un TGT. El objeto NTAuthCertificates en AD, se encuentra en:

bash
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>

es central para establecer confianza en la autenticaci贸n de certificados.

Autenticaci贸n de Canal Seguro (Schannel)

Schannel facilita conexiones seguras TLS/SSL, donde durante un apret贸n de manos, el cliente presenta un certificado que, si se valida con 茅xito, autoriza el acceso. La asignaci贸n de un certificado a una cuenta de AD puede involucrar la funci贸n S4U2Self de Kerberos o el Nombre Alternativo del Sujeto (SAN) del certificado, entre otros m茅todos.

Enumeraci贸n de Servicios de Certificados de AD

Los servicios de certificados de AD se pueden enumerar a trav茅s de consultas LDAP, revelando informaci贸n sobre Autoridades de Certificaci贸n (CAs) Empresariales y sus configuraciones. Esto es accesible para cualquier usuario autenticado en el dominio sin privilegios especiales. Herramientas como Certify y Certipy se utilizan para la enumeraci贸n y evaluaci贸n de vulnerabilidades en entornos de AD CS.

Los comandos para usar estas herramientas incluyen:

bash
# Enumerate trusted root CA certificates and Enterprise CAs with Certify
Certify.exe cas
# Identify vulnerable certificate templates with Certify
Certify.exe find /vulnerable

# Use Certipy for enumeration and identifying vulnerable templates
certipy find -vulnerable -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128

# Enumerate Enterprise CAs and certificate templates with certutil
certutil.exe -TCAInfo
certutil -v -dstemplate

Referencias

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks