Translated ['src/pentesting-cloud/azure-security/az-services/az-azuread.

This commit is contained in:
Translator
2025-01-27 14:21:30 +00:00
parent b79eecedd0
commit 9e886f5d50

View File

@@ -6,7 +6,7 @@
Azure Active Directory (Azure AD) dient als Microsofts cloudbasierter Dienst für Identitäts- und Zugriffsmanagement. Es ist entscheidend, um Mitarbeitern das Anmelden und den Zugriff auf Ressourcen sowohl innerhalb als auch außerhalb der Organisation zu ermöglichen, einschließlich Microsoft 365, dem Azure-Portal und einer Vielzahl anderer SaaS-Anwendungen. Das Design von Azure AD konzentriert sich darauf, wesentliche Identitätsdienste bereitzustellen, insbesondere **Authentifizierung, Autorisierung und Benutzerverwaltung**.
Zu den Hauptfunktionen von Azure AD gehören **Multi-Faktor-Authentifizierung** und **bedingter Zugriff**, sowie nahtlose Integration mit anderen Microsoft-Sicherheitsdiensten. Diese Funktionen erhöhen erheblich die Sicherheit der Benutzeridentitäten und ermöglichen es Organisationen, ihre Zugriffsrichtlinien effektiv umzusetzen und durchzusetzen. Als grundlegender Bestandteil des Ökosystems der Cloud-Dienste von Microsoft ist Azure AD entscheidend für das cloudbasierte Management von Benutzeridentitäten.
Zu den Hauptmerkmalen von Azure AD gehören **Multi-Faktor-Authentifizierung** und **bedingter Zugriff**, sowie nahtlose Integration mit anderen Microsoft-Sicherheitsdiensten. Diese Funktionen erhöhen erheblich die Sicherheit der Benutzeridentitäten und ermöglichen es Organisationen, ihre Zugriffsrichtlinien effektiv umzusetzen und durchzusetzen. Als grundlegender Bestandteil des Ökosystems der Cloud-Dienste von Microsoft ist Azure AD entscheidend für das cloudbasierte Management von Benutzeridentitäten.
## Aufzählung
@@ -140,6 +140,34 @@ curl "$IDENTITY_ENDPOINT?resource=https://management.azure.com&api-version=2017-
curl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01" -H secret:$IDENTITY_HEADER
```
{{#endtab }}
{{#tab name="MS Graph" }}
```bash
Get-MgTenantRelationshipDelegatedAdminCustomer
# Install the Microsoft Graph PowerShell module if not already installed
Install-Module Microsoft.Graph -Scope CurrentUser
# Import the module
Import-Module Microsoft.Graph
# Login to Microsoft Graph
Connect-MgGraph -Scopes "User.Read.All", "Group.Read.All", "Directory.Read.All"
# Enumerate available commands in Microsoft Graph PowerShell
Get-Command -Module Microsoft.Graph*
# Example: List users
Get-MgUser -All
# Example: List groups
Get-MgGroup -All
# Example: Get roles assigned to a user
Get-MgUserAppRoleAssignment -UserId <UserId>
# Disconnect from Microsoft Graph
Disconnect-MgGraph
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
@@ -248,6 +276,34 @@ curl -X GET "https://graph.microsoft.com/beta/roleManagement/directory/roleDefin
```
{{#endtab }}
{{#tab name="MS Graph" }}
```bash
# Enumerate users using Microsoft Graph PowerShell
Get-MgUser -All
# Get user details
Get-MgUser -UserId "test@corp.onmicrosoft.com" | Format-List *
# Search "admin" users
Get-MgUser -All | Where-Object { $_.DisplayName -like "*test*" } | Select-Object DisplayName
# Search attributes containing the word "password"
Get-MgUser -All | Where-Object { $_.AdditionalProperties.PSObject.Properties.Name -contains "password" }
# All users from Entra ID
Get-MgUser -Filter "startswith(userPrincipalName, 't')" -All | Select-Object DisplayName, UserPrincipalName
# Get groups where the user is a member
Get-MgUserMemberOf -UserId <UserId>
# Get roles assigned to the user in Entra ID
Get-MgUserAppRoleAssignment -UserId <UserId>
# List available commands in Microsoft Graph PowerShell
Get-Command -Module Microsoft.Graph.Users
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
# Enumerate Users
@@ -309,7 +365,7 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText
```
### MFA & Conditional Access Policies
Es wird dringend empfohlen, MFA für jeden Benutzer hinzuzufügen. Einige Unternehmen setzen es jedoch möglicherweise nicht oder setzen es mit einem Conditional Access: Der Benutzer wird **MFA erforderlich sein, wenn** er sich von einem bestimmten Standort, Browser oder **einer Bedingung** anmeldet. Diese Richtlinien können, wenn sie nicht korrekt konfiguriert sind, anfällig für **bypasses** sein. Überprüfen Sie:
Es wird dringend empfohlen, MFA für jeden Benutzer hinzuzufügen, jedoch werden einige Unternehmen es möglicherweise nicht einrichten oder es mit einem Conditional Access einrichten: Der Benutzer wird **MFA erforderlich sein, wenn** er sich von einem bestimmten Standort, Browser oder **einer Bedingung** anmeldet. Diese Richtlinien könnten, wenn sie nicht korrekt konfiguriert sind, anfällig für **bypasses** sein. Überprüfen Sie:
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
@@ -368,7 +424,33 @@ Get-AzADGroupMember -GroupDisplayName <resource_group_name>
Get-AzRoleAssignment -ResourceGroupName <resource_group_name>
```
{{#endtab }}
{{#tab name="MS Graph" }}
```bash
# Enumerate groups using Microsoft Graph PowerShell
Get-MgGroup -All
# Get group details
Get-MgGroup -GroupId <GroupId> | Format-List *
# Search "admin" groups
Get-MgGroup -All | Where-Object { $_.DisplayName -like "*admin*" } | Select-Object DisplayName
# Get members of a group
Get-MgGroupMember -GroupId <GroupId> -All
# Get groups a group is member of
Get-MgGroupMemberOf -GroupId <GroupId>
# Get roles assigned to the group in Entra ID
Get-MgGroupAppRoleAssignment -GroupId <GroupId>
# Get group owner
Get-MgGroupOwner -GroupId <GroupId>
# List available commands in Microsoft Graph PowerShell
Get-Command -Module Microsoft.Graph.Groups
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
# Enumerate Groups
@@ -467,6 +549,30 @@ Headers = @{
(Invoke-RestMethod @RequestParams).value
```
{{#endtab }}
{{#tab name="MS Graph" }}
```bash
# Get Service Principals using Microsoft Graph PowerShell
Get-MgServicePrincipal -All
# Get details of one Service Principal
Get-MgServicePrincipal -ServicePrincipalId <ServicePrincipalId> | Format-List *
# Search SP by display name
Get-MgServicePrincipal -All | Where-Object { $_.DisplayName -like "*app*" } | Select-Object DisplayName
# Get owner of Service Principal
Get-MgServicePrincipalOwner -ServicePrincipalId <ServicePrincipalId>
# Get objects owned by a Service Principal
Get-MgServicePrincipalOwnedObject -ServicePrincipalId <ServicePrincipalId>
# Get groups where the SP is a member
Get-MgServicePrincipalMemberOf -ServicePrincipalId <ServicePrincipalId>
# List available commands in Microsoft Graph PowerShell
Get-Command -Module Microsoft.Graph.ServicePrincipals
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
@@ -645,6 +751,25 @@ Get-AzADAppCredential
```
{{#endtab }}
{{#tab name="MS Graph" }}
```bash
# List Applications using Microsoft Graph PowerShell
Get-MgApplication -All
# Get application details
Get-MgApplication -ApplicationId 7861f72f-ad49-4f8c-96a9-19e6950cffe1 | Format-List *
# Search App by display name
Get-MgApplication -Filter "startswith(displayName, 'app')" | Select-Object DisplayName
# Get owner of an application
Get-MgApplicationOwner -ApplicationId <ApplicationId>
# List available commands in Microsoft Graph PowerShell
Get-Command -Module Microsoft.Graph.Applications
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
# List all registered applications
@@ -719,7 +844,27 @@ az role assignment list --all --query "[].{principalName:principalName,principal
# Get all the roles assigned to a user
az role assignment list --assignee "<email>" --all --output table
# Get all the roles assigned to a user by filtering
az role assignment list --all --query "[?principalName=='carlos@carloshacktricks.onmicrosoft.com']" --output table
az role assignment list --all --query "[?principalName=='admin@organizationadmin.onmicrosoft.com']" --output table
```
{{#endtab }}
{{#tab name="MS Graph" }}
```bash
# List all available role templates using Microsoft Graph PowerShell
Get-MgDirectoryRoleTemplate -All
# List enabled built-in Entra ID roles
Get-MgDirectoryRole -All
# List all Entra ID roles with their permissions (including custom roles)
Get-MgDirectoryRoleDefinition -All
# List members of a Entra ID role
Get-MgDirectoryRoleMember -DirectoryRoleId <RoleId> -All
# List available commands in Microsoft Graph PowerShell
Get-Command -Module Microsoft.Graph.Identity.DirectoryManagement
```
{{#endtab }}
@@ -833,6 +978,24 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl *
# If you know how to do this send a PR!
```
{{#endtab }}
{{#tab name="MS Graph" }}
```bash
# Enumerate devices using Microsoft Graph PowerShell
Get-MgDevice -All
# Get device details
Get-MgDevice -DeviceId <DeviceId> | Format-List *
# Get devices managed using Intune
Get-MgDevice -Filter "isCompliant eq true" -All
# Get devices owned by a user
Get-MgUserOwnedDevice -UserId test@corp.onmicrosoft.com
# List available commands in Microsoft Graph PowerShell
Get-Command -Module Microsoft.Graph.Identity.DirectoryManagement
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
@@ -857,7 +1020,7 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember
{{#endtabs }}
> [!WARNING]
> Wenn ein Gerät (VM) **AzureAD verbunden** ist, können Benutzer von AzureAD **einloggen**.\
> Wenn ein Gerät (VM) **AzureAD verbunden** ist, können Benutzer von AzureAD sich **einloggen**.\
> Darüber hinaus, wenn der angemeldete Benutzer **Besitzer** des Geräts ist, wird er **lokaler Administrator** sein.
### Administrative Einheiten
@@ -931,7 +1094,7 @@ Wenn PIM aktiviert ist, ist es möglich, jede Rolle mit bestimmten Anforderungen
- Erfordert Ticketinformationen bei Aktivierung
- Genehmigung zur Aktivierung erforderlich
- Maximale Zeit bis zum Ablauf der berechtigten Zuweisungen
- Viel mehr Konfigurationen, wann und an wen Benachrichtigungen gesendet werden, wenn bestimmte Aktionen mit dieser Rolle stattfinden
- Viele weitere Konfigurationen, wann und an wen Benachrichtigungen gesendet werden, wenn bestimmte Aktionen mit dieser Rolle stattfinden
### Bedingte Zugriffsrichtlinien
@@ -943,7 +1106,7 @@ Wenn PIM aktiviert ist, ist es möglich, jede Rolle mit bestimmten Anforderungen
### Entra Identity Protection
Entra Identity Protection ist ein Sicherheitsdienst, der es ermöglicht, **zu erkennen, wenn ein Benutzer oder eine Anmeldung zu riskant** ist, um akzeptiert zu werden, und es ermöglicht, den Benutzer oder den Anmeldeversuch zu **blockieren**.
Entra Identity Protection ist ein Sicherheitsdienst, der es ermöglicht, **zu erkennen, wann ein Benutzer oder eine Anmeldung zu riskant** ist, um akzeptiert zu werden, und es ermöglicht, den Benutzer oder den Anmeldeversuch zu **blockieren**.
Es ermöglicht dem Admin, es so zu konfigurieren, dass es Versuche blockiert, wenn das Risiko "Niedrig und darüber", "Mittel und darüber" oder "Hoch" ist. Obwohl es standardmäßig vollständig **deaktiviert** ist: