Buenas a tod@s, el día de hoy les traigo un write-up
de la máquina Sauna
de HackTheBox
.
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.175 -oG tcp_ports.txt
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,80,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49667,49673,49674,49677,49689,49696 10.10.10.175 -v port_scan.txt
Una vez entendemos a rasgos generales, ante qué nos enfrentamos, revisamos la aplicación web que se encuentra corriendo en el puerto 80/http
.
En dicho servicio existe un landing page, en el endpoint about.html
donde se listan los nombres y apellidos de los miembros del equipo.
En base a esto, creamos el siguiente diccionario con potenciales nombres de usuarios que se encuentran registrados en el dominio.
Hecho esto, con la herramienta kerbrute
validamos si es que alguno de estos usuarios se encuentra registrado en el dominio.
1
kerbrute userenum --dc 10.10.10.175 -d egotistical-bank.local users.txt
Como se muestra en la imagen, la herramienta kerbrute
permite identificar al usuario FSmith
registrado en el dominio.
Teniendo dicho nombre de usuario, ejecutamos un ataque AS-REPRoasting
con la herramienta impacket-GetNPUsers
.
En la imagen a continuación, se puede cómo es posible solicitar el Ticket Granting Ticket (TGT)
del usuario, enviando una solicitud KRB_AS_REQ
al Key Distribution Center (KDC)
de Kerberos
. Este servicio responde correctamente al atacante con un mensaje KRB_AS_REP
, cual contiene el TGT
.
Esto ocurre debido a que la cuenta del usuario tiene configurado el privilegio UF_DONT_REQUIRE_PREAUTH
, lo cual permite solicitar el TGT
sin previa autenticación.
1
impacket-GetNPUsers -no-pass -usersfile user.txt egotistical-bank.local/
Como mencionamos en el post anterior, es posible crackear un Ticket Granting Ticket
debido a que parte de este se encuentra cifrado con la contraseña del usuario.
Probando un ataque de fuerza bruta con la herramienta john
, logramos obtener la contraseña del usuario FSmith
.
Como se muestra a continuación, dicha credencial es validada con crackmapexec
sobre el servicio WinRM
, con lo cual comprobamos que el usuario pertenece al grupo Remote Management Users
. Esto significa que dicho usuario se puede conectar a la terminal del servidor y ejecutar comandos.
Para aprovecharnos de dicho grupo utilizamos la herramienta evil-winrm
, la cual nos permite emular el comportamiento de una terminal PowerShell
y acceder al servidor de manera directa.
Enumerando a los usuarios del dominio, identificamos a svc_loanmgr
.
Dado esto, revisando las credenciales almacenadas en el Winlogon
se identifica una contraseña por defecto.
1
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon"
Esta contraseña es probada sobre el servicio SMB con el usuario svc_loanmgr
la cual resulta ser valida.
1
crackmapexec smb 'egotistical-bank.local' -u 'svc_loanmgr' -p 'Moneymakestheworldgoround!'
Posterior a esto, lanzamos la herramienta bloodhound-python
con el objetivo de enumerar gran parte de los privilegios y configuraciones habilitadas entre los objetos del Active Directory.
1
bloodhound-python -u 'fsmith' -p 'Thestrokes23' -d egotistical-bank.local -ns 10.10.10.175 -c all
Recopilando información sobre los privilegios de cada cuenta, identificamos que el usuario svc_loanmgr
tiene capacidad DCSync
sobre el dominio, lo cual significa que este puede solicitar los hashes NTLM
de los usuarios.
Sabiendo esto, con la herramienta impacket-secretsdump
solicitamos los hashes NTLM
de los usuarios del dominio, a partir de las credenciales de svc_loanmgr
.
1
impacket-secretsdump 'egotistical-bank.local/svc_loanmgr:Moneymakestheworldgoround!@10.10.10.175'
Posterior a esto, tenemos dos alternativas:
- Ejecutar un Pass-the-hash attack y engañar al sistema de autenticación con la herramienta
impacket-psexec
, owmiexec
. - Abusar de
WinRM
con la herramientaevil-winrm
y conectarnos directamente a una terminal del servidor. Ambas opciones son válidas para obtener una terminal con el usuarioAdministrator
.
En este caso, el primero que probamos es el Pass-the-hash, con la herramienta impacket-psexec
, el cual funciona exitosamente como se muestra en imagen.
1
impacket-psexec -hashes ':823452073d75b9d1cf70ebdf86c7f98e' 'egotistical-bank.local/Administrator@10.10.10.175'
La segunda opción de igual forma funciona y permite obtener control total del servidor.
1
evil-winrm -i egotistical-bank.local -u 'Administrator' -H '823452073d75b9d1cf70ebdf86c7f98e'