Sauna Writeup HTB (OSCP Style)
Datos de la Máquina
Contenido | Descripción |
---|---|
OS: | ![]() |
Dificultad: | Fácil |
Puntos: | 20 |
Lanzamiento: | 25 Feb 2020 |
Retirada: | 18 Jul 2020 |
Reconocimiento
Lo primero que realizaremos es agregar la dirección IP de la máquina Sauna a nuestro archivo /etc/hosts con el siguiente dominio sauna.htb.
nmap
Una vez agregada la dirección IP de la máquina víctima a nuestro archivo host, procederemos a realizar un escaneo TCP/IP a los 65535 puertos existentes, y validar cuales se encuentran abiertos, esto lo realizaremos con el siguiente comando:
nmap -n -p- -T4 --min-rate 5000 --max-retries 5000 sauna.htb --open -oA nmap/allports
Una vez terminado el escaneo identificamos que cuenta con los siguientes puertos abiertos:
- 53/tcp (domain)
- 80/tcp (http)
- 88/tcp (kerberos-sec)
- 135/tcp (msrpc)
- 139/tcp (netbios-ssn)
- 445/tcp (microsoft-ds)
- 464/tcp (kpasswd5)
- 593/tcp (http-rpc-epmap)
- 636/tcp (ldapssl)
- 3268/tcp (globalcatLDAP)
- 3269/tcp (globalcatLDAPssl)
- 9389/tcp (adws)
- 49667/tcp (unknown)
- 49673/tcp (unknown)
- 49676/tcp (unknown)
- 49697/tcp (unknown)
- 49718/tcp (unknown)
Una vez identificados los puertos abiertos, procedemos a la identificación de versiones y servicios de cada uno de ellos, adicionalmente arrojaremos los script que cuenta nmap para enumerar los servicios.
Cabe mencionar que el argumenteo -sCV es una union de -sV y -sC.
nmap -n -sVC -p 53,80,88,135,139,445,464,593,636,3268,3269,9389,49667,49673,49676,49697,49718 -T4 --min-rate 5000 --max-retries 50000 sauna.htb -oA nmap/script-tcp
Identificamos que al ejecutar el script LDAP nos arroja el nombre del dominio EGOTISTICAL-BANK.LOCAL0, algo que nos ayudara más tarde.
Enumeración
HTTP (80)
Realizamos una visualización sobre el puerto HTTP(80), en el cual podemos observar que se trata de un sitio web de un banco.
Enumeración a Directorios
Al visualizar el sitio web, no encontramos nada interesante por lo cual realizaremos una enumeración de este sobre directorios, para esto basta con ejecutar el siguiente comando:
ffuf -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-medium-directories.txt -u http://sauna.htb/FUZZ -c -fs 42
Al visualizar la anterior ilustración se observa que no existe ningun directorio interesante.
SMB (445)
Al identificar que el puerto 445 (SMB) esta abierto, procederemos a realizar enumeración de anonymous con smbmap y smbclient
LDA (389)
Al ejecutar los script de nmap realizó una enumeración exitosa sobre el nombre del dominio EGOTISTICAL-BANK.LOCAL0.
Ejecutaremos una herrmienta llamada ldapseach
Primero tendremos que crear la query para obtener el dominio base ejecutamos lo siguiente:
ldapsearch -x -H ldap://10.129.223.148 -b "dc=Egotistical-bank,dc=local"
Una vez realizada la enumeración con ldapsearch, observamos un usuario e identificamos el dominio base.
DNS (53)
Identificando que el puerto 53 (DNS), trataremos de realizar una transferencia de zona.
Kerberos (88)
Ya que no contamos con credenciales, lo que realizaremos es fuerza bruta sobre nombres para esto utilizaremos Kerbrute.
kerbrute userenum -d EGOTISTICAL-BANK.LOCAL /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt --dc 10.129.223.148
Observando en la ilustracion anterior, identificamos usuarios validos lo cual nos ayudará posteriormente a ejecutar ataques.
Una vez que obtenemos los usuarios, podremos ejecutar con GetNPUsers.py, con el siguiente comando.
GetNPUsers.py 'EGOTISTICAL-BANK.LOCAL/' -usersfile users.txt -format hashcat -outputfile hashes.aspreroast -dc-ip 10.129.223.148
Una vez que obtenemos el hash del usuario, procederemos a romperlo con hashcat
Despues de unos minutos podemos observar que se pudo romper el hash con exitó.
Evil-WinRM
Una vez obtenido el password de nuestro usuario, trataremos de obtener una shell con evil-winrm.
evil-winrm -i 10.129.223.148 -u fsmith -p <pass>
Tenemos acceso como jsmith, lo cual buscaremos la primer flag.
Post Explotation
Una vez obtenido el acceso al usuario jsmith, procederemos a realizar una enumeración para obtener acceso Administrator.
Enumeración
Una vez que obtenemos acceso procedemos a realizar una enumeración, lo primero será validar con quien estamos logeados.
whoami
Antes de emezar a realizar la enumeración sobre el AD, realizaremos una enumeración local
Trataremos de visualizar la información del sistema, pero no contamos con los permisos suficientes para obtener esta información.
systeminfo | findstr /B /C:"Host Name" /C:"OS Name" /C:"OS Version" /C:"System Type" /C:"Hotfix(s)"
Observamos que no tenemos permisos para ejecutar systeminfo.exe
Validamos que privilegios tenemos que este usuario ejecutaremos lo siguiente:
whoami /priv
Al parecer no podemos realizar nada con este usuario.
Vamos a obtener los usuarios del dominio.
net user /domain
Adicionalmente de los 2 usuarios que obtenimos en la enumeración anterior, encontramos Administrator, krbtgt, svc_loanmgr.
Actualizamos nuestro users.txt, con estos nombres y continuamos la enumeración de nuestro usuario.
net user jsmith /domain
No encontramos nada interesante, pero observamos que permite Administración Remota es el acceso que tenemos por winrm.
Kerberoasting
Ahora validaremos si los usuarios que encontramos son kerberoastables, para esto usaremos Rubeus, y lo subiremos con la funcion de upload de evil-winrm.
Una vez en la máquina víctima, ejecutaremos lo siguiente:
.\Rubeus.exe kerberoast
Como observamos en la ilustración anterior nos arroja que existe 1 usuario kerberoastable, pero al intentar hacer una peticion al SPN nos arroja un que las credenciales no estan disponibles.
Enumeración con Bloodhound
Una vez validada la información anterior, y recordando que tenemos acceso realizaremos una enumeración al AD con Bloodhound.
Para esto utilizaremos el SharpHound.exe, el cual nos creará un .zip.
Unicamente basta con ejecutar lo siguiente:
.\SharpHound.exe
Una vez terminado el script nos creará un .zip
Una vez generado el reporte de bloodhound, para descargarlo usaremos la utilidad download de evil-winrm.
Una vez descargado el reporte, lo abriremos con bloodhound arrastrandolo y nos aparecera una ventana como la que aparece a continuación.
Una vez descargado el reporte de SharpHound e importado en Bloodhound podremos ejecutar diferentes querys, para identificar el camino más corto para obtener el Administrator.
Una vez identificado el camino que podremos seguir para obtener el acceso al servicio svc_loanmanager.
Para esto ejecutaremos la siguiente query, para checar el registro AutoLogon.
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon"
Como se puede observar en la imagen anterior, obtenemos las credenciales de svc_loanmanager, por lo cual intentaremos conectarnos con evil-winrm.
evil-winrm -i 10.129.223.148 -u 'svc_loanmgr' -p 'Moneymakestheworldgoround!'
Una vez conectados como el usuario svc_loanmanager y validando que usuario somos.
Subiremos mimikatz, es una herramienta que nos servira para dumpear la sam y obtener los hashes NTLM, para esto haremos uso de upload de evil-winrm.
Una vez subido nuestro binario, basta con ejecutar lo siguiente:
Como se observa en la siguiente ilustración obtenemos los hashes NTLM.
.\mimikatz.exe 'lsadump::dcsync /domain:EGOTISTICAL-BANK.LOCAL /user:administrator' exit
Una vez obtenido el hash NTLM, podremos acceder a la cuenta Administrator, con el siguiente comando.
evil-winrm -i 10.129.223.148 -u Administrator -H 823452073d75b9d1cf70ebdf86c7f98e
Good Luck! and Happy Hacking!