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

This commit is contained in:
Translator
2025-01-27 14:21:24 +00:00
parent 1a7f5dbeff
commit afe785cb49

View File

@@ -6,7 +6,7 @@
Azure Active Directory (Azure AD) は、Microsoft のクラウドベースのアイデンティティおよびアクセス管理サービスです。これは、従業員がサインインし、Microsoft 365、Azure ポータル、その他の多くの SaaS アプリケーションを含む、組織内外のリソースにアクセスするのを可能にする上で重要です。Azure AD の設計は、**認証、承認、およびユーザー管理**を主に含む、基本的なアイデンティティサービスを提供することに焦点を当てています。
Azure AD の主な機能には、**多要素認証**と**条件付きアクセス**が含まれ、他の Microsoft セキュリティサービスとのシームレスな統合が行われています。これらの機能は、ユーザーのアイデンティティのセキュリティを大幅に向上させ、組織がアクセスポリシーを効果的に実施および強制するのを支援します。Microsoft のクラウドサービスエコシステムの基本的なコンポーネントとして、Azure AD はユーザーアイデンティティのクラウドベースの管理において重要です。
Azure AD の主な機能には、**多要素認証**と**条件付きアクセス**が含まれ、他の Microsoft セキュリティサービスとのシームレスな統合が行われています。これらの機能は、ユーザーのアイデンティティのセキュリティを大幅に向上させ、組織がアクセスポリシーを効果的に実施および強制するのを可能にします。Microsoft のクラウドサービスエコシステムの基本的なコンポーネントとして、Azure AD はユーザーアイデンティティのクラウドベースの管理において重要です。
## 列挙
@@ -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
@@ -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
@@ -406,7 +488,7 @@ Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
```
> [!WARNING]
> グループは動的であり、基本的には**ユーザーが特定の条件を満たすとグループに追加される**ことを意味します。もちろん、条件が**ユーザー**が**制御**できる**属性**に基づいている場合、彼はこの機能を悪用して**他のグループに入る**ことができます。\
> 動的グループを悪用する方法については、以下のページを確認してください:
> 動的グループを悪用する方法については、のページを確認してください:
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md
@@ -414,7 +496,7 @@ Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
### サービスプリンシパル
Entra ID サービスプリンシパルに関する詳細情報は、以下を確認してください:
Entra ID サービスプリンシパルに関する詳細情報は、を確認してください:
{{#ref}}
../az-basic-information/
@@ -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
@@ -495,7 +601,7 @@ Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalMembersh
<details>
<summary>各エンタープライズアプリにクライアントシークレットをリストして追加しようとする</summary>
<summary>各エンタープライズアプリにクライアントシークレットを追加しようとするリスト</summary>
```bash
# Just call Add-AzADAppSecret
Function Add-AzADAppSecret
@@ -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
@@ -862,7 +1025,7 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember
### 管理単位
管理単位に関する詳細情報は、以下を確認してください
管理単位に関する詳細情報は、以下を確認してください:
{{#ref}}
../az-basic-information/
@@ -913,16 +1076,16 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
### 特権アイデンティティ管理 (PIM)
Azure の特権アイデンティティ管理 (PIM) は、**不必要にユーザーに過剰な特権が割り当てられるのを防ぐ**のに役立ちます。
Azure の特権アイデンティティ管理 (PIM) は、ユーザーに不必要に**過剰な特権**が割り当てられるのを**防ぐ**のに役立ちます。
PIM が提供する主な機能の一つは、常にアクティブなプリンシパルにロールを割り当てるのではなく、**一定の期間6ヶ月資格を与える**ことができる点です。ユーザーがそのロールをアクティブにしたい場合、必要な特権の時間3時間を示してリクエストを行う必要があります。その後、**管理者が**リクエストを承認する必要があります。\
ユーザーはまた、**延長**を求めることもできます。
PIM が提供する主な機能の一つは、常にアクティブなプリンシパルにロールを割り当てるのではなく、**一定の期間6ヶ月**そのロールを**適格**にすることができる点です。ユーザーがそのロールをアクティブにしたい場合、必要な特権の時間3時間を示してリクエストを行う必要があります。その後、**管理者が**リクエストを承認する必要があります。\
ユーザーはまた、**時間を延長**するようにリクエストすることもできます。
さらに、**PIM は**特権ロールが誰かに割り当てられるたびにメールを送信します。
<figure><img src="../../../images/image (354).png" alt=""><figcaption></figcaption></figure>
PIM が有効になっていると、各ロールに対して次のような特定の要件を設定することが可能です:
PIM が有効になっていると、各ロールに対して次のような特定の要件を設定することができます:
- アクティベーションの最大期間(時間)
- アクティベーション時に MFA を要求
@@ -930,12 +1093,12 @@ PIM が有効になっていると、各ロールに対して次のような特
- アクティベーション時に正当化を要求
- アクティベーション時にチケット情報を要求
- アクティベートするための承認を要求
- 資格のある割り当ての最大有効期限
- 適格な割り当ての最大有効期限
- 特定のアクションがそのロールで発生したときに通知を送信する際の設定がさらに多く
### 条件付きアクセス ポリシー
確認
チェック
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
@@ -943,9 +1106,9 @@ PIM が有効になっていると、各ロールに対して次のような特
### Entra アイデンティティ保護
Entra アイデンティティ保護は、**ユーザーまたはサインインが受け入れられるにはリスクが高すぎる場合を検出する**セキュリティサービスで、ユーザーまたはサインインの試行を**ブロック**することができます。
Entra アイデンティティ保護は、**ユーザーまたはサインインが受け入れられるにはリスクが高すぎる**場合を**検出**し、ユーザーまたはサインインの試行を**ブロック**することを可能にするセキュリティサービスです。
管理者は、リスクが「低およびそれ以上」、「中程度およびそれ以上」または「高」である場合に試行を**ブロック**するように設定できます。ただし、デフォルトでは完全に**無効**です:
管理者は、リスクが「低およびそれ以上」、「中程度およびそれ以上」または「高」である場合に**試行をブロック**するように設定できます。ただし、デフォルトでは完全に**無効**です:
<figure><img src="../../../images/image (356).png" alt=""><figcaption></figcaption></figure>
@@ -954,10 +1117,10 @@ Entra アイデンティティ保護は、**ユーザーまたはサインイン
### Entra パスワード保護
Entra パスワード保護 ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) は、**複数の不成功なログイン試行が発生した場合にアカウントをロックアウトすること弱いパスワードの悪用を防ぐ**セキュリティ機能です。\
また、提供する必要がある**カスタムパスワードリストを禁止する**こともできます。
Entra パスワード保護 ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) は、**複数の不成功なログイン試行が発生した場合にアカウントをロックアウトすることによって、弱いパスワードの悪用を防ぐのに役立つ**セキュリティ機能です。\
また、提供する必要がある**カスタムパスワードリストを禁止**することもできます。
これは、クラウドレベルとオンプレミスの Active Directory の両方に**適用**できます。
これは、**クラウドレベルとオンプレミスの Active Directory の両方に適用**できます。
デフォルトモードは**監査**です: