¡Hola! Vamos a resolver de la máquina Sauna
de dificultad “Fácil” de la plataforma HackTheBox.
Técnicas Vistas:
- Information Leakage
- Kerberos User Enumeration - Kerbrute
- ASRepRoast Attack (GetNPUsers)
- Cracking Hashes
- System Enumeration - WinPEAS
- AutoLogon Credentials
- BloodHound - SharpHound.ps1
- DCSync Attack - Secretsdump [Privilege Escalation]
- PassTheHash
Preparación Entorno
Antes de iniciar la fase de enumeración y reconocimiento procederemos a crear un directorio de trabajo con el nombre Sauna
. Una vez creado accedemos al directorio y con la ayuda de la función que tenemos definida en la zshrc mkt
crearemos cuatro directorios de trabajo nmap, content, exploits y scripts
donde almacenaremos de una manera ordenada toda la información que vayamos recopilando de la máquina en función de su naturaleza.
1
2
3
function mkt(){
mkdir {nmap,content,exploits,scripts}
}
Enumeración
Nmap
Accedemos al directorio de trabajo nmap
e iniciamos nuestra fase de reconocimiento realizando un ping
a la IP de la máquina para comprobar que esté activa y detectamos su sistema operativo basándonos en el ttl
de una traza ICMP.
1
2
3
4
5
6
7
❯ ping -c 1 10.10.10.175
PING 10.10.10.175 (10.10.10.175) 56(84) bytes of data.
64 bytes from 10.10.10.175: icmp_seq=1 ttl=127 time=37.6 ms
--- 10.10.10.175 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 37.594/37.594/37.594/0.000 ms
Identificamos que es una maquina Windows debido a su ttl (time to live) correspondiente a 127 (Disminuye en 1 debido a que realiza un salto adicional en el entorno de HackTHeBox).
- TTL => 64 Linux
- TTL => 128 Windows
Continuamos con la enumeración de los 65535 puertos en la máquina.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
❯ nmap -p- --open -sS --min-rate 5000 -n -v -Pn 10.10.10.175 -oG allPorts
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-01 10:28 CEST
Initiating SYN Stealth Scan at 10:28
Scanning 10.10.10.175 [65535 ports]
Discovered open port 139/tcp on 10.10.10.175
Discovered open port 135/tcp on 10.10.10.175
Discovered open port 445/tcp on 10.10.10.175
Discovered open port 389/tcp on 10.10.10.175
Discovered open port 593/tcp on 10.10.10.175
Discovered open port 49673/tcp on 10.10.10.175
Discovered open port 464/tcp on 10.10.10.175
Discovered open port 88/tcp on 10.10.10.175
Discovered open port 636/tcp on 10.10.10.175
Discovered open port 49674/tcp on 10.10.10.175
Completed SYN Stealth Scan at 10:29, 26.61s elapsed (65535 total ports)
Nmap scan report for 10.10.10.175
Host is up (0.064s latency).
Not shown: 65525 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
49673/tcp open unknown
49674/tcp open unknown
Luego de identificar los puertos abiertos OPEN
, se procede a escanear servicios y versiones que puedan estar corriendo en los puertos abiertos detectados.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
❯ nmap -sCV -p53,80,88,135,389,445,464,593,636,3268,3269,5985,9389,49667,49673,49674,49676,49698 10.10.10.175 -oN targeted
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-01 10:29 CEST
Nmap scan report for EGOTISTICAL-BANK.LOCAL (10.10.10.175)
Host is up (0.036s latency).
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Egotistical Bank :: Home
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2023-06-01 15:29:40Z)
135/tcp open msrpc Microsoft Windows RPC
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: EGOTISTICAL-BANK.LOCAL0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp filtered globalcatLDAP
3269/tcp filtered globalcatLDAPssl
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp open mc-nmf .NET Message Framing
49667/tcp open msrpc Microsoft Windows RPC
49673/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49674/tcp open msrpc Microsoft Windows RPC
49676/tcp filtered unknown
49698/tcp filtered unknown
Service Info: Host: SAUNA; OS: Windows; CPE: cpe:/o:microsoft:windows
El escaneo nos revela un dominio EGOTISTICAL-BANK.LOCAL
el cual incorporamos a nuestro /etc/hosts
. También obervamos la presencia de Internet Information Services (IIS)
y LDAP
que están corriendo por sus respectivos puertos (80 y 389) los cuales pueden ser enumerados.
Web
Accedemos al servicio web y observamos la página de un banco que ofrece servicios financieros.
Enumerando la web observamos en la sección About Us
se encuentran fotos y nombres de empleados de esta empresa.
Procedemos a crear nuestro diccionario personalizado de usuarios potenciales del dominio.
Kerbrute
En este punto vamos a usar Kerbrute para verificar si hay algún usuario válido en nuestra lista. Kerbrute es una herramienta escrita por ropnop que permite realizar fuerza bruta y enumerar cuentas validas en el directorio activo a través del mensaje AS-REQ y la Pre-Autenticación de Kerberos.
Ahora sabemos que el usuario fsmith
es un usuario válido del dominio.
Ataque ASRepRoast
Procedemos a realizar un ataque ASRepRoast. Este ataque busca usuarios sin el atributo requerido de autenticación previa de Kerberos (DONT_REQ_PREAUTH). Eso significa que cualquiera puede enviar una solicitud AS_REQ
al DC en nombre de cualquiera de esos usuarios y recibir un mensaje AS_REP
. Este último tipo de mensaje contiene una parte de los datos cifrados con la clave de usuario original, derivados de su contraseña. Luego, al usar este mensaje, la contraseña del usuario podría descifrarse sin conexión.
Para ejecutar este ataque nos serviremos de la herramienta GetNPUsers
de la suite de Impacket. Obetenemos un hash para el usuario fsmith.
Hashcat
Una vez obtenido el hash procedemos a crackearlo con la herramienta hashcat
y el diccionario rockyou.txt
. Ejecutamos de la siguiente forma:
1
❯ hashcat -m 18200 -a 0 kerbhash /usr/share/wordlists/rockyou.txt --force
Hemos obtenido la contraseña del usuario fsmith en texto claro. Validamos con crackmapexec
que es válida pero no vemos la flag de (Pwn3d!)
. Recordemos que el puerto 5985 está abierto por lo que procedemos a verificar con la misma herramienta si podemos conectarnos al servicio de administración remota de Windows. En este caso si observamos la flag correspondiente.
En este punto accedemos a la máquina víctima con la herramienta evil-winrm
Obtenemos la flag de usuario en C:\Users\fsmith\Dsktop\user.txt
Escalada Privilegios
Enumeración WinPEAS
Después de una enumeración básica no localizamos ninguna información relevante salvo la lista de usuarios del dominio.
Procedemos a subir a la máquina víctima la herramienta WinPEAS para realizar una enumeración más profunda.
Observando los resultados localizamos las credenciales para el usuario svc-loanmgr
Validamos las credenciales con crackmapexec
Nos conectamos al servicio de administración remota de Windows con el usuario svc-loanmgr
y tras enumerar privilegios y grupos no logramos infrmación relevante. En este punto nos haremos servir de la herramienta BloodHound
para realizar una enumeración más profunda y buscar otros vectores de ataque y conseguir elevar nuestros privilegios.
BloodHound
BloodHound utiliza la teoría de grafos para revelar las relaciones ocultas y, a menudo, no deseadas dentro de un entorno de Active Directory o Azure. Los atacantes pueden usar BloodHound para identificar fácilmente rutas de ataque altamente complejas que de otro modo serían imposibles de identificar rápidamente.
Puedes revisar la documentación para ver como se instala y configura BloodHound.
Arrancamos el servidor neo4j
Seguidamente podemos ejecutar bloodhound
En este punto tenemos que recolectar toda la información posible de la máquina víctima y depositarla en un comprimido zip el cual abriremos con la herramienta BloodHound. Para ello utilizaremos un script de PowerShell llamado SharpHound. Lo descargamos y subimos a la máquina víctima.
Ahora tenemos que invocar al script de la siguiente forma:
El siguiente paso es descargarnos el comprimido zip generado y lo abrimos con BloodHound
Ahora que tenemos toda la información cargada en BloodHound podemos realizar consultas como saber que usuarios son AS-REP Roaestables, que usuarios son Kerberoastebales, cual es la forma más rápida para convertirte en usuario administrador del dominio, etc.
A través de BloodHound logramos saber que el usuario svc-loanmgr
tiene las propiedades GetChanges
y GetChangesAll
sobre el dominio EGOTISTICAL-BANK.LOCAL
. BloodHound nos revela que a través de la propiedad GetChangesAll
podemos ejecutar un ataque DCSync
Ataque DCSync
Con la herramienta secretsdump
de la suite de Impacket para ejecutar el ataque de la siguiente forma:
Hemos obtenido el hash del usuario Administrator
Pass The Hash
Una vez obtenido el hash del usuario Asministrator procedemos a ejcutar un ataque Pass The Hash
con la herramienta psexec
sin la necesidad de crackear el hash logramos conectarnos a la máquina víctima con máximos privilegios.
La flag de altos privilegios la encontramos en la ruta C:\Users\Administrator\Desktop\root.txt
Hemos completado la máquina Sauna de HackTheBox!! Happy Hacking!!