Az - AzureAD (AAD)

Impara e pratica l'hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

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 al di fuori dell'organizzazione, includendo Microsoft 365, il portale di Azure e una moltitudine di altre applicazioni SaaS. Il design di Azure AD si concentra sulla fornitura di servizi di identità essenziali, includendo principalmente autenticazione, autorizzazione e gestione degli utenti.

Le caratteristiche chiave di Azure AD includono autenticazione multi-fattore e accesso condizionale, insieme all'integrazione senza soluzione di continuità con altri servizi di sicurezza di Microsoft. Queste funzionalità migliorano significativamente la sicurezza delle identità degli utenti e consentono alle organizzazioni di implementare ed applicare efficacemente le proprie politiche di accesso. Come componente fondamentale dell'ecosistema dei servizi cloud di Microsoft, Azure AD è essenziale per la gestione basata su cloud delle identità degli utenti.

Entità

Enumerazione

Per questa enumerazione è possibile utilizzare lo strumento az cli, il modulo PowerShell AzureAD (o AzureAD Preview) e il modulo Az PowerShell.

Su 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 sulle 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

Quando effettui il login tramite CLI in Azure con qualsiasi programma, stai utilizzando un Applicazione Azure da 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 negli 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 compare nella console, un sysadmin potrebbe bloccare quell'applicazione in modo che gli utenti non possano accedere utilizzando strumenti che si connettono tramite quell'App.

Tuttavia, ci sono altri ID client di applicazioni che ti permetteranno 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>

Azure AD Enumeration

User Enumeration

User enumeration can be performed through the Azure AD login interface. By entering a valid username and observing the response, an attacker can determine if the username is valid or not. This can be automated using tools like enum4linux, ldapsearch, or custom scripts.

Group Enumeration

Group enumeration involves identifying Azure AD groups and their members. This can be done using tools like Azure AD PowerShell module, Microsoft Graph API, or by querying the Azure AD Graph API directly.

Device Enumeration

Device enumeration focuses on discovering devices registered in Azure AD. This can be achieved by querying the Azure AD Graph API or using tools like PowerShell scripts or Microsoft Graph API.

Application Enumeration

Application enumeration involves identifying applications registered in Azure AD. This can be done by querying the Azure AD Graph API, using tools like Azure AD PowerShell module, or Microsoft Graph API.

Service Principal Enumeration

Service principals represent the application in Azure AD. Enumeration of service principals can be performed by querying the Azure AD Graph API, using tools like Azure AD PowerShell module, or Microsoft Graph API.

OAuth Application Enumeration

OAuth applications are used for authentication and authorization purposes. Enumeration of OAuth applications can be done by querying the Azure AD Graph API, using tools like Azure AD PowerShell module, or Microsoft Graph API.

# 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 di Az PowerShell

Per installare Az PowerShell, eseguire il seguente comando:

Install-Module -Name Az -AllowClobber -Scope CurrentUser

Connessione ad Azure AD

Per connettersi ad Azure AD utilizzando Az PowerShell, eseguire il seguente comando:

Connect-AzAccount
# 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

Politiche MFA e 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 determinata posizione, browser o alcune condizioni. Queste politiche, se non configurate correttamente, potrebbero essere soggette a bypass. Controlla:

Az - Conditional Access Policies / MFA Bypass

Gruppi

# 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 *

Panoramica di Azure AD

Azure Active Directory (Azure AD) è un servizio basato su cloud che gestisce le identità e l'accesso agli applicativi cloud. Viene utilizzato da molte organizzazioni per la gestione degli utenti e dei gruppi, nonché per l'applicazione di misure di sicurezza come l'autenticazione a più fattori e il Single Sign-On (SSO).

Azure AD fornisce funzionalità avanzate per la protezione delle identità, come il rilevamento delle minacce e la gestione degli accessi privilegiati. Le organizzazioni possono integrare Azure AD con le proprie applicazioni per garantire un accesso sicuro e controllato.

Inoltre, Azure AD supporta la gestione dei dispositivi e offre strumenti per il monitoraggio dell'attività degli utenti e la creazione di report dettagliati sull'utilizzo delle risorse cloud.

Azure AD è un componente fondamentale per garantire la sicurezza e la conformità nell'ambiente cloud di un'organizzazione. La sua corretta configurazione e gestione sono cruciali per prevenire violazioni della sicurezza e proteggere i dati sensibili.

# 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

Enumerating Azure AD

Using Az PowerShell

  1. Install Az PowerShell Module

    Install-Module -Name Az -AllowClobber -Scope CurrentUser
  2. Connect to Azure AD

    Connect-AzAccount
  3. List Azure AD Users

    Get-AzADUser
  4. List Azure AD Groups

    Get-AzADGroup
  5. List Azure AD Applications

    Get-AzADApplication
  6. List Azure AD Service Principals

    Get-AzADServicePrincipal
  7. List Azure AD Devices

    Get-AzADDevice
  8. List Azure AD Domains

    Get-AzADDomain
  9. List Azure AD Directory Roles

    Get-AzADDirectoryRole
  10. List Azure AD Directory Role Members

    Get-AzADDirectoryRoleMember
  11. List Azure AD Directory Role Templates

    Get-AzADDirectoryRoleTemplate
  12. List Azure AD Directory Role Template Members

    Get-AzADDirectoryRoleTemplateMember
  13. List Azure AD Directory Role Template Policies

    Get-AzADDirectoryRoleTemplatePolicy
  14. List Azure AD Directory Role Template Policy Assignments

    Get-AzADDirectoryRoleTemplatePolicyAssignment

15. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

16. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

17. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

18. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

19. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

20. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

21. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

22. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

23. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

24. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

25. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

26. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

27. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

28. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

29. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

30. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

31. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

32. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

33. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

34. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

35. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

36. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

37. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

38. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

39. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

40. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

41. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

42. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

43. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

44. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

45. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

46. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

47. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

48. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

49. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

50. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

51. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

52. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

53. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

54. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

55. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

56. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

57. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

58. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

59. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

60. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

61. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

62. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

63. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

64. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

65. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

66. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

67. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

68. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

69. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

70. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

71. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

72. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

73. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

74. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

75. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

76. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

77. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

78. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

79. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

80. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

81. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

82. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

83. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

84. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

85. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

86. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

87. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

88. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

89. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

90. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

91. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

92. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

93. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

94. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

95. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

96. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

97. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

98. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

99. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

100. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

101. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

102. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

103. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

104. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

105. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

106. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

107. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

108. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

109. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

110. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

111. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

112. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

113. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

114. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

115. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

116. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

117. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

118. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

119. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

120. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

121. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

122. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

123. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

124. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

125. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

126. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

127. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

128. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

129. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

130. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

131. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

132. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

133. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplatePolicyAssignment
 ```

134. **List Azure AD Directory Role Template Policy Assignments**

 ```bash
 Get-AzADDirectoryRoleTemplate
```powershell
# 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>

Aggiungere utente a un 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 pagina seguente:

Az - Dynamic Groups Privesc

Principali dei servizi / Applicazioni Enterprise

Nota che il Service Principal nella terminologia di PowerShell è chiamato Applicazioni Enterprise nel portale di 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"

Introduzione

Azure AD è il servizio di gestione delle identità e degli accessi di Microsoft per il cloud. Viene utilizzato per gestire l'autenticazione e l'autorizzazione degli utenti nelle applicazioni cloud.

Scenari di attacco comuni

Alcuni scenari di attacco comuni su Azure AD includono attacchi di phishing, accesso non autorizzato tramite credenziali rubate o debolezze nella configurazione della sicurezza.

Miglioramenti consigliati

Per migliorare la sicurezza di Azure AD, è consigliabile abilitare l'autenticazione a più fattori, monitorare attentamente gli accessi e le attività degli utenti, e assicurarsi di seguire le best practice per la configurazione della sicurezza.

# 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 *

Traduzione in corso...

# 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>

Il passaggio successivo è eseguire una scansione delle applicazioni per individuare eventuali vulnerabilità. Puoi utilizzare strumenti come OWASP ZAP o Burp Suite per condurre una scansione approfondita e identificare potenziali problemi di sicurezza. Una volta individuate le vulnerabilità, è importante correggerle tempestivamente per garantire la sicurezza delle tue applicazioni.

$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 segreto client su ciascuna App Enterprise

```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>

<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>']"

Il servizio Azure Active Directory (Azure AD) svolge un ruolo fondamentale nella gestione dell'accesso e dell'identità degli utenti nell'ambiente Azure. Azure AD è spesso un obiettivo comune per gli attaccanti, poiché il compromesso di un account Azure AD può portare a un accesso non autorizzato a una vasta gamma di risorse all'interno dell'ambiente Azure. Pertanto, è essenziale condurre test di penetrazione mirati per identificare e risolvere le vulnerabilità di sicurezza in Azure AD al fine di proteggere in modo efficace l'ambiente cloud.

# 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

Enumerating Azure AD roles

To list all Azure AD roles, you can use the following PowerShell command:

Get-AzureADDirectoryRole

To get detailed information about a specific role, you can use:

Get-AzureADDirectoryRole -ObjectId <role_object_id>

Enumerating Azure AD role members

To list all members of a specific Azure AD role, you can use the following command:

Get-AzureADDirectoryRoleMember -ObjectId <role_object_id>

Enumerating Azure AD users

To list all Azure AD users, you can use the following command:

Get-AzureADUser

Enumerating Azure AD groups

To list all Azure AD groups, you can use the following command:

Get-AzureADGroup

Enumerating Azure AD group members

To list all members of a specific Azure AD group, you can use the following command:

Get-AzureADGroupMember -ObjectId <group_object_id>

Enumerating Azure AD applications

To list all Azure AD applications, you can use the following command:

Get-AzureADApplication

Enumerating Azure AD service principals

To list all Azure AD service principals, you can use the following command:

Get-AzureADServicePrincipal
# 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>

Nel contesto di Azure AD, è importante eseguire una valutazione della sicurezza per identificare e risolvere eventuali vulnerabilità. Alcuni passaggi cruciali includono l'analisi delle impostazioni di configurazione, la revisione dei privilegi degli utenti e la verifica delle autorizzazioni dell'applicazione. Inoltre, è consigliabile monitorare attentamente i log di accesso e configurare avvisi per rilevare attività sospette.

# 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!Il passaggio successivo è eseguire una scansione delle autorizzazioni dell'applicazione per identificare eventuali autorizzazioni eccessive o non necessarie. Questo può aiutare a ridurre la superficie di attacco e migliorare la sicurezza complessiva dell'applicazione. Inoltre, è consigliabile monitorare costantemente le attività dell'applicazione per rilevare eventuali comportamenti sospetti o anomalie.# 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) è unito ad AzureAD, gli utenti di AzureAD saranno in grado di effettuare il login. Inoltre, se l'utente connesso è Proprietario del dispositivo, diventerà amministratore locale.

Applicazioni

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 quell'entità 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 Apps
az ad app list
az ad app list --query "[].[displayName]" -o table
# Get info of 1 App
az ad app show --id 00000000-0000-0000-0000-000000000000
# Search App by string
az ad app list --query "[?contains(displayName,'app')].displayName"
# Get the owner of an application
az ad app owner list --id <id> --query "[].[displayName]" -o table
# List all the apps with an application password
az 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"

Panoramica di Azure AD

Azure Active Directory (Azure AD) è un servizio basato su cloud che gestisce le identità e l'accesso agli applicativi cloud. Viene utilizzato da molte organizzazioni per la gestione degli utenti e dei gruppi, nonché per l'autenticazione e l'autorizzazione degli utenti.

Azure AD fornisce funzionalità di sicurezza avanzate come il Single Sign-On (SSO), il controllo degli accessi condizionale e la gestione delle identità privilegiate. È importante configurare correttamente le impostazioni di sicurezza in Azure AD per proteggere le risorse aziendali da potenziali minacce.

Inoltre, è possibile integrare Azure AD con altre soluzioni di sicurezza e monitoraggio per migliorare complessivamente la sicurezza dell'ambiente cloud.

# List all registered applications
Get-AzureADApplication -All $true
# Get details of an application
Get-AzureADApplication -ObjectId <id>  | fl *
# List all the apps with an application password
Get-AzureADApplication -All $true | %{if(Get-AzureADApplicationPasswordCredential -ObjectID $_.ObjectID){$_}}
# Get owner of an application
Get-AzureADApplication -ObjectId <id> | Get-AzureADApplicationOwner |fl *

Az PowerShell

Installazione di Az PowerShell

Per installare Az PowerShell, eseguire il seguente comando:

Install-Module -Name Az -AllowClobber -Scope CurrentUser

Connessione ad Azure AD

Per connettersi ad Azure AD utilizzando Az PowerShell, eseguire il seguente comando:

Connect-AzAccount

Elencazione dei ruoli di Azure AD

Per elencare i ruoli di Azure AD utilizzando Az PowerShell, eseguire il seguente comando:

Get-AzRoleDefinition

Creazione di un nuovo ruolo di Azure AD

Per creare un nuovo ruolo di Azure AD utilizzando Az PowerShell, eseguire il seguente comando:

New-AzRoleDefinition -InputFile <path_to_json_file>

Assegnazione di un ruolo a un utente in Azure AD

Per assegnare un ruolo a un utente in Azure AD utilizzando Az PowerShell, eseguire il seguente comando:

New-AzRoleAssignment -ObjectId <user_object_id> -RoleDefinitionName <role_name>
# Get Apps
Get-AzADApplication
# Get details of one App
Get-AzADApplication -ObjectId <id>
# Get App searching by string
Get-AzADApplication | ?{$_.DisplayName -match "app"}
# Get Apps with password
Get-AzADAppCredential

Un'app con il permesso AppRoleAssignment.ReadWrite può scalare a Global Admin concedendosi il ruolo. Per ulteriori informazioni controlla questo.

Una stringa segreta che l'applicazione utilizza per dimostrare la propria identità quando richiede 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 generata (potresti cambiarla ma non puoi ottenerla di nuovo). Il proprietario dell'applicazione può aggiungere una password ad essa (così può impersonarla). I login come questi service principal non sono contrassegnati come rischiosi e non avranno MFA.

Differenza tra Applicazioni e (Applicazioni Enterprise o Service Principals)

Differenza tra un'applicazione e un Service Principal in Azure:

  • Applicazione/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 nel Directory di Azure e sono collegati o 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, un Enterprise Application/Service Principal viene creato nel tuo tenant per dargli accesso alle informazioni di cui ha bisogno:

Unità Amministrative

Viene utilizzato per una migliore gestione degli utenti.

Le unità amministrative limitano i permessi in un ruolo a una qualsiasi parte della tua organizzazione che definisci. Potresti, ad esempio, utilizzare le unità amministrative per delegare il ruolo di Amministratore del Service Desk a specialisti di supporto regionali, in modo che possano gestire gli utenti solo nella regione che supportano.

Pertanto, puoi assegnare ruoli all'unità amministrativa e i membri avranno questi ruoli.

Panoramica di Azure Active Directory

Azure Active Directory (Azure AD) è un servizio basato su cloud che gestisce le identità degli utenti e consente l'accesso alle risorse aziendali. Viene utilizzato per l'autenticazione e l'autorizzazione degli utenti, nonché per l'applicazione di criteri di sicurezza. Azure AD fornisce funzionalità come il Single Sign-On (SSO), la gestione delle identità multi-fattore e la protezione avanzata dalle minacce.

Best Practices per la sicurezza di Azure AD

Alcune best practices per migliorare la sicurezza di Azure AD includono:

  • Abilitare il Multi-Factor Authentication (MFA) per tutti gli utenti.

  • Implementare controlli di accesso basati sul ruolo (RBAC).

  • Monitorare e registrare le attività degli utenti per individuare comportamenti sospetti.

  • Configurare le impostazioni di sicurezza consigliate e applicare le patch regolarmente.

  • Utilizzare strumenti di analisi delle minacce per rilevare e rispondere alle potenziali violazioni della sicurezza.

Queste best practices aiutano a proteggere le identità degli utenti e a garantire la sicurezza delle risorse aziendali in Azure AD.

# 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

Protezione dell'identità di Azure AD (AIP)

Azure AD Identity Protection (AIP) è un servizio di sicurezza che utilizza rilevamento e correzione automatizzati per proteggere le identità degli utenti in Azure Active Directory dal compromesso. AIP monitora e valuta continuamente il rischio di accessi degli utenti e configurazioni dell'identità, applicando automaticamente misure di sicurezza adeguate, come richiedere l'autenticazione a più fattori o bloccare attività potenzialmente pericolose. Ciò aiuta le organizzazioni a prevenire violazioni della sicurezza basate sull'identità.

Flusso:

  1. Azure AD Identity Protection monitora le attività degli utenti e raccoglie dati sugli accessi degli utenti, eventi di autenticazione e altre attività rilevanti.

  2. Il servizio utilizza algoritmi di apprendimento automatico per analizzare questi dati e rilevare potenziali minacce alla sicurezza.

  3. Azure AD Identity Protection assegna un livello di rischio alla minaccia (ad es. accesso) e genera un avviso se necessario per eseguire qualche azione automatica.

Protezione della password di Azure AD (APP)

Azure AD Password Protection (APP) è una funzionalità di sicurezza che aiuta a prevenire password deboli in Azure Active Directory imponendo politiche di password robuste. APP blocca le password deboli comunemente utilizzate e le loro varianti, riducendo il rischio di violazioni legate alle password. Può essere applicato sia a livello cloud che nell'Active Directory locale, migliorando complessivamente la sicurezza delle password in tutta l'organizzazione.

Riferimenti

Impara e pratica l'hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)

Last updated