Voleur HackTheBox (Intermediate)

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.95 ( https://nmap.org ) at 2025-10-13 11:07 EDT
Nmap scan report for 10.10.11.76
Host is up (0.040s latency).

PORT      STATE    SERVICE       VERSION
53/tcp    open     domain        Simple DNS Plus
88/tcp    open     kerberos-sec  Microsoft Windows Kerberos (server time: 2025-10-13 23:07:23Z)
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: voleur.htb0., Site: Default-First-Site-Name)
445/tcp   open     microsoft-ds?
464/tcp   open     kpasswd5?
636/tcp   open     tcpwrapped
2222/tcp  open     ssh           OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 42:40:39:30:d6:fc:44:95:37:e1:9b:88:0b:a2:d7:71 (RSA)
|   256 ae:d9:c2:b8:7d:65:6f:58:c8:f4:ae:4f:e4:e8:cd:94 (ECDSA)
|_  256 53:ad:6b:6c:ca:ae:1b:40:44:71:52:95:29:b1:bb:c1 (ED25519)
3268/tcp  open     ldap          Microsoft Windows Active Directory LDAP (Domain: voleur.htb0., Site: Default-First-Site-Name)
3269/tcp  open     tcpwrapped
5985/tcp  open     http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9398/tcp  filtered unknown
49664/tcp open     msrpc         Microsoft Windows RPC
54784/tcp open     msrpc         Microsoft Windows RPC
62110/tcp open     ncacn_http    Microsoft Windows RPC over HTTP 1.0
62111/tcp open     msrpc         Microsoft Windows RPC
62123/tcp open     msrpc         Microsoft Windows RPC
62136/tcp open     msrpc         Microsoft Windows RPC
Service Info: Host: DC; OSs: Windows, Linux; CPE: cpe:/o:microsoft:windows, cpe:/o:linux:linux_kernel

Host script results:
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
| smb2-time: 
|   date: 2025-10-13T23:08:17
|_  start_date: N/A
|_clock-skew: 8h00m00s

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 101.42 seconds

Veremos varios puertos interesantes, entre ellos el SMB, WinRM, etc... Nos muestra un dominio llamado voleur.htb el cual nos vamos añadir a nuestro archivo hosts.

Lo guardamos y seguimos realizando un pequeño fuzzing general.

Si leemos la informacion de la maquina de HTB veremos que nos proporcionan unas credenciales de acceso como en un pentesting real:

Teniendo estas credenciales vamos a probarlas para obtener un TGT pero antes vamos a modificar la zona horaria de nuestra maquina para que este enlazada con la de la maquina victima, ya que muchas veces en este tipo de maquinas vienen errores de este estilo:

Info:

Una vez establecida la zona horaria de dicha maquina, vamos a probar a lanzar el siguiente comando para intentar obtener el TGT del usuario de esta forma:

Info:

NOTA: Tiene que ser de forma seguida, ya que si pasa mucho tiempo entre la maquina y tu maquina dara un error.

Vamos a exportar en la variable de kerberos el archivo generado.

Ahora vamos a probar por LDAP a ver si el usuario esta correctamente autenticado por kerberos gracias al archivo exportado/generado con su TGT.

Info:

Veremos que ha funcionado, por lo que vamos a listar los usuarios gracias a estas credenciales con el TGT del archivo mediante kerberos.

Info:

Veremos varios usuarios los cuales vamos a meter en una lista de usuarios, simplemente para saber cuales tenemos.

users.txt

Ahora teniendo esa autenticacion vamos a provecharla para volcarnos la informacion con BloodHound de esta forma:

BloodHound

Vamos ha descargarnos en un ZIP la informacion del dominio para luego pasarsela a BloodHound.

Info:

Ahora vamos a instalar BloodHound de forma rapida en un docker:

URL = Download BloodHound en Docker

Info:

Ahora que esta importado en nuestro docker y levantado podremos acceder a el desde la siguiente URL.

Nos logueamos con las credenciales propocionadas por la herramienta, entrando nos pedira cambiar las credenciales y ya nos metera dentro:

Una vez dentro vamos a importar el .zip y tendremos que esperar un poco a que cargue todos los datos, despues cuando vayamos al dashboard principal veremos todos los datos, vamos a investigar el usuario ryan.naylor a ver que tiene.

Vemos que el usuario ryan.naylor es del grupo FIRST-LINE-TECHNICIANS y este a su vez:

Vemos que este grupo tiene los privilegios WriteOwner, WriteDACL, GenericWrite respecto al grupo de Administradores, esto es muy interesante, pero no podemos hacer nada respecto a dicho grupo simplemente pertenecemos a el, vamos a enumerar los recursos compartidos del SMB:

Info:

Veremos un recurso llamado IT en el cual podemos entrar, vamos a ver que hay dentro de esta forma:

Info:

Veremos que ha funcionado, vamos a listar las carpetas compartidas y meternos dentro del IT.

Info:

Ahora usaremos el IT de esta forma:

Info:

Si nos movemos dentro de dicha carpeta...

Info:

Vamos a descargarnos dicho archivo a ver que vemos dentro del mismo:

Ahora vamos a salirnos con exit y leer el archivo a ver que contiene, pero si lo intentamos leer veremos que esta encriptado, por lo que vamos a intentar crackearlo:

Info:

Veremos que ha funcionado, vamos a utilizar dicha contraseña para decodificarlo y ver que contiene.

Info:

Veremos informacion muy valiosa:

INFO

Vemos que con el usuario svc_ldap podemos hacer esto:

Podremos de alguna forma tener permisos de GenericWrite sobre el usuario LACEY.MILLER.

Vamos a realizar lo siguiente, obtendremos un TGT del usuario svc_ldap para poder utilizarlo:

Info:

Una vez generado esto, vamos a exportarlo en nuestra variable de kerberos.

Escalate user svc_winrm

Ahora vamos a probarlo haciendo lo siguiente:

Info:

Veremos que funciona, por lo que vamos a realizar un kerberoasting sobre los usuarios con este usuario, vamos a descargarnos de un repo la herramienta que vamos a utilizar.

URL = GitHub TargetedKerberos Herramienta

Info:

Veremos que ha funcionado, hemos obtenido los hashes TGT de los usuarios svc_winrm y lacey.miller, por lo que vamos a probar lo siguiente:

Vamos a guardar los hashes en un archivo.

hash.lacey.miller

hash.svc_winrm

Si probamos con el usuario svc_winrm veremos lo siguiente:

Info:

Veremos que ha funcionado, por lo que vamos a obtener un TGT de esta forma para autenticarnos por WinRM con dicho TGT como hemos echo en otras ocasiones.

Info:

Ahora exportaremos la variable y añadiremos el dominio dentro del archivo kerberos para que no de errores con el KDC.

Si porbamos a conectarnos con dicho usuario de esta forma:

Info:

Veremos que ha funcionado, por lo que leeremos la flag del usuario.

user.txt

Escalate Privileges

Este usuario svc_winrm como tal no nos es muy util, pero recordemos que el usuario svc_ldap pertenece al grupo de RESTORE_USERS que ese si es interesante, ahora teniendo una shell interactiva podremos escalar al usuario svc_ldap mediante RunasCs.exe que nos tendremos que descargar.

URL = Download RunasCs.exe ZIP GitHub

Una vez descargado el .zip del RunasCs vamos a descomprimirlo.

Info:

Ahora desde la shell vamos a descargarnos el RunasCs.exe llendo al directorio Downloads de nuestra carpeta de usuario para que podamos utilizarlo.

Info:

Ahora si desde una shell de Windows poniendo shell en el meterpreter...

Pero antes nos pondremos a la escucha:

Ahora si enviamos este comando...

Info:

Ahora si volvemos a donde tenemos la escucha, veremos lo siguiente:

Veremos que obtenemos una shell como el usuario svc_ldap vamos a consultar los usuarios eliminados de esta forma:

Info:

Vemos que habia un usuario llamado Todd Wolfe, vamos a probar a recuperarlo de esta forma:

Info:

Veremos que ha funcionado y recordemos que la contraseña del excel que vimos anteriormente era NightT1meP1dg3on14 vamos a probar si sigue funcionando de esta forma:

Info:

Ahora exportamos la variable:

Y si vemos en BloodHound lo que pude hacer este usuario, veremos que tiene un grupo asociado llamado SECOND-LINE-TECHNICIANS y acordemonos de que la informacion la encontramos por SMB por lo que vamos a probar a listar los recursos SMB con este usuario utilizando su TGT a ver que vemos.

Info:

Vemos que sigue estando el de IT por lo que vamos a meternos dentro del mismo, como hicimos anteriormente:

Info:

Ahora vamos a poner los siguiente comandos para desplazarnos al recurso de IT e ir a la carpeta que nos interesa directamente:

Info:

Veremos que es la carpeta del usuario todd.wolfe entera, por lo que vamos a descargarnos toda la info interesante, pero nos iremos a esta ruta:

Info:

Veremos cosas interesantes por aqui entre ellas la carpeta Credentials y Protect, por lo que vamos a descargarnos los archivos de cada una de ellas.

Una vez echo esto ya nos podremos salir, ya que estos archivos son los principales para poder obtener las credenciales de un usuario que todavia no sabemos.

Tendremos que establecer el SID de como se llamaba la carpeta de dicho archivo ya que es su SID correcto.

Info:

Veremos que nos ha decodificado la clave secreta de forma correcta, ahora con esto podremos saber las credenciales de dicho usuario pudiendo decodificarlas.

Info:

Veremos que ha funcionado y obtendremos las credenciales del usuario jeremy.combs, ahora tendremos que realizar lo mismo de siempre obtener el TGT del usuario en cuestion y si vemos la informacion del usuario en BloodHound veremos lo siguiente:

Pertenece a un grupo llamado THIRD-LINE TECHNICIANS que por lo que se ve tendremos que realizar los mismos pasos de antes, metiendonos en el SMB ahora con este usuario en la carpeta IT y ver que contiene dicha carpeta de dicho grupo.

Vamos a obtener el TGT del usuario.

Info:

Exportaremos la variable de kerberos.

Ahora vamos a conectarnos directamente al servidor SMB con dicho TGT y usar la carpeta IT de esta forma:

Info:

Veremos 2 archivos interesantes uno es la clave privada PEM del usuario jeremy.combs y lo otro es una nota simple que pone lo siguiente:

Lo que nos dice basicamente es que han implementado una herramienta llamada WSL propia de Linux para realizar las copias de seguridad, con esta informacion se nos ocurre hacer lo siguiente.

Recordemos que habia en el escaneo un puerto 2222 que podemos deducir que es el SSH para conectarnos de forma remota al equipo, pero si investigamos un poco mas veremos que el id_rsa no es del usuario jeremy.combs si no, del usuario svc_backup y esto lo sabemos por esta comprobacion.

Info:

Vemos que es del usuario svc_backup, vamos a probar a realizar lo siguiente:

Info:

Vemos que ha funcionado y seremos el usuario svc_backup pero dentro de un linux, si hacemos sudo -l veremos lo siguiente:

Vemos que podemos ser directamente root.

Info:

Pero en este caso no importa de mucho, siendo root podremos probar a listar las particiones que hay montadas dentro del linux, por que recordemos que linux puede ver las particiones del sistema si esta dentro del mismo disco particionado, pero desde windows no.

Info:

Vemos que si esta montado el disco C, por lo que podremos realizar un volcado de los secretos de Windows pero no podemos tocar la SAM y todo esto de forma directa, si investigamos un poco veremos que hay una carpeta llamada IT y que siguiendo la estructura de carpetas nos lleva a esto:

Info:

Veremos que hay 2 carpetas y en cada una de ellas veremos los siguientes archivos:

'Active Directory'

registry

Ahora nos copiaremos los siguientes archivos en la carpeta /tmp:

Estos 2 archivos son los importantes para realizar un volcado de los secretos de Windows.

Ahora desde la /tmp vamos a pasarnos los archivos a nuestra maquina hosts de esta forma:

Maquina atacante

Maquina victima

Ahora si listamos nuestra maquina atacante veremos que se pasaron bien los archivos.

Info:

Con esto veremos que hemos obtenido los hashes de los usuarios del dominio, por lo que vamos a generar un TGT del usuario admin con el hash de esta forma:

Info:

Ahora exportamos la variable de kerberos.

Ahora con todo esto configurado vamos a meternos en la shell interactiva de evil-winrm con el hash realizando un Pass-The-Hash y con la autenticacion de kerberos que hemos generado.

Info:

Veremos que ha funcionado, por lo que leeremos la flag del usuario admin.

root.txt

Last updated