Sauna
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 una traza 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
Escaneo de 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 ejecutar 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 ver que tenemos muchos puertos abiertos, lo que nos da que pensar que igual estamos ante un DC
Ahora que hemos visto los puertos que están abiertos toca saber cuáles son los servicios y versiones que corren detrás de estos puertos

Con este escaneo hacemos lo siguiente, -sC lanza unos scripts básicos de reconocimiento que tiene nmap previamente programados en Lua, -sV determina cuál es la versión del servicio que está corriendo en los puertos abiertos y -oN exporta todas las evidencias al archivo “versiones” en el mismo formato en el que nos lo representa nmap por consola

Aquí podemos ver todos los servicios que están corriendo, DNS, HTTP, Kerberos, RPC, Samba, LDAP…
Usuario sin privilegios
Ahora que hemos terminado con la enumeración vamos a ir viendo de qué manera podemos obtener un usuario básico, sin privilegios
Lo primero que vamos a hacer es con netexec ver cuál es el nombre del dominio de este DC al que nos estamos enfrentando y descubrir un poco de información acerca de este DC

Ahí podemos ver el nombre de la máquina que es SAUNA y su dominio, para poder añadirlo rápidamente en el /etc/hosts vamos a hacer lo siguiente

Con el parámetro “–generate-hosts-file” hemos generado un archivo llamado “dominio” en el cual se contemplaba la IP y el nombre de la máquina con su dominio así que todo eso lo hemos metido en el /etc/hosts para que así la máquina sepa que cuando hago referencia a ese dominio realmente quiero apuntar a esa IP
Si intentamos listar los recursos compartidos a nivel de red con Samba, no vamos a poder ver nada, ya que no está habilitado el null session, lo mismo pasa con RPC
Al intentar consultar información a través del protocolo LDAP podemos ver que nos devuelve lo siguiente

Aparentemente podemos ver cuáles son los dominios que tiene disponibles por lo que sabiendo esto vamos a intentar enumerar los objetos que tiene internamente el dominio

Podemos ver los objetos perfectamente y, entre ellos, observamos que existe un usuario llamado “Hugo Smith”. Esta información nos resulta muy útil porque, a partir de este nombre, sabemos que existe un usuario en el dominio y podemos crear un diccionario personalizado para intentar descubrir cuál es su nombre de usuario.
Ahora vamos a lanzar la herramienta kerbrute la cual nos va a ayudar a descubrir qué nombre de usuario es válido dentro del DC

Por ahí podemos ver que tenemos un usuario válido “HSmith” y al probar un ASREPRoast Attack no ha dado resultado por lo que no hay mucho más que podamos hacer con este usuario
Pero aunque no hayamos podido hacer mucho, hemos visto que puede ser que más usuarios sean válidos con la primera letra de su nombre y su apellido
Ahora que nos hemos quedado sin vías de ataque, vamos a ir a ver la página web para ver si nos da algo más de información

Esta es la página principal de la página web y aunque no tiene mucho donde mirar vamos a comprobar si tiene nombres de empleados o alguna información que nos pueda resultar útil

Podemos ver que tienen los nombres de los componentes del equipo, por lo que vamos a construirnos un diccionario con posibles usuarios basándonos en los nombres de los trabajadores para poder probar si hay algún usuario válido

Una vez que tengo hecho el diccionario vamos a comprobar si algún usuario es válido dentro del DC con kerbrute de nuevo

Vemos que el usuario “FSmith” es válido dentro del DC y también su TGT de usuario por lo que parece ser que tenemos un usuario y una manera de poder obtener su contraseña
Aunque kerbrute nos reporta el TGT yo prefiero obtenerlo tirando del siguiente script

Ahí podemos ver que hemos obtenido el TGT, por lo que ahora vamos a romperlo con john
PD: Hemos podido obtener el TGT ya que el usuario FSmith no requiere de autenticación previa de Kerberos, por lo que podemos solicitar el TGT de este usuario sin tener que demostrar que sabemos la contraseña

Y por ahí tendríamos la contraseña del usuario FSmith
Vamos a validar que esta contraseña sea válida para este usuario

Como tenemos las credenciales válidas de este usuario vamos a intentar conectarnos a la máquina

Y en el escritorio de este usuario estaría la primera flag

Usuario administrador
Ahora que ya tenemos acceso a la máquina como un usuario no privilegiado vamos a intentar elevar nuestros privilegios al usuario administrador del dominio
Lo primero que voy a hacer es obtener más información sobre cómo está estructurado el dominio con la herramienta BloodHound

Una vez que la tenemos la subimos a la interfaz gráfica de BloodHound para analizar los datos que hemos obtenido

Por ejemplo podemos ver los usuarios que son vulnerables a un ataque ASREPRoast attack

He encontrado que un usuario tiene privilegios DCSync. Estos privilegios permiten hacerse pasar por otro controlador de dominio dentro del dominio y solicitar al DC principal que envíe todos sus datos.

Así que vamos a buscar la manera de poder convertirnos en este usuario
Vamos a enumerar información del sistema a través de la herramienta winPEAS, esta herramienta nos permite recorrer todo Windows para ver si hay algún servicio mal configurado o alguna contraseña en texto claro
Como la máquina víctima no tiene este ejecutable, nos lo vamos a descargar en nuestra máquina de atacante y se lo vamos a subir

Nos lo bajamos del repo oficial de GitHub y con una utilidad de evil-winrm se lo vamos a subir a la máquina víctima

Ahora que lo tenemos en la máquina víctima vamos a ejecutarlo para ver si podemos obtener algún usuario y contraseña

Por ahí podemos ver que tenemos la contraseña del usuario “svc_loanmanager”
Vamos a comprobar si la contraseña es válida para ese usuario o no

Vemos que para el usuario “svc_loanmanager” no se valida la contraseña pero para el usuario “SVC_LOANMGR” sí
Realmente ya tendríamos casi todo el trabajo hecho porque ahora que tenemos una cuenta la cual tiene permisos de DCSync, solamente quedaría volcarnos todo el contenido del ntds.dit

Ahí tenemos todo el contenido de la base de datos ntds.dit por lo que lo único que quedaría es hacer un pass-the-hash con el NT hash del administrador

En el escritorio del administrador podemos ver su flag

Este es el final de la máquina, a mí me parece que es más bien media tirando a difícil pero bueno si la han puesto como una máquina fácil será por algo