Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes

This commit is contained in:
Translator
2025-01-25 14:40:22 +00:00
parent 6c99dfa555
commit fdb65109ea
5 changed files with 318 additions and 223 deletions

View File

@@ -4,55 +4,65 @@
## 基本情報
以下のページでAzureとEntra IDの基本を学びましょう
{{#ref}}
az-basic-information/
{{#endref}}
## Azure ペンテスター/レッドチームの方法論
## Azureペンテスター/レッドチームの方法論
AZURE 環境を監査するためには、どの **サービスが使用されているか**、何が **公開されているか**、誰が **何にアクセスできるか**、内部の Azure サービスと **外部サービス** がどのように接続されているかを知ることが非常に重要です。
AZURE環境を監査するためには、**どのサービスが使用されているか**、**何が公開されているか**、**誰が何にアクセスできるか**、および内部Azureサービスと**外部サービス**がどのように接続されているかを知ることが非常に重要です。
レッドチームの観点から、**Azure 環境を侵害するための最初のステップ**は、Azure AD の **資格情報**を取得することです。以下はその方法に関するいくつかのアイデアです:
レッドチームの観点から、**Azure環境を侵害するための最初のステップ**は、いくつかの**足がかり**を得ることです。
- GitHubまたは類似のでの **漏洩** - OSINT
- **ソーシャル** エンジニアリング
- **パスワード** の再利用(パスワード漏洩)
- Azure ホスティングアプリケーションの脆弱性
- [**サーバーサイドリクエストフォージェリ**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) メタデータエンドポイントへのアクセス
- **ローカルファイル読み取り**
- `/home/USERNAME/.azure`
- `C:\Users\USERNAME\.azure`
- **`accessTokens.json`** ファイルaz cli 2.30以前 - 2022年1月 - **アクセス トークンを平文で保存**
- **`azureProfile.json`** ファイルには **ログインユーザー** に関する **情報** が含まれています。
- **`az logout`** はトークンを削除します。
- 古いバージョンの **`Az PowerShell`** は **アクセス トークン****平文****`TokenCache.dat`** に保存していました。また、**`AzureRmContext.json`** に **ServicePrincipalSecret****平文** で保存します。コマンドレット **`Save-AzContext`** を使用して **トークン****保存** できます。\
`Disconnect-AzAccount` を使用してそれらを削除します。
- 第三者が **侵害された**
- **内部** 従業員
- [**一般的なフィッシング**](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)
- [Azure **パスワードスプレー**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
### 外部列挙と初期アクセス
攻撃している Azure テナント内で **ユーザーを侵害していなくても**、そこから **情報を収集** することができます:
最初のステップは、もちろん攻撃しているテナントに関する情報を列挙し、足がかりを得ることです。
ドメイン名に基づいて、**会社がAzureを使用しているかどうか**、**テナントID**、同じテナント内の他の**有効なドメイン**もしあればを取得し、SSOが有効かどうか、メール設定、有効なユーザーのメールアドレスなどの**関連情報**を取得することが可能です。
以下のページを確認して、**外部列挙**を実行する方法を学びましょう:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> 資格情報を取得した後は、その資格情報が **誰のものであるか**、および **何にアクセスできるか** を知る必要があるため、いくつかの基本的な列挙を行う必要があります:
## 基本的な列挙
この情報をもとに、足がかりを得るための最も一般的な方法は次のとおりです:
- **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)
- 第三者の**侵害**
- Azureホストアプリケーションの脆弱性
- [**サーバーサイドリクエストフォージェリ**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html)でメタデータエンドポイントにアクセス
- [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)のような**サブドメインの乗っ取り**
- 開発者のラップトップが侵害されている場合([WinPEASとLinPEAS](https://github.com/peass-ng/PEASS-ng)がこの情報を見つけることができます):
- **`<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/`が存在するかどうかを確認します(ただし、含まれるファイルは空で無用です)。
> [!NOTE]
> 列挙の **最も騒がしい** 部分は **ログイン** であり、列挙自体ではありません
> 通常、列挙の**最も騒がしい**部分は**ログイン**であり、列挙自体ではないことを忘れないでください
### SSRF
### Azure & Entra IDツール
Azure 内のマシンで SSRF を見つけた場合は、トリックについてこのページを確認してください
以下のツールは、検出を避けるためにゆっくりまたは自動的に時間を節約するためにEntra IDテナントとAzure環境を列挙するのに非常に役立ちます
{{#ref}}
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
az-enumeration-tools.md
{{#endref}}
### ログイン条件のバイパス
@@ -61,23 +71,19 @@ https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-met
有効な資格情報があるがログインできない場合、以下は考えられる一般的な保護です:
- **IP ホワイトリスト** -- 有効な IP を侵害する必要があります
- **地理的制限** -- ユーザーが住んでいる場所や会社のオフィスがある場所を見つけ、同じ都市(または少なくとも同じ国)の IP を取得します
- **ブラウザ** -- 特定の OSWindows、Linux、Mac、Android、iOSからのブラウザのみが許可されているかもしれません。被害者/会社が使用している OS を特定します。
- **サービスプリンシパルの資格情報を侵害する**ことも試みることができます。通常、制限が少なく、ログインがあまりレビューされません
- **IPホワイトリスト** -- 有効なIPを侵害する必要があります
- **地理的制限** -- ユーザーの居住地や会社のオフィス場所を見つけ、同じ都市(または少なくとも国)からIPを取得します
- **ブラウザ** -- 特定のOSWindows、Linux、Mac、Android、iOSからのブラウザのみが許可されているかもしれません。犠牲者/会社が使用しているOSを特定します。
- **サービスプリンシパルの資格情報を侵害する**ことも試みることができます。通常、制限が少なく、ログインのレビューも少ないです
バイパスした後、初期設定に戻り、引き続きアクセスできる可能性があります。
### サブドメインの乗っ取り
- [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
これをバイパスした後、初期設定に戻り、引き続きアクセスできる可能性があります。
### Whoami
> [!CAUTION]
> az cli、AzureAD、および Az PowerShell の **インストール方法** を [**Az - Entra ID**](az-services/az-azuread.md) セクションで学んでください
> [**Az - Entra ID**](az-services/az-azuread.md)セクションでaz cli、AzureAD、Az PowerShellの**インストール方法**を学びましょう
最初に知っておくべきことは **自分が誰であるか**(どの環境にいるか)です:
最初に知っておくべきことは**自分が誰であるか**(どの環境にいるか)です:
{{#tabs }}
{{#tab name="az cli" }}
@@ -91,16 +97,7 @@ az account management-group list #Not allowed by default
```
{{#endtab }}
{{#tab name="AzureAD" }}
```bash
#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail
```
{{#endtab }}
{{#tab name="Az PowerShell" }}
{{#tab name="Az" }}
```bash
# Get the information about the current context (Account, Tenant, Subscription etc.)
Get-AzContext
@@ -110,43 +107,79 @@ Get-AzContext -ListAvailable
Get-AzSubscription
#Get Resource group
Get-AzResourceGroup
# Enumerate all resources visible to the current user
Get-AzResource
# Enumerate all Azure RBAC role assignments
Get-AzRoleAssignment # For all users
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
```
{{#endtab }}
{{#tab name="Mg" }}
```bash
#Get the current session
Get-MgContext
```
{{#endtab }}
{{#tab name="AzureAD" }}
```bash
#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail
```
{{#endtab }}
{{#endtabs }}
> [!CAUTION]
> Azureを列挙するための最も重要なコマンドの1つは**`Get-AzResource`**であり、これにより**現在のユーザーが可視性を持つリソースを知ることができます**。
>
> 同じ情報を**ウェブコンソール**で取得するには、[https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll)にアクセスするか、「すべてのリソース」を検索してください。
### Entra ID Enumeration
### Entra ID 列挙と特権昇格
デフォルトでは、任意のユーザーは**ユーザー、グループ、ロール、サービスプリンシパルなどを列挙するのに十分な権限を持っているはずです**[デフォルトのAzureAD権限](az-basic-information/index.html#default-user-permissions)を確認してください)。\
デフォルトでは、任意のユーザーは **ユーザー、グループ、役割、サービスプリンシパルなどを列挙するのに十分な権限を持つべきです**[デフォルトの AzureAD 権限](az-basic-information/index.html#default-user-permissions)を確認してください)。\
ここにガイドがあります:
{{#ref}}
az-services/az-azuread.md
{{#endref}}
> [!NOTE]
> これで**資格情報に関する情報を持っている**(そして、もしあなたがレッドチームであれば、幸運にも**検出されていないことを願っています**)。環境で使用されているサービスを特定する時が来ました。\
> 次のセクションでは、**一般的なサービスを列挙する方法**をいくつか確認できます。
**Post-Exploitation ツール**を確認して、**AzureHound**のような Entra ID で特権を昇格させるためのツールを見つけてください:
## App Service SCM
{{#ref}}
az-enumeration-tools.md#automated-post-exploitation-tools
{{#endref}}
App Service 'コンテナ'にログインするためのKuduコンソール。
## Webshell
### Azure サービスの列挙
portal.azure.comを使用してシェルを選択するか、bashまたはpowershell用にshell.azure.comを使用します。このシェルの'disk'は、ストレージアカウント内のイメージファイルとして保存されます
自分が誰であるかを知ったら、**アクセスできる Azure サービスを列挙し始めることができます**
## Azure DevOps
Az PowerShell コマンド **`Get-AzResource`** を使用すると、**現在のユーザーが可視性を持つリソースを知ることができます**。
Azure DevOpsはAzureとは別です。リポジトリ、パイプラインyamlまたはリリース、ボード、ウィキなどがあります。変数グループは、変数値と秘密を保存するために使用されます。
さらに、**ウェブコンソール**で同じ情報を取得するには、[https://portal.azure.com/#view/HubsExtension/BrowseAll](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"`
さらに、十分な権限があれば、役割 **`Get-AzRoleAssignment`** を使用して、サブスクリプション内の **すべての役割を列挙する**ことや、特定のリソースに対する権限を示すことができます。例えば: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**
次のセクションでは、最も一般的な 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}}