Azure
🔍 Reconnaissance & Enumeration
Initial Discovery
- Identify Azure tenant (login.microsoftonline.com)
- Enumerate Azure AD users (o365creeper)
- Check for open blob storage
- Subdomain enumeration for Azure services
- Identify exposed Azure APIs
- Check for Azure DevOps instances
- App Registration
AADInternals Enumeration
# Install module
Install-Module AADInternals
# Get tenant info
Get-AADIntLoginInformation -UserName user@target.com
Get-AADIntTenantDomains -Domain target.com
Azure CLI Reconnaissance
# Login
az login
# Get subscription info
az account list --output table
# List resource groups
az group list --output table
# List all resources
az resource list --output table
👤 Azure AD Assessment
User & Group Enumeration
- Enumerate all users
- Identify privileged users (Global Admin, etc.)
- List all groups and memberships
- Check for guest users
- Identify service principals
- Review app registration
AzureHound Collection
# Invoke AzureHound
Import-Module Az
Import-Module AzureADPreview
Connect-AzureAD
# Collect data for BloodHound
Invoke-AzureHound
Conditional Access
- Review conditional access policies
- Identify policy gaps
- Test MFA enforcement
- Check for legacy auth enabled
- Verify device compliance policies
🔐 Authentication & Identity
Password Security
- Test password spray attacks
- Check for password hash sync
- Review self-service password reset
- Test for weak passwords
- Check banned password list
Token Abuse
- Extract access tokens
- Test token replay
- Check refresh token validity
- Test for token leakage
- JWT manipulation testing
# Get access token
$token = (Get-AzAccessToken).Token
# Use token with REST API
$headers = @{Authorization = "Bearer $token"}
Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/me" -Headers $headers
☁️ Azure Resources Assessment
Storage Accounts
- Check for public blob access
- Enumerate containers
- Test SAS token permissions
- Check for anonymous access
- Review access policies
- Test for misconfigured CORS
# List public blobs
az storage blob list --account-name TARGET --container-name CONTAINER --output table
# Anonymous access check
curl https://TARGET.blob.core.windows.net/CONTAINER/FILE
Key Vault
- Enumerate key vaults
- Check access policies
- List secrets and keys
- Test for over-permissive access
- Review soft-delete settings
# List key vaults
az keyvault list --output table
# List secrets
az keyvault secret list --vault-name VAULT_NAME
Virtual Machines
- Enumerate all VMs
- Check for public IPs
- Review NSG rules
- Test for exposed management ports
- Check disk encryption
- Review extension configurations
- Test Managed Identity abuse
SQL Databases
- Check for public endpoints
- Test firewall rules
- Review Azure AD integration
- Check for TDE encryption
- Test for SQL injection
🔄 Managed Identities
System-Assigned Identity
# From compromised VM, get token
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true
User-Assigned Identity
- Identify user-assigned identities
- Check assigned permissions
- Test for privilege escalation
- Review cross-resource access
IMDS Exploitation
- Access Instance Metadata Service
- Extract tokens from IMDS
- Test token permissions
- Pivot using obtained tokens
⚙️ Azure DevOps Security
Pipeline Security
- Check for exposed repos
- Review pipeline configurations
- Test for secrets in pipelines
- Check variable group permissions
- Review service connections
Repository Access
- Enumerate repositories
- Check branch policies
- Test for sensitive data in code
- Review commit history
- Check for leaked credentials
Azure Role Abuse
- Check for custom roles
- Identify over-permissive roles
- Test for role assignment capability
- Check management group inheritance
🛡️ Security Configurations
Network Security
- Review NSG rules
- Check for open management ports (3389, 22, 5985)
- Verify service endpoints
- Test private endpoints
- Review VNet peering
- Check for Azure Firewall
Logging & Monitoring
- Verify Azure Activity Log
- Check diagnostic settings
- Review Azure Monitor alerts
- Test for log gaps
- Verify Microsoft Defender status
Installation
# Azure CLI
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# AADInternals
Install-Module AADInternals
# MicroBurst
git clone https://github.com/NetSPI/MicroBurst
Import-Module .\MicroBurst.psm1
📋 Quick Commands Reference
# Enumerate users
az ad user list --output table
# Get current user permissions
az role assignment list --assignee $(az ad signed-in-user show --query id -o tsv)
# List all storage accounts
az storage account list --query "[].{name:name,location:location}" -o table
# Check VM managed identity
az vm identity show --resource-group RG --name VM
# Get Key Vault secrets
az keyvault secret list --vault-name VAULT --output table
Let's Connect
Have a project in mind or want to discuss cybersecurity? Let's talk!