Máquina Forest Hack the Box
Usuario:
Lo primero que realizamos es un escaneo de puertos, donde nos encontramos, que es una máquina con muchos puertos abiertos y mucha información, entre esto que es una máquina bajo Active Directory, vemos que el dominio es htb.local, que corre con el protocolo de kerberos, entre otros datos interesantes.
Luego para esta máquina realizamos un escaneo con el escript de @plaintextdo y nos encontramos con otros puertos como el puerto de WINRM.
Teniendo estos datos, vamos a seguir enumerando y vamos a correr enum4linux para ver con que nos encontramos y vemos que tenemos unos usuarios, ahora necesitamos ver con que usuarios podemos escalar y encontrar las credenciales de estos usuarios.
Investigando un poco nos encontramos con una guía de ataques contra el protocolo de autenticación Kerberos vamos a hacer uso del ataque ASREPRoast con el script GetNPusers que viene en impacket
con este ataque encontramos un hash para uno de los usuarios que habíamos enumerado antes, ahora vamos a tratar de desencriptarlo con john que fue el tipo de formato que escogimos en la bandera -format
Vamos a utilizar la herramienta John the Ripper con el diccionario rockyou para saber si podemos crackear el hash encontrado
Ya en este punto, tenemos un usuario y una contraseña ahora debemos encontrar la forma de ingresar al sistema, como vimos en el escaneo, tenemos habilitado el puerto 5985 de WINRM así que vamos a utilizar el evil-winrm de hackplayer con las credenciales que tenemos
y así obtenemos nuestra primera flag.
Escalada de Privilegios:
Para la escalada estuvimos mucho tiempo, pensando que podíamos hacer, así que investigando un poco en foros y grupos obtuvimos una pista sobre BloodHound (El sabueso), esta herramienta nos permite hacer el descubrimiento del Directorio Activo, permitiéndonos ver de forma gráfica, usuarios, grupos y permisos, así que nos instalamos esta herramienta que viene con una Base de Datos llamada Neo4j, es una herramienta muy completa para la enumeración, nos instalamos esta herramienta y en el proceso nos encontramos con dos formas de graficar, vamos a ver las 2 formas en este writeup.
Primera forma de graficar:
Para esta primera forma vamos a clonar el repositorio de bloodhound.py desde la página de GitHub ingresamos al directorio BloodHound.py y ahí encontramos nuestro script, corremos el script con estas banderas y nos dará unos archivos .json
Donde al importarlos en bloodhound nos mostrará de manera gráfica estos datos
Para poder importar los archivos a bloodhound debemos iniciar la base de datos de Neo4j y en el primer inicio podemos realizar un cambio de contraseña desde el localhost, ya que por defecto viene con el mismo nombre del usuario neo4j
Ingresamos desde nuestro navegador a nuestro localhost por el puerto 7474 como nos indica y en el password ponemos neo4j
En el primer ingreso, nos pedirá un cambio de contraseña, Para este ejemplo le vamos a poner la contraseña como fri3nds, este será el password de la base de datos Neo4j y ya podremos ingresar
Ahora damos bloodhound en un nuevo panel o pestaña y se nos abrirá la herramienta, nos fijamos que el estado está OK, ponemos el usuario neo4j y la password de nuestra base de datos
Ahora solo nos queda subir nuestros archivos .json para poder ver la gráfica, vamos a opción de upload data y subimos nuestros archivos o podemos arrastrar y soltar dentro de la herramienta.
y así podemos ver la información de, usuarios, grupos, entre otras cosas
vamos a realizar un ejemplo de cómo ver el gráfico para saber más o menos como funciona la herramienta, si por ejemplo buscamos el grupo Administrator@htb.local, damos clic derecho sobre este y luego damos sobre Shortest Paths to Here.
Nos mostrará la gráfica de cómo está conformado este grupo, los grupos relacionados, los usuarios que pertenecen a este grupo, entre otras cosas
Y así podemos ir mirando con cada grupo o usuario
Segunda forma de graficar:
En el proceso encontramos otra forma de graficar y para nosotros la más completa y es por medio del script SharpHound.ps1 nos descargamos este script y lo subimos por medio de la Shell que tememos con evil-winrm con el comando upload y la ruta donde tenemos nuestro script.
Una vez que subimos nuestro archivo, lo importamos en las sesiones de powershell para poder ejecutarlo y con -Collectionmethod All nos dará un archivo comprimido con los .json
Nos descargamos este archivo con download y borramos los archivos para no generar spoiler de la máquina, ahora el paso a seguir es poder subir este archivo a BloodHound.
Una vez estemos en bloodHond podemos hacer uso de pathfinding, donde debemos poner los datos del camino que deseamos realizar en este caso queremos ver cuál es el camino desde svc-alfresco hasta el grupo de administrators, así que en este punto tienes muchas cosas que probar y ver el maravilloso uso de esta herramienta.
vemos algo que nos llama la atención y es que en el grupo de Exchange Windows Permissions tenemos WriteDacl que quiere decir que nos permite modificar algunos atributos del Dominio, Investigando un poco nos encontramos con unos articulos que nos permiten realizar una escalada de privilegios como este Explotación de PrivExchange para este writeup vamos a hacer uso de la herramienta aclpwn así que vamos a Github y nos clonamos la herramienta o la instalamos con pip install aclpwn, lo que vamos a realizar es un ataque DCSync. Ya con la aplicación la corremos para dar privilegios al usuario que tenemos en este momento
ahora vamos a hacer uso de dos scripts de impacket para terminar la con la escalada de privilegios, el primero que vamos a utilizar es secretsdump para obtener los hashs de los usuarios y con esto obtenemos las credenciales de los usuarios entre ellas las del administrator.
Y el segundo va a ser el script wmiexec que nos permite una conexión con los hashs encontrados.
De esta manera encontramos la flag del Root.