La infraestructura de clave pública interna, conocida como PKI (Public Key Infrastructure), constituye un vector de ataque significativo para nuestra organización. A pesar de ser un sistema con varios años de antigüedad, la mayoría de las organizaciones siguen utilizándolo y, en muchos casos, es un pilar fundamental en el funcionamiento de su entorno. Sin embargo, ¿qué tipos de ataques existen contra esta infraestructura y cómo podemos protegernos de ellos?
Algunas herramientas que podemos usar para realizar un RedTeam contra una PKI:
- certi: impacket copy of Certify to abuse AD CS.
- ADCSKiller: automated discovery and exploitation of AD CS abuses.
- PKINITools: repo contains some utilities for playing with PKINIT and certificates.
- PoshADCS: proof of concept on attack vectors against Active Directory by abusing AD CS.
- ForgeCert: forge certificates for any user using compromised CA certificate and private keys.
- pyForgeCert: Python equivalent of ForgeCert.
- modifyCertTemplate: Python equivalent with more manual granular control of ForgeCert.
- CarbonCopy: creates a spoofed certificate of any online website and signs an Executable for AV Evasion.
- KrbRelayUp: a universal no-fix local privilege escalation in windows domain environments where LDAP signing is not enforced (the default settings).
Algunas medidas preventivas que podemos tomar para mantener nuestro entorno de AD CS protegido:
Asegúrate de que el parche CBA (KB5014754) esté instalado en todas las CA y Sub CA y en la Clave de registro StrongCertificateBindingEnforcement en modo de cumplimiento total = 2
Trata a las CA y Sub CA de tu organización siempre como activos de Tier-0
Tener instalado el parche CBA que corrige EDITF_ATTRIBUTESUBJECTALTNAME2 en la CA y de manera adicional se pueden realizar las siguientes configuraciones de refuerzo: Restringir quién puede actuar como agente de inscripción. Auditar y reforzar las ACL de los servidores CA (esto protege contra la vulnerabilidad ESC7).
Mantén un control de las plantillas publicas, si alguna de las plantillas ya no es necesaria, elimínala, de esta forma reduciremos la superficie de ataque.
Para una Auditoria rápida podemos usar: Invoke-PKIAuadit de PSPKIAudit
https://github.com/GhostPack/PSPKIAudit
• Algunas de las configuraciones importantes para auditar:
- Enrollee Supplies Subject
- CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
- Enrollment rights on templates
- Owner of the template
- FullControl, WriteDacl, WriteOwner, or WriteProperty permissions on the template
- EKUs (Client auth, PKINIT Client Auth, Smart Card Logon, Any Purpose, Sub
Auditoría de certificados NTAuth.
• Auditar periódicamente si los certificados en ese contenedor son los correctos.
• Esto protege de ataques como DPERSIST2: este ataque falsifica CUALQUIER certificado de dominio utilizando el certificado raíz de confianza externo y las claves privadas de (root/intermediate/NTAuthCAcertificates container)
HTTP Endpoints:
• Si se requieren puntos finales HTTP, deshabilite la autenticación NTLM en el servidor AD CS y en IIS
• Si no se puede desactivar NTLM, mejor aplicar HTTPS y habilitar la protección extendida Autenticación.
Estás son solo algunas medidas que debemos tomar pero hay muchas más. Seguiremos hablando de más técnicas y defensas y como podemos auditar nuestra PKI en futuros artículos.