Demostración en vídeo de este post
Certipy es una herramienta que permite enumerar las características de una instalación de AD CS (Active Directory Certificate Services). Cuenta con varias opciones y módulos, que entre otras cosas, permiten consultar las plantillas disponibles en dicho servicio y detectar vulnerabilidades. Para utilizar esta herramienta, a diferencia de Certify, es necesario instalar el programa en la máquina local del atacante y contar con un usuario de dominio. En el caso de Certify, es necesario subir el binario a la máquina comprometida y a continuación, ejecutar el programa. Esta forma de trabajar puede traer algunos problemas, especialmente en entornos muy controlados en donde se analiza todo lo que se escribe en disco y, evidentemente, al subir un binario como el de Certify, se pueden producir alertas y un AV detectaría el binario como una muestra maliciosa. Con Certipy, al ser una herramienta que se ejecuta desde la máquina del atacante, no hace falta subir nada a las estaciones de trabajo o controladores de dominio, solo se necesita un usuario válido.
El proceso de instalación es simple, se puede hacer directamente con PIP o realizando la instalación con el script «setup.py». Por otro lado, algunas de las opciones que soporta son las mismas que tienen los scripts en Impacket, esto se debe porque es una de las librerías que utiliza esta herramienta.
Las operaciones básicas que admite esta herramienta son: Find, Request Auth, Cert, Forge y PTT. Tiene otras opciones, pero estas son las más interesantes
El primer comando que se suele utilizar es «find», el cual permite enumerar las plantillas que se encuentran disponibles en el servicio de AD CS. Por defecto, es capaz de generar ficheros en formato TXT, JSON y ZIP, este último, compatible con BloodHound, de tal manera que es posible subirlo a dicha herramienta y visualizar sus contenidos de forma visual.
Si se ha conseguido un listado de plantillas, lo más común es solicitar certificados al servicio de AD CS. Con esta herramienta, es posible solicitar, recuperar y renovar certificados. Para ello, es necesario utilizar la opción «req» disponible en la herramienta.
A continuación, dicho certificado generado se puede emplear para llevar a cabo el proceso de autenticación.
Con la opción «req» se ha podido obtener un certificado, ahora puede usarse la opción «auth» para utilizar la extensión PKINIT de Kerberos o el protocolo Schannel para llevar a cabo el proceso de autenticación. En el caso de Kerberos, se podrá obtener un ticket TGT y el hash NT para el usuario con el que se ha generado el certificado, mientras que con Schannel, se abrirá una conexión con el servicio LDAPS para generar una shell interactiva con un conjunto de comandos LDAP limitados.
Es un ataque similar al de «Golden Ticket» para Kerberos, con la diferencia de que en este caso, un atacante cuenta con el certificado de la CA y su clave privada. Con estos elementos podrá crear certificados de autenticación para cualquier usuario del dominio. Si se tiene acceso a una cuenta con privilegios elevados, por ejemplo, la cuenta del administrador, será posible recibir el certificado y la clave privada de la CA de forma automática utilizando el parámetro «-backup».
Como se puede ver en la imagen anterior, se almacena todo, el certificado y la clave privada, en un fichero cuyo formato es PFX.
Con esto es suficiente para ejecutar nuevamente la herramienta con el parámetro «forge».
Como se puede apreciar, una vez generado el certificado para el usuario especificado, se puede realizar el proceso de autenticación y, en este caso, la herramienta devolverá el hash NT de la cuenta y un ticket TGT que podrá ser utilizado posteriormente.
Estas son las opciones más interesantes que se encuentran disponibles en la herramienta. En mi opinión, resulta más interesante que Certify dado que no tienes la necesidad de ejecutar nada en una estación del trabajo unida al dominio, solo necesitas tener conectividad con un DC y un usuario. Además, del mismo modo que Certify, Certipy soporta las técnicas de elevación de privilegios por medio de ADCS descritas en el paper «Certified Pre-Owned – Abusing Active Directory Certificate Services» de Will Schroeder y Lee Christensen.
Te invito a que pruebes esta herramienta en tu entorno, merece mucho la pena.
Un saludo y Happy Hack!
Adastra.