Timelapse
Máquina de dificultad fácil de la plataforma HackTheBox
Comprobación
Comenzamos con esta máquina creándonos como siempre un directorio con el mismo nombre de la máquina, metiéndonos dentro y con la utilidad “machine” nos creamos nuestros directorios de trabajo

Una vez que los tenemos nos vamos a reconocimiento y le lanzamos unas trazas ICMP a la máquina víctima para comprobar si la podemos ver a nivel de red

Como podemos observar la vemos sin ningún tipo de problema por lo que vamos a empezar con el escaneo de puertos
Puertos
Al igual que en todas las máquinas vamos a comenzar con un escaneo básico de puertos para descubrir qué puertos son los que están activos

Este es el escaneo que solemos hacer y en el que incluimos parámetros de nmap que nos ayudan a ir más rápido y a ser más sigilosos, por ejemplo el parámetro -sS nos permite no efectuar un three-way handshake lo que hace que sea más rápido y sigiloso ya que no deja evidencias de que se haya establecido una conexión, –min-rate 5000 nos permite especificarle a la herramienta que no queremos que se efectúe el escaneo con una velocidad menor a 5000 paquetes por segundo, -n le indica a nmap que no queremos que haga resolución DNS, -Pn para que no nos haga descubrimiento de hosts a través del protocolo ARP y por último -oG para exportar todas las evidencias en un formato que sea fácil de tratar más tarde con regex
Una vez que termina el escaneo, con la herramienta portsClean.sh vamos a poder extraer los datos más relevantes del escaneo

Podemos observar que tenemos muchos puertos, entre ellos el 88 que es el que utiliza Kerberos lo que nos puede indicar que seguramente estemos ante un controlador de dominio
Ahora que ya sabemos qué puertos están activos vamos a proceder a aplicarle un escaneo específico a estos puertos para ver qué servicios y versiones corren

De esta forma con -sC lanzamos los scripts principales que tiene nmap programados en Lua, con -sV determinamos qué servicio y versión están corriendo para esos puertos y por último con -oN exportamos todo el output que nos devuelve nmap en el mismo formato a un archivo llamado “versiones”
Una vez que termina el escaneo con nuestro cat (que es un alias de bat) le vamos a indicar que queremos que nos abra el archivo como si fuese un script en Ruby para que nos lo represente con colores

Podemos ver que hay muchos servicios corriendo en este DC como por ejemplo, Kerberos, LDAP, NetBIOS, SMB, entre otros
Usuario sin privilegios
Vamos a comenzar sacando el nombre de dominio del DC al que nos estamos enfrentando

Por ahí vemos que es “timelapse.htb”, si nosotros hacemos un ping ahora apuntando a este dominio, no nos va a resolver a la IP porque no está contemplado dentro del /etc/hosts, para ello vamos a utilizar un parámetro de netexec que te genera un fichero con todo definido perfecto para poder incorporarlo en el /etc/hosts

Por ahí lo tenemos, ahora lo que vamos a hacer es incorporarlo con sponge

Ahora que está contemplado el dominio dentro del /etc/hosts vamos a proseguir con el reconocimiento de la máquina en busca de información
Lo primero que suelo hacer es revisar si me deja listar los recursos compartidos a nivel de red de la máquina víctima

Vemos que me deja y que hay recursos poco usuales como por ejemplo “Shares”, por lo que vamos a investigar qué es lo que hay dentro de ese recurso

Dentro de Shares hay dos directorios más “Dev” y “HelpDesk”, en el directorio “Dev” vemos que hay un archivo “winrm_backup.zip” el cual nos vamos a traer a nuestra máquina para ver si podemos descomprimirlo

Antes de seguir con el archivo este vamos a ver qué es lo que hay dentro de “HelpDesk”

Vemos archivos .docx sobre LAPS, que para el que no lo sepa LAPS es una herramienta de Windows que proporciona una contraseña a los usuarios administradores locales del sistema
Por lo que si obtenemos acceso al sistema como un usuario que esté en el grupo LAPS_Readers podría llegar a tensarse la cosa
De momento volvemos con el archivo .zip
Al intentar descomprimirlo vemos que nos pide contraseña por lo que podemos probar con zip2john para intentar sacar un hash y luego crackearlo

Hemos obtenido la contraseña por lo que ahora sí que podemos ver qué es lo que hay dentro del archivo cifrado

Vemos que tenemos un archivo .pfx, estos archivos contienen un certificado digital junto con su clave privada, todo empaquetado y protegido por contraseña
Si yo me intento con este archivo crearme un certificado con openssl vemos que no nos deja porque nos pide contraseña

Así que vamos a tener que crackear la contraseña por fuerza bruta para poder crearnos el certificado y la clave privada
Para poder llegar a sacar la contraseña voy a utilizar crackpkcs12

Ahora que tenemos la contraseña sí que vamos a poder crearnos nuestro certificado y clave privada

Como tengo un certificado y una clave privada puedo conectarme a la máquina por el puerto 5986 ya que es el puerto de servicio de administración remota de Windows

Vemos que nos hemos podido conectar perfectamente y dentro del escritorio del usuario “legacyy” vemos que está la primera flag

Una vez que tenemos esta primera flag vamos a intentar escalar al usuario Administrador del dominio
Privilegios
Podemos observar que en el archivo de historial de comandos de PowerShell se contempla lo siguiente

El usuario “svc_deploy” ha estado ejecutando comandos para poder cambiarse la contraseña por la que está ahí contemplada, por lo que vamos a validar con netexec si esa contraseña sigue siendo válida

PD: En la contraseña le he metido un para que el dólar no me dé problemas de sintaxis
Genial pues vemos que tenemos la contraseña del usuario svc_deploy, antes de intentar conectarnos como este usuario vamos a comprobar si está en el grupo de “Remote Management Users” para poder llegar a conectarnos a la máquina como este usuario

Vemos que efectivamente está y que también está dentro del grupo “LAPS_Readers”, el cual es un grupo peligroso porque podríamos llegar a ver las contraseñas de los usuarios que las tengan ahí guardadas
Por el momento vamos a intentar conectarnos a la máquina como el usuario svc_deploy

Como podemos ver nos hemos conectado sin ningún problema por lo que vamos a intentar conseguir las credenciales de los usuarios que las tengan almacenadas en LAPS, para ello vamos a hacer uso del siguiente repositorio

Una vez que nos lo bajamos al final del archivo .ps1 vamos a añadir lo siguiente

Esto lo hacemos para que se ejecute la función que está definida en este archivo .ps1 una vez que importemos este módulo en PowerShell
Ahora que tenemos todo listo guardamos y con python3 nos montamos un servidor HTTP

Y dentro de la máquina haciendo uso de IEX vamos a descargarnos el contenido del archivo .ps1 y a la misma vez importarlo

Esperamos un poco y vemos que nos reporta lo siguiente


Vemos que solamente hay una contraseña por lo que nos la vamos a copiar y vamos a realizar un password spraying para determinar si esta contraseña le sirve a algún usuario

Y podemos ver que la contraseña es válida para el usuario Administrador por lo que ya solo faltaría conectarnos con evil-winrm y visualizar la flag la cual está en el escritorio del usuario TRX
