Page cover

Monteverde

Platform

HackTheBox

O.S

Windows

Level

Medium

Skills

Weak static credentials LDAP Enumeration

Azure AD

Fase 1: Reconocimiento

Para comenzar la fase de reconocimiento ante cualquier equipo, el primer mรฉtodo que suelo utilizar es una enumeraciรณn de todos los puertos TCP que la mรกquina vรญctima tenga abiertos, para asรญ detectar servicios y posibles vectores de ataque.

sudo nmap -sS -p- --open --min-rate 5000 -n -Pn -vv 10.10.10.172 -oN target

Una vez concluida la enumeraciรณn general sobre todos los puertos abiertos TCP de la mรกquina, realizo un escaneo que me permita detectar versiones de los servicios que estรกn activos (-sV) y lanzar scripts de nmap por defecto para intentar obtener informaciรณn extra de cada protocolo (-sC).

nmap -p88,135,389,445,5985 -sCV 10.10.10.172 -oN ports
  • 88: Kerberos

  • 135: RPC

  • 389: LDAP

  • 445: SMB

  • 5985: WinRM

Y como รบltimo mรฉtodo de enumeraciรณn he decidido utilizar la herramienta Crackmapexec para descubrir de manera rรกpida, el nombre de dominio y el nombre del host.

Luego de esto, aรฑado tanto el nombre del host, el nombre de dominio como el FQDN al fichero de DNS (/etc/hosts) para que asรญ, mi mรกquina local no tenga problemas al intentar resolver la IP de la mรกquina.

Fase 2: Explotaciรณn

Una vez tengo una idea general de a que me estoy enfrentando, lo que hago es intentar enumerar recursos compartidos SMB que la mรกquina me pueda permitir ver de manera anรณnima, utilizando herramientas como Smbclient, Smbmap o el propio Crackmapexec, todos estos mรฉtodos sin รฉxito.

Asรญ que lo siguiente que se me ocurre es comprobar si puedo iniciar sesiรณn en el dominio a travรฉs de LDAP de forma anรณnima.

Para ello utilizo la herramienta ldapsearch e intento realizar una enumeraciรณn de todos los objetos del dominio sin especificar ni usuario (-D) ni contraseรฑa (-w)

Verifico que la operaciรณn ha sido exitosa y se ha recuperado toda la informaciรณn relacionada con el dominio.

En este punto, existen dos opciones claras. La primera consiste en guardar toda la salida en un archivo para comenzar a filtrar utilizando herramientas como grep, aprovechando parรกmetros como -C, -A, -B, entre otros. Esto permite identificar patrones relevantes y, posteriormente, realizar bรบsquedas mรกs especรญficas utilizando ldapsearch.

O la otra opciรณn es simplemente conectarnos a travรฉs de LDAP con ayuda de una herramienta que enseรฑa la informaciรณn de una manera mรกs amigable.

En mi caso opto por la segunda y la herramienta que usarรฉ para ello serรก jxplorer, la cual se puede instalar directamente desde los repositorios oficiales de Kali Linux.

Ok, una vez dentro, recomiendo poner la vista en Table Editor, ya que es mucho mรกs cรณmoda a la vista.

Tras un tiempo de anรกlisis, he conseguido extraer los siguientes usuarios:

Procedo a anotarlos en una lista y al ver que hay algรบn que otro nombre un tanto extraรฑo, decido realizar una prueba de credenciales para comprobar que no estuviera ninguna contraseรฑa oculta entre los usuarios.

crackmapexec smb 10.10.10.172 -u users.txt -p users.txt

He de admitir que mis principales sospechas rondaban en torno al usuario AAD_987d7f2f57d2, pero bueno, si HackTheBox dice que era el usuario de los jobs, quien soy yo para decir algo... ๐Ÿ™‚โ€โ†•๏ธ

Obtenido el usuario lo primero que hago es comprobar si pertenece al grupo de administraciรณn remota pero aรบn no hay suerte.

Asรญ que ahora si que si me dedico a enumerar los shares SMB con credenciales vรกlidas.

Bien, el primer share que se me hace agua la boca agua visitar es el de los usuarios, vamos a ver que se encuentra por allรญ ๐Ÿ‘€.

En el directorio del usuario mhope habรญa un fichero llamado azure.xml, el cual he decidido descargarme para analizarlo mejor desde mi mรกquina local.

Una vez abierto con un editor de cรณdigo, se puede apreciar una contraseรฑa en texto plano ๐Ÿซฃ.

Bien, procedo a comprobar si la contraseรฑa es vรกlida para el usuario mhope, y al mismo tiempo intento acceder mediante WinRM utilizando sus credenciales de dominio.

Perfecto!

La flag se encuentra en el Desktop del usuario obtenido.

Fase 3: Post-Explotaciรณn

Al empezar con esta fase, lo primero que suelo hacer es una enumeraciรณn manual sobre mi usuario, los privilegios a los que pertenezco, los grupos asociados, etc.

Dejo por aquรญ algunos de los comandos que suelo ejecutar por si a alguien le son de utilidad.

# Mostrar los privilegios asociados al usuario actual y grupos
whoami /priv | whoami /groups

# Ver ficheros ocultos
dir -Force

# Ver los usuarios del sistema y ver su info
net users
net user nombre_usuario

# Ver usuarios que pertenecen al grupo local de administradores
net localgroup administrators

# Ver variables de entorno definidas
Get-ChildItem env:

# Ver permisos archivos sospechosos
icacls archivo_objetivo

# Ver historial en sistemas con PSReadline
cat $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

Bien, con solo ver los grupos a los que pertenece mi usuario, me doy cuenta que pertenezco a uno de administradores Azure ๐Ÿ˜ฒ.

Por lo cual, tras investigar durante un tiempo, concluรญ que el entorno estรก utilizando Azure AD.

ยฟQuรฉ es Azure AD?

Servicio de identidad y gestiรณn de accesos en al nube de Microsoft. Es la alternativa moderna a Active Directory tradicional (on-premise), pero adaptada al entorno Cloud y multiplataforma.

Por cierto, en mi investigaciรณn he dado con el perfil de XPN y me ha dejado un poco loco los grandiosos artรญculos que tiene y su perfil como Red Teamer en general, dejo por aquรญ abajo los links:

Bien, una vez comprendido que es este servicio, podemos plantearnos otra cuestiรณn.

ยฟCรณmo funciona en realidad Azure AD?

Azure AD Connect permite sincronizar automรกticamente los datos del dominio on-premise con Azure AD en la nube. Este proceso es completamente automatizado, ya que serรญa inviable realizar una carga manual y continua de los datos por parte de una persona.

Ok, pues si las credenciales privilegiadas se encuentran en local, ยฟNo habrรก alguna forma de extraerlas sabiendo que soy administrador del servicio que se encarga de realizar este proceso?

La respuesta es que sรญ, existe un script llamado AdSyncDecrypt que permite:

El link de descarga del script es el siguiente:

Una vez instalado el zip, lo descomprimimos y pasamos tanto el ejecutable, como la librerรญa DLL a la mรกquina vรญctima.

Antes de ejecutar el script, tenemos que encontrarnos en la ruta:

C:\program files\Microsoft Azure AD Sync\bin

Y desde ahรญ lanzo el script con la opciรณn -FullSQL para que la instalaciรณn de Azure AD Connect utilice una instancia completa de SQL Server (en lugar de la versiรณn reducida, localDB) y asรญ evitar problemas al ejecutar.

Una vez obtengo las credenciales, solo quedarรญa realizar un login por WinRM y obtener la flag ๐Ÿ˜‰.

Last updated