Come al solito inizio con una scansione Nmap:

Nmap

USER FLAG

Non c’è nessuna applicazione web che gira sulla macchina, mi fa pensare che la via d’accesso sia LDAP. Una scansione più approfondita dei servizi rivela il nome del dominio CASCADE.local.

ldapsearch -h 10.10.10.182 -p 389 -x -b "dc=cascade,dc=local

Leggendo attentamente l’output della query LDAP è possibile leggere la password dell’utente r.thompson:

password base64 clk0bjVldmE=
base64 decode

Provo a collegarmi con evil-winrm ma non funziona, quindi vado di smb:

smbmap

Mi connetto a Data, l’unico share accessibile e scarico tutto sulla mia macchina.

RECURSE ON
PROMPT OFF
mget *

All’interno di una cartella c’è una mail interessante che parla di un utenza amministratore temporanea “TempAdmin” che è stata cancellata:

email

La mail inoltre dice che TempAdmin ha la stessa password che viene utilizzata per tutti gli account da amministratore, questa è una info da tenere a mente.

Scorrendo tra gli altri file, in una cartella nominata s.smith, c’è una configurazione del registro di windows di un server VNC “VNC install.reg” che contiene una password esadecimale: “Password”=hex:6b,cf,2a,4b,6e,5a,ca,0f

Al seguente link è possibile scaricare un tool che prende come input questo valore esadecimale e restituisce la password in chiaro: http://aluigi.org/pwdrec/vncpwd.zip

vncpwn

Con questa password è possibile connettersi alla macchina con l’utenza di s.smith e ottenere la user flag:

user flag

ROOT FLAG

Dopo aver enumerato la macchina con l’utente s.smith, non trovando niente, provo ad accedere con le stesse credenziali a smb, dal momento che c’erano numerosi share non accessibili con l’altra utenza. Lo share Audit che prima era inaccessibile adesso lo è:

smb s.smith

Scarico tutta la cartella e dopo aver dato un’occhiata a tutti i file, trovo delle informazioni interessanti all’interno del file Audit.db, un database sqlite:

Tabella LDAP con password utenza ArkSvc
Tabella utenti cancellati dal dominio

In una tabella trovo alcuni dettagli dell’utente TempAdmin di cui parlava la mail trovata in precedenza.

Tra gli altri file c’è un file BAT che richiama il file EXE passandogli come argomento in database Audit.db

CascAudit.exe "\\CASC-DC1\Audit$\DB\Audit.db"

Decido di ispezionare il file exe utilizzando ILSpy e trovo delle informazioni importanti:

chiave di cifratura

Il programma fa delle query LDAP e seleziona dal database SQLite l’utenza con cui fare le query. Nel codice qua sopra c’è anche la chiave per decifrare la password: c4scadek3y654321.

filtro query ldap

Continuando ad analizzare il codice vedo che la password è cifrata con algoritmo AES e per decifrarla oltre alla chiave potrei aver bisogno dell’IV, l’Initialization Vector. Negli algoritmi di cifratura a blocchi, il dato da cifrare viene suddiviso in blocchi e poiché la cifratura di ogni blocco dipende dal blocco precedente, l’initialization vector è un oggetto che viene dato in pasto al primo blocco dal momento che non esiste nessun blocco precedente.

AesCrypto

Vado a vedere la funzione che decifra e infatti trovo l’IV:

Non mi resta che decifrare la password trovata nel database per l’utenza ArkSvc:

cyberchef

https://gchq.github.io/CyberChef/

Con la password posso collegarmi alla box come ArkSvc:

arksvc shell

Il da farsi è piuttosto chiaro, ho trovato una mail in cui si parlava di un utente TempAdmin che è stato cancellato, la stessa informazione l’ho trovata all’interno del database SQLite utilizzato dal programma che faceva query LDAP sugli utenti cancellati. La stessa cosa la faccio io, dopo aver importato però il modulo Active Directory di Microsoft:

https://github.com/samratashok/ADModule

Get-ADObject -Filter 'ObjectClass -eq "user" -and isDeleted -eq $True' -IncludeDeletedObjects -Properties *

query ldap su oggetti cancellati

Espando le proprietà dell’utente TempAdmin e trovo la password codificata base64:

Get-ADObject -Filter 'ObjectClass -eq "user" -and isDeleted -eq $True' -IncludeDeletedObjects -Properties *

TempAdmin properties

echo -n YmFDVDNyMWFOMDBkbGVz |base64 -d

baCT3r1aN00dles

Con la password mi connetto come Administrator e prendo la flag di root:

root flag