Skip to main content
HackTheBox machines - Forest

HackTheBox machines – Forest WriteUp

Forest es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox.

Forest es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad fácil.

En este caso se trata de una máquina basada en el Sistema Operativo Windows.

 

Escaneo de puertos

Como de costumbre, agregamos la IP de la máquina Forest 10.10.10.161 a /etc/hosts como forest.htb y comenzamos con el escaneo de puertos nmap.

 

 

Descubrimos que existen varios puertos abiertos. Desde el resultado del anterior escaner observamos que posiblemente exista un controlador de dominio bajo el dominio “htb.local“. Los servidores de dominio como kerberos, ldap, SMB y el puerto de WinRm están abiertos y accesibles desde internet, lo que supone una gran vulnerabilidad.

Dicho esto, vamos a utilizar una herramienta de enumeración llamada enum4linux para ver si podemos obtener información de los usuarios y de otros dominios existentes.

Como se esperaba, la utilidad Enum4linux devolvió bastante información. Encontramos varios usuarios que pueden ser útiles como pueden ser sebastien, lucinda, andy, mark, santi y la cuenta de servicio llamada svc-alfresco.

Además, descubrimos que la política de dominio está configurada de una forma muy flexible, en la cual no exige el uso de una contraseña compleja, lo que puede sugerir que descifrar la misma puede ser relativamente sencillo. Encontramos también que el servidor dispone de una instancia de Microsoft Exchange, lo que también puede resultarnos muy útil.

Utilizaremos ahora la herramienta GetNPUsers de impacket para ver si podemos obtener los usuarios que tienen dicha propiedad o, que no requieren del conjunto de autenticación previo de Kerberos (UF_DONT_REQUIRE_PREAUTH).

Comprobamos entonces con los nombres de usuario obtenidos en el paso anterior y descubrimos algo interesante con el usuario de servicio svc-alfresco, el cual reveló su TGT (Ticket-Granting-Ticket).

Y obtenemos un hash para la cuenta de servicio de svc-alfresco. Así que utilizaremos John The Ripper para intentar descifrar la misma, aunque también podríamos utilizar hashcat.

Y ya tenemos que la contraseña del usuario svc-alfresco es “s3rvice”.

 

Obteniendo la flag de user

Ahora que ya disponemos de unas credenciales de acceso vamos a intentar obtener una shell con la que acceder a la máquina. Utilizaremos una herramienta de explotación de WinRM llamada Evil-WinRM Shell que nos permitirá obtener una shell de acceso si disponemos de las credenciales correctas. Vamos a probar entonces si los datos obtenidos nos permiten lograr esto y conseguir la flag del usuario.

Y ya tenemos nuestra shell de acceso, comprobamos si podemos obtener la flag de usuario y bingo, ya la tenemos.

 

Escalado de privilegios

Ahora que ya disponemos de un acceso y hemos conseguido la flag de usuario, el siguiente paso será conseguir escalar privilegios hasta disponer de acceso como Administrador del sistema.

Para realizar este escalado podemos utilizar una herramienta llamada SharpHound.ps1 que podremos utilzar para identificar una posible ruta hacia el administrador del dominio.

Para ello disponemos de dos opciones, cargar el script en la instancia de Forest o realizar la ejecución automática mediante el script bloodhound-python. Vamos a explicar ambas opciones.

 

Opción 1: Carga del script en la instancia de Forest

Una vez descargado el script de SharpHound, lo subiremos a la instancia a través del acceso obtenido del usuario svc-alfresco

Una vez subido el archivo SharpHound.ps1, lo importamos a la sesión de PowerShell para poder ejecutarlo.

Y nos generará un fichero dentro del mismo directorio

Tan pronto como ejecuté este comando, tenía un archivo zip dentro del mismo directorio que deberemos de descargar para importar posteriormente en nuestra herramienta BloodHound.

Y podremos descargarnos dicho fichero con el comando download como vemos a continuación

 

Opción 2: Uso de bloodhound-python

Deberemos de tener instalada la herramienta BloodHound previamente en nuestro sistema para llevar a cabo este paso. BloodHound es una aplicación utilizada para visualizar entornos de Active Directory. Puede utilizarse para identificar diferentes rutas de ataque, lo que incluye listas de control de acceso (ACLs), usuarios, grupos, relaciones de confianza y objetos únicos de AD.

Una vez tengamos la herramienta instalada, ejecutamos el siguiente comando para abrirla

Y posteriormente lanzamos el script de bloodhound-python para obtener los datos necesarios

Este comando generará un fichero .zip como el que vimos en la opción anterior, en el cual se incluyen varios ficheros .json con la información del dominio.

 

Importaremos los datos obtenidos desde cualquier de las dos opciones en la aplicación y veremos un esquema del dominio como puede apreciarse en la siguiente captura de pantalla:

 

BloodHound nos desvela que el usuario forma parte del grupo “Exchange Windows Permissions” y tiene la posibilidad de escribir la acl en todo el dominio de htb.local.

Así que inmediatamente vamos a añadirlo al grupo.

Y ahora que ya tenemos una ruta posible utilizamos la herramienta de impacket ntlmrealyx.py para obtener definitivamente dicho permiso.

En este punto necesitaremos autentificar la conexión para completar la acción, así que vamos al navegador a la dirección http://localhost/privexchange e introducimos los datos de acceso del mismo, svc-alfresco:s3rvice y conseguimos los permisos para dicho usuario

Y como podemos observar tenemos los hash del usuario Administrator.

 

Obteniendo flag de root

Ahora que disponemos del hash del usuario Administrator vamos a utilizar la herramienta wmiexec.py para intentar autenticarnos contra el mismo con los hashes obtenidos y conseguir una shell con este usuario.

Lo tenemos, nos vamos a la carpeta de escritorio del usuario y tenemos la flag de root

Y ya tenemos nuestra flag de root para completar esta máquina y conseguir nuestros puntos.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.