Monteverde

Máquina de dificultad media 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 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 observar que tiene puertos como el 88, 139, 445 que son puertos que suelen utilizarse en los controladores de dominio de Windows

Ahora que sabemos que puertos están abiertos vamos a lanzarle un escaneo específico a estos puertos

Con estos parámetros primero le lanzamos unos script básicos que tiene nmap programados en Lua (-sC) y con -sV descubrimos qué servicios y versiones están corriendo para estos puertos que están abiertos, por último -oN sirve para poder exportar todas las evidencias al archivo “versiones” en el mismo formato que nos representa nmap en la consola

Una vez que tenemos el archivo con cat (que es un alias de bat) vamos a abrirlo indicándole que el lenguaje de programación es ruby para que nos lo represente en colores

Podemos ver que tenemos dns, rpc, smb…entre otros

Usuario sin privilegios

Lo primero que vamos a hacer es determinar qué versión de sistema operativo tenemos delante y el nombre del dominio de esta máquina con netexec

Podemos ver que estamos ante un Windows Server 2019 y que su nombre de dominio es “MEGABANK.LOCAL”, netexec tiene un parámetro que es “–generate-hosts-file” que nos crea un archivo perfecto para poder meterlo en el /etc/hosts de nuestra máquina y así cuando hagamos referencia a este dominio nos resuelva a la ip de la máquina víctima

Como ya tenemos el nombre de dominio en el /etc/hosts podemos empezar a enumerar la máquina

Después de enumerar smb y no encontrar nada, al conectarme con una null session por rpc he visto que me ha dejado enumerar los usuarios existentes en el dominio

Como tenemos un listado de usuario lo que podemos hacer es con kerbrute ver cuáles de estos usuarios son válidos dentro del dominio y cuáles no

Podemos ver que todos los usuarios de la lista son válidos menos el usuario “Guest”

Como tenemos un listado de usuarios válidos dentro del dominio podemos hacer varias cosas, un ASPREP-Roast Attack o comprobar si algún usuario tiene como contraseña su mismo nombre

Voy a comprobar si algún usuario tiene como contraseña su propio nombre con netexec

Los parámetros que le he añadido son para que solamente pruebe su nombre de usuario como nombre de usuario y contraseña (–no-bruteforce) y para que aunque encuentre una coincidencia que siga por si hay más de un usuario con contraseña válida (–continue-on-success)

Por ahí vemos que el usuario “SABatchJobs” tiene como contraseña su propio nombre de usuario por lo que ya tenemos un usuario válido

Ahora el abanico de posibilidades se vuelve a abrir ya que podemos volver a mirar los recursos compartidos a nivel de red con credenciales, podemos ver si se puede efectuar un Kerberoasting….

Lo primero que voy a probar es a listar los recursos compartidos que hay a nivel de red

Nos ha listado los recursos compartidos sin problemas, entre ellos veo dos que me llaman la atención users$ y azure_upload

Dentro del directorio de azure no había nada, pero dentro del de users sí que hay cuatro directorios

Y dentro del directorio del usuario “mhope” hay un archivo azure.xml

Así que nos vamos a bajar este archivo para ver qué es lo que contiene

Vemos que dentro del archivo se contempla una contraseña que posiblemente sea para el usuario mhope

Para poder comprobarlo vamos a volver a utilizar netexec

Podemos ver que sí que es válida la contraseña para ese usuario por lo que ya tenemos otro usuario más pwneado

Como ahora ya tenemos dos usuarios vamos a ver si alguno de los dos pertenece al grupo “Remote Management Users” para poder llegar a conectarnos con evil-winrm, con el usuario SABatchJobs no he tenido posibilidad de conectarme pero con el usuario mhope sí

Ahora que estoy dentro si miro a qué grupos pertenecen el usuario mhope y SABatchJobs veo lo siguiente

Me he podido conectar como este usuario por que mhope sí que pertenece al grupo “Remote Management Users”

En el escritorio de este usuario puedo encontrar la primera flag

Privilegios

Ahora vamos a buscar alguna manera de poder escalar a un usuario administrador del dominio

Como podemos ver el usuario mhope pertenece al grupo “Azure Admins” por lo que podemos ver así que tenemos la capacidad de poder obtener la contraseña en texto plano del usuario administrador

Para ello vamos a bajarnos el siguiente repositorio de github

Nos bajamos el .zip en nuestra máquina y al descomprimirlo veremos los dos archivos que tenemos que subir a la máquina víctima

Para subirlo a la máquina voy a jugar con “upload” que es una opción de evil-winrm

Genial pues ahora que lo tenemos subido para poder obtener en texto plano la contraseña del administrador tenemos que irnos al directorio C:Program FilesMicrosoft Azure AD SyncBin y desde esta ruta ejecutar el .exe que acabamos de subir

Ahí podemos ver cuál es la contraseña en texto plano del administrador

La hemos conseguido por que este ejecutable lo que hace es acceder a la base de datos de Azure AD Connect, donde se encuentran las credenciales en forma de blobs cifrados. Entonces se extrae ese blob y utiliza las APIs de Windows (DPAPI) para solicitar el descifrado. Como el proceso lo está ejecutando un usuario que tiene privilegios de “Azure Admins”, Windows permite descifrar el secreto y devuelve la contraseña en texto plano

Ahora solamente falta ver si es correcta con netexec

Podemos ver que efectivamente lo es, por lo que vamos a conectarnos a la máquina como este usuario y vamos a ver cuál es la flag

Start searching

Enter keywords to search articles

↑↓
ESC
⌘K Shortcut