diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index 2d2304586..31a3aa356 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -20,18 +20,18 @@ AZURE環境を監査するためには、**どのサービスが使用されて 最初のステップは、もちろん攻撃しているテナントに関する情報を列挙し、足がかりを得ることです。 -ドメイン名に基づいて、**会社がAzureを使用しているかどうか**を知り、**テナントID**を取得し、同じテナント内の他の**有効なドメイン**(もしあれば)を取得し、SSOが有効かどうか、メール設定、有効なユーザーのメールアドレスなどの**関連情報**を取得することが可能です。 +ドメイン名に基づいて、**会社がAzureを使用しているかどうか**、**テナントID**、同じテナント内の他の**有効なドメイン**(もしあれば)を取得し、SSOが有効かどうか、メール設定、有効なユーザーのメールアドレスなどの**関連情報**を取得することが可能です。 -**外部列挙**を実行する方法については、以下のページを確認してください: +以下のページを確認して、**外部列挙**を実行する方法を学びましょう: {{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}} この情報をもとに、足がかりを得るための最も一般的な方法は次のとおりです: -- **OSINT**: GitHubやその他のオープンソースプラットフォームで**漏洩**がないか確認し、**資格情報**や興味深い情報を探します。 +- **OSINT**: GitHubやその他のオープンソースプラットフォームで**漏洩**をチェックし、**資格情報**や興味深い情報を探します。 - **パスワード**の再利用、漏洩、または[パスワードスプレー](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) -- 従業員の資格情報を購入する +- 従業員の資格情報を購入 - [**一般的なフィッシング**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html)(資格情報またはOauthアプリ) - [デバイスコード認証フィッシング](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md) - 第三者の**侵害** @@ -45,7 +45,7 @@ az-unauthenticated-enum-and-initial-entry/ - **`clouds.config`**にはサブスクリプションに関する情報が含まれています - **`service_principal_entries.json`**にはアプリケーションの資格情報(テナントID、クライアント、シークレット)が含まれています。LinuxおよびmacOSのみ - **`msal_token_cache.json`**にはアクセストークンとリフレッシュトークンが含まれています。LinuxおよびmacOSのみ -- **`service_principal_entries.bin`**と**`msal_token_cache.bin`**はWindowsで使用され、DPAPIで暗号化されています +- **`service_principal_entries.bin`**と**msal_token_cache.bin**はWindowsで使用され、DPAPIで暗号化されています - **`msal_http_cache.bin`**はHTTPリクエストのキャッシュです - 読み込む:`with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)` - **`AzureRmContext.json`**にはAz PowerShellを使用した以前のログインに関する情報が含まれています(ただし資格情報は含まれていません) @@ -62,7 +62,7 @@ az-unauthenticated-enum-and-initial-entry/ {{#endref}} > [!NOTE] -> 通常、列挙の**最も騒がしい**部分は**ログイン**であり、列挙自体ではないことを覚えておいてください。 +> 通常、列挙の**最も騒がしい**部分は**ログイン**であり、列挙自体ではありません。 ### Azure & Entra IDツール @@ -72,7 +72,7 @@ az-unauthenticated-enum-and-initial-entry/ az-enumeration-tools.md {{#endref}} -### ログイン条件のバイパス +### アクセスポリシーのバイパス
@@ -81,14 +81,20 @@ az-enumeration-tools.md - **IPホワイトリスト** -- 有効なIPを侵害する必要があります - **地理的制限** -- ユーザーの居住地や会社のオフィスの場所を見つけ、同じ都市(または少なくとも国)からIPを取得します - **ブラウザ** -- 特定のOS(Windows、Linux、Mac、Android、iOS)からのブラウザのみが許可されているかもしれません。犠牲者/会社が使用しているOSを特定します。 -- **サービスプリンシパルの資格情報を侵害する**ことも試みることができます。通常、制限が少なく、ログインのレビューも少ないです。 +- **サービスプリンシパルの資格情報を侵害**することも試みることができます。通常、制限が少なく、ログインのレビューも少ないです。 これをバイパスした後、初期設定に戻り、引き続きアクセスできる可能性があります。 +確認してください: + +{{#ref}} +az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md +{{#endref}} + ### Whoami > [!CAUTION] -> [**Az - Entra ID**](az-services/az-azuread.md)セクションでaz cli、AzureAD、Az PowerShellの**インストール方法**を学んでください。 +> [**Az - Entra ID**](az-services/az-azuread.md)セクションで**az cli、AzureAD、Az PowerShellのインストール方法**を学びましょう。 最初に知っておくべきことは、**自分が誰であるか**(どの環境にいるか)です: @@ -137,72 +143,72 @@ Get-AzureADTenantDetail ### Entra ID 列挙と特権昇格 -デフォルトでは、任意のユーザーは **ユーザー、グループ、役割、サービスプリンシパルなどを列挙するのに十分な権限を持っているはずです**([デフォルトの AzureAD 権限](az-basic-information/index.html#default-user-permissions)を確認してください)。\ -ここにガイドがあります: +デフォルトでは、任意のユーザーはユーザー、グループ、役割、サービスプリンシパルなどを列挙するのに**十分な権限を持っているべきです**...(デフォルトの AzureAD 権限を確認してください [default AzureAD permissions](az-basic-information/index.html#default-user-permissions)).\ +ここにガイドがあります: {{#ref}} az-services/az-azuread.md {{#endref}} -**Post-Exploitation ツール**を確認して、**AzureHound**のような Entra ID で特権を昇格させるためのツールを見つけてください: +**Post-Exploitation ツール**を確認して、**AzureHound**のような Entra ID で特権を昇格させるためのツールを見つけてください: {{#ref}} az-enumeration-tools.md#automated-post-exploitation-tools {{#endref}} -### Azure サービスの列挙 +### Azure 列挙 自分が誰であるかを知ったら、**アクセスできる Azure サービスを列挙し始めることができます**。 -まず、**リソースに対する権限を確認する**必要があります。これには: +まず、**リソースに対する権限を確認する**必要があります。これには: -1. **アクセスできるリソースを見つける**: +1. **アクセスできるリソースを見つける**: Az PowerShell コマンド **`Get-AzResource`** を使用すると、**現在のユーザーが可視性を持つリソースを知ることができます**。 -さらに、**ウェブコンソール**で同じ情報を取得するには、[https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) にアクセスするか、「すべてのリソース」を検索するか、次のコマンドを実行します:`az rest --method GET --url "https://management.azure.com/subscriptions//resources?api-version=2021-04-01"` +さらに、**ウェブコンソール**で同じ情報を取得するには、[https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) にアクセスするか、「すべてのリソース」を検索するか、次のコマンドを実行します: `az rest --method GET --url "https://management.azure.com/subscriptions//resources?api-version=2021-04-01"` -2. **アクセスできるリソースに対する権限を見つけ、あなたに割り当てられた役割を確認する**: +2. **アクセスできるリソースに対する権限を見つけ、あなたに割り当てられた役割を確認する**: このアクションを実行するには、**`Microsoft.Authorization/roleAssignments/read`** の権限が必要です。 -さらに、十分な権限があれば、役割 **`Get-AzRoleAssignment`** を使用して、サブスクリプション内の**すべての役割を列挙する**ことができます。または、特定のリソースに対する権限を次のように指定して確認できます:**`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**。 +さらに、十分な権限があれば、役割 **`Get-AzRoleAssignment`** を使用して、サブスクリプション内の**すべての役割を列挙する**ことができます。または、特定のリソースに対する権限を示すことができます: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**。 -この情報は、次のコマンドを実行することでも取得できます:**`az rest --method GET --uri "https://management.azure.com//providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** 例えば: +この情報は、次のコマンドを実行することでも取得できます: **`az rest --method GET --uri "https://management.azure.com//providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** 例えば: - **`az rest --method GET --uri "https://management.azure.com//subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** -3. **あなたに付与された役割の詳細な権限を見つける**: +3. **あなたに付与された役割の詳細な権限を見つける**: 次に、詳細な権限を取得するには、**`(Get-AzRoleDefinition -Id "").Actions`** を実行できます。 または、API を直接呼び出して、**`az rest --method GET --uri "https://management.azure.com//subscriptions//providers/Microsoft.Authorization/roleDefinitions/?api-version=2020-08-01-preview" | jq ".properties"`** を実行できます。 -次のセクションでは、**最も一般的な Azure サービスとそれらを列挙する方法に関する情報**を見つけることができます: +次のセクションでは、**最も一般的な Azure サービスとそれらを列挙する方法に関する情報**を見つけることができます: {{#ref}} az-services/ {{#endref}} -### Azure サービスにおける特権昇格、ポストエクスプロイテーションおよび持続性 +### 特権昇格、ポストエクスプロイテーション & 永続性 -Azure 環境の構造と使用されているサービスを理解したら、**特権を昇格させたり、横移動したり、他のポストエクスプロイテーション攻撃を実行したり、持続性を維持する方法を探し始めることができます**。 +Azure 環境の構造と使用されているサービスを理解したら、**特権を昇格させたり、横移動したり、他のポストエクスプロイテーション攻撃を実行したり、永続性を維持する方法を探し始めることができます**。 -次のセクションでは、最も一般的な Azure サービスで特権を昇格させる方法に関する情報を見つけることができます: +次のセクションでは、最も一般的な Azure サービスで特権を昇格させる方法に関する情報を見つけることができます: {{#ref}} az-privilege-escalation/ {{#endref}} -次のセクションでは、最も一般的な Azure サービスでポストエクスプロイテーション攻撃を実行する方法に関する情報を見つけることができます: +次のセクションでは、最も一般的な Azure サービスでポストエクスプロイテーション攻撃を実行する方法に関する情報を見つけることができます: {{#ref}} az-post-exploitation/ {{#endref}} -次のセクションでは、最も一般的な Azure サービスで持続性を維持する方法に関する情報を見つけることができます: +次のセクションでは、最も一般的な Azure サービスで永続性を維持する方法に関する情報を見つけることができます: {{#ref}} az-persistence/ diff --git a/src/pentesting-cloud/azure-security/az-persistence/README.md b/src/pentesting-cloud/azure-security/az-persistence/README.md index a54473b56..5084e8174 100644 --- a/src/pentesting-cloud/azure-security/az-persistence/README.md +++ b/src/pentesting-cloud/azure-security/az-persistence/README.md @@ -2,13 +2,13 @@ {{#include ../../../banners/hacktricks-training.md}} -### Illicit Consent Grant +### OAuthアプリケーション -デフォルトでは、任意のユーザーがAzure ADにアプリケーションを登録できます。したがって、高い影響力のある権限が必要なアプリケーション(ターゲットテナント専用)を登録できます。管理者の同意が必要です(管理者であれば承認できます) - 例えば、ユーザーの代理でメールを送信したり、役割管理を行ったりします。これにより、成功した場合に非常に**有益**な**フィッシング攻撃**を**実行**することができます。 +デフォルトでは、任意のユーザーがEntra IDにアプリケーションを登録できます。したがって、高い影響力のある権限が必要なアプリケーション(ターゲットテナント専用)を登録できます。管理者の同意が必要です(管理者であれば承認できます) - 例えば、ユーザーの代理でメールを送信したり、役割管理を行ったりすることです。これにより、成功した場合に非常に**有益な**フィッシング攻撃を**実行する**ことができます。 -さらに、アクセスを維持する手段として、ユーザーとしてそのアプリケーションを受け入れることもできます。 +さらに、ユーザーとしてそのアプリケーションを受け入れることで、アクセスを維持する方法としても利用できます。 -### Applications and Service Principals +### アプリケーションとサービスプリンシパル Application Administrator、GA、またはmicrosoft.directory/applications/credentials/update権限を持つカスタムロールの特権を持つ場合、既存のアプリケーションに資格情報(シークレットまたは証明書)を追加できます。 @@ -16,13 +16,13 @@ Application Administrator、GA、またはmicrosoft.directory/applications/crede アプリケーションに追加するのに興味深い役割は、**特権認証管理者ロール**です。これにより、グローバル管理者の**パスワードをリセット**することができます。 -この技術はまた、**MFAをバイパス**することも可能です。 +この技術は、**MFAをバイパスする**ことも可能にします。 ```bash $passwd = ConvertTo-SecureString "J~Q~QMt_qe4uDzg53MDD_jrj_Q3P.changed" -AsPlainText -Force $creds = New-Object System.Management.Automation.PSCredential("311bf843-cc8b-459c-be24-6ed908458623", $passwd) Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant e12984235-1035-452e-bd32-ab4d72639a ``` -- 証明書ベースの認証のために +- 証明書ベースの認証の場合 ```bash Connect-AzAccount -ServicePrincipal -Tenant -CertificateThumbprint -ApplicationId ``` @@ -30,7 +30,7 @@ Connect-AzAccount -ServicePrincipal -Tenant -CertificateThumbprint -RefObjectId -Verbose ``` > [!WARNING] > グループは動的であり、基本的には**ユーザーが特定の条件を満たすとグループに追加される**ことを意味します。もちろん、条件が**ユーザー**が**制御**できる**属性**に基づいている場合、彼はこの機能を悪用して**他のグループに入る**ことができます。\ -> 動的グループを悪用する方法については、次のページを確認してください: +> 動的グループを悪用する方法については、以下のページを確認してください: {{#ref}} ../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md @@ -414,7 +414,7 @@ Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose ### サービスプリンシパル -Entra ID サービスプリンシパルに関する詳細情報は、次を確認してください: +Entra ID サービスプリンシパルに関する詳細情報は、以下を確認してください: {{#ref}} ../az-basic-information/ @@ -495,7 +495,7 @@ Get-AzureADServicePrincipal -ObjectId | Get-AzureADServicePrincipalMembersh
-各エンタープライズアプリにクライアントシークレットを追加しようとするリスト +各エンタープライズアプリにクライアントシークレットをリストして追加しようとする ```bash # Just call Add-AzADAppSecret Function Add-AzADAppSecret @@ -664,7 +664,7 @@ Get-AzureADApplication -ObjectId | Get-AzureADApplicationOwner |fl * > 詳細については [**こちらを確認してください**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48)。 > [!NOTE] -> アプリケーションがトークンを要求する際にそのアイデンティティを証明するために使用する秘密の文字列は、アプリケーションパスワードです。\ +> アプリケーションがトークンを要求する際にそのアイデンティティを証明するために使用する秘密の文字列はアプリケーションパスワードです。\ > したがって、この **パスワード** を見つけると、**テナント** 内の **サービスプリンシパル** としてアクセスできます。\ > このパスワードは生成時にのみ表示されることに注意してください(変更することはできますが、再取得することはできません)。\ > **アプリケーション** の **所有者** は、(彼がそれを偽装できるように)**パスワード** を追加できます。\ @@ -862,7 +862,7 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember ### 管理単位 -管理単位に関する詳細情報は以下を確認してください: +管理単位に関する詳細情報は、以下を確認してください: {{#ref}} ../az-basic-information/ @@ -913,7 +913,7 @@ Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members ### 特権アイデンティティ管理 (PIM) -Azure の特権アイデンティティ管理 (PIM) は、**不必要にユーザーに過剰な特権が付与されるのを防ぐ**のに役立ちます。 +Azure の特権アイデンティティ管理 (PIM) は、**不必要にユーザーに過剰な特権が割り当てられるのを防ぐ**のに役立ちます。 PIM が提供する主な機能の一つは、常にアクティブなプリンシパルにロールを割り当てるのではなく、**一定の期間(例:6ヶ月)資格を与える**ことができる点です。ユーザーがそのロールをアクティブにしたい場合、必要な特権の時間(例:3時間)を示してリクエストを行う必要があります。その後、**管理者が**リクエストを承認する必要があります。\ ユーザーはまた、**延長**を求めることもできます。 @@ -922,7 +922,7 @@ PIM が提供する主な機能の一つは、常にアクティブなプリン
-PIM が有効になっていると、各ロールに対して次のような特定の要件を設定できます: +PIM が有効になっていると、各ロールに対して次のような特定の要件を設定することが可能です: - アクティベーションの最大期間(時間) - アクティベーション時に MFA を要求 @@ -933,7 +933,7 @@ PIM が有効になっていると、各ロールに対して次のような特 - 資格のある割り当ての最大有効期限 - 特定のアクションがそのロールで発生したときに通知を送信する際の設定がさらに多く -### 条件付きアクセス ポリシー +### 条件付きアクセス ポリシー 確認: @@ -941,21 +941,21 @@ PIM が有効になっていると、各ロールに対して次のような特 ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}} -### Entra アイデンティティ保護 +### Entra アイデンティティ保護 -Entra アイデンティティ保護は、**ユーザーまたはサインインが受け入れられるにはリスクが高すぎる場合を検出する**セキュリティサービスであり、ユーザーまたはサインインの試行を**ブロック**することができます。 +Entra アイデンティティ保護は、**ユーザーまたはサインインが受け入れられるにはリスクが高すぎる場合を検出する**セキュリティサービスで、ユーザーまたはサインインの試行を**ブロック**することができます。 -管理者は、リスクが「低およびそれ以上」、「中程度およびそれ以上」または「高い」場合に試行を**ブロック**するように設定できます。ただし、デフォルトでは完全に**無効**です: +管理者は、リスクが「低およびそれ以上」、「中程度およびそれ以上」または「高」である場合に試行を**ブロック**するように設定できます。ただし、デフォルトでは完全に**無効**です:
> [!TIP] -> 現在、同じオプションを設定できる条件付きアクセス ポリシーを介してこれらの制限を追加することが推奨されています。 +> 現在、可能な場合は条件付きアクセス ポリシーを介してこれらの制限を追加することが推奨されています。 ### Entra パスワード保護 Entra パスワード保護 ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) は、**複数の不成功なログイン試行が発生した場合にアカウントをロックアウトすることで弱いパスワードの悪用を防ぐ**セキュリティ機能です。\ -また、提供する必要のある**カスタムパスワードリストを禁止する**こともできます。 +また、提供する必要がある**カスタムパスワードリストを禁止する**こともできます。 これは、クラウドレベルとオンプレミスの Active Directory の両方に**適用**できます。