WriteUp CTF Cascade

Introducción

Cascade es una máquina Windows que trata sobre la recuperación de credenciales de Windows. Encontraré las credenciales de una cuenta en los resultados de LDAP y las usaré para obtener acceso a SMB, donde encuentro una configuración de VNC con una contraseña de usuario diferente. A partir de ahí, obtengo un shell y acceso a una base de datos SQLite y un programa que lee y descifra una contraseña.

Esa contraseña permite el acceso a una cuenta que es miembro del grupo de reciclaje de AD, que puedo usar para encontrar una cuenta de administrador temporal eliminada con una contraseña, que aún funciona para la cuenta de administrador principal, proporcionando un Shell.

Enumeración

Comenzamos enumerando los servicios que tiene abiertos nuestro objetivo.

Tenemos bastantes puertos abiertos. Sin embargo, Kerberos (88), LDAP (389) y SMB (445) son los más interesantes. Nmap ya nos da un poco de información sobre el dominio al darnos el nombre de dominio: cascade.local . Revisando rápidamente SMB, parece que no tenemos ningún acceso como usuario anónimo. Por lo tanto, revisemos LDAP y veamos si obtenemos alguna información útil.

Para enumerar LDAP, primero obtendré el contexto de naming context:

Para volcar todo en un archivo ejecutamos:

Si quisiera obtener solo a las personas, ejecutaríamos:

Parece una contraseña codificada en base64. Vamos a decodificarla de la siguiente manera:

Vamos a comprobar si con esta contraseña y el usuario r.thompson podemos conectarnos a través de WinRM.

No obtuvimos acceso a través de WinRM.

Probamos con SMB.

Vamos a comprobar que recursos podemos enumerar a través de SMB.

Tanto el recurso Audit como el Data me parecen muy interesantes. También podríamos haber usado smbmap para enumerar estos recursos compartidos.

Smbmap además de enumerar los recursos compartidos, también nos brinda información sobre nuestros permisos para cada recurso compartido. Esto muestra que no tenemos acceso al recurso Audit.

Otra forma de realizar la enumeración de recursos compartidos es utilizando la herramienta enum4linux.

Ahora que sabemos que el único recurso compartido interesante al que podemos acceder es Data, enumeraremos este recurso compartido.

De las cinco carpetas descargar, solo IT contienen archivos. Vamos a ver qué información contiene.

Tras listar los archivos que encontramos en la carpeta IT, encontramos un archivo interesante en el directorio “IT/Temp/s.smith/VNC Install.reg”.

En el fichero de instalación de VNC encontramos un candidato a contraseña cifrada “Password”=hex:6b,cf,2a,4b,6e,5a,ca,0f.` Para descifrar esta contraseña, vamos a utilizar la herramienta vncpasswd.py, que podemos descargar en el enlace.

Flag user.txt

Ahora que tenemos contraseña para el usuario s.smith, vamos a probar si estas credenciales son correctas con crackmapexec.

Esto significa que podemos conectarnos con estas credenciales a la máquina víctima utilizando las credenciales del usuario s.smith. Nos conectamos a la máquina víctima con la tool evil-winrm, y buscar, la flag user.txt

Elevación de privilegios

Una vez obtenida la flag de usuario, vamos a a intentar saltar a otro usuario o al administrador. Vamos a utilizar smbclient para verificar los recursos compartidos para el usuario s.smith.

No pudimos acceder al recurso Audit$ con el usuario r.thompson, pero con el usuario s.smith, sí que tenemos acceso a eso.

Dentro del recurso compartido Audit$ encontramos una base de datos Audit y un archivo ejecutable CascAudit.exe.

El ejecutable es un ensamblado .NET y el archivo es una base de datos SQLite.

Vamos a empezar inspeccionando el archivo de base de datos, para ello ejecutamos el cliente sqlite3.

La tabla Ldap contiene el nombre ‘ArkSvc’ y lo que parece una password ‘BQO5l5Kj9MdErXx6Q6AGOw==’.

La tabla DeletedUserAudit contiene información sobre las cuentas eliminadas donde TempAdmin es una de ellas, pero donde no vemos ni contraseñas ni hashes.

La contraseña parece estar encriptada o no esta codificada en base64. Intentamos decodificarla utilizando otras bases, pero no fue posible. Vamos a analizar los otros archivos descargados.

Ingeniería inversa

El archivo CascAudit.exe es un programa utilizado por la base de datos Audit.db. El archivo CascCrypto.dll es un archivo dll utilizado por el programa CascAudit.exe, que contiene las funciones de cifrado y descifrado de este último.

Al depurar el archivo “CascAudit.exe”, con la herramienta dotPeek, encontramos una clave.

La key es c4scadek3y654321.

Con respecto a la DLL CascCrypto, el análisis del método DecryptString revelará el algoritmo de cifrado utilizado, en este caso, AES en modo CBC, así como el valor del vector IV: 1tdyjCbY1Ix49842. También nos confirma que la cadena final está codificada en formato Base64.

Con las tres claves encontradas en los archivos descargados, ya tenemos todo lo necesario para descifrar la contraseña del usuario ArkSvc, IV: 1tdyjCbY1Ix49842, Key: c4scadek3y654321 y la cadena cifrada: BQO5l5Kj9MdErXx6Q6AGOw==.

En el código fuente podemos ver que usa AES 128 bits o cbc. Con CyberChef podemos extraer la contraseña.

Con el usuario arksvc y la password w3lc0meFr31nd, vamos a intentar conectarnos a la máquina víctima a través de evil-winrm. Antes comprobamos si las credenciales son correctas con crackmapexec.

Sabiendo que las credenciales son correctas, vamos a conectarnos al objetivo con evil-winrm.

Ejecutamos winPEAS, para realizar un escaneo automático que nos pudiese reportar alguna pista o algún archivo que nos pudiese ser útil para la elevación de privilegios. Pero no devuelve ninguna información relevante.

Vamos a determinar a qué grupos pertenece el usuario arksvc.

El usuario es miembro del grupo CASCADE/AD Recycle Bin.

Anteriormente, como usuario r.thompson, encontramos otros dos archivos interesantes en los siguientes recursos compartidos:

  • \IT\Email Archives\ Meeting_Notes_June_2018.html
  • \IT\Email Archives\ Meeting_Notes_June_2018.html

Flag root.txt

Si recordamos, TempAdmin se encontraba en la tabla DeletedUserAudit de la base de datos Audit.db. En la imagen del correo electrónico se dice que el usuario TempAdmin tiene la misma contraseña que el administrador, sabemos que este usuario fue eliminado y que se encuentra en la papelera de reciclaje. Recordemos también que el usuario arksvc es miembro del grupo llamado AD Recycle Bin.

Después de investigar un poco en Google, encontré este artículo o este otro, donde usando el comando Get-ADObject -Filter {SamAccountName -eq ‘TempAdmin’} -IncludeDeletedObjects -Properties *. Vamos a probarlo.

Y desciframos la contraseña encontrada:

En el email se comentaba que la contraseña es la misma para el usuario TempAdmin que para el Administrador, probémoslo:

Accedemos a través de evil-winrm, ya podremos buscar la flag root.

Y ya tendremos resuelta la máquina Cascade.

No responses yet

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *