Files
hacktricks-cloud/src/pentesting-cloud/azure-security

Azure Pentesting

{{#include ../../banners/hacktricks-training.md}}

基本情報

AzureとEntra IDの基本を以下のページで学びましょう

{{#ref}} az-basic-information/ {{#endref}}

Azureペンテスター/レッドチームの方法論

AZURE環境を監査するためには、どのサービスが使用されているか何が公開されているか誰が何にアクセスできるか、および内部Azureサービスと外部サービスがどのように接続されているかを知ることが非常に重要です。

レッドチームの観点から、Azure環境を侵害するための最初のステップは、いくつかの足がかりを得ることです。

外部列挙と初期アクセス

最初のステップは、もちろん攻撃しているテナントに関する情報を列挙し、足がかりを得ることです。

ドメイン名に基づいて、会社がAzureを使用しているかどうかを知り、テナントIDを取得し、同じテナント内の他の有効なドメインもしあればを取得し、SSOが有効かどうか、メール設定、有効なユーザーのメールアドレスなどの関連情報を取得することが可能です。

外部列挙を実行する方法については、以下のページを確認してください:

{{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}}

この情報をもとに、足がかりを得るための最も一般的な方法は次のとおりです:

  • OSINT: GitHubやその他のオープンソースプラットフォームで漏洩がないか確認し、資格情報や興味深い情報を探します。
  • パスワードの再利用、漏洩、またはパスワードスプレー
  • 従業員の資格情報を購入する
  • 一般的なフィッシング資格情報またはOauthアプリ
  • デバイスコード認証フィッシング
  • 第三者の侵害
  • Azureホストアプリケーションの脆弱性
  • サーバーサイドリクエストフォージェリでメタデータエンドポイントにアクセス
  • サブドメインの乗っ取り https://godiego.co/posts/STO-Azure/
  • 他のAzureサービスの誤設定
  • 開発者のラップトップが侵害されている場合(WinPEASとLinPEASがこの情報を見つけることができます):
  • **<HOME>/.Azure**内
  • **azureProfile.json**には過去のログインユーザーに関する情報が含まれています
  • **clouds.config**にはサブスクリプションに関する情報が含まれています
  • **service_principal_entries.json**にはアプリケーションの資格情報テナントID、クライアント、シークレットが含まれています。LinuxおよびmacOSのみ
  • **msal_token_cache.json**にはアクセストークンとリフレッシュトークンが含まれています。LinuxおよびmacOSのみ
  • **service_principal_entries.binmsal_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を使用した以前のログインに関する情報が含まれていますただし資格情報は含まれていません
  • C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*内には、ユーザーのDPAPIで暗号化されたアクセストークン、IDトークン、アカウント情報を含むいくつかの.binファイルがあります。
  • **C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\**内の.tbresファイルには、DPAPIで暗号化されたアクセストークンを含むbase64が含まれています。
  • LinuxおよびmacOSでは、Az PowerShell使用されている場合からアクセストークン、リフレッシュトークン、IDトークンを取得できます。pwsh -Command "Save-AzContext -Path /tmp/az-context.json"を実行します。
  • Windowsでは、これによりIDトークンのみが生成されます。
  • LinuxおよびmacOSでAz PowerShellが使用されたかどうかを確認するには、$HOME/.local/share/.IdentityService/が存在するかどうかを確認します(ただし、含まれるファイルは空で無用です)。

以下のページで他のAzureサービスの誤設定を見つけて、足がかりを得ることができます:

{{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}}

Note

通常、列挙の最も騒がしい部分はログインであり、列挙自体ではないことを覚えておいてください。

Azure & Entra IDツール

以下のツールは、検出を避けるためにゆっくりまたは自動的に時間を節約するためにEntra IDテナントとAzure環境を列挙するのに非常に役立ちます

{{#ref}} az-enumeration-tools.md {{#endref}}

ログイン条件のバイパス

有効な資格情報があるがログインできない場合、以下のような一般的な保護が存在する可能性があります:

  • IPホワイトリスト -- 有効なIPを侵害する必要があります
  • 地理的制限 -- ユーザーの居住地や会社のオフィスの場所を見つけ、同じ都市または少なくとも国からIPを取得します
  • ブラウザ -- 特定のOSWindows、Linux、Mac、Android、iOSからのブラウザのみが許可されているかもしれません。犠牲者/会社が使用しているOSを特定します。
  • サービスプリンシパルの資格情報を侵害することも試みることができます。通常、制限が少なく、ログインのレビューも少ないです。

これをバイパスした後、初期設定に戻り、引き続きアクセスできる可能性があります。

Whoami

Caution

Az - Entra IDセクションでaz cli、AzureAD、Az PowerShellのインストール方法を学んでください。

最初に知っておくべきことは、自分が誰であるか(どの環境にいるか)です:

{{#tabs }} {{#tab name="az cli" }}

az account list
az account tenant list # Current tenant info
az account subscription list # Current subscription info
az ad signed-in-user show # Current signed-in user
az ad signed-in-user list-owned-objects # Get owned objects by current user
az account management-group list #Not allowed by default

{{#endtab }}

{{#tab name="Az" }}

# Get the information about the current context (Account, Tenant, Subscription etc.)
Get-AzContext
# List all available contexts
Get-AzContext -ListAvailable
# Enumerate subscriptions accessible by the current user
Get-AzSubscription
#Get Resource group
Get-AzResourceGroup

{{#endtab }}

{{#tab name="Mg" }}

#Get the current session
Get-MgContext

{{#endtab }}

{{#tab name="AzureAD" }}

#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail

{{#endtab }} {{#endtabs }}

Entra ID 列挙と特権昇格

デフォルトでは、任意のユーザーは ユーザー、グループ、役割、サービスプリンシパルなどを列挙するのに十分な権限を持っているはずですデフォルトの AzureAD 権限を確認してください)。
ここにガイドがあります:

{{#ref}} az-services/az-azuread.md {{#endref}}

Post-Exploitation ツールを確認して、AzureHoundのような Entra ID で特権を昇格させるためのツールを見つけてください:

{{#ref}} az-enumeration-tools.md#automated-post-exploitation-tools {{#endref}}

Azure サービスの列挙

自分が誰であるかを知ったら、アクセスできる Azure サービスを列挙し始めることができます

まず、リソースに対する権限を確認する必要があります。これには:

  1. アクセスできるリソースを見つける

Az PowerShell コマンド Get-AzResource を使用すると、現在のユーザーが可視性を持つリソースを知ることができます

さらに、ウェブコンソールで同じ情報を取得するには、https://portal.azure.com/#view/HubsExtension/BrowseAll にアクセスするか、「すべてのリソース」を検索するか、次のコマンドを実行します:az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"

  1. アクセスできるリソースに対する権限を見つけ、あなたに割り当てられた役割を確認する

このアクションを実行するには、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

この情報は、次のコマンドを実行することでも取得できます:az rest --method GET --uri "https://management.azure.com/<Scope>/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"
  1. あなたに付与された役割の詳細な権限を見つける

次に、詳細な権限を取得するには、(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions を実行できます。

または、API を直接呼び出して、az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2020-08-01-preview" | jq ".properties" を実行できます。

次のセクションでは、最も一般的な Azure サービスとそれらを列挙する方法に関する情報を見つけることができます:

{{#ref}} az-services/ {{#endref}}

Azure サービスにおける特権昇格、ポストエクスプロイテーションおよび持続性

Azure 環境の構造と使用されているサービスを理解したら、特権を昇格させたり、横移動したり、他のポストエクスプロイテーション攻撃を実行したり、持続性を維持する方法を探し始めることができます

次のセクションでは、最も一般的な Azure サービスで特権を昇格させる方法に関する情報を見つけることができます:

{{#ref}} az-privilege-escalation/ {{#endref}}

次のセクションでは、最も一般的な Azure サービスでポストエクスプロイテーション攻撃を実行する方法に関する情報を見つけることができます:

{{#ref}} az-post-exploitation/ {{#endref}}

次のセクションでは、最も一般的な Azure サービスで持続性を維持する方法に関する情報を見つけることができます:

{{#ref}} az-persistence/ {{#endref}}

{{#include ../../banners/hacktricks-training.md}}