Hack The Box — Cascade Walkthrough

Hack The Box — Cascade Walkthrough

Enumeración

Comenzamos realizando un escaneo rapido de todos los puertos abiertos:

nmap -p- — open -sT — min-rate 5000 -vvv -n -Pn 10.10.10.182

Enumeracion LDAP

Tenemos el puerto de LDAP abierto por lo que podemos encontrar informacion util si lo enumeramos con ldapsearch.

ldapsearch -x -H “ldap://10.10.10.182” -D ‘’ -w ‘’ -b “DC=cascade,DC=local” | grep sAMAccountName:

Crearemos una lista con dichos usuarios

Podemos intentar buscar contraseñas buscando por strings como passwd o Pwd/pwd

ldapsearch -x -H “ldap://10.10.10.182” -D ‘’ -w ‘’ -b “DC=cascade,DC=local” | grep Pwd

Encontramos un campo con una contraseña en base64 vamos a desencriptarla.

Validamos que la credencial pertenece a r.thompson

No tiene acceso winrm pero si a SMB

Encontramos contenido en Data por lo que descargaremos todo recursivamente para enumerarlo mejor.

Una vez descargado encontramos algunos logs y registros interesantes

En el html vemos que hay informacion sobre un usuario temporal TempAdmin y que la contraseña es la misma que la del administrador esto sera importante para despues.

Explotación

Si seguimos enumerando vemos un registro de VNC donde hay una contraseña en hexadecimal, si intentamos crackearla con xxd no funciona ya que el resultado no es legible para ello necesitaremos un script para contraseñas de vnc.

En concreto usaremos la herramienta vncpwd

Lo clonamos y compilamos con make

A continuacion guardamos la contraseña crackeada con xxd ya que la herramienta crackeará el resultado de la contraseña hexadecimal y no la contraseña original.

Validamos las credenciales

Pertenece al usuario s.smith que ademas pertenece al grupo de administracion remota de Windows

Volvemos a comprobar sus accesos a SMB

Tenemos un nuevo acceso a Audit, volvemos a descargar todo

Escalada de privilegios

Analizamos los binarios

Vemos un archivo de base de datos vamos a explorarlo con sqlite3

Encontramos la contraseña de arksvc sin embargo no es crackeable con base64.

Vamos a analizar el binario CascAudit.exe el cual es un archvio .NET por lo que lo analizaremos con la herramienta dotpeek

namespace CascAudiot
{
// Token: 0x02000008 RID: 8
[StandardModule]
internal sealed class MainModule
{
// Token: 0x0600000F RID: 15 RVA: 0x00002128 File Offset: 0x00000328
[STAThread]
public static void Main()
{
if (MyProject.Application.CommandLineArgs.Count != 1)
{
Console.WriteLine("Invalid number of command line args specified. Must specify database path only");
return;
}
checked
{
using (SQLiteConnection sqliteConnection = new SQLiteConnection("Data Source=" + MyProject.Application.CommandLineArgs[0] + ";Version=3;"))
{
string str = string.Empty;
string password = string.Empty;
string str2 = string.Empty;
try
{
sqliteConnection.Open();
using (SQLiteCommand sqliteCommand = new SQLiteCommand("SELECT * FROM LDAP", sqliteConnection))
{
using (SQLiteDataReader sqliteDataReader = sqliteCommand.ExecuteReader())
{
sqliteDataReader.Read();
str = Conversions.ToString(sqliteDataReader["Uname"]);
str2 = Conversions.ToString(sqliteDataReader["Domain"]);
string encryptedString = Conversions.ToString(sqliteDataReader["Pwd"]);
try
{
password = Crypto.DecryptString(encryptedString, "c4scadek3y654321");
}
catch (Exception ex)
{
Console.WriteLine("Error decrypting password: " + ex.Message);
return;
}
}
}
sqliteConnection.Close();
}
catch (Exception ex2)
{
Console.WriteLine("Error getting LDAP connection data From database: " + ex2.Message);
return;
}
...[snip]...

Lo que hace es abrir una conexion a la base de datos de sqlite , lee la tabla LDAP y desencripta la contraseña que vimos antes.

El metodo que usa es AES , por lo tanto aparte de la contraseña encriptada necesitamos una key que esta hardcodeada c4scadek3y654321

Vamos a desencriptarla en ciberchef

Validamos la contraseña

Se trata de la contraseña de arksvc vamos a acceder por winRM

Pertenece al grupo AD Recicle Bin el cual permite la Recuperación de Objetos de Active Directory (o Recycle Bin) es una característica añadida en Server 2008 que permite a los administradores recuperar elementos eliminados, al igual que la papelera de reciclaje lo hace con los archivos.

El artículo vinculado proporciona un comando de PowerShell para consultar todos los objetos eliminados dentro de un dominio.

Active Directory Object Recovery Using the Recycle Bin

Hemos visto antes la existencia de un usuario temporal llamado TempAdmin el cual esta eliminado porque no le vemos con netuser vamos a ejecutar un comando de powershell para ver todos los elementos eliminados.

Get-ADObject -filter ‘isDeleted -eq $true -and name -ne “Deleted Objects”’ -includeDeletedObjects

Vemos el usuario tempadmin, ahora podriamos buscar en sus atributos si guarda con el la contraseña.

Get-ADObject -filter { SAMAccountName -eq “TempAdmin” } -includeDeletedObjects -property *

Encontramos de nuevo un campo legacypwd en el que esta encriptada en base64, como leímos antes la contraseña de este usuario temporal es la misma que la de Administrator.

Se confirma que es valida para el Administrator.

Tags: