¡Amigos de Visionarios!

Azure, Office 365, Cloud, Kerberos, Hash, Ad Connect, bocata de calamares… seguramente te suenen alguno o todos estos conceptos, pero cuando queremos darle una perspectiva de hacking, debemos conocer un poco en profundidad qué es cada cosa y que funcionalidades ofrece, tanto como para atacarlas como para defenderlas.

En este capítulo o serie de ellos vamos a hablar un poco de los componentes cloud de Microsoft y su vinculación con la infraestructura On-Premise para poder explotar la una o la otra.

Vamos a hacer un pequeño repaso a lo que tenemos por debajo para hablar con propiedad, porque los conceptos en el mundo cloud de Microsoft pueden parecer similares, pero no siempre son lo que creemos, y aparte el tema de MS y el cambio de nombres a las cosas a veces nos despista 🙂

azure active directory

https://troopers.de/downloads/troopers19/TROOPERS19_AD_Im_in_your_cloud.pdf

El siguiente concepto que vamos a tratar es el de la sincronización de las cuentas. Jmolina debe estar disponible en mi infraestructura On Premise como actualmente, pero también debe estar, o mejor dicho, que Azure AD la conozca, para poder establecer permisos a los recursos de Azure. Para ello el método más sencillo es la sincronización de cuentas mediante Azure Ad Connect.

Episodio 1: Hacking Azure, Office 365, Ad connect etc.

No tenemos que crear ningún usuario como sabes si has instalado alguna vez el complemento, con proporcionar un usuario con permisos de administración en el DC y otro con permisos Global Admin en Azure, nos creará un usuario con permisos en ambos entornos, el famoso msol_***** en local y Sync_****_*** en Azure AD

Una vez que tenemos conectados los “active directorys” y que sabemos que características nos proporcionan, es importante separar las funciones de seguridad que tenemos según al grado de licenciamiento.

Por lo general para entornos pequeños usaremos la versión gratuita de AAD, pero para acceder a esas funciones que vemos en la literatura tan interesantes, tendremos que adquirir licencias P1 o P2. Por ejemplo, con P1 podemos hacer que nuestros usuarios no usen ciertas palabras ( hasta 1000) en sus contraseñas, como ubicaciones, nombres de productos, empresa, etc…

Si quieres saber qué opciones trae de casa la versión más “baja” del AAD este es tu link.

Lo primero que vamos a hacer es comprobar si la organización cuenta con un Directorio Activo Azure. Solemos entender que si tiene servicios de O365 como el correo usarán el Azure AD, pero puede ser una empresa que no tenga el correo en la nube pero si Azure Ad para publicar máquinas virtuales. Recordar que Azure y Office 365 no es lo mismo.

Vamos a buscar en la url si aparece el tag Managed : https://login.microsoftonline.com/getuserrealm.srf?login=admin@empresa.onmicrosoft.com&xml=1

Episodio 1: Hacking Azure, Office 365, Ad connect etc.

Ahora vamos a empezar con el proceso de descubrimiento de cuentas, por ejemplo con la herramienta O365Creeper le pasamos una lista de correos y nos devuelve si existen o no. Para montar la lista hay varios procesos, puedes usar alguna lista, como la mía de GIthub con los apellidos más comunes, y añadir la letra al estilo n.apellido@ o cualquiera que sea la nomenclatura que use el administrador. O puedes usar linkeding scraping o cualquiera de las técnicas que hay de OSINT

osint

Una vez que tenemos usuarios, vamos a sacar unas contraseñas. Como sabes el proceso que se emplea es la fuerza bruta, usando contraseñas conocidas, leaks de empresas, etc, pero debemos realizarlo de una manera horizontal, es decir, no usar un usuario:10000 contraseñas, sino probar 1 contraseña para cada usuario, parar, y seguir, así los mecanismos anti fuerza bruta no saltarán al recibir 200 logins fallidos para una cuente en un segundo…lo que se denomina Passwords Spray. Para ello uso la herramienta 0365spray. La instalamos y ejecutamos la validación del dominio:

python3 o365spray.py –validate –domain seguridadsi.com

También podemos hacer lo mismo que con la anterior tool python3 o365spray.py –enum -U usernames.txt –domain seguridadsi.com.

Donde realmente vamos a usar la herramienta es con la opción del Password Spray, le indicamos cuantos passwords queremos probar en bloques de cuanto tiempo, por ejemplo dos passwords por minuto…lo que creas conveniente:

python3 o365spray.py  –spray -U usernames.txt -P passwords.txt –count 2 –lockout 5 –domain seguridadsi.com

La herramienta te dirá si ha encontrado algún usuario/contraseña válido y si esta tiene activado el MFA… importante.

También recuerda que las opciones de auditoria están marcadas por defecto desde finales del 2019, por lo que si hay alguien mirando, verá “cosas”

Episodio 1: Hacking Azure, Office 365, Ad connect etc.

Soy muy partidario de la frase “cosas que ves solo cuando miras” y como sabes, hemos hablado largo y tendido sobre la necesidad de monitorización si eres el defensor…

Como siempre tengo ese lado ofensivo/defensivo, trasteo un poco tanto en la herramienta como en los logs para ver si puedo cambiar el user-agent y si este me serviría para crear alertas. Ya sabes que muchas tools dejan su “firma” en el UAgent y no está de mal comprobarlo.

UAgent

El siguiente paso sería ver el correo del usuario J y buscar claves, cosas que la nueva escuela no suelen hacer, o mirar los fileservers… bueno vamos a seguir recopilando información. Como usuario normal de AAD tenemos la posibilidad de enumerar el entorno, para ellos, vamos a usar la herramienta o365 Recon que hace uso de funciones de los propios módulos de administración de Azure en Powershell para facilitarnos la tarea. La ejecución de la herramienta nos da la pertenencia a grupos, nos enumera los usuarios, y nos da bondades como por ejemplo el equipo que tiene el Ad Connect instalado… lo usaremos más adelante…

Episodio 1: Hacking Azure, Office 365, Ad connect etc.

Podemos complementar la salida con unas modificaciones para ver el estado del MFA: 

Get-MsolUser -EnabledFilter EnabledOnly | select DisplayName,UserPrincipalName,@{N=”MFA Activado”; E={ if( $_.StrongAuthenticationRequirements.State -ne $null){ $_. StrongAuthenticationRequirements.State} else { “NO”}}}

Si queremos realizar estas funciones de una manera más gráfica, podemos usar la suite ROADTools, con dos funcionalidades muy interesantes, o más bien tres. Usa la información de la API Graph, nos ofrece un Front End gráfico para visualizar la información y nos ofrece un plugin para conectarlo con nuestra base de datos de BloodHound para poder ver las relaciones entre los usuarios cloud/on-premise .

Para poder usar esta herramienta tenemos que autenticarnos, siguiendo el hilo del artículo, con un usuario que hayamos podido descubrir sus credenciales, pero la herramienta nos permite usar Primary Refresh Tokens (PRT) por ejemplo obteniendo la cookie de un equipo que hayamos vulnerado y tenga habilitado el single sing on para no tener que autenticarse cada vez que entra a Azure. Este tipo de ataque se denomina… pass-the-prt 🙂 original. El mejor procedimiento para la extracción y generación de la cookie lo tenéis en este post.

Seguimos con más vectores de ataque. Imaginamos que hemos comprometido la máquina donde se ejecuta AD Connect y que podemos usar “el amigo de los niños hackers” o Mimikatz…

Episodio 1: Hacking Azure, Office 365, Ad connect etc.

Con esta contraseña, podemos usar secretsdump de la suite Impacket para realizar un DCSYNC, haciéndonos pasar por un dc, y sincronizando todos los usuarios/hashes de la organización…

DCSYNC

Tenemos otras vías de ataque en el caso de poder acceder al equipo con Azure Ad Connect y que no podamos usar la herramienta Mimikatz, por un antivirus o lo que seas… podemos bajar el fichero mdf del sql server express que gestiona la aplicación y obtener unos cuantos datos.

Episodio 1: Hacking Azure, Office 365, Ad connect etc.

Tenemos varios campos que buscar, algunos en el registro de la máquina, al final necesitamos obtener:

Adsync database • Encrypted data • Entropy • Instance ID • Keyset ID • Registry • Encryption Key (DPAPI protected) • DPAPI machine secrets

Si queremos realizar el procedimiento manualmente podemos seguir este link de la charla I’m in your cloud… reading everyone’s email

Podemos usar una tool que la próxima empresa nos facilita para realizar la labor de extraer todos estos datos. AdConnectDump en concreto.

Dejamos estos conceptos por ahora. Hemos aprendido un poco de nomenclatura, alguna tool de enumeración, alguno procedimiento de hacking, detección… En siguientes capítulos volveremos con este mundo del hacking cloud.

¡Sigue Aprendiendo!

Si quieres que te ayudemos a poner en marcha este tipo de proyecto, no dudes en contactar con nosotros. También puedes aprovechar las formaciones existentes para ampliar tus conocimientos 👇🏼

>> Más info

¡Gracias por leernos! 😉

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like