Resolución del CTF CURIOSITY 2
💢Plataforma:. TheHackersLabs 💢
❌Nombre: Curiosity2
📈Nivel: Experto
💻OS: Active Directory
🙋🏽♂️Creador: TK0B4K
https://thehackerslabs.com/curiosity2/
Enumeración
Escaneo de puertos
Realizamos un escaneo de todos los puertos para saber cuáles están activos.


Los parámetros utilizados son:
- -p- : Escaneo de todos los puertos. (65535)
- -sS : Realiza un TCP SYN Scan para escanear de manera rápida que puertos están abiertos.
- -sC : Realiz una escaneo con los scripts basicos de reconocimiento
- -sV : Realiza un escaneo en buqueda de los servicios
- –min-rate 5000: Especificamos que el escaneo de puertos no vaya más lento que 5000 paquetes por segundo, el parámetro anterior y este hacen que el escaneo se demore menos.
- -n: No realiza resolución de DNS, evitamos que el escaneo dure más tiempo del necesario.
- -Pn: Deshabilitamos el descubrimiento de host mediante ping.
Antes de nada nos con responder para hacer un envenenamiento ntlm

Obetenmos los hashes de Appolonia y sqldb.


Y lo rompemos con john para obtener las contraseña de sqldb y Appolonia.

Vemos que con uno de ellos podemos acceder por winrm.

Y como sabemos que tenemos una base de datos la enumeraremos para ver que tenemos.

En este caso nos interesa las base de datos tooldb el cual solo tenemos acceso con el usuario sqldb el cual tenemos contraseña. y nos da un hash y un usuario.

La romperemos con hash obteniendo su contraseña.

Podemos entrar por winrm


Llegados a este punto enumeraremos con bloodhound, así que subimos Sharhound lo primero de todo y lo ejecutaremos.

Nos descargarnos el .zip que nos a generado.

Volviendo a BloodHound vemos que el usuario que hemos conseguido es miembro del SVC_ACCOUNTS, El cual este Grupo puede leer la contraseña GMSA (ReadGMSAPassword) del usuario TOOLSDB y permitir actuar sobre el controlador de dominio pero en este caso al tener LDAP hay que hacerlo de forma diferente.

Por lo cual nuestro usuario actual es miembro de el grupo SVC_ACCOUNTS, el cual pertenece al usuario GMSA_SQL, que puede cambiar la contraseña a toolsdb, por lo cual tenemos el permiso de cambiar la contraseña al usuario TOOLSDB
Vayamos por pasos:
Extraemos el password de la cuenta GMSA_SQL mediante la cuenta sqlsvc. Para ello primero cargamos el módulo DSIinternals que tenemos en la carpeta temp.
Import-Module "C:\temp\DSInternals\4.14\DSInternals.psd1"
Ahora guardamos en una variable la propiedad msDS-ManagedPassword de la GMSA
$gmsa = Get-ADServiceAccount GMSA_SQL -Properties msDS-ManagedPassword
Guardamos la contraseña en otra variable
$secpass = ConvertTo-SecureString -String $pass.'CurrentPassword' -AsPlainText -Force
Nos guardamos las credenciales obtenidas dentro de otra variable
$cred = New-Object System.Management.Automation.PSCredential GMSA_SQL, $secpass
Como la cuenta GMSA tiene permisos para resetear el password de la cuenta toolsdb y ya tenemos las credenciales de la cuenta GMSA procedemos a resetear el password de la cuenta toolsdb
Invoke-Command -ComputerName 127.0.0.1 -ScriptBlock {Set-ADAccountPassword -Identity toolsdb -reset -NewPassword (ConvertTo-SecureString -AsPlainText 'NewP@ssword2024@' -force)} -Credential $cred

Ahora nos conectamos con el usuario toolsdb y hacemos la consulta para extraer los usuarios de la base de datos toolsdb.

Recordemos que en la carpeta Documents del usuario sqlsvc teníamos una base de datos de kepass que podemos descargarnos a nuestra máquina atacante.

Nos creamos un script para ir probando todas las contraseñas que nos hemos encontrados en la base de datos con la de Database.kdbx

Y nos da un usuario y contraseña.

El usuario al ser administrador de dominio podemos extraer todos los hashes. consiguiente el del adminsitrador.


Especial agradecimiento al compañero TK0B4K por la creación y el conocimiento aportado en esta máquina. Un fuerte abrazo!!