Azure Pentesting

Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

ΕΡΓΑΣΙΕΣ ΣΤΟ AZURE ΠΕΡΙΒΑΛΛΟΝ

Βασικές πληροφορίες

Az - Basic Information

Μεθοδολογία Azure Pentester/Red Team

Για να ελέγξετε ένα περιβάλλον AZURE, είναι πολύ σημαντικό να γνωρίζετε: ποιες υπηρεσίες χρησιμοποιούνται, τι εκτίθεται, ποιος έχει πρόσβαση σε τι και πώς συνδέονται οι εσωτερικές υπηρεσίες Azure και εξωτερικές υπηρεσίες.

Από την άποψη της Ομάδας Red Team, το πρώτο βήμα για την επιτυχία ενός περιβάλλοντος Azure είναι να καταφέρετε να αποκτήσετε κάποια διαπιστευτήρια για το Azure AD. Εδώ έχετε μερικές ιδέες για το πώς να το κάνετε:

  • Διαρροές στο github (ή παρόμοιες) - OSINT

  • Κοινωνική Μηχανική

  • Επαναχρησιποίηση κωδικού πρόσβασης (διαρροές κωδικών πρόσβασης)

  • Ευπάθειες σε εφαρμογές που φιλοξενούνται στο Azure

  • Server Side Request Forgery με πρόσβαση στο σημείο αναφοράς μεταδεδομένων

  • Ανάγνωση τοπικού αρχείου

  • /home/USERNAME/.azure

  • C:\Users\USERNAME\.azure

  • Το αρχείο accessTokens.json στο az cli πριν από την έκδοση 2.30 - Jan2022 - αποθηκεύει διαπιστευτήρια πρόσβασης σε καθαρό κείμενο

  • Το αρχείο azureProfile.json περιέχει πληροφορίες για τον συνδεδεμένο χρήστη.

  • az logout αφαιρεί το διαπιστευτήριο.

  • Οι παλαιότερες εκδόσεις του Az PowerShell αποθηκεύουν διαπιστευτήρια πρόσβασης σε καθαρό κείμενο στο TokenCache.dat. Αποθηκεύει επίσης το ServicePrincipalSecret σε καθαρό κείμενο στο AzureRmContext.json. Το cmdlet Save-AzContext μπορεί να χρησιμοποιηθεί για να αποθηκεύσει διαπιστευτήρια. Χρησιμοποιήστε το Disconnect-AzAccount για να τα αφαιρέσετε.

  • Παραβιάσεις από τρίτους

  • Εσωτερικός Υπάλληλος

  • Φιςινγκ (διαπιστευτήρια ή Oauth App)

Ακόμα κι αν δεν έχετε παραβιάσει κανέναν χρήστη μέσα στο Azure tenant που επιτίθεστε, μπορείτε να συγκεντρώσετε κάποιες πληροφορίες από αυτό:

Az - Unauthenticated Enum & Initial Entry

Αφού καταφέρετε να αποκτήσετε διαπιστευτήρια, πρέπει να γνωρίζετε σε ποιον ανήκουν αυτά τα διαπιστευτήρια και τι έχουν πρόσβαση, οπότε πρέπει να πραγματοποιήσετε μερικές βασικές απαρίθμηση:

Βασική απαρίθμηση

Θυμηθείτε ότι η πιο θορυβώδης μέρος της απαρίθμησης είναι η σύνδεση, όχι η απαρίθμηση ίδια.

SSRF

Εάν βρήκατε ένα SSRF σε μια μηχανή μέσα στο Azure, ελέγξτε αυτήν τη σελίδα για κόλπα:

{% embed url="https://book.hacktricks.xyz/pent

az account list
az account tenant list # Current tenant info
az account subscription list # Current subscription info
az ad signed-in-user show # Current signed-in user
az ad signed-in-user list-owned-objects # Get owned objects by current user
az account management-group list #Not allowed by default
#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail

Για να εκτελέσετε τις εντολές PowerShell για την ασφάλεια του Azure, πρέπει να εγκαταστήσετε το Azure PowerShell module. Μπορείτε να το κάνετε αυτό με την εντολή Install-Module -Name Az -AllowClobber -Scope CurrentUser στο PowerShell.

Για να συνδεθείτε στο Azure, χρησιμοποιήστε την εντολή Connect-AzAccount. Θα σας ζητηθεί να συνδεθείτε με τα διαπιστευτήριά σας.

Μετά τη σύνδεση, μπορείτε να εκτελέσετε εντολές για να ελέγξετε την ασφάλεια του Azure. Ορισμένες χρήσιμες εντολές περιλαμβάνουν:

  • Get-AzSubscription για να εμφανίσετε τις συνδρομές Azure που είστε εγγεγραμμένοι.

  • Get-AzResourceGroup για να εμφανίσετε τις ομάδες πόρων Azure.

  • Get-AzVM για να εμφανίσετε τις εικονικές μηχανές Azure.

  • Get-AzNetworkSecurityGroup για να εμφανίσετε τις ομάδες ασφαλείας δικτύου Azure.

Μπορείτε επίσης να χρησιμοποιήσετε το PowerShell για να δημιουργήσετε και να διαμορφώσετε αντικείμενα ασφαλείας στο Azure. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε την εντολή New-AzNetworkSecurityGroup για να δημιουργήσετε μια νέα ομάδα ασφαλείας δικτύου.

Για περισσότερες πληροφορίες και εντολές PowerShell για την ασφάλεια του Azure, μπορείτε να επισκεφθείτε την επίσημη τεκμηρίωση της Microsoft για το Azure PowerShell.

# Get the information about the current context (Account, Tenant, Subscription etc.)
Get-AzContext
# List all available contexts
Get-AzContext -ListAvailable
# Enumerate subscriptions accessible by the current user
Get-AzSubscription
#Get Resource group
Get-AzResourceGroup
# Enumerate all resources visible to the current user
Get-AzResource
# Enumerate all Azure RBAC role assignments
Get-AzRoleAssignment # For all users
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user

Ένα από τα πιο σημαντικά εργαλεία για την απαρίθμηση του Azure είναι το Get-AzResource από το Az PowerShell, καθώς σας επιτρέπει να γνωρίζετε τους πόρους που ο τρέχων χρήστης έχει ορατότητα.

Μπορείτε να λάβετε τις ίδιες πληροφορίες στη διαδικτυακή κονσόλα μεταβαίνοντας στη διεύθυνση https://portal.azure.com/#view/HubsExtension/BrowseAll ή αναζητώντας "Όλοι οι πόροι"

Απαρίθμηση AzureAD

Από προεπιλογή, οποιοσδήποτε χρήστης θα πρέπει να έχει αρκετές άδειες για να απαριθμήσει πράγματα όπως χρήστες, ομάδες, ρόλους, υπηρεσίες αρχής... (ελέγξτε τις προεπιλεγμένες άδειες AzureAD). Μπορείτε να βρείτε εδώ έναν οδηγό:

Az - AzureAD (AAD)

Τώρα που έχετε κάποιες πληροφορίες για τα διαπιστευτήριά σας (και αν είστε μια κόκκινη ομάδα ελπίζω να μην έχετε ανιχνευθεί). Είναι ώρα να καταλάβετε ποιες υπηρεσίες χρησιμοποιούνται στο περιβάλλον. Στην επόμενη ενότητα μπορείτε να ελέγξετε μερικούς τρόπους για να απαριθμήσετε μερικές κοινές υπηρεσίες.

Υπηρεσία Πρωταρχικού Στοιχείου και Πολιτική Πρόσβασης

Μια υπηρεσία Azure μπορεί να έχει ένα Σύστημα Ταυτότητας (της ίδιας της υπηρεσίας) ή να χρησιμοποιεί μια Διαχειριζόμενη Ταυτότητα Που Έχει Ανατεθεί σε Χρήστη. Αυτή η Ταυτότητα μπορεί να έχει Πολιτική Πρόσβασης για παράδειγμα, σε ένα KeyVault για να διαβάσει μυστικά. Αυτές οι Πολιτικές Πρόσβασης πρέπει να είναι περιορισμένες (αρχή της ελάχιστης προνομιοδότησης), αλλά μπορεί να έχουν περισσότερες άδειες από ό,τι απαιτείται. Συνήθως, μια Υπηρεσία Εφαρμογής θα χρησιμοποιεί το KeyVault για να ανακτήσει μυστικά και πιστοποιητικά.

Επομένως, είναι χρήσιμο να εξερευνήσετε αυτές τις ταυτότητες.

Υπηρεσία App Service SCM

Κονσόλα Kudu για να συνδεθείτε στο 'container' της υπηρεσίας App Service.

Webshell

Χρησιμοποιήστε το portal.azure.com και επιλέξτε το shell, ή χρησιμοποιήστε το shell.azure.com, για ένα bash ή powershell. Το 'δίσκος' αυτού του shell αποθηκεύεται ως αρχείο εικόνας σε ένα λογαριασμό αποθήκευσης.

Azure DevOps

Το Azure DevOps είναι ξεχωριστό από το Azure. Διαθέτει αποθετήρια, αγωγούς (yaml ή release), πίνακες, wiki και άλλα. Ομάδες μεταβλητών χρησιμοποιούνται για να αποθηκεύουν τιμές μεταβλητών και μυστικά.

Αυτοματοποιημένα Εργαλεία Αναγνώρισης

cd ROADTools
pipenv shell
roadrecon auth -u test@corp.onmicrosoft.com -p "Welcome2022!"
roadrecon gather
roadrecon gui

Import-Module monkey365
Get-Help Invoke-Monkey365
Get-Help Invoke-Monkey365 -Detailed
Invoke-Monkey365 -IncludeAzureActiveDirectory -ExportTo HTML -Verbose -Debug -InformationAction Continue
Invoke-Monkey365 - Instance Azure -Analysis All -ExportTo HTML

# Start Backend
cd stormspotter\backend\
pipenv shell
python ssbackend.pyz

# Start Front-end
cd stormspotter\frontend\dist\spa\
quasar.cmd serve -p 9091 --history

# Run Stormcollector
cd stormspotter\stormcollector\
pipenv shell
az login -u test@corp.onmicrosoft.com -p Welcome2022!
python stormspotter\stormcollector\sscollector.pyz cli
# This will generate a .zip file to upload in the frontend (127.0.0.1:9091)

Το AzureHound είναι ένα εργαλείο ανοικτού κώδικα που αναπτύχθηκε από την κοινότητα του BloodHoundAD και χρησιμοποιείται για την εντοπισμό αδυναμιών ασφαλείας στο Azure. Αυτό το εργαλείο επιτρέπει στους ερευνητές ασφαλείας να εξερευνήσουν την υποδομή του Azure και να εντοπίσουν πιθανές ευπάθειες που μπορεί να εκμεταλλευτούν. Μπορεί να χρησιμοποιηθεί για την ανίχνευση διαρροών δεδομένων, την εύρεση αδυναμιών στην αυθεντικοποίηση και την εξερεύνηση των δικαιωμάτων πρόσβασης στο Azure. Το AzureHound είναι ένα ισχυρό εργαλείο για την αξιολόγηση της ασφάλειας του Azure και την εντοπισμό πιθανών ευπαθειών.

# You need to use the Az PowerShell and Azure AD modules:
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ("test@corp.onmicrosoft.com", $passwd)
Connect-AzAccount -Credential $creds

Import-Module AzureAD\AzureAD.psd1
Connect-AzureAD -Credential $creds

# Launch AzureHound
. AzureHound\AzureHound.ps1
Invoke-AzureHound -Verbose

# Simple queries
## All Azure Users
MATCH (n:AZUser) return n.name
## All Azure Applications
MATCH (n:AZApp) return n.objectid
## All Azure Devices
MATCH (n:AZDevice) return n.name
## All Azure Groups
MATCH (n:AZGroup) return n.name
## All Azure Key Vaults
MATCH (n:AZKeyVault) return n.name
## All Azure Resource Groups
MATCH (n:AZResourceGroup) return n.name
## All Azure Service Principals
MATCH (n:AZServicePrincipal) return n.objectid
## All Azure Virtual Machines
MATCH (n:AZVM) return n.name
## All Principals with the ‘Contributor’ role
MATCH p = (n)-[r:AZContributor]->(g) RETURN p

# Advanced queries
## Get Global Admins
MATCH p =(n)-[r:AZGlobalAdmin*1..]->(m) RETURN p
## Owners of Azure Groups
MATCH p = (n)-[r:AZOwns]->(g:AZGroup) RETURN p
## All Azure Users and their Groups
MATCH p=(m:AZUser)-[r:MemberOf]->(n) WHERE NOT m.objectid CONTAINS 'S-1-5' RETURN p
## Privileged Service Principals
MATCH p = (g:AZServicePrincipal)-[r]->(n) RETURN p
## Owners of Azure Applications
MATCH p = (n)-[r:AZOwns]->(g:AZApp) RETURN p
## Paths to VMs
MATCH p = (n)-[r]->(g: AZVM) RETURN p
## Paths to KeyVault
MATCH p = (n)-[r]->(g:AZKeyVault) RETURN p
## Paths to Azure Resource Group
MATCH p = (n)-[r]->(g:AZResourceGroup) RETURN p
## On-Prem users with edges to Azure
MATCH  p=(m:User)-[r:AZResetPassword|AZOwns|AZUserAccessAdministrator|AZContributor|AZAddMembers|AZGlobalAdmin|AZVMContributor|AZOwnsAZAvereContributor]->(n) WHERE m.objectid CONTAINS 'S-1-5-21' RETURN p
## All Azure AD Groups that are synchronized with On-Premise AD
MATCH (n:Group) WHERE n.objectid CONTAINS 'S-1-5' AND n.azsyncid IS NOT NULL RETURN n

# You should use an account with at least read-permission on the assets you want to access
git clone https://github.com/nccgroup/azucar.git
PS> Get-ChildItem -Recurse c:\Azucar_V10 | Unblock-File

PS> .\Azucar.ps1 -AuthMode UseCachedCredentials -Verbose -WriteLog -Debug -ExportTo PRINT
PS> .\Azucar.ps1 -ExportTo CSV,JSON,XML,EXCEL -AuthMode Certificate_Credentials -Certificate C:\AzucarTest\server.pfx -ApplicationId 00000000-0000-0000-0000-000000000000 -TenantID 00000000-0000-0000-0000-000000000000
PS> .\Azucar.ps1 -ExportTo CSV,JSON,XML,EXCEL -AuthMode Certificate_Credentials -Certificate C:\AzucarTest\server.pfx -CertFilePassword MySuperP@ssw0rd! -ApplicationId 00000000-0000-0000-0000-000000000000 -TenantID 00000000-0000-0000-0000-000000000000

# resolve the TenantID for an specific username
PS> .\Azucar.ps1 -ResolveTenantUserName user@company.com

Το MicroBurst είναι ένα εργαλείο που χρησιμοποιείται για την εκτέλεση επιθέσεων εκμετάλλευσης στο Azure. Αυτό το εργαλείο εκμεταλλεύεται την αδυναμία του Azure να αντιμετωπίσει τις αιτήσεις μεγάλου μεγέθους, γνωστές ως "MicroBursts". Αυτές οι αιτήσεις μπορούν να προκαλέσουν αποτυχία των υπηρεσιών και να προκαλέσουν διακοπή της λειτουργίας του Azure.

Το MicroBurst είναι ένα ισχυρό εργαλείο που μπορεί να χρησιμοποιηθεί για την εκτέλεση επιθέσεων απόρριψης υπηρεσίας (DoS) και την προκάλεση αποτυχίας του Azure. Αυτό μπορεί να οδηγήσει σε απώλεια δεδομένων και παραβίαση της ασφάλειας του συστήματος.

Για να χρησιμοποιήσετε το MicroBurst, ακολουθήστε τις οδηγίες που παρέχονται στο επίσημο αποθετήριο του GitHub. Πριν χρησιμοποιήσετε αυτό το εργαλείο, θα πρέπει να έχετε την άδεια και την εξουσιοδότηση να εκτελέσετε επιθέσεις στο Azure. Χρησιμοποιήστε το MicroBurst με προσοχή και μόνο για νόμιμους σκοπούς.

Import-Module .\MicroBurst.psm1
Import-Module .\Get-AzureDomainInfo.ps1
Get-AzureDomainInfo -folder MicroBurst -Verbose

Το PowerZure είναι ένα εργαλείο που χρησιμοποιείται για την εκμετάλλευση ευπάθειών ασφαλείας στο Azure. Το εργαλείο αυτό είναι γραμμένο σε PowerShell και παρέχει δυνατότητες για την εκτέλεση επιθέσεων, την ανάκτηση πληροφοριών και την εξόρυξη δεδομένων από το Azure περιβάλλον.

Με το PowerZure μπορείτε να εκτελέσετε επιθέσεις όπως την εκμετάλλευση ευπάθειών σε εικονικές μηχανές, την ανάκτηση διαπιστευτηρίων, την εξόρυξη δεδομένων από αποθηκευτικούς χώρους και την εκτέλεση κακόβουλου κώδικα.

Για να χρησιμοποιήσετε το PowerZure, πρέπει να εγκαταστήσετε το PowerShell και να κατεβάσετε τον κώδικα του εργαλείου από το αποθετήριο του στο GitHub. Στη συνέχεια, μπορείτε να εκτελέσετε το εργαλείο από το PowerShell και να ξεκινήσετε να εκμεταλλεύεστε ευπάθειες ασφαλείας στο Azure.

Connect-AzAccount
ipmo C:\Path\To\Powerzure.psd1
Get-AzureTarget

# Reader
$ Get-Runbook, Get-AllUsers, Get-Apps, Get-Resources, Get-WebApps, Get-WebAppDetails

# Contributor
$ Execute-Command -OS Windows -VM Win10Test -ResourceGroup Test-RG -Command "whoami"
$ Execute-MSBuild -VM Win10Test  -ResourceGroup Test-RG -File "build.xml"
$ Get-AllSecrets # AllAppSecrets, AllKeyVaultContents
$ Get-AvailableVMDisks, Get-VMDisk # Download a virtual machine's disk

# Owner
$ Set-Role -Role Contributor -User test@contoso.com -Resource Win10VMTest

# Administrator
$ Create-Backdoor, Execute-Backdoor
Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated