Az - AzureAD (AAD)

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Azure Active Directory (Azure AD) służy jako usługa oparta na chmurze Microsoftu do zarządzania tożsamością i dostępem. Jest niezbędny do umożliwienia pracownikom logowania i uzyskiwania dostępu do zasobów zarówno wewnątrz, jak i poza organizacją, obejmujących Microsoft 365, portal Azure i wiele innych aplikacji SaaS. Projektowanie Azure AD koncentruje się na dostarczaniu podstawowych usług tożsamości, w tym uwierzytelniania, autoryzacji i zarządzania użytkownikami.

Główne funkcje Azure AD obejmują uwierzytelnianie wieloskładnikowe i dostęp warunkowy, wraz z bezproblemową integracją z innymi usługami zabezpieczeń Microsoftu. Te funkcje znacząco podnoszą bezpieczeństwo tożsamości użytkowników i umożliwiają organizacjom skuteczne wdrażanie i egzekwowanie polityk dostępu. Jako podstawowy komponent ekosystemu usług chmurowych Microsoftu, Azure AD jest kluczowy dla zarządzania tożsamościami użytkowników w chmurze.

Jednostki

Wyliczanie

Do wyliczania można użyć narzędzia az cli, modułu PowerShell AzureAD (lub AzureAD Preview) oraz modułu Az PowerShell.

W systemie Linux będziesz musiał zainstalować 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

Różnice między modułami

  • AzureAD to moduł PowerShell od Microsoftu do zarządzania Azure AD. Nie wyświetla wszystkich właściwości obiektów Azure AD i nie można go używać do uzyskiwania informacji o zasobach Azure.

  • Az PowerShell to moduł do zarządzania zasobami Azure z wiersza poleceń PowerShell.

Połączenie

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

Kiedy logujesz się za pomocą CLI do Azure za pomocą dowolnego programu, używasz Aplikacji Azure z tenantem, który należy do Microsoftu. Te aplikacje, takie jak te, które możesz tworzyć w swoim koncie, posiadają identyfikator klienta. Nie będziesz w stanie zobaczyć wszystkich z nich na listach dozwolonych aplikacji, które możesz zobaczyć w konsoli, ale domyślnie są one dozwolone.

Na przykład skrypt powershell używa aplikacji z identyfikatorem klienta 1950a258-227b-4e31-a9cf-717495945fc2 do uwierzytelniania. Nawet jeśli aplikacja nie pojawia się w konsoli, administrator systemu może zablokować tę aplikację, aby użytkownicy nie mogli uzyskać do niej dostępu za pomocą narzędzi, które łączą się za pomocą tej aplikacji.

Jednak istnieją inne identyfikatory klientów aplikacji, które pozwalają na połączenie z 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

Użytkownicy

# 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

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

Azure AD jest usługą zarządzania tożsamościami i dostępu w chmurze, która zapewnia uwierzytelnianie i autoryzację dla użytkowników, aplikacji i zasobów w środowisku Azure. W celu przeprowadzenia testów penetracyjnych na Azure AD, można użyć modułu Az PowerShell, który zapewnia zestaw poleceń do zarządzania usługami Azure.

Aby rozpocząć testy penetracyjne na Azure AD przy użyciu Az PowerShell, należy najpierw zainstalować moduł Az PowerShell na swoim komputerze. Można to zrobić za pomocą polecenia Install-Module -Name Az -AllowClobber -Scope CurrentUser, które zainstaluje najnowszą wersję modułu Az PowerShell.

Po zainstalowaniu modułu Az PowerShell, można zalogować się do swojego konta Azure AD za pomocą polecenia Connect-AzAccount. Następnie można użyć różnych poleceń Az PowerShell do przeprowadzenia testów penetracyjnych na Azure AD, takich jak:

  • Get-AzADUser - pobiera informacje o użytkownikach Azure AD.

  • Get-AzADServicePrincipal - pobiera informacje o usługach Azure AD.

  • Get-AzADGroup - pobiera informacje o grupach Azure AD.

  • Get-AzADGroupMember - pobiera informacje o członkach grup Azure AD.

  • Get-AzADApplication - pobiera informacje o aplikacjach Azure AD.

Pamiętaj, że przed przeprowadzeniem testów penetracyjnych na Azure AD należy uzyskać odpowiednie uprawnienia i zgody. Testy penetracyjne powinny być przeprowadzane tylko na zasobach, które są w pełni kontrolowane przez Ciebie lub na których masz uprawnienia do testowania.

# 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

Zmiana hasła użytkownika

$password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText –Force

(Get-AzureADUser -All $true | ?{$_.UserPrincipalName -eq "victim@corp.onmicrosoft.com"}).ObjectId | Set- AzureADUserPassword -Password $password –Verbose

MFA i polityki warunkowego dostępu

Zaleca się dodanie MFA dla każdego użytkownika, jednak niektóre firmy mogą nie ustawiać go lub mogą go ustawić z warunkowym dostępem: użytkownik będzie wymagał MFA, jeśli zaloguje się z określonego miejsca, przeglądarki lub pewnego warunku. Te polityki, jeśli nie są poprawnie skonfigurowane, mogą być podatne na omijanie. Sprawdź:

pageAz - Conditional Access Policies / MFA Bypass

Grupy

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

Azure AD

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

Azure AD jest usługą zarządzania tożsamościami i dostępu w chmurze, która zapewnia uwierzytelnianie i autoryzację dla użytkowników, aplikacji i zasobów w środowisku Azure. W celu przeprowadzenia testów penetracyjnych na Azure AD, można użyć modułu Az PowerShell, który zapewnia zestaw poleceń do zarządzania usługami Azure.

Aby rozpocząć testy penetracyjne na Azure AD przy użyciu Az PowerShell, należy najpierw zainstalować moduł Az PowerShell na swoim komputerze. Można to zrobić za pomocą polecenia Install-Module -Name Az -AllowClobber -Scope CurrentUser, które zainstaluje najnowszą wersję modułu Az PowerShell.

Po zainstalowaniu modułu Az PowerShell, można zalogować się do swojego konta Azure AD za pomocą polecenia Connect-AzAccount. Następnie można użyć różnych poleceń, takich jak Get-AzADUser, Get-AzADGroup, Get-AzADServicePrincipal, aby uzyskać informacje o użytkownikach, grupach i usługach w Azure AD.

Ważne jest, aby podczas testów penetracyjnych na Azure AD zachować ostrożność i przestrzegać zasad etyki hackingu. Należy uzyskać odpowiednie uprawnienia i zgody przed przeprowadzeniem testów penetracyjnych, aby uniknąć naruszenia prawa i zasad działania platformy Azure.

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

Dodawanie użytkownika do grupy

Właściciele grupy mogą dodawać nowych użytkowników do grupy

Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose

Grupy mogą być dynamiczne, co oznacza, że jeśli użytkownik spełnia określone warunki, zostanie dodany do grupy. Oczywiście, jeśli warunki są oparte na atrybutach, które użytkownik może kontrolować, może on wykorzystać tę funkcję, aby dostać się do innych grup. Sprawdź, jak wykorzystać dynamiczne grupy na następnej stronie:

pageAz - Dynamic Groups Privesc

Service Principals / Enterprise Applications

Należy zauważyć, że Service Principal w terminologii PowerShell jest nazywany Enterprise Applications w portalu 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"

Właściciel Service Principal może zmienić jego hasło.

Wyświetl listę i spróbuj dodać tajny klucz klienta do każdej aplikacji przedsiębiorstwa

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

### Role

<div data-gb-custom-block data-tag="tabs">

<div data-gb-custom-block data-tag="tab" data-title='az cli'>

#### Opis

Rola w Azure AD to zestaw uprawnień, które określają, jakie czynności może wykonywać użytkownik w organizacji. Można przypisać role do użytkowników, grup i aplikacji usługi Azure AD. 

#### Polecenia

##### Wyświetlanie listy ról

```plaintext
az ad sp list

Wyświetlanie szczegółowych informacji o roli

az ad sp show --id <role_id>

Tworzenie roli

az ad sp create-for-rbac --name <role_name> --role <role_type> --scopes <scope>

Usuwanie roli

az ad sp delete --id <role_id>

Przypisywanie roli do użytkownika

az role assignment create --assignee <user_id> --role <role_name> --scope <scope>

Usuwanie przypisania roli

az role assignment delete --assignee <user_id> --role <role_name> --scope <scope>

Wyświetlanie przypisanych ról

az role assignment list --assignee <user_id>

Wyświetlanie ról przypisanych do zasobu

az role assignment list --scope <scope>

Wyświetlanie ról przypisanych do grupy

az role assignment list --assignee-object-id <group_id>

Wyświetlanie ról przypisanych do aplikacji

az role assignment list --assignee-object-id <app_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zarządzanej

az role assignment list --assignee-object-id <managed_service_id>

Wyświetlanie ról przypisanych do usługi zar

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

Azure AD

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

Opis

Azure AD (Azure Active Directory) to usługa zarządzania tożsamościami i dostępem w chmurze, która jest często wykorzystywana w środowiskach chmurowych. W ramach testów penetracyjnych w chmurze, warto zrozumieć, jak działa Azure AD i jakie są możliwości ataku na tę usługę.

Wykorzystanie

Zaloguj się do Azure AD

Connect-AzAccount

Wyświetl informacje o użytkownikach

Get-AzADUser

Wyświetl informacje o grupach

Get-AzADGroup

Wyświetl informacje o aplikacjach

Get-AzADApplication

Wyświetl informacje o rolach

Get-AzADRoleDefinition

Wyświetl informacje o uprawnieniach

Get-AzADServicePrincipalPermission

Wyświetl informacje o kluczach aplikacji

Get-AzADApplicationKeyCredential

Wyświetl informacje o tokenach dostępu

Get-AzADUserAccessToken

Wyświetl informacje o tokenach odświeżających

Get-AzADUserRefreshToken

Wyświetl informacje o tokenach aplikacji

Get-AzADApplicationTokenCredential

Wyświetl informacje o tokenach usługi

Get-AzADServicePrincipalAccessToken

Wyświetl informacje o tokenach odświeżających usługi

Get-AzADServicePrincipalRefreshToken

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

Get-AzADServicePrincipalTokenCredential

Wyświetl informacje o tokenach aplikacji usługi

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

Introduction

Azure Active Directory (Azure AD) is a cloud-based identity and access management service provided by Microsoft. It allows organizations to manage user identities and control access to resources in the Azure cloud environment.

Azure AD Security

When performing a security assessment of Azure AD, there are several areas to focus on:

User Enumeration

User enumeration involves identifying valid user accounts in Azure AD. This can be done through various methods, such as querying the Azure AD Graph API or using the Azure AD PowerShell module.

Password Attacks

Password attacks involve attempting to crack or guess user passwords in Azure AD. This can be done using techniques like brute-forcing, dictionary attacks, or password spraying.

Privilege Escalation

Privilege escalation involves gaining higher levels of access in Azure AD. This can be achieved by exploiting misconfigurations, vulnerabilities, or weak access controls.

Token Manipulation

Token manipulation involves tampering with authentication tokens in Azure AD. This can allow an attacker to impersonate a user or gain unauthorized access to resources.

Federation Attacks

Federation attacks involve exploiting vulnerabilities in the federation setup between Azure AD and other identity providers. This can lead to unauthorized access or privilege escalation.

Data Exfiltration

Data exfiltration involves stealing sensitive data from Azure AD. This can be done through techniques like exporting user information, accessing confidential files, or exploiting misconfigured permissions.

Conclusion

Understanding the security risks and vulnerabilities in Azure AD is crucial for organizations using this cloud-based identity and access management service. By identifying and addressing these issues, organizations can enhance the security of their Azure AD environment and protect their sensitive data.

# 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

Urządzenia

# If you know how to do this send a PR!

Azure AD

# Enumerate Devices
Get-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 devices
Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredOwner
Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredOwner -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}
# Registred users of all the devices
Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredUser
Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredUser -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}
# Get dives managed using Intune
Get-AzureADDevice -All $true | ?{$_.IsCompliant -eq "True"}
# Get devices owned by a user
Get-AzureADUserOwnedDevice -ObjectId test@corp.onmicrosoft.com
# Get Administrative Units of a device
Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember -ObjectId $_.ObjectId | where {$_.ObjectId -eq $deviceObjId} }

Jeśli urządzenie (VM) jest dołączone do AzureAD, użytkownicy z AzureAD będą mogli się zalogować. Ponadto, jeśli zalogowany użytkownik jest Właścicielem urządzenia, będzie on lokalnym administratorem.

Aplikacje

Aplikacje to Rejestracje aplikacji w portalu (nie dotyczy aplikacji przedsiębiorstwa). Ale każda Rejestracja aplikacji utworzy Aplikację przedsiębiorstwa (Podmiot usługi) o tej samej nazwie. Ponadto, jeśli aplikacja jest aplikacją wielotenantową, zostanie utworzona inna Aplikacja przedsiębiorstwa (Podmiot usługi) w tym najemcy o tej samej nazwie.

Podczas generowania aplikacji przypisywane są 2 rodzaje uprawnień:

  • Uprawnienia przypisane do Podmiotu usługi

  • Uprawnienia, które aplikacja może mieć i używać w imieniu użytkownika.

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

Azure AD

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

Azure AD jest usługą zarządzania tożsamościami i dostępu w chmurze, która zapewnia uwierzytelnianie i autoryzację dla użytkowników, aplikacji i zasobów w środowisku Azure. W celu przeprowadzenia testów penetracyjnych na Azure AD, można użyć modułu Az PowerShell, który zapewnia zestaw poleceń do zarządzania usługami Azure.

Aby rozpocząć testy penetracyjne na Azure AD przy użyciu Az PowerShell, należy najpierw zainstalować moduł Az PowerShell na swoim komputerze. Można to zrobić za pomocą polecenia Install-Module -Name Az -AllowClobber -Scope CurrentUser, które zainstaluje najnowszą wersję modułu Az PowerShell.

Po zainstalowaniu modułu Az PowerShell, można zalogować się do swojego konta Azure AD za pomocą polecenia Connect-AzAccount. Następnie można użyć różnych poleceń Az PowerShell do przeprowadzenia testów penetracyjnych na Azure AD, takich jak:

  • Get-AzADUser - pobiera informacje o użytkownikach Azure AD.

  • Get-AzADServicePrincipal - pobiera informacje o usługach Azure AD.

  • Get-AzADGroup - pobiera informacje o grupach Azure AD.

  • Get-AzADGroupMember - pobiera informacje o członkach grup Azure AD.

  • Get-AzADApplication - pobiera informacje o aplikacjach Azure AD.

Pamiętaj, że przed przeprowadzeniem testów penetracyjnych na Azure AD należy uzyskać odpowiednie uprawnienia i zgody. Testy penetracyjne powinny być przeprowadzane tylko na zasobach, które są w pełni kontrolowane przez Ciebie lub na których masz uprawnienia do testowania.

# 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

Aplikacja z uprawnieniem AppRoleAssignment.ReadWrite może eskalować do roli Global Admin poprzez przyznanie sobie tej roli. Więcej informacji tutaj.

Sekretny ciąg znaków, który aplikacja używa do udowodnienia swojej tożsamości podczas żądania tokena, to hasło aplikacji. Jeśli znajdziesz to hasło, możesz uzyskać dostęp jako service principal wewnątrz tenanta. Należy zauważyć, że to hasło jest widoczne tylko podczas generowania (możesz je zmienić, ale nie możesz go ponownie pobrać). Właściciel aplikacji może dodać do niej hasło (aby mógł się podszywać). Logowanie jako te service principal nie jest oznaczone jako ryzykowne i nie wymaga MFA.

Różnica między aplikacjami a (Enterprise Applications lub Service Principals)

Różnica między aplikacją a Service Principalem w Azure:

  • Aplikacje/App Registrations: Są to aplikacje, które istnieją w Twoim Azure AD

  • (Get-AzureADApplication -filter "DisplayName eq 'testapp'")

  • Service Principal/Enterprise Applications: Obiekty zabezpieczeń w Twoim Azure AD, które mogą mieć uprawnienia w Azure Directory i są powiązane z Twoją aplikacją lub aplikacją firm trzecich

  • Get-AzureADServicePrincipal -filter "DisplayName eq 'testapp'")

  • Administrator może musieć zatwierdzić udzielone uprawnienia, jeśli są one bardzo wrażliwe.

Aplikacja może działać w osobnym tenantcie, a gdy zaczniesz jej używać i udzielisz jej dostępu, w Twoim tenantcie zostanie utworzony Enterprise Application/Service Principal, aby umożliwić jej dostęp do potrzebnych informacji:

Jednostki administracyjne

Służą do lepszego zarządzania użytkownikami.

Jednostki administracyjne ograniczają uprawnienia w roli do dowolnej części Twojej organizacji, którą zdefiniujesz. Na przykład, możesz użyć jednostek administracyjnych do delegowania roli Helpdesk Administrator do specjalistów ds. wsparcia regionalnego, aby mogli zarządzać użytkownikami tylko w obszarze, który obsługują.

Dlatego możesz przypisać role do jednostki administratora, a członkowie tej jednostki będą mieć te role.

# 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) to usługa bezpieczeństwa, która wykorzystuje automatyczne wykrywanie i usuwanie, aby chronić tożsamości użytkowników w Azure Active Directory przed kompromitacją. AIP ciągle monitoruje i ocenia ryzyko logowania użytkowników oraz konfiguracje tożsamości, automatycznie stosując odpowiednie środki bezpieczeństwa, takie jak wymaganie uwierzytelniania wieloskładnikowego lub blokowanie potencjalnie niebezpiecznych działań. Pomaga to organizacjom zapobiegać naruszeniom bezpieczeństwa opartym na tożsamości.

Przebieg:

  1. Azure AD Identity Protection monitoruje działania użytkowników i zbiera dane dotyczące logowania użytkowników, zdarzeń uwierzytelniania i innych istotnych działań.

  2. Usługa wykorzystuje algorytmy uczenia maszynowego do analizy tych danych i wykrywania potencjalnych zagrożeń dla bezpieczeństwa.

  3. Azure AD Identity Protection przypisuje poziom ryzyka zagrożenia (np. logowanie) i generuje alert, jeśli konieczne jest wykonanie jakiejś automatycznej akcji.

Azure AD Password Protection (APP)

Azure AD Password Protection (APP) to funkcja bezpieczeństwa, która pomaga zapobiegać stosowaniu słabych haseł w Azure Active Directory poprzez narzucanie silnych zasad dotyczących haseł. APP blokuje powszechnie stosowane słabe hasła i ich warianty, zmniejszając ryzyko naruszeń związanych z hasłami. Może być stosowany zarówno na poziomie chmury, jak i w lokalnym katalogu Active Directory, poprawiając ogólne bezpieczeństwo haseł w całej organizacji.

References

Last updated