Saltearse al contenido

Pentesting Azure

Azure es distinto de AWS/GCP en un punto clave: está profundamente entrelazado con Entra ID (antes Azure AD), la identidad que también gobierna Microsoft 365. Eso significa que un compromiso de Azure puede extenderse a M365 y viceversa (ver Microsoft 365 y Entra ID), y que la enumeración y escalada giran en torno a usuarios, roles, aplicaciones y managed identities del tenant. Es el entorno cloud más común en empresas que ya usan Windows/AD.

Dos planos: Entra ID y Azure Resource Manager

Sección titulada «Dos planos: Entra ID y Azure Resource Manager»
Entra ID (identidad) usuarios, grupos, apps, roles de directorio (Global Admin...)
Azure RM (recursos) suscripciones, grupos de recursos, VMs, storage, roles RBAC (Owner...)

Ambos tienen sus propios roles y su propia escalada. Global Administrator (Entra) y Owner (RM) son los objetivos. Un enlace clave: un Global Admin puede elevarse para controlar todas las suscripciones.

# formas de entrar
az login # usuario/contraseña, token, service principal
az login --service-principal -u <appId> -p <secret> --tenant <tenant>
# tokens robados, refresh tokens (ver cloud-m365), managed identities (cloud-metadata)
# CLI
az account show ; az ad signed-in-user show
az role assignment list --all ; az resource list
# herramientas especializadas
ROADrecon # enumeración exhaustiva de Entra ID (dump a base de datos)
AzureHound # BloodHound para Azure -> grafo de escalada
MicroBurst # scripts de enum/explotación (PowerShell)
Stormspotter / PowerZure

AzureHound + BloodHound es tan potente aquí como en AD on-prem: mapea rutas de escalada entre usuarios, roles, apps y recursos.

# Entra ID
- Application / Service Principal con permisos excesivos (API permissions, consent)
- roles de directorio mal asignados; "Privileged Role Administrator" -> Global Admin
- abuso de consentimiento de apps (illicit consent grant) -> tokens de usuarios
- dynamic groups mal configurados (añadirte a un grupo privilegiado)
# Azure RM
- roleAssignments/write (User Access Administrator) -> asignarte Owner
- Managed Identity de una VM/función con permisos -> robar su token (cloud-metadata)
- Automation Accounts / Runbooks con credenciales o identidades privilegiadas
- Custom roles con acciones peligrosas (Microsoft.Authorization/*)

Managed Identities (el equivalente al rol de instancia)

Sección titulada «Managed Identities (el equivalente al rol de instancia)»
# desde una VM comprometida, pedir el token de su Managed Identity (ver cloud-metadata)
curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"
# usar el token para actuar como esa identidad (az rest / API)
# añadir credenciales a un Service Principal (clientSecret/cert) -> acceso persistente
# crear app con permisos y consentir; añadir usuario a rol privilegiado
# federación / cambios en autenticación (más sigiloso, ver cloud-m365)
  • MFA y Conditional Access en todos los usuarios, especialmente privilegiados.
  • PIM (Privileged Identity Management): roles privilegiados just-in-time, no permanentes.
  • Revisar permisos de apps/Service Principals y el consentimiento (bloquear consentimiento de usuario).
  • Mínimo privilegio RBAC; vigilar roleAssignments/write y roles custom peligrosos.
  • Logs: Entra ID sign-in/audit logs, Azure Activity Log, Microsoft Defender for Cloud; alertas sobre cambios de roles/credenciales de SP.
  • Acceso con usuario/SP/token y az account show
  • Enumerar Entra ID (ROADrecon) y recursos RM
  • AzureHound + BloodHound para rutas de escalada
  • Apps/Service Principals con permisos excesivos / consent
  • roleAssignments/write → Owner; roles de directorio → Global Admin
  • Managed Identities de VMs/funciones (token, Metadata service (IMDS))
  • Automation Accounts/Runbooks con credenciales
  • Puente a M365 (Microsoft 365 y Entra ID) y persistencia