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.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を使用した以前のログインに関する情報が含まれています(ただし資格情報は含まれていません) 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を取得します
- ブラウザ -- 特定の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 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 権限を確認してください default AzureAD permissions).
ここにガイドがあります:
{{#ref}} az-services/az-azuread.md {{#endref}}
Post-Exploitation ツールを確認して、AzureHoundのような Entra ID で特権を昇格させるためのツールを見つけてください:
{{#ref}} az-enumeration-tools.md#automated-post-exploitation-tools {{#endref}}
Azure 列挙
自分が誰であるかを知ったら、アクセスできる Azure サービスを列挙し始めることができます。
まず、リソースに対する権限を確認する必要があります。これには:
- アクセスできるリソースを見つける:
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"
- アクセスできるリソースに対する権限を見つけ、あなたに割り当てられた役割を確認する:
このアクションを実行するには、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"
- あなたに付与された役割の詳細な権限を見つける:
次に、詳細な権限を取得するには、(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 サービスで特権を昇格させる方法に関する情報を見つけることができます:
{{#ref}} az-privilege-escalation/ {{#endref}}
次のセクションでは、最も一般的な Azure サービスでポストエクスプロイテーション攻撃を実行する方法に関する情報を見つけることができます:
{{#ref}} az-post-exploitation/ {{#endref}}
次のセクションでは、最も一般的な Azure サービスで永続性を維持する方法に関する情報を見つけることができます:
{{#ref}} az-persistence/ {{#endref}}
{{#include ../../banners/hacktricks-training.md}}