> For the complete documentation index, see [llms.txt](https://securitylayer.gitbook.io/securitylayer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://securitylayer.gitbook.io/securitylayer/pentesting-tools/tools/certipy.md).

# Certipy

Ver maquinas: [***Fluffy***](/securitylayer/maquinas-y-modulos-de-htb/windows-easy/fluffy.md) ***(HTB)***

Desde que se publicaron las investigaciones sobre "Certified Pre-Owned", el abuso de certificados se ha vuelto una de las rutas de escalada de privilegios más críticas y comunes en entornos Windows.

Es la herramienta ofensiva por excelencia para enumerar y explotar vulnerabilidades en los ***Servicios de Certificado de Active Directory (AD CS)***. Su objetivo es identificar plantillas de certificados mal configuradas que permiten, entre otras cosas, la suplantación de identidad (impersonation) de cualquier usuario, incluidos los Administradores del Dominio.

Es fundamental para explotar los vectores conocidos como ESC1 hasta ESC11.

<details>

<summary>📌 <em><strong>Vectores PrivEsc (ESC1-ESC11) by SpecterOps</strong></em></summary>

La función de todos estos vectores es, en última instancia, la Escalada de Privilegios o la Persistencia, permitiéndote obtener un certificado que el Dominio acepte para autenticarte como un usuario de alta jerarquía (como un Domain Admin).

***Misconfiguraciones de Plantilla: ESC1 a ESC3***

* ESC1: La plantilla permite que el usuario solicitante especifique un SAN (`Subject Alternative Name`). Puedes pedir un certificado a tu nombre, pero poner "Administrator" en el SAN. El DC te creerá.
* ESC2: La plantilla tiene un uso de clave (EKU) "Any Purpose" o no tiene restricciones, lo que permite usarla para casi cualquier cosa, incluyendo subvertir la cadena de confianza.
* ESC3: Abuso de la "Plantilla de Agente de Inscripción". Obtienes un certificado que te permite pedir certificados en nombre de otros usuarios.

***Abuso de Permisos y ACLs: ESC4, ESC5 y ESC7***

* ESC4: Tienes permisos de escritura (`WriteDacl` o `WriteOwner`) sobre una plantilla. No es vulnerable ahora, pero puedes editarla para convertirla en una ESC1 y luego explotarla.
* ESC5: Vulnerabilidades en los objetos de la base de datos de AD que definen la PKI (ACLs débiles en los contenedores de servicios de certificación).
* ESC7: Tienes permisos de "Manage CA" o "Manage Certificates" sobre la propia Autoridad de Certificación. Puedes aprobar tus propias solicitudes pendientes o darte permisos de administrador de la CA.

***Ataques de Red y Configuración de CA: ESC6 y ESC8***

* ESC6: La CA tiene configurada la bandera `EDITF_ATTRIBUTESUBJECTALTNAME2`. Esto hace que todas las plantillas de la CA se vuelvan vulnerables al ataque de SAN (como ESC1), incluso si la plantilla no lo permite explícitamente.
* ESC8 (El más famoso): NTLM Relay hacia las interfaces de inscripción web de AD CS (HTTP). Si un servidor o admin se autentica contra tu máquina, retransmitas esa sesión a la web de la CA y obtienes un certificado de la víctima.

***Los Vectores "Modernos" (Post-Parche)***

* ESC9: Se basa en el atributo `msPKI-Enrollment-Flag`. Si un atacante puede modificar este valor o el mapeo de certificados, puede evadir las protecciones de "Strong Mapping" que Microsoft introdujo.
* ESC10: Abuso del mapeo de certificados débil cuando se usan cuentas con UPN (*User Principal Name*) que no coinciden con el nombre de cuenta de Sam (*sAMAccountName*).
* ESC11: Similar a ESC8, pero en lugar de HTTP, se enfoca en el protocolo ICPR (la interfaz RPC de la CA) para realizar ataques de Relay si no se requiere el cifrado de RPC.

</details>

#### ***Metodología de Uso y Comandos Principales***

Certipy se divide en módulos según la fase del ataque. La estructura típica es: \
`certipy <MODULO> <OPCIONES>`.

**1. Enumeración (**`find`**)**

El primer paso es buscar vulnerabilidades. Este comando genera archivos (.txt, .json y .zip para BloodHound) con las debilidades encontradas.

{% code expandable="true" %}

```
certipy find -u 'user' -p 'pass' -d 'corp.local' -dc-ip <IP_DC> -vulnerable -stdout
```

{% endcode %}

* -vulnerable: Filtra y muestra solo las plantillas que presentan fallos de seguridad conocidos.
* -stdout: Muestra los resultados directamente en la terminal (ideal para análisis rápido).

**2. Explotación de ESC1 (**`request`**)**

Si encuentras una plantilla que permite `ENROLLEE_SUPPLIES_SUBJECT` (ESC1), puedes solicitar un certificado para el Administrador del Dominio siendo un usuario estándar.

{% code expandable="true" %}

```
certipy request -u 'user' -p 'pass' -d 'corp.local' -ca 'CORP-CA' -template 'VulnerableTemplate' -upn 'administrator@corp.local'
```

{% endcode %}

* Esto te devolverá un archivo .pfx (el certificado y la clave privada).

**3. Autenticación y Obtención de Hash (**`auth`**)**

Una vez que tienes el archivo `.pfx`, no necesitas la contraseña del administrador. Puedes usar el certificado para obtener su hash NT.

{% code expandable="true" %}

```
certipy auth -pfx administrator.pfx -dc-ip <IP_DC>
```

{% endcode %}

* Resultado: Recibirás el hash NTLM del administrador, permitiéndote realizar un ataque de Pass-the-Hash.

**4. Relevo de Certificados (**`relay`**)**

Útil en ataques de envenenamiento (como NTLM Relay) para interceptar una autenticación y solicitar un certificado en nombre de la víctima.

{% code expandable="true" %}

```
certipy relay -target <IP_CA> -template 'Machine'
```

{% endcode %}

#### ***Flujo de Trabajo Típico (Kill Chain)***

1. Recon: `certipy find` para identificar plantillas débiles.
2. Explotación: `certipy request` para generar el certificado suplantando al objetivo.
3. Acceso: `certipy auth` para convertir el certificado en un hash usable con `psexec` o `wmiexec`.

#### ***Detalles a tener en cuenta al usar esta tool:***

* Sincronización de tiempo: AD CS es extremadamente sensible al tiempo (Kerberos). Si tu máquina tiene más de 5 minutos de diferencia con el DC, `certipy auth` fallará. Usa `ntpdate`, `rdate` o [`faketime`](/securitylayer/comand-line-tools/linux/faketime.md) para sincronizarte con el DC antes de empezar.
* Alternativa: Si `certipy` tiene problemas con las dependencias de Python en un entorno muy restrictivo, tambien existe Certify.exe (C#) para ejecución directa desde un host Windows comprometido.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://securitylayer.gitbook.io/securitylayer/pentesting-tools/tools/certipy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
