githubEdit

Azure

Azure

Basic Info

# Azure services list by domain
https://learn.microsoft.com/en-us/azure/security/fundamentals/azure-domains

# Tools 
https://github.com/dirkjanm/ROADtools
https://github.com/dafthack/PowerMeta
https://github.com/NetSPI/MicroBurst
https://github.com/nccgroup/ScoutSuite
https://github.com/hausec/PowerZure
https://github.com/fox-it/adconnectdump
https://github.com/FSecureLABS/Azurite
https://github.com/mburrough/pentestingazureapps
https://github.com/Azure/Stormspotter
https://github.com/nccgroup/azucar
https://github.com/dafthack/MSOLSpray
https://github.com/BloodHoundAD/BloodHound
https://github.com/nccgroup/Carnivore
https://github.com/CrowdStrike/CRT
https://github.com/Kyuu-Ji/Awesome-Azure-Pentest
https://github.com/cyberark/blobhunter
https://github.com/Gerenios/AADInternals
https://github.com/prowler-cloud/prowler

- Check if company is using Azure AD:
https://login.microsoftonline.com/getuserrealm.srf?login=username@COMPANY.onmicrosoft.com&xml=1
- If NameSpaceType is "Managed", the company uses Azure AD
- Enumerate Azure AD emails
https://github.com/LMGsec/o365creeper

Auth methods:
 Password Hash Synchronization
    Azure AD Connect
    On-prem service synchronizes hashed user credentials to Azure
    User can authenticate directly to Azure services like O365 with their internal domain credential
 Pass Through Authentication
     Credentials stored only on-prem
    On-prem agent validates authentication requests to Azure AD
    Allows SSO to other Azure apps without creds stored in cloud
 Active Directory Federation Services (ADFS)
    Credentials stored only on-prem
    Federated trust is setup between Azure and on-prem AD to validate auth requests to the cloud
    For password attacks you would have to auth to the on-prem ADFS portal instead of Azure endpoints
 Certificate-based auth
    Client certs for authentication to API
    Certificate management in legacy Azure Service Management (ASM) makes it impossible to know who created a cert (persistence potential)
    Service Principals can be setup with certs to auth
 Conditional access policies
 Long-term access tokens
    Authentication to Azure with oAuth tokens
    Desktop CLI tools that can be used to auth store access tokens on disk
    These tokens can be reused on other MS endpoints
    We have a lab on this later!
 Legacy authentication portals

Recon:
 O365 Usage
    https://login.microsoftonline.com/getuserrealm.srf?login=username@acmecomputercompany.com&xml=1
    https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/test@targetdomain.com?Protocol=Autodiscoverv1
 User enumeration on Azure can be performed at
    https://login.Microsoft.com/common/oauth2/token
       This endpoint tells you if a user exists or not
    Detect invalid users while password spraying with:
       https://github.com/dafthack/MSOLSpray
    For on-prem OWA/EWS you can enumerate users with timing attacks (MailSniper)
 Auth 365 Recon:
(https://github.com/nyxgeek/o365recon

Microsoft Azure Storage:
 Microsoft Azure Storage is like Amazon S3
 Blob storage is for unstructured data
 Containers and blobs can be publicly accessible via access policies
 Predictable URL’s at core.windows.net
    storage-account-name.blob.core.windows.net
    storage-account-name.file.core.windows.net
    storage-account-name.table.core.windows.net
    storage-account-name.queue.core.windows.net
 The “Blob” access policy means anyone can anonymously read blobs, but can’t list the blobs in the container
 The “Container” access policy allows for listing containers and blobs
 Microburst https://github.com/NetSPI/MicroBurst
    Invoke-EnumerateAzureBlobs
    Brute forces storage account names, containers, and files
    Uses permutations to discover storage accounts
        PS > Invoke-EnumerateAzureBlobs –Base 

Password Attacks
 Password Spraying Microsoft Online (Azure/O365)
 Can spray https://login.microsoftonline.com
--
POST /common/oauth2/token HTTP/1.1
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Content-Length: 195
Expect: 100-continue
Connection: close

resource=https%3A%2F%2Fgraph.windows.net&client_id=1b730954-1685-4b74-9bfd-
dac224a7b894&client_info=1&grant_type=password&username=user%40targetdomain.com&passwor
d=Winter2020&scope=openid
--
 MSOLSpray https://github.com/dafthack/MSOLSpray
    The script logs:
       If a user cred is valid
       If MFA is enabled on the account
       If a tenant doesn't exist
      ▪ If a user doesn't exist
       If the account is locked
       If the account is disabled
       If the password is expired
    https://docs.microsoft.com/en-us/azure/active-directory/develop/reference-aadsts-error-codes

Password protections & Smart Lockout
 Azure Password Protection  Prevents users from picking passwords with certain words like seasons, company name, etc.
 Azure Smart Lockout  Locks out auth attempts whenever brute force or spray attempts are detected.
    Can be bypassed with FireProx + MSOLSpray
    https://github.com/ustayready/fireprox

Phising session hijack
 Evilginx2 and Modlishka
    MitM frameworks for harvesting creds/sessions
    Can also evade 2FA by riding user sessions
 With a hijacked session we need to move fast
 Session timeouts can limit access
 Persistence is necessary

Steal Access Tokens
 Azure config files:
   web.config
   app.config
   .cspkg
   .publishsettings
 Azure Cloud Service Packages (.cspkg)
 Deployment files created by Visual Studio
 Possible other Azure service integration (SQL, Storage, etc.)
 Look through cspkg zip files for creds/certs
 Search Visual Studio Publish directory
    \bin\debug\publish
 Azure Publish Settings files (.publishsettings)
    Designed to make it easier for developers to push code to Azure
    Can contain a Base64 encoded Management Certificate
    Sometimes cleartext credentials
    Open publishsettings file in text editor
    Save “ManagementCertificate” section into a new .pfx file
    There is no password for the pfx
    Search the user’s Downloads directory and VS projects
 Check %USERPROFILE&\.azure\ for auth tokens
 During an authenticated session with the Az PowerShell module a TokenCache.dat file gets generated in the %USERPROFILE%\.azure\ folder.
 Also search disk for other saved context files (.json)
 Multiple tokens can exist in the same context file

Post-Compromise
 What can we learn with a basic user?
 Subscription Info
 User Info
 Resource Groups
 Scavenging Runbooks for Creds
 Standard users can access Azure domain information and isn’t usually locked down
 Authenticated users can go to portal.azure.com and click Azure Active Directory
 O365 Global Address List has this info as well
 Even if portal is locked down PowerShell cmdlets will still likely work
 There is a company-wide setting that locks down the entire org from viewing Azure info via cmd line: Set-MsolCompanySettings  UsersPermissionToReadOtherUsersEnabled $false

Azure: CLI Access
 Azure Service Management (ASM or Azure “Classic”)
    Legacy and recommended to not use
 Azure Resource Manager (ARM)
    Added service principals, resource groups, and more
    Management Certs not supported
 PowerShell Modules
    Az, AzureAD & MSOnline
 Azure Cross-platform CLI Tools
    Linux and Windows client

Azure: Subscriptions
 Organizations can have multiple subscriptions
 A good first step is to determine what subscription you are in
 The subscription name is usually informative
 It might have “Prod”, or “Dev” in the title
 Multiple subscriptions can be under the same Azure AD directory (tenant)
 Each subscription can have multiple resource groups

Azure User Information
 Built-In Azure Subscription Roles
    Owner (full control over resource)
    Contributor (All rights except the ability to change permissions)
    Reader (can only read attributes)
    User Access Administrator (manage user access to Azure resources)
 Get the current user’s role assignement
    PS> Get-AzRoleAssignment
 If the Azure portal is locked down it is still possible to access Azure AD user information via MSOnline cmdlets
 The below examples enumerate users and groups
    PS> Import-Module MSOnline
    PS> Connect-MsolService
Or
    PS> $credential = Get-Credential
    PS> Connect-MsolService -Credential $credential
    
    PS> Get-MSolUser -All
    PS> Get-MSolGroup –All
    PS> Get-MSolGroupMember –GroupObjectId 
    PS> Get-MSolCompanyInformation
 Pipe Get-MSolUser –All to format list to get all user attributes
    PS> Get-MSolUser –All | fl

Azure Resource Groups
 Resource Groups collect various services for easier management
 Recon can help identify the relationships between services such as WebApps and SQL
    PS> Get-AzResource
    PS> Get-AzResourceGroup
    PS> Get-AzStorageAccount
Azure: Runbooks
 Azure Runbooks automate various tasks in Azure
 Require an Automation Account and can contain sensitive information like passwords
    PS> Get-AzAutomationAccount
    PS> Get-AzAutomationRunbook -AutomationAccountName  -ResourceGroupName 
 Export a runbook with:
    PS> Export-AzAutomationRunbook -AutomationAccountName  -ResourceGroupName  -Name  -OutputFolder .\Desktop\

Azure VMs:
   PS> Get-AzVM
   PS> $vm = Get-AzVM -Name "VM Name"
   PS> $vm.OSProfile
   PS> Invoke-AzVMRunCommand -ResourceGroupName $ResourceGroupName -VMName $VMName -CommandId RunPowerShellScript -ScriptPath ./powershell-script.ps1

Azure Virtual Networks:
   PS> Get-AzVirtualNetwork
   PS> Get-AzPublicIpAddress
   PS> Get-AzExpressRouteCircuit
   PS> Get-AzVpnConnection

# Quick 1-liner to search all Azure AD user attributes for passwords after auth'ing with Connect-MsolService:  
$x=Get-MsolUser;foreach($u in $x){$p = @();$u|gm|%{$p+=$_.Name};ForEach($s in $p){if($u.$s -like "*password*"){Write("[*]"+$u.UserPrincipalName+"["+$s+"]"+" : "+$u.$s)}}}

# https://www.synacktiv.com/posts/pentest/azure-ad-introduction-for-red-teamers.html

# Removing Azure services
- Under Azure Portal -> Resource Groups

# Interesting metadata instance urls:
http://169.254.169.254/metadata/v1/maintenance
http://169.254.169.254/metadata/instance?api-version=2017-04-02
http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-04-02&format=text

Traditional AD - Azure AD comparision

Basic Azure AD concepts and tips

Azure enum

Azure attacks examples

Azure Block Blobs (S3 equivalent) attacks

Azure subdomain takeovers

Other Azure Services

Create Azure service principal as backdoor

Azure password reset

Azure Services Summary

Base services

Azure Service
Could be Called
Use this to...
Like AWS...

Virtual Machines

Servers

Move existing apps to the cloud without changing them. You manage the entire computer.

EC2

Cloud Services

Managed Virtual Machines

Run applications on virtual machines that you don't have to manage, but can partially manage.

Batch

Azure Distributed Processing

Work on a large chunk of data by divvying it up between a whole bunch of machines.

RemoteApp

Remote Desktop for Apps

Expose non-web apps to users. For example, run Excel on your iPad.

AppStream

Web Apps

Web Site Host

Run websites (.NET, Node.js, etc.) without managing anything extra. Scale automatically and easily.

Elastic Beanstalk

Mobile Apps

Mobile App Accelerator

Quickly get an app backend up and running.

Logic Apps

Visio for Doing Stuff

Chain steps together to get stuff done.

API Apps

API Host

Host your API's without any of the management overhead.

API Management

API Proxy

Expose an API and off-load things like billing, authentication, and caching.

API Gateway

Mobile

Azure Service
Could be Called
Use this to...
Like AWS...

Notification Hubs

Notification Blaster

Send notifications to all of your users, or groups of users based on things like zip code. All platforms.

SNS

Mobile Engagement

Mobile Psychic

Track what users are doing in your app, and customize experience based on this data.

Storage

Azure Service
Could be Called
Use this to...
Like AWS...

SQL Database

Azure SQL

Use the power of a SQL Server cluster without having to manage it.

RDS

Document DB

Azure NoSQL

Use an unstructured JSON database without having to manage it.

Dynamo DB

Redis Cache

Easy Cache

Cache files in memory in a scalable way.

Elasticache

Storage Blobs

Cloud File System

Store files, virtual disks, and build other storage services on top of.

S3

Azure Search

Index & Search

Add search capabilities to your website, or index data stored somewhere else.

CloudSearch

SQL Data Warehouse

Structured Report Database

Store all of your company's data in a structured format for reporting.

RedShift

Azure Data Lake

Unstructured Report Database

Store all of your company's data in any format for reporting.

HDInsight

Hosted Hadoop

Do Hadoopy things with massive amounts of data.

Machine Learning

Skynet

Train AI to predict the future using existing data. Examples include credit card fraud detection and Netflix movie recommendations.

Stream Analytics

Real-time data query

Look for patterns in data as it arrives.

Data Factory

Azure ETL

Orchestrate extract, transform, and load data processes.

Data Pipeline

Event Hubs

IoT Ingestor

Ingest data at ANY scale inexpensively.

Networking

Azure Service
Could be Called
Use this to...
Like AWS...

Virtual Network

Private Network

Put machines on the same, private network so that they talk to each other directly and privately. Expose services to the internet as needed.

ExpressRoute

Fiber to Azure

Connect privately over an insanely fast pipe to an Azure datacenter. Make your local network part of your Azure network.

Direct Connect

Load Balancer

Load Balancer

Split load between multiple services, and handle failures.

Traffic Manager

Datacenter Load Balancer

Split load between multiple datacenters, and handle datacenter outages.

DNS

DNS Provider

Run a DNS server so that your domain names map to the correct IP addresses.

Route53

VPN Gateway

Virtual Fiber to Azure

Connect privately to an Azure datacenter. Make your local network part of your Azure network.

Application Gateway

Web Site Proxy

Proxy all of your HTTP traffic. Host your SSL certs. Load balance with sticky sessions.

CDN

CDN

Make your sites faster and more scalable by putting your static files on servers around the world close to your end users.

Cloudfront

Media Services

Video Processor

Transcode video and distribute and manage it on the scale of the Olympics.

Elastic Transcoder

Management

Azure Service
Could be Called
Use this to...
Like AWS...

Azure Resource Manager

Declarative Configuration

Define your entire Azure architecture as a repeatable JSON file and deploy all at once.

CloudFormation

Developer

Azure Service

Could be Called

Use this to...

Like AWS...

Application Insights

App Analytics

View detailed information about how your apps (web, mobile, etc.) are used.

Mobile Analytics

Service Fabric

Cloud App Framework

Build a cloud optimized application that can scale and handle failures inexpensively.

Last updated