Monteverde - HackTheBox

6 minute read

En este post se explicarán los pasos que se han seguido para conseguir vulnerar la seguridad de la máquina Monteverde en Hack The Box, tal y como se refleja, es un sistema Windows con un nivel de dificultad medio (4.7).

Ilustración 1: Monteverde.

La fase de enumeración dio comienzo haciendo uso de NMAP:

Ilustración 2: Comando de NMAP ejecutado.

Ilustración 3: Resultados de NMAP parte 1.

Ilustración 4: Resultados de NMAP parte 2.

Analizando los resultados obtenidos, se puede apreciar como la máquina objetivo tiene configurado un Active Directory (AD), donde el dominio es MEGABANK.LOCAL0 y se tienen servicios habilitados tales como Kerberos, LDAP y WinRM.

Se probaron conexiones por defecto a muchos de los servicios identificados con NMAP:

Ilustración 5: Intento de conexión a SMB.

Ilustración 6: Obteniendo los usuarios del AD mediante RPC.

Ilustración 7: Obteniendo los grupos del AD mediante RPC.

Mediante el servicio de RPC, se obtuvieron los nombres de usuarios y grupos existentes del Active Directory. Ejecutando enum4linux se identificaron los usuarios que pertenecen al grupo "Azure Admins", que podían llegar a ser un vector de ataque en la escalada de privilegios.

Ilustración 8: Ejecución de enum4linux.

Ilustración 9: Usuarios que pertenecen al grupo Azure Admins.

Posteriormente, para conseguir más información se usó el comando ldapsearch.

Ilustración 10: Obteniendo los namingcontexts con ldapsearch.

Con ldapsearch, se usó una query de búsqueda, que proporcionaba los nombres de usuarios, la descripción y la última vez que habían iniciado sesión en el sistema.

Ilustración 11: Resultados de la query de búsqueda con ldapsearch parte 1.

Ilustración 12: Resultados de la query de búsqueda con ldapsearch parte 2.

Ilustración 13: Resultados de la query de busqueda con ldapsearch parte 3.

Los resultados que proporcionó la búsqueda con ldapsearch, mostraban que lo únicos usuarios que habían iniciado sesión en el sistema eran mhope, SABatchJobs y AAD_987d7f2f57d2.

Se intentó realizar un ataque AS-REP Roasting (https://www.tarlogic.com/blog/como-atacar-kerberos/), usando los nombres de las cuentas de usuario obtenidas, con la finalidad de encontrar usuarios que no requieren pre-autenticación de Kerberos y así conseguir el hash de la contraseña. Para ello se usó el script GetNPUsers.py de Impacket.

Ilustración 14: Ejecutando GetNPUsers.py con los nombres de usuario.

Esto último no funcionó, por tanto, la experiencia adquirida con otras máquinas (siempre se deben usar los nombres de usuarios y contraseñas encontrados, en todos los diccionarios que se empleen) y los comentarios en el foro, hicieron que se realizara un ataque de diccionario a SMB, incluyendo los nombres de usuarios como contraseñas.

Ilustración 15: Política de contraseñas.

Ilustración 16: Ataque realizado con crackmapexec.

El usuario SABatchJobs tenía por contraseña SABatchJobs, no era posible acceder al sistema mediante WinRM, pero realizando una conexión con smbclient se podía identificar lo siguiente:

Ilustración 17: Conexión SMB del usuario SABatchJobs.

Ilustración 18: Contenido del directorio//10.10.10.172/ users$.

Ilustración 19: Fichero con información de azure del usuario mhope.

Ilustración 20: Contraseña del usuario mhope.

Obtenida la contraseña del usuario mhope, se procedió a realizar una conexión mediante WinRM, pudiendo acceder así al sistema:

Ilustración 21: Programa en ruby para establecer conexión mediante WinRM.

Ilustración 22: Flag user.txt

Se descargó ConPtyShell (https://github.com/antonioCoco/ConPtyShell) para obtener una Full Interactive Shell en PowerShell.

Ilustración 23: Descargando ConPtyShell.ps1.

Ilustración 24: Privilegios del usuario mhope.

Tal y como se había identificado en la fase de enumeración, el usuario mhope peternece al grupo "Azure Admins", por tanto, se buscó información para descubrir si se podría realizar una escalada de privilegios con algún usuario miembro de este grupo.

Ilustración 25: Grupos a los que pertenece el usuario mhope.

Ilustración 26: Algunos grupos del dominio.

Ilustración 27: Usuarios que pertenecen al grupo "Azure Admins".

Cabe destacar que también se intentó ejecutar SharpHound.ps1, para conocer mejor el bosque del directorio activo, pero el script era detenido por el antivirus:

Ilustración 28: Intento de ejecución de SharpHound.ps1.

Para poder realizar la escalada de privilegios, es necesario entender el entorno que se quiere vulnerar y su funcionamiento. Dado que el principal vector de ataque parecía estar en realizar algún tipo de acción con el usuario que pertenece al grupo "Azure Admins", se procedió a investigar el entorno de Azure que tiene relación con los Active Directory. Aprendiendo lo siguiente:

  • Azure Active Directory (Azure AD) es el directorio y el servicio de administración de identidades de múltiples inquilinos de Microsoft. Azure AD se puede integrar con un Directorio Activo de Windows Server existente, brindando a las organizaciones la capacidad de aprovechar sus inversiones existentes en identidades locales para administrar el acceso a aplicaciones SaaS (Software as a Service) basadas en la nube.
  • Azure AD Connect se encarga de todas las operaciones relacionadas con la sincronización de datos de identidad entre el entorno local y Azure AD. Azure AD Connect es la herramienta de Microsoft diseñada para satisfacer y lograr sus objetivos de identidad híbrida. Ofrece las siguientes características:
    • Sincronización de hash de contraseñas (_ Password Hash Synchronization _): un método de inicio de sesión que sincroniza el hash de la contraseña de un usuario de AD local con Azure AD.
    • Autenticación de paso a través (_ Pass Through Authentication _): un método de inicio de sesión que permite a los usuarios usar la misma contraseña de forma local y en la nube, pero que no requiere la infraestructura adicional de un entorno federado.
    • Integración de federación : la federación es una parte opcional de Azure AD Connect y puede utilizarse para configurar un entorno híbrido mediante una infraestructura local de AD FS. También proporciona funcionalidades de administración de AD FS, como la renovación de certificados e implementaciones de servidor de AD FS adicionales.
    • Sincronización : responsable de la creación de usuarios, grupos y otros objetos. También de asegurar que la información de identidad de los usuarios y los grupos de su entorno local coincide con la de la nube. Esta sincronización también incluye los códigos hash de contraseña.
    • Seguimiento de estado : Azure AD Connect Health puede proporcionar una sólida supervisión y una ubicación central en Azure Portal donde se puede ver esta actividad.

Se puede encontrar información más detallada en:

Ahora bien, el ataque que se llevó a cabo explotaba una vulnerabilidad en _ Password Hash Synchronization _de Azure AD Connect , consistía en realizar un DCSync , es decir, permite a un atacante simular el comportamiento del controlador de dominio (DC) para recuperar datos de contraseña a través de la replicación de dominio.

Dicho ataque, así como otras variantes y sus detalles están muy bien explicados en:

Para realizar el ataque y conseguir acceso al sistema con el usuario administrador, se usó el script https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Azure-ADConnect.ps1:

Ilustración 29: Obteniendo la contraseña del usuario administrator.

También es posible ejecutar el ataque con el script que se detalla en https://blog.xpnsec.com/azuread-connect-for-redteam/, pero es necesario cambiar los argumentos de la conexión de la base de datos.

Ilustración 30: Argumentos de la conexión de la base de datos por defecto.

Ilustración 31: Argumentos correctos para que el ataque se realice con éxito.

Esto es debido a que la base de datos en la máquina víctima no era la misma que la del ejemplo que se detalla en el blog.

Ilustración 32: Obteniendo la contraseña del usuario administrator con el script de https://blog.xpnsec.com/azuread-connect-for-redteam.

Por último, mediante WinRM se accedió al sistema como usuario administrador:

Ilustración 33: Usando Evil-WinRM para acceder al sistema.

Como conclusión se podría decir que ha sido una máquina muy completa, dado que aporta una gran variedad de nuevos conocimientos, la mayoría en la escalada de privilegios.