En esta serie de entradas, repasaremos algunas técnicas para realizar pentesting sobre entornos en Azure. En esta cuarta entrada, vamos a ver como buscar información teniendo un acceso al entorno.
Antes de comenzar, si estás viendo este contenido por primera vez, te recomendamos ir a las partes anteriores:
- https://labitacoradelhacker.com/atacar-a-la-nube-pentesting-en-azure-parte-1-fundamentos/
- https://labitacoradelhacker.com/atacar-a-la-nube-pentesting-en-azure-parte-2-iaas-y-paas/
- https://labitacoradelhacker.com/atacar-a-la-nube-pentesting-en-azure-parte-3-azure-ad/
Ahora sí, comencemos:
Una vez que hemos conseguido comprometer una cuenta, debemos iniciar sesión en Azure, para ello es importante entender las formas de acceso que tenemos a la plataforma, y como son otorgados los permisos. Esto se explica en la parte 1.
Cuando instalamos alguna herramienta CLI, el SDK permitirá la autenticación con Azure, y esto a su vez permitirá que podamos obtener información tanto de la cuenta como de los recursos a los que tenemos acceso:

Aunque en este punto podemos acceder a través del Portal, es conveniente que podamos utilizar Az en Powershell, ya que esto nos permitirá ganar experiencia en la lectura de los resultados. Recordemos que las herramientas adicionales, como Microburst o Powerzure (que no son parte de la suite de Microsoft) no son gráficas, y por ello, necesitaremos aprender a interpretar las salidas.
Entonces, con Az instalado, iniciaremos sesión:

Una vez conectados, descargaremos dos herramientas que nos ayudarán a continuar:
- Microburst: https://github.com/NetSPI/MicroBurst
- Powerzure: https://github.com/hausec/PowerZure
Con la herramienta Powerzure, vamos a ejecutar los siguientes comandos:
Import-Module .\PowerZure.psm1
Get-AzureTargets
Powerzure es una herramienta que nos permitirá saber que rol tiene el usuario dentro de nuestro entorno, tanto para Azure AD, como para los recursos dentro de una suscripción. En este caso, nuestra cuenta comprometida tiene permisos de Global Reader para Azure AD, y de Reader para los recursos. Además de esto Powerzure muestra los recursos a los que tiene acceso nuestro usuario:

Si bien esto nos permite tener un reconocimiento inicial, usando Microburst podemos descargar la información de los recursos, a fin de poder enumerar de manera más fácil. Para ello, descargaremos Microburst y lo iniciaremos:

Import-Module .\Microburst.psm1
New-Item -Name "informacion_microburst" -ItemType "directory"
Get-AzDomainInfo -Verbose -Folder informacion_microburst
Exploramos el directorio en busca de información. La estructura creada por la herramienta nos muestra lo siguiente:
- Files: Archivos en cuenta de almacenamiento
- Groups: Información de grupos existentes en Azure AD
- Interfaces: Interfaces de red creadas para los recursos, incluyendo direcciones IP e información de balanceadores de carga
- RBAC: Usuarios asignados a roles de Contributor y Owner, así como la lista de Roles existentes
- Resources: Información de todos los recursos creados, servicios de aplicación (app services), Despliegues (Deployments), Discos adjuntos, políticas de acceso a Keyvault, Grupo de recursos e información de bases SQL Server.
- Virtual machines: Información sobre máquinas virtuales
- Firewall Rules: Información sobre reglas de firewall, NSG y ASG
- PublicIPs: Direcciones IP públicas
- Users: Información de los usuarios de Azure AD.
Podemos comenzar revisando los usuarios del AD, ya que nuestro usuario comprometido tiene acceso de lectura al Azure AD.

Con esta información podemos tener una lista más amplia de usuarios válidos, y obtener nuevas credenciales. Podemos enfocar los esfuerzos después de analizar la información de los usuarios a través de los Cmdlets de Az Powershell. Por ejemplo, es posible ver los roles que tiene un usuario específico a través de los siguientes comandos:
Connect-AzureAD
Get-AzRoleAssignment -SignInName [email protected] | FL DisplayName, RoleDefinitionName, Scope

En este caso, el usuario tiene el rol de lector sobre toda la suscripción.
Veamos como consultar los roles asignados sobre el directorio:
Get-AzureADUser -Filter "userPrincipalName eq '[Usuario]@[Dominio]'"
Get-AzureADUserMembership -ObjectId [objectID]
El primer comando permitirá obtener el objectID del usuario, mientras que el segundo nos indicará el rol que tiene dicho usuario sobre Azure AD:


Como podemos ver, en este caso, el usuario en consulta, tiene el rol «Application Administrator», lo cual suena interesante si queremos comenzar a escalar privilegios. Dejaremos esta parte para una entrada posterior.
Otro de los resultados interesantes del escaneo, son los archivos que contienen información sobre las máquinas virtuales y las reglas de firewall, esto nos permitiría saber si existen puertos de administración remota que podamos aprovechar después:


No todos los usuarios con rol de lectura, tienen acceso a todos los recursos, ya que hay algunos que requieren otro nivel de privilegio más específico, por ejemplo, nuestro usuario tiene rol de lectura a la suscripción, pero no puede listar los objetos en una cuenta de almacenamiento:

Por ahora dejaremos esta entrada aquí. Es importante que como parte de la enumeración, continuemos explorando las salidas de Microburst, y ejecutando comandos de Az Powershell en busca de información sobre los grupos y los roles existentes en el tenant.