Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-01-10 13:19:37 +00:00
parent 15eb02904a
commit bdc1c207a3
2 changed files with 78 additions and 32 deletions

View File

@@ -4,19 +4,19 @@
## 基本情報
Azure Automation Accountsは、Microsoft Azureのクラウドベースのサービスで、リソース管理、構成、更新などの**タスクを自動化**するのに役立ちます。これにより、Azureおよびオンプレミス環境全体での効率と一貫性を向上させるためのインフラストラクチャをコードIaCとして提供し、プロセスの自動化を可能にします。**Runbooks**(実行される自動化用のスクリプト)、**スケジュール**、および**ハイブリッドワーカーグループ**を提供します。
Azure Automation Accountsは、Microsoft Azureのクラウドベースのサービスで、リソース管理、構成、更新などの**タスクを自動化**するのに役立ちます。これにより、**Runbooks**(実行される自動化用のスクリプト)、**スケジュール**、および**ハイブリッドワーカーグループ**を提供し、自動化**ジョブ**を実行できるようにし、インフラストラクチャをコードIaCとして扱い、クラウドリソースの管理における効率性と一貫性を向上させます。
### 設定
- **資格情報**: パスワードは自動化アカウント内のRunbook内でのみアクセス可能で、**ユーザー名とパスワードを安全に保存する**ために使用されます。
- **変数**: Runbookで使用できる**構成データ**を保存するために使用されます。これにはAPIキーなどの機密情報も含まれる可能性があります。変数が**暗号化されて保存されている**場合、それは自動化アカウント内のRunbook内でのみ利用可能です。
- **証明書**: Runbookで使用できる**証明書**を保存するために使用されます。
- **変数**: Runbookで使用できる**構成データ**を保存するために使用されます。これにはAPIキーのような機密情報も含まれる可能性があります。変数が**暗号化されて保存されている**場合、それは自動化アカウント内のRunbook内でのみ利用可能です。
- **証明書**: Runbookで使用できる**証明書**を保存するために使用されます。
- **接続**: 外部サービスへの**接続情報**を保存するために使用されます。これには**機密情報**が含まれる可能性があります。
- **ネットワークアクセス**: **公開**または**プライベート**に設定できます。
## Runbooks & Jobs
Azure AutomationのRunbookは、クラウド環境内で**タスクを自動的に実行するスクリプト**です。RunbooksはPowerShell、Python、またはグラフィカルエディタで記述できます。これにより、VM管理、パッチ適用、コンプライアンスチェックなどの管理タスクを自動化するのに役立ちます。
Azure AutomationのRunbookは、クラウド環境内で**タスクを自動的に実行するスクリプト**です。RunbookはPowerShell、Python、またはグラフィカルエディタで記述できます。これにより、VM管理、パッチ適用、コンプライアンスチェックなどの管理タスクを自動化できます。
**Runbooks**内の**コード**には**機密情報**(資格情報など)が含まれる可能性があります。
@@ -24,18 +24,18 @@ Azure AutomationのRunbookは、クラウド環境内で**タスクを自動的
**ジョブはRunbook実行のインスタンス**です。Runbookを実行すると、実行を追跡するためにジョブが作成されます。各ジョブには以下が含まれます
- **ステータス**: キュー中、実行中、完了、失敗、保留
- **ステータス**: キュー中、実行中、完了、失敗、保留。
- **出力**: Runbook実行の結果。
- **開始および終了時間**: ジョブが開始および完了した時間。
ジョブには**Runbook**実行の**出力**が含まれます。**ジョブ**を**読み取る**ことができる場合は、実行の**出力**(潜在的な**機密情報**)が含まれているため、必ず行ってください。
ジョブには**Runbook**実行の**出力**が含まれます。**ジョブ**を**読**ことができる場合は、実行の**出力**(潜在的な**機密情報**)が含まれているため、必ず行ってください。
### スケジュール & Webhooks
Runbookを実行する主な方法は3つあります
- **スケジュール**: 特定の**時間**または**間隔**でRunbooksを**トリガー**するために使用されます。
- **Webhooks**: 外部サービスからRunbooksを**トリガー**するために使用できる**HTTPエンドポイント**です。作成後、Webhook URLは**表示されません**。
- **スケジュール**: 特定の**時間**または**間隔**でRunbookを**トリガー**するために使用されます。
- **Webhooks**: 外部サービスからRunbookを**トリガー**するために使用できる**HTTPエンドポイント**です。作成後、Webhook URLは**表示されません**。
- **手動トリガー**: AzureポータルおよびCLIからRunbookを**手動でトリガー**できます。
### ソース管理
@@ -46,7 +46,7 @@ Runbookを実行する主な方法は3つあります
これらのWebhookは、Githubリポジトリに関連付けられたRunbooksのWebhookをリストする際に**表示されません**。また、作成後にソース管理のリポジトリURLを**変更することはできません**。
構成されたソース管理が機能するためには、**Azure Automation Account**に**`Contributor`**ロールを持つマネージドアイデンティティシステムまたはユーザーが必要です。さらに、Automation Accountにユーザーマネージドアイデンティティを割り当てるには、変数**`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**を**ユーザーマネージドアイデンティティクライアントID**に設定するだけで可能です。
構成されたソース管理が機能するためには、**Azure Automation Account**に**`Contributor`**ロールを持つマネージドアイデンティティシステムまたはユーザーが必要です。さらに、Automation Accountにユーザーマネージドアイデンティティを割り当てるには、変数**`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**ユーザーMIのクライアントIDを指定する必要があります。
### ランタイム環境
@@ -61,23 +61,30 @@ Runbookを作成する際に、ランタイム環境を選択できます。デ
ただし、これらのいずれかをベースにして**独自の環境を作成する**ことも可能です。Pythonの場合、使用する環境に`.whl`パッケージをアップロードできます。PowerShellの場合、ランタイムに必要なモジュールを含む`.zip`パッケージをアップロードできます。
### ハイブリッドワーカー
### ハイブリッドワーカーグループ
Runbookは、Azure内の**コンテナ**または**ハイブリッドワーカー**非Azureマシンで実行できます。\
**Log Analytics Agent**は、ハイブリッドワーカーとして登録するためにVMにデプロイされます。\
ハイブリッドワーカーのジョブは、Windowsでは**SYSTEM**として、Linuxでは**nxautomation**アカウントとして実行されます。\
各ハイブリッドワーカーは**ハイブリッドワーカーグループ**に登録されます。
Azure Automationでは、Runbookのデフォルト実行環境は**Azure Sandbox**であり、Azureによって管理されるクラウドベースのプラットフォームで、Azureリソースに関わるタスクに適しています。ただし、このサンドボックスには、オンプレミスリソースへのアクセス制限や実行時間およびリソース使用の制約などの制限があります。これらの制限を克服するために、ハイブリッドワーカーグループが使用されます。ハイブリッドワーカーグループは、**自分のマシンにインストールされた1つ以上のハイブリッドRunbookワーカー**で構成され、オンプレミス、他のクラウド環境、またはAzure VM上で動作します。このセットアップにより、Runbookはこれらのマシン上で直接実行され、ローカルリソースへの直接アクセス、より長くリソース集約的なタスクの実行、Azureの即時の範囲を超えた環境との相互作用の柔軟性が提供されます。
したがって、**Windowsハイブリッドワーカー**で**Runbook**を実行することを選択できる場合、**System**として外部マシン内で**任意のコマンド**を実行します(良いピボット技術です)。
ハイブリッドワーカーグループを作成する際には、使用する**資格情報**を指定する必要があります。2つのオプションがあります
### ステート構成 (SC)
- **デフォルト資格情報**: 資格情報を提供する必要はなく、Runbookは**System**としてVM内で実行されます。
- **特定の資格情報**: 自動化アカウント内の資格情報オブジェクトの名前を提供する必要があり、これが**VM内でRunbookを実行するために使用されます**。したがって、この場合、VMの**有効な資格情報を盗む**ことが可能です。
したがって、**Windows Hybrid Worker**で**Runbook**を実行することを選択できる場合、**System**として外部マシン内で**任意のコマンドを実行**します(良いピボット技術)。
さらに、ハイブリッドワーカーがAzureで他のマネージドアイデンティティと共に実行されている場合、Runbookは**RunbookのマネージドアイデンティティとVMのメタデータサービスからのすべてのマネージドアイデンティティにアクセスできる**ようになります。
> [!TIP]
> **メタデータサービス**のURLは、Automation Accountのマネージドアイデンティティトークンを取得するサービスとは異なるURL**`http://169.254.169.254`**)であることを忘れないでください。
### 状態構成 (SC)
>[!WARNING]
> [ドキュメント](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview)に示されているように、Azure Automation State Configurationは2027年9月30日に廃止され、[Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview)に置き換えられます。
Automation Accountsは、VMの**状態**を**構成**および**維持**するのに役立つ機能である**State Configuration (SC)**もサポートしています。**Windows**および**Linux**マシンにDSC構成を**作成**および**適用**することが可能です。
Automation Accountsは、**状態構成 (SC)**もサポートしており、これは**VMの状態を構成**および**維持**するのに役立つ機能です。**Windows**および**Linux**マシンにDSC構成を**作成**および**適用**することが可能です。
攻撃者の視点から見ると、これは**構成されたすべてのVMで任意のPSコードを実行**できるため、これらのVMのマネージドアイデンティティへの権限昇格を可能にし、新しいネットワークへのピボットを潜在的に行うことができるため、興味深いものでした... また、構成には**機密情報**が含まれる可能性があります。
攻撃者の視点から見ると、これは**すべての構成されたVMで任意のPSコードを実行する**ことを可能にし、これらのVMのマネージドアイデンティティへの権限昇格を可し、新しいネットワークへのピボットを可能にするため、興味深いものでした... また、構成には**機密情報**が含まれる可能性があります。
## 列挙
```bash
@@ -180,6 +187,15 @@ az automation dsc configuration show --automation-account-name <AUTOMATION-ACCOU
# Get State Configuration content
az automation dsc configuration show-content --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME> --name <DSC-CONFIG-NAME>
# Get hybrid worker groups for an automation account
az automation hrwg list --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME>
# Get hybrid worker group details
az automation hrwg show --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME> --name <HYBRID-WORKER-GROUP>
# Get more details about a hybrid worker group (like VMs inside it)
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/hybridRunbookWorkerGroups/<hybrid-worker-group-name>/hybridRunbookWorkers?&api-version=2021-06-22"
```
```powershell