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

Start searching

Enter keywords to search articles

↑↓
ESC
⌘K Shortcut