
Kit de herramientas de PowerShell para auditoría de AD CS basado en el kit de herramientas PSPKI.
Kit de herramientas de PowerShell para auditar Active Directory Certificate Services (AD CS).
Está construido sobre el kit de herramientas PSPKI (Microsoft Public License) de PKISolution. Este repositorio contiene una versión más reciente de PSPKI que la disponible en PSGallery (consulte el directorio PSPKI). Vadims Podans (el creador de PSPKI) proporcionó amablemente esta versión, ya que incluye correcciones para varios errores.
Este README es solo un punto de partida; para obtener detalles completos y orientación defensiva, consulte el libro blanco "Certified Pre-Owned".
El módulo contiene las siguientes funciones principales:
ADVERTENCIA: ¡Este código es beta! Confiamos en que Invoke-PKIAudit no afectará el entorno, ya que la cantidad de datos que consulta es bastante limitada. No hemos realizado pruebas rigurosas con Get-CertRequest en cargas de trabajo típicas de servidores CA. Get-CertRequest consulta directamente la base de datos de la CA y puede tener que procesar miles de resultados, lo que podría afectar el rendimiento.
¡SI NO HAY RESULTADOS, ESTO NO ES UNA GARANTÍA DE QUE SU ENTORNO ES SEGURO!
¡TAMPOCO PODEMOS GARANTIZAR QUE NUESTRO CONSEJO DE MITIGACIÓN HARÁ QUE SU ENTORNO SEA SEGURO O NO INTERRUMPIRÁ LAS OPERACIONES!
Es su responsabilidad hablar con su(s) equipo(s) de Active Directory/PKI/Arquitectura para determinar las mejores mitigaciones para su entorno.
Si el código se rompe, o si omitimos algo, ¡por favor envíe un issue o pull request para una solución!
Instale lo siguiente en una máquina Windows usando un símbolo del sistema de PowerShell elevado (PowerShell versión 5.1 o superior):
* El [PSPKI PowerShell module](https://github.com/PKISolutions/PSPKI). Instale con el siguiente comando:```
Install-Module -Name PSPKI
Descarga el módulo y extráelo en una carpeta. Luego, importa el módulo usando los siguientes comandos:``` cd PSPKIAudit Get-ChildItem -Recurse | Unblock-File
Import-Module .\PSPKIAudit.psd1
# Auditoría de configuraciones incorrectas de AD CS
Al ejecutar `Invoke-PKIAudit` se ejecutarán todas las comprobaciones de auditoría contra AD CS en el dominio actual, incluyendo la enumeración de varias configuraciones de la entidad de certificación y de la plantilla de certificado. Para auditar una CA específica, puede ejecutar `Invoke-PKIAudit -CAComputerName CA.DOMAIN.COM` o `Invoke-PKIAudit -CAName X-Y-Z`.
Cualquier configuración incorrecta (ESC1-8) aparecerá como propiedades en los resultados de la CA/plantilla mostrados para identificar la configuración incorrecta específica encontrada.
Si desea cambiar los grupos/usuarios utilizados para probar la inscripción/control de acceso, modifique la expresión regular `$CommonLowprivPrincipals` en la parte superior de `Invoke-PKIAudit.ps1`
Si desea exportar toda la información de la CA a un csv, ejecute: `Get-AuditCertificateAuthority [-CAComputerName CA.DOMAIN.COM | -CAName X-Y-Z] | Export-Csv -NoTypeInformation CAs.csv`
Si desea exportar TODA la información de las plantillas publicadas a un csv (no solo las plantillas vulnerables), ejecute: `Get-AuditCertificateTemplate [-CAComputerName CA.DOMAIN.COM | -CAName X-Y-Z] | Export-Csv -NoTypeInformation templates.csv`
## Explicación de la salida
Hay dos secciones principales de salida: detalles sobre las CA descubiertas y detalles sobre plantillas potencialmente vulnerables.
Para los resultados de la entidad de certificación:
| Propiedad de la entidad de certificación | Descripción |
| ------------------------------ | ------------------------------------------------------------------ |
| ComputerName | El sistema en el que se ejecuta la CA. |
| CAName | El nombre de la CA. |
| ConfigString | La cadena de configuración completa COMPUTER\CA_NAME. |
| IsRoot | Si la CA es una CA raíz. |
| AllowsUserSuppliedSans | Si la CA tiene el indicador `EDITF_ATTRIBUTESUBJECTALTNAME2` establecido. |
| VulnerableACL | Indica si la CA tiene una configuración de ACL vulnerable. |
| EnrollmentPrincipals | Principales que tienen el privilegio `Enroll` a nivel de CA. |
| EnrollmentEndpoints | Los puntos finales de inscripción de servicios web de la CA. |
| NTLMEnrollmentEndpoints | Los puntos finales de inscripción de servicios web de la CA que tienen NTLM habilitado. |
| DACL | La información completa de control de acceso. |
| Misconfigurations | ESCX que indica la configuración incorrecta específica presente (si la hay). |
Para los resultados de la plantilla de certificado: