Certified
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Proceremos a realizar un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Certified.
Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX.
Transformaremos el archivo XML obtenido en el resultado de nmap y lo transformaremos en un archivo HTML. Levantaremos un servidor HTTP con Python3.
Comprobaremos el nombre del dominio que nos enfrentamos, el nombre del equipo y que tipo de máquina nos enfrentamos.
Procederemos a añadir la entrada en nuestro archivo /etc/hosts
Verificamos que hemos procedido a enumerar la lista de usuarios que se encuentran en el dominio de certified.htb.
Guardaremos los usuarios del dominio enumerados en el archivo users.txt.
Debido que disponemos de una lista potencial de usuarios, probaremos a realizar un AS-REP Roast Attack para intentar obtener un Ticket Granting Ticket (TGT) para luego crackearlo de manera offline.
Comprobamos que no obtenemos ningún TGT debido que ningun usuario dispone del atributo (DONT_REQ_PREAUTH) de Kerberos.
A través de la herramienta de sbmap procederemos a enumerar los recursos compartidos. En este caso, ningún recurso compartido parece tener alguna información interesante.
Ya que disponemos de credenciales de un usuario del dominio válidas, probaremos de realizar un Kerberoasting Attack para intentar obtener un Ticket Granting Service (TGS), comprobamos que obtenemos un TGS del usuario "management_svc".
Procederemos a intentar crackear el hash obtenido del TGS para obtener la contraseña del usuario en cuestión. En este caso, comprobamos que no hemos sido capaces de crackear el hash, lo cual indica que la contraseña no se encuentra en el diccionario utilizado "rockyou.txt".
Con ldapdomaindump dumpearemos toda la información del LDAP a través del usuario y contraseña que disponemos. Nos generará los resultados en distintos formatos.
Revisando el archivo "domain_users.html" verificamos que el usuario "management_svc" forma parte del grupo "Remote Management Users", con el cual podríamos conectarnos al DC a través de WinRM, PsExec, etc.
Este es el usuario que hemos obtenido el TGS (Ticket Granting Service) pero no hemos podido crackear su hash.
Realizaremos una enumeración con BloodHound a través de bloodhound-python.
Revisando BloodHound para buscar una vía potencial de escalar nuestros privilegios, nos damos cuenta que el usuario que tenemos (judith.mader@certified.htb) dispone de permisos "WriteOwner" sobre el grupo "management@certified.htb", con el cual podríamos hacernos propietario de este grupo y añadirnos debido que los miembros de este grupo disponen del privilegio de "GenericWrite" sobre el usuario (management_svc@certified.htb) con el cual podríamos llegar a realizar posteriormente otro ataque.
Esto puede ser intersante para realizar un Lateral Movement y realizar posteriormente un Shadow Credentials Attack.
A través de la herramienta de bloodyAD, procederemos a establecer al usuario "judith.mader" como propietaria del grupo "management@certified.htb".
Seguidamente procederemos a otorgarnos permisos de genericAll sobre el grupo "management@certified.htb" y posteriormente añadirnos como miembros de dicho grupo.
Ya que ahora el usuario que disponemos "judith.mader@certified.htb" forma parte del grupo "management@certified.htb" y los miembros de este disponen del privilegio de GenericWrite, podemos probar de realizar un Shadow Credentials Attack para obtener el hash NTM del usuario "management_svc@certified.htb".
Verificamos que al realizar el ataque, obtenemos un archivo .PFX y unas credenciales para el archivo en cuestión.
A continuación, deberemos de realizar un unPAC the hash para obtener el hash NTLM del usuario al cual le hemos realizado el Shadow Credentials Attack.
A través del siguiente comando, procederemos a obtener el TGT (Ticket Granting Ticket) utilizando el el certificado .PFX obtenido. Verificamos que nos genera un TGT en el archivo llamado .ccache.
Una vez con el TGT generado, procederemos a extraer el hash NTLM del usuario objetivo. Verificamos que hemos conseguido el hash NTLM del usuario "management_svc@certified.htb".
Procederemos a validar el hash NTLM obtenido del usuario "management_svc@certified.htb" para comprobar que es válido.
Una vez validado que podemos autenticarnos con el hash NTLm del usuario en cuestión y que hayamos comprobado que anteriormente con este usuario disponía de permisos para conectarse de manera remota, procederemos a acceder al WinRM a través de evil-winrm.
Verificaremos la flag de user.txt.
Procederemos de realizar una enumeración del AD a través de la herramienta adPEAS.ps1 que es un script de Powershell (parecido a winPEAS) pero en vez de buscar malas configuraciones de Windows, hace exactamente lo mismo pero en el entorno del AD.
Nos lo descargaremos en nuestra Kali, levantaremos un servidor web con Pyton y a través de IEX en el equipo Windows, lo importaremos en memoria.
Dentro del resultado del análisis nos encuentra información sobre Active Directory Certificate Services en el cual nos reporta de posiblemente sea vulnerable pero es manegada por el usuario "ca_operator@certified.htb".
Revisando nuevamente el BloodHound, comprobamos que el usuario "management_svc@certified.htb" dispone de privilegios de GenericAll sobre el usuario "ca_operator@certified.htb".
Teniendo estos permisos, podemos a llegar a cambiar las credenciales sobre el usuario "ca_operator@certified.htb".
El propio BloodHound nos indica como podemos llegar a explotar este privilegio. En este caso, debido que disponemos del acceso a la máquina Windows, podemos realizar el "Windows Abuse".
Procederemos a realizar las credenciales del usuario "CA_OPERATOR" desde la sesión de "management_svc@certified.htb" que disponemos en WinRM.
Procederemos a validar que se han modificado correctamente las credenciales del usuario en cuestión.
ADCS es el rol que maneja la emisión de certificados para usuarios, equipos y servicios en la red de Active Directory. Este servicio, si está mal configurado, puede presentar vulnerabilidades que los atacantes podrían explotar para elevar privilegios o acceder a información sensible.
Algunas de las posibles vulnerabilidades que puede tener ADCS son:
Delegación de privilegios en la emisión de certificados: Si ciertos usuarios tienen permisos para emitir certificados para otros, un atacante podría abusar de estos privilegios para obtener permisos elevados.
Mala configuración en las plantillas de certificados: Configuraciones incorrectas en las plantillas de certificados podrían permitir que un atacante solicite un certificado en nombre de otro usuario, incluso uno con privilegios elevados.
NTLM Relaying en HTTP: Si el ADCS acepta autenticación NTLM en lugar de Kerberos, un atacante podría redirigir las solicitudes para ganar acceso.
Al ejecutar este comando, Certipy escanea el entorno de Active Directory en busca de configuraciones vulnerables dentro de los servicios de ADCS. Este análisis incluye verificar permisos delegados indebidos y configuraciones inseguras en la CA. Durante la ejecución, se identificó una vulnerabilidad clasificada como ESC9.
La vulnerabildiad es sobre el CA "certified-DC01-CA" y el Template "CertifiedAuthentication".
La vulnerabilidad ESC9 en ADCS se produce debido a la delegación indebida de permisos sobre la Entidad de Certificación (CA). Específicamente, el permiso ManageCA permite que usuarios con privilegios limitados puedan realizar acciones administrativas como:
Emitir certificados arbitrarios para cualquier cuenta, incluyendo cuentas privilegiadas como Administrator
.
Modificar configuraciones críticas de la CA, afectando su comportamiento o aumentando el riesgo de abuso.
En resumen, ESC9 permite a un atacante aprovechar permisos mal configurados para obtener acceso privilegiado dentro del dominio mediante el abuso de certificados.
En este caso, disponemos de que el usuario "management_svc@certified.htb" dispone de permisos de GenericWrite sobre el usuario "ca_operator@certified.htb".
Por lo tanto, podemos realizar un Shadow Credentials Attack desde Certipy-AD. Este paso lo podríamos llegar a omitir debido que en los pasos anteriores ya hemos conseguido las credenciales del usuario "CA_OPERATOR" debido que le hemos cambiado sus credenciales.
Una vez obtenido del hash del usuario "ca_operator@certified.htb" procederemos a validar el hash NTLM obtenido.
Utilizamos Certipy para actualizar el UPN de la cuenta CA_OPERATOR, asignándole el valor de Administrator. Esto nos permite asociar cualquier certificado emitido a CA_OPERATOR con la identidad de Administrator:
Solicitamos un certificado utilizando la plantilla vulnerable CertifiedAuthentication. Este certificado se emitió con el UPN de Administrator, habilitando su uso para autenticación con privilegios elevados:
Posteriormente, restauramos el UPN de CA_OPERATOR a su valor original para minimizar evidencias de la modificación realizada.
Seguidamente utilizamos el certificado emitido para autenticarnos y verificamos que obtenemos el hash NTLM del usuario "Administrator".
Obtenido el hash NTLM, procederemos a validar las credenciales a través de netexec y una vez verificado que son credenciales correctas, procederemos a autenticarnos a través de evil-winrm.
Obtenemos la flag de root.txt.
Accederemos a y comprobaremos el resultado en un formato más cómodo para su análisis.
Debido que disponemos de credenciales de un usuario del dominio que nos aporta HackTheBox, procederemos a realizar una enumeración a través del protocolo RPC con la herramienta .
Para consultar cómo funciona Certipy y los detalles sobre esta vulnerabilidad, se puede revisar la siguiente página ->