Az - AzureAD (AAD)
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini da podržite HackTricks:
Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu Proverite SUBSCRIPTION PLANS!
Nabavite zvanični PEASS & HackTricks swag
Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @hacktricks_live.
Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
Azure Active Directory (Azure AD) služi kao Microsoft-ova cloud-based usluga za upravljanje identitetom i pristupom. Ona je ključna za omogućavanje zaposlenima da se prijave i pristupe resursima, kako unutar tako i izvan organizacije, uključujući Microsoft 365, Azure portal i mnoge druge SaaS aplikacije. Dizajn Azure AD-a se fokusira na pružanje osnovnih identitetskih usluga, posebno autentifikaciju, autorizaciju i upravljanje korisnicima.
Ključne funkcionalnosti Azure AD-a uključuju višefaktorsku autentifikaciju i uslovni pristup, zajedno sa besprekornom integracijom sa drugim Microsoft-ovim sigurnosnim uslugama. Ove funkcionalnosti značajno poboljšavaju sigurnost korisničkih identiteta i omogućavaju organizacijama da efikasno implementiraju i sprovode svoje politike pristupa. Kao osnovna komponenta Microsoft-ovog ekosistema cloud usluga, Azure AD je ključan za cloud-based upravljanje korisničkim identitetima.
Entiteti
Nabrojavanje
Za ovo nabrojavanje možete koristiti az cli alat, PowerShell modul AzureAD (ili AzureAD Preview) i Az PowerShell modul.
Na Linux-u će vam biti potrebno instalirati 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
Razlike između modula
AzureAD je PowerShell modul od Microsofta za upravljanje Azure AD-om. Ne prikazuje sve osobine Azure AD objekata i ne može se koristiti za pristup informacijama o Azure resursima.
Az PowerShell je modul za upravljanje Azure resursima iz PowerShell komandne linije.
Povezivanje
az login #This will open the browser
az login -u <username> -p <password> #Specify user and password
az login --identity #Use the current machine managed identity (metadata)
az login --identity -u /subscriptions/<subscriptionId>/resourcegroups/myRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myID #Login with user managed identity
# Login as service principal
az login --service-principal -u http://azure-cli-2016-08-05-14-31-15 -p VerySecret --tenant contoso.onmicrosoft.com #With password
az login --service-principal -u http://azure-cli-2016-08-05-14-31-15 -p ~/mycertfile.pem --tenant contoso.onmicrosoft.com #With cert
# Request access token (ARM)
az account get-access-token
# Request access token for different resource. Supported tokens: aad-graph, arm, batch, data-lake, media, ms-graph, oss-rdbms
az account get-access-token --resource-type aad-graph
# If you want to configure some defaults
az configure
# Get user logged-in already
az ad signed-in-user show
# Help
az find "vm" # Find vm commands
az vm -h # Get subdomains
az ad user list --query-examples # Get examples
Connect-AzureAD #Open browser
# Using credentials
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ("test@corp.onmicrosoft.com", $passwd)
Connect-AzureAD -Credential $creds
# Using tokens
## AzureAD cannot request tokens, but can use AADGraph and MSGraph tokens to connect
Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
Connect-AzAccount #Open browser
# Using credentials
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential("test@corp.onmicrosoft.com", $passwd)
Connect-AzAccount -Credential $creds
# Get Access Token
(Get-AzAccessToken).Token
# Request access token to other endpoints: AadGraph, AnalysisServices, Arm, Attestation, Batch, DataLake, KeyVault, MSGraph, OperationalInsights, ResourceManager, Storage, Synapse
Get-AzAccessToken -ResourceTypeName MSGraph
(Get-AzAccessToken -Resource "https://graph.microsoft.com").Token
# Conenct with access token
Connect-AzAccount -AccountId test@corp.onmicrosoft.com -AccessToken $token
Connect-AzAccount -AccessToken $token -GraphAccessToken $graphaccesstoken -AccountId <ACCOUNT-ID>
## The -AccessToken is from management.azure.com
# Connect with Service principal/enterprise app secret
$password = ConvertTo-SecureString 'KWEFNOIRFIPMWL.--DWPNVFI._EDWWEF_ADF~SODNFBWRBIF' -AsPlainText -Force
$creds = New-Object
System.Management.Automation.PSCredential('2923847f-fca2-a420-df10-a01928bec653', $password)
Connect-AzAccount -ServicePrincipal -Credential $creds -Tenant 29sd87e56-a192-a934-bca3-0398471ab4e7d
#All the Azure AD cmdlets have the format *-AzAD*
Get-Command *azad*
#Cmdlets for other Azure resources have the format *Az*
Get-Command *az*
#Using management
$Token = 'eyJ0eXAi..'
# List subscriptions
$URI = 'https://management.azure.com/subscriptions?api-version=2020-01-01'
$RequestParams = @{
Method = 'GET'
Uri = $URI
Headers = @{
'Authorization' = "Bearer $Token"
}
}
(Invoke-RestMethod @RequestParams).value
# Using graph
Invoke-WebRequest -Uri "https://graph.windows.net/myorganization/users?api-version=1.6" -Headers @{Authorization="Bearer {0}" -f $Token}
# Request tokens to access endpoints
# ARM
curl "$IDENTITY_ENDPOINT?resource=https://management.azure.com&api-version=2017-09-01" -H secret:$IDENTITY_HEADER
# Vault
curl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01" -H secret:$IDENTITY_HEADER
Kada se prijavite putem CLI-a u Azure pomoću bilo kog programa, koristite Azure aplikaciju iz stanara koja pripada Microsoftu. Ove aplikacije, poput onih koje možete kreirati u svom nalogu, imaju klijentski ID. Nećete moći da vidite sve njih u listama dozvoljenih aplikacija koje možete videti u konzoli, ali su sve podrazumevano dozvoljene.
Na primer, PowerShell skripta koja se autentifikuje koristi aplikaciju sa klijentskim ID-om 1950a258-227b-4e31-a9cf-717495945fc2
. Čak i ako aplikacija ne prikazuje u konzoli, sistem administrator može blokirati tu aplikaciju kako korisnici ne bi mogli pristupiti koristeći alate koji se povezuju preko te aplikacije.
Međutim, postoje drugi klijentski ID-ovi aplikacija koji će vam omogućiti povezivanje sa Azure-om:
# 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
Korisnici
# 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 } }
Az PowerShell je skup alata za upravljanje Azure Active Directory (Azure AD) resursima putem PowerShell skripti. Ovi alati omogućavaju izvršavanje različitih operacija, kao što su kreiranje, ažuriranje i brisanje korisnika, grupa i drugih Azure AD objekata. Takođe, omogućavaju i upravljanje dozvolama i pristupom korisnika.
Da biste koristili Az PowerShell, prvo morate instalirati Az modul. Možete ga instalirati pomoću PowerShellGet modula, koji je uključen u PowerShell 5.0 i novije verzije. Evo kako možete instalirati Az modul:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Nakon instalacije Az modula, možete se povezati na Azure AD koristeći sledeću komandu:
Connect-AzAccount
Ova komanda će otvoriti prozor za prijavljivanje, gde ćete uneti svoje Azure AD korisničko ime i lozinku. Nakon uspešne prijave, možete izvršavati različite operacije nad Azure AD resursima.
Na primer, možete kreirati novog korisnika koristeći sledeću komandu:
New-AzADUser -DisplayName "John Doe" -UserPrincipalName "john.doe@example.com" -Password "P@ssw0rd"
Ova komanda će kreirati novog korisnika sa prikazanim imenom "John Doe", korisničkim imenom "john.doe@example.com" i lozinkom "P@ssw0rd".
Az PowerShell pruža mnoge druge komande i mogućnosti za upravljanje Azure AD resursima. Možete istražiti dokumentaciju i primere kako biste saznali više o ovim alatima i njihovim funkcionalnostima.
# 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
Promena korisničke lozinke
$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 politike uslovnog pristupa
Visoko se preporučuje da se MFA doda svakom korisniku, međutim, neke kompanije to neće postaviti ili mogu postaviti sa uslovnim pristupom: Korisnik će biti obavezan na MFA ako se prijavi sa određene lokacije, pretraživača ili nekih uslova. Ove politike, ako nisu pravilno konfigurisane, mogu biti podložne zaobilazenju. Proverite:
Az - Conditional Access Policies / MFA BypassGrupe
# 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} }
Az PowerShell je PowerShell modul koji pruža interfejs za upravljanje Azure resursima. Može se koristiti za izvršavanje različitih operacija u okviru Azure Active Directory (Azure AD) okruženja.
Instalacija
Da biste instalirali Az PowerShell modul, možete koristiti sledeću komandu:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Povezivanje sa Azure AD
Da biste se povezali sa Azure AD, koristite sledeću komandu:
Connect-AzAccount
Nakon izvršavanja ove komande, biće vam zatraženo da se prijavite na svoj Azure nalog.
Prikazivanje informacija o Azure AD
Da biste prikazali informacije o Azure AD, koristite sledeću komandu:
Get-AzADUser
Ova komanda će prikazati listu korisnika u Azure AD okruženju.
Kreiranje novog korisnika
Da biste kreirali novog korisnika u Azure AD, koristite sledeću komandu:
New-AzADUser -DisplayName "Ime Prezime" -UserPrincipalName "ime.prezime@domain.com" -Password "Lozinka123" -ForceChangePasswordNextLogin $false
Ova komanda će kreirati novog korisnika sa zadatim imenom, korisničkim principom i lozinkom.
Brisanje korisnika
Da biste obrisali korisnika iz Azure AD, koristite sledeću komandu:
Remove-AzADUser -UserPrincipalName "ime.prezime@domain.com"
Ova komanda će obrisati korisnika sa zadatim korisničkim principom.
# 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>
Dodavanje korisnika u grupu
Vlasnici grupe mogu dodati nove korisnike u grupu
Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
Grupe mogu biti dinamičke, što znači da ako korisnik ispunjava određene uslove, biće dodat u grupu. Naravno, ako su uslovi zasnovani na atributima koje korisnik može kontrolisati, on može zloupotrebiti ovu funkciju da se ubaci u druge grupe. Pogledajte kako zloupotrebiti dinamičke grupe na sledećoj stranici:
Servisni principali / Preduzeća aplikacija
Imajte na umu da se Servisni principali u PowerShell terminologiji nazivaju Preduzeća aplikacija u Azure portalu (veb).
# 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"
Azure AD
# Get Service Principals
Get-AzureADServicePrincipal -All $true
# Get details about a SP
Get-AzureADServicePrincipal -ObjectId <id> | fl *
# Get SP by string name or Id
Get-AzureADServicePrincipal -All $true | ?{$_.DisplayName -match "app"} | fl
Get-AzureADServicePrincipal -All $true | ?{$_.AppId -match "103947652-1234-5834-103846517389"}
# Get owner of SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalOwner |fl *
# Get objects owned by a SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalOwnedObject
# Get objects created by a SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalCreatedObject
# Get groups where the SP is a member
Get-AzureADServicePrincipal | Get-AzureADServicePrincipalMembership
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalMembership |fl *
Az PowerShell je skup alata za upravljanje Azure Active Directory (Azure AD) resursima putem PowerShell skripti. Ovi alati omogućavaju izvršavanje različitih operacija, kao što su kreiranje, ažuriranje i brisanje korisnika, grupa i drugih Azure AD objekata. Takođe, omogućavaju i upravljanje dozvolama i pristupom korisnika.
Da biste koristili Az PowerShell, prvo morate instalirati Az modul. Možete ga instalirati pomoću PowerShellGet modula, koji je ugrađen u PowerShell 5.0 i novije verzije. Evo kako možete instalirati Az modul:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Nakon instalacije, možete se povezati na Azure AD koristeći sledeću komandu:
Connect-AzAccount
Ova komanda će otvoriti prozor za prijavljivanje, gde ćete uneti svoje Azure AD korisničko ime i lozinku. Nakon uspešne prijave, možete izvršavati različite komande za upravljanje Azure AD resursima.
Na primer, možete koristiti sledeću komandu za prikazivanje svih korisnika u Azure AD:
Get-AzADUser
Ova komanda će vratiti listu svih korisnika, zajedno sa njihovim atributima kao što su ime, prezime, e-mail adresa itd.
Az PowerShell pruža mnoge druge komande i mogućnosti za upravljanje Azure AD resursima. Možete pronaći više informacija i primere korišćenja u zvaničnoj dokumentaciji Az PowerShell-a.
# 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>
$Token = 'eyJ0eX..'
$URI = 'https://graph.microsoft.com/v1.0/applications'
$RequestParams = @{
Method = 'GET'
Uri = $URI
Headers = @{
'Authorization' = "Bearer $Token"
}
}
(Invoke-RestMethod @RequestParams).value
Vlasnik servisnog principa može promeniti njegovu lozinku.
Izlistajte i pokušajte dodati klijentsku tajnu na svaku Enterprise aplikaciju
```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>
### Uloge
<div data-gb-custom-block data-tag="tabs">
<div data-gb-custom-block data-tag="tab" data-title='az cli'>
```bash
# Get roles
az role definition list
# Get assigned roles
az role assignment list --all --query "[].roleDefinitionName"
az role assignment list --all | jq '.[] | .roleDefinitionName,.scope'
# Get info of 1 role
az role definition list --name "AzureML Registry User"
# Get only custom roles
az role definition list --custom-role-only
# Get only roles assigned to the resource group indicated
az role definition list --resource-group <resource_group>
# Get only roles assigned to the indicated scope
az role definition list --scope <scope>
# Get all the principals a role is assigned to
az role assignment list --all --query "[].{principalName:principalName,principalType:principalType,resourceGroup:resourceGroup,roleDefinitionName:roleDefinitionName}[?roleDefinitionName=='<ROLE_NAME>']"
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 *
Az PowerShell je skup alata za upravljanje Azure Active Directory (Azure AD) resursima putem PowerShell skripti. Ovi alati omogućavaju izvršavanje različitih operacija, kao što su kreiranje, ažuriranje i brisanje korisnika, grupa i drugih Azure AD objekata. Takođe, omogućavaju i upravljanje dozvolama i pristupom korisnika.
Da biste koristili Az PowerShell, prvo morate instalirati Az modul. Možete ga instalirati pomoću PowerShellGet modula, koji je uključen u PowerShell 5.0 i novije verzije. Evo kako možete instalirati Az modul:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Nakon instalacije Az modula, možete se povezati na Azure AD koristeći sledeću komandu:
Connect-AzAccount
Ova komanda će otvoriti prozor za prijavljivanje, gde ćete uneti svoje Azure AD korisničko ime i lozinku. Nakon uspešne prijave, možete izvršavati različite operacije nad Azure AD resursima.
Na primer, možete kreirati novog korisnika koristeći sledeću komandu:
New-AzADUser -DisplayName "John Doe" -UserPrincipalName "john.doe@contoso.com" -Password "P@ssw0rd"
Ova komanda će kreirati novog korisnika sa prikazanim imenom "John Doe", korisničkim principom "john.doe@contoso.com" i lozinkom "P@ssw0rd".
Az PowerShell pruža mnoge druge komande i mogućnosti za upravljanje Azure AD resursima. Možete istražiti dokumentaciju i primere na zvaničnoj Microsoft Azure veb stranici.
# 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>
# 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
Uređaji
# If you know how to do this send a PR!Azure AD# 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} }
Ako je uređaj (VM) AzureAD pridružen, korisnici iz AzureAD-a će moći da se prijave. Osim toga, ako je prijavljeni korisnik Vlasnik uređaja, biće lokalni administrator.
Aplikacije
Aplikacije su Registracije aplikacija u portalu (ne Enterprise aplikacije). Ali svaka Registracija aplikacije će kreirati Enterprise aplikaciju (Servisni princip) sa istim imenom. Osim toga, ako je Aplikacija aplikacija za više zakupaca, druga Enterprise aplikacija (Servisni princip) će biti kreirana u tom zakupcu sa istim imenom.
Kada se generiše Aplikacija, dodeljuju se 2 vrste dozvola:
Dozvole dodeljene Servisnom principu
Dozvole koje aplikacija može imati i koristiti u ime korisnika.
# 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 *
Az PowerShell je skup alata za upravljanje Azure Active Directory (Azure AD) resursima putem PowerShell skripti. Ovi alati omogućavaju izvršavanje različitih operacija, kao što su kreiranje, ažuriranje i brisanje korisnika, grupa i drugih Azure AD objekata. Takođe, omogućavaju i upravljanje dozvolama i pristupom korisnika.
Da biste koristili Az PowerShell, prvo morate instalirati Az modul. Možete ga instalirati pomoću PowerShellGet modula, koji je uključen u PowerShell 5.0 i novije verzije. Evo kako možete instalirati Az modul:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
Nakon instalacije, možete se povezati na Azure AD koristeći sledeću komandu:
Connect-AzAccount
Ova komanda će otvoriti prozor za prijavljivanje, gde ćete uneti svoje Azure AD korisničko ime i lozinku. Nakon uspešne prijave, možete izvršavati različite operacije nad Azure AD resursima.
Na primer, možete kreirati novog korisnika koristeći sledeću komandu:
New-AzADUser -DisplayName "John Doe" -UserPrincipalName "john.doe@contoso.com" -Password "P@ssw0rd"
Ova komanda će kreirati novog korisnika sa prikazanim imenom "John Doe", korisničkim principom "john.doe@contoso.com" i lozinkom "P@ssw0rd".
Az PowerShell pruža mnoge druge komande i mogućnosti za upravljanje Azure AD resursima. Možete pronaći više informacija i primere korišćenja u zvaničnoj dokumentaciji Az PowerShell-a.
# 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
Aplikacija sa dozvolom AppRoleAssignment.ReadWrite
može povećati privilegije na Global Admin tako što će sebi dodeliti tu ulogu.
Za više informacija proverite ovde.
Tajna lozinka koju aplikacija koristi da dokaže svoj identitet prilikom zahteva za token je lozinka aplikacije. Dakle, ako pronađete ovu lozinku, možete pristupiti kao servisni princip unutar tenanta. Imajte na umu da je ova lozinka vidljiva samo prilikom generisanja (možete je promeniti, ali je ne možete ponovo dobiti). Vlasnik aplikacije može joj dodati lozinku (tako da može da je predstavlja). Prijave kao ovi servisni principi nisu označene kao rizične i nemaju MFA.
Razlika između Aplikacija i (Enterprise Aplikacija ili Servisni Principali)
Razlika između aplikacije i servisnog principala u Azure-u:
Aplikacija/Registracija aplikacije: To su aplikacije koje postoje u vašem Azure AD-u
(Get-AzureADApplication -filter "DisplayName eq 'testapp'")
Servisni Principali/Enterprise Aplikacije: Bezbednosni objekti u vašem Azure AD-u koji mogu imati privilegije u Azure direktorijumu i povezani su sa vašom aplikacijom ili aplikacijom treće strane
(Get-AzureADServicePrincipal -filter "DisplayName eq 'testapp'")
Administrator može morati da odobri dodeljene dozvole ako su veoma osetljive.
Aplikacija može biti pokrenuta u tenantu treće strane i kada je počnete koristiti i dodelite joj pristup, Enterprise Aplikacija/Servisni Principali se kreira u vašem tenantu kako bi joj omogućili pristup informacijama koje su joj potrebne:
Administrativne jedinice
Koriste se za bolje upravljanje korisnicima.
Administrativne jedinice ograničavaju dozvole u ulozi na bilo koji deo vaše organizacije koji definišete. Na primer, možete koristiti administrativne jedinice da delegirate ulogu Helpdesk Administrator regionalnim specijalistima za podršku, tako da mogu upravljati samo korisnicima u regionu koji podržavaju.
Stoga možete dodeliti uloge administrativnoj jedinici i članovi će imati te uloge.
AzureAD
# 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) je sigurnosna usluga koja koristi automatizovano otkrivanje i otklanjanje kako bi zaštitila korisničke identitete u Azure Active Directory od kompromitovanja. AIP kontinuirano prati i procenjuje rizik od prijava korisnika i konfiguracija identiteta, automatski primenjujući odgovarajuće sigurnosne mere, kao što je zahtev za višestruku autentifikaciju ili blokiranje potencijalno opasnih aktivnosti. Ovo pomaže organizacijama da spreče bezbednosne prekršaje zasnovane na identitetu.
Tok:
Azure AD Identity Protection prati aktivnosti korisnika i prikuplja podatke o prijavama korisnika, događajima autentifikacije i drugim relevantnim aktivnostima.
Usluga koristi algoritme mašinskog učenja za analizu ovih podataka i otkrivanje potencijalnih sigurnosnih pretnji.
Azure AD Identity Protection dodeljuje nivo rizika pretnji (npr. prijava) i generiše upozorenje ako je potrebno izvršiti neku automatsku akciju.
Azure AD Password Protection (APP)
Azure AD Password Protection (APP) je sigurnosna funkcionalnost koja pomaže u sprečavanju slabih lozinki u Azure Active Directory primenom snažnih pravila za lozinke. APP blokira često korišćene slabe lozinke i njihove varijante, smanjujući rizik od prekršaja vezanih za lozinke. Može se primeniti kako na nivou oblaka, tako i na lokalnom Active Directory-ju, poboljšavajući ukupnu sigurnost lozinki u organizaciji.
Reference
Last updated