Translated ['src/pentesting-cloud/azure-security/az-post-exploitation/az

This commit is contained in:
Translator
2025-02-26 16:10:03 +00:00
parent b26750ce4b
commit b1d07e18a0
5 changed files with 137 additions and 66 deletions

View File

@@ -454,7 +454,7 @@
- [Az - Primary Refresh Token (PRT)](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md)
- [Az - Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/README.md)
- [Az - Blob Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md)
- [Az - CosmosDB](pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md)
- [Az - CosmosDB Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md)
- [Az - File Share Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md)
- [Az - Function Apps Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-function-apps-post-exploitation.md)
- [Az - Key Vault Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-key-vault-post-exploitation.md)
@@ -465,6 +465,7 @@
- [Az - Service Bus Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md)
- [Az - Table Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-table-storage-post-exploitation.md)
- [Az - SQL Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md)
- [Az - Virtual Desktop Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-virtual-desktop-post-exploitation.md)
- [Az - VMs & Network Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-vms-and-network-post-exploitation.md)
- [Az - Privilege Escalation](pentesting-cloud/azure-security/az-privilege-escalation/README.md)
- [Az - Azure IAM Privesc (Authorization)](pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md)

View File

@@ -0,0 +1,21 @@
# Az - VMs & Network Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Virtual Desktop
Virtual Desktopに関する詳細は、以下のページを確認してください
{{#ref}}
../az-services/az-virtual-desktop.md
{{#endref}}
### Common techniques
- **ストレージアカウントからのMSIXパッケージを上書き**して、そのアプリを使用して任意のVMでRCEを取得します。
- リモートアプリでは、**実行するバイナリのパスを変更**することが可能です。
- **アプリからシェルにエスケープ**してRCEを取得します。
- **Azure VMs**からの任意のポストエクスプロイト攻撃と持続性。
- プール内で**実行されるスクリプトを構成**してカスタム設定を適用することが可能です。
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,14 +4,24 @@
## Azure Virtual Desktop Privesc
Azure Virtual Desktopに関する詳細情報は、以下を確認してください
{{#ref}}
../az-services/az-virtual-desktop.md
{{#endref}}
### `Microsoft.DesktopVirtualization/hostPools/retrieveRegistrationToken/action`
ホストプール内の仮想マシンを登録するために使用される登録トークンを取得できます。
```bash
az desktopvirtualization hostpool retrieve-registration-token -n testhostpool -g Resource_Group_1
```
### ("Microsoft.Authorization/roleAssignments/read", "Microsoft.Authorization/roleAssignments/write") && ("Microsoft.Compute/virtualMachines/read","Microsoft.Compute/virtualMachines/write","Microsoft.Compute/virtualMachines/extensions/read","Microsoft.Compute/virtualMachines/extensions/write")
### Microsoft.Authorization/roleAssignments/read, Microsoft.Authorization/roleAssignments/write
この権限を持っていると、仮想デスクトップの仮想マシンにアクセスするために必要なアプリケーショングループにユーザー割り当てを追加できます。
> [!WARNING]
> これらの権限を持つ攻撃者は、これよりもはるかに危険なことを行うことができます。
この権限を使用すると、仮想デスクトップの仮想マシンにアクセスするために必要なアプリケーショングループにユーザー割り当てを追加できます。
```bash
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DesktopVirtualization/applicationGroups/<APP_GROUP_NAME>/providers/Microsoft.Authorization/roleAssignments/<NEW_ROLE_ASSIGNMENT_GUID>?api-version=2022-04-01" \
@@ -22,12 +32,6 @@ az rest --method PUT \
}
}'
```
仮想マシンのユーザーとパスワードを変更してアクセスすることもできます。
```bash
az vm user update \
--resource-group <RESOURCE_GROUP_NAME> \
--name <VM_NAME> \
--username <USERNAME> \
--password <NEW_PASSWORD>
```
ユーザーがデスクトップまたはアプリにアクセスできるようにするには、VMに対して`Virtual Machine User Login`または`Virtual Machine Administrator Login`の役割も必要です。
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -167,7 +167,7 @@ Set-AzVMDscExtension `
最後の2つの権限は、アプリケーションをテナントと共有することで回避できるかもしれません。
任意のコマンドを実行するための悪用例:
任意のコマンドを実行するための悪用例:
{{#tabs }}
{{#tab name="Linux" }}
@@ -310,7 +310,7 @@ Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt
## `Microsoft.Resources/deployments/write`, `Microsoft.Network/virtualNetworks/write`, `Microsoft.Network/networkSecurityGroups/write`, `Microsoft.Network/networkSecurityGroups/join/action`, `Microsoft.Network/publicIPAddresses/write`, `Microsoft.Network/publicIPAddresses/join/action`, `Microsoft.Network/networkInterfaces/write`, `Microsoft.Compute/virtualMachines/write, Microsoft.Network/virtualNetworks/subnets/join/action`, `Microsoft.Network/networkInterfaces/join/action`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
これらは、**特定のマネージドアイデンティティを持つVMを作成し、**ポートを開いたままにする**ために必要な権限ですこの場合は22。これにより、ユーザーはVMを作成し、それに接続して**マネージドアイデンティティトークンを盗む**ことで権限を昇格させることができます。
これらはすべて、**特定のマネージドアイデンティティを持つVMを作成し、**ポートを開いたままにする**ために必要な権限ですこの場合は22。これにより、ユーザーはVMを作成し、それに接続して**マネージドアイデンティティトークンを盗む**ことで権限を昇格させることができます。
状況に応じて、この技術を悪用するために必要な権限は多かれ少なかれ異なる場合があります。
```bash
@@ -343,14 +343,24 @@ az vm identity assign \
/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity1 \
/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity2
```
攻撃者は、**何らかの方法でVMを侵害する必要があります**。割り当てられた管理されたアイデンティティからトークンを盗むためです。**詳細は**を確認してください:
攻撃者は、**何らかの方法でVMを侵害する必要があります**。割り当てられた管理アイデンティティからトークンを盗むためです。**詳細は**を確認してください:
{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm
{{#endref}}
### "Microsoft.Compute/virtualMachines/read","Microsoft.Compute/virtualMachines/write","Microsoft.Compute/virtualMachines/extensions/read","Microsoft.Compute/virtualMachines/extensions/write"
これらの権限は、仮想マシンのユーザーとパスワードを変更してアクセスすることを許可します:
```bash
az vm user update \
--resource-group <RESOURCE_GROUP_NAME> \
--name <VM_NAME> \
--username <USERNAME> \
--password <NEW_PASSWORD>
```
### TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action
[**ドキュメント**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute)によると、この権限は管理者としてWindows Admin Centerを介してリソースのOSを管理することを可します。したがって、これはVMを制御するためのWACへのアクセスを提供するようです...
[**ドキュメント**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute)によると、この権限は管理者としてWindows Admin Centerを介してリソースのOSを管理することを可能にします。したがって、これはVMを制御するためのWACへのアクセスを提供するようです...
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,61 +4,104 @@
## Azure Virtual Desktop
Virtual Desktopは**デスクトップおよびアプリの仮想化サービス**です。これにより、ユーザーにフルWindowsデスクトップWindows 11、Windows 10、またはWindows Serverを含むをリモートで提供できます。個別のデスクトップまたは個別のアプリケーションを通じて提供されます。個人のシングルセッションセットアップとマルチセッション環境をサポートしています。ユーザーは、ネイティブアプリまたはウェブブラウザを使用して、ほぼすべてのデバイスから接続できます。
Virtual Desktopは**デスクトップおよびアプリの仮想化サービス**です。これにより、ユーザーにフルWindowsデスクトップWindows 11、Windows 10、またはWindows Serverを含むをリモートで提供できます。個別のデスクトップまたは個別のアプリケーションを通じて提供されます。個人使用のためのシングルセッションセットアップとマルチセッション環境をサポートしています。ユーザーは、ネイティブアプリまたはウェブブラウザを使用して、ほぼすべてのデバイスから接続できます。
### Host Pools
Azure Virtual Desktopのホストプールは、セッションホストとして構成されたAzure仮想マシンのコレクションであり、ユーザーに仮想デスクトップとアプリを提供します。主に2つのタイプがあります:
- **パーソナルホストプール**:各仮想マシンが単一のユーザーに専用され、その環境を持ちます。
- **プールホストプール**複数のユーザーが利用可能なセッションホスト上でリソースを共有します。構成可能なセッション制限があり、セッションホストの構成により、Azure Virtual Desktopは構成に基づいてセッションホストの作成を自動化できます。
Azure Virtual Desktopのホストプールは、セッションホストとして構成されたAzure仮想マシンのコレクションであり、ユーザーに仮想デスクトップとアプリを提供します。主に2種類があります:
すべてのホストプールには、**登録トークン**があり、ホストプール内の仮想マシンを登録するために使用されます。
- **個人ホストプール**:各仮想マシンが単一のユーザーに専用です。
- **管理者が特定のユーザーをVMに割り当てる**ことができるように構成することができます。または、これを**自動的に**行うこともできます。
- 各ユーザーが自分のVMを持つため、集中的な作業負荷を持つ人々に最適です。さらに、ファイルを保存し、OSディスクに設定を構成でき、これらは**各ユーザーが自分のVMホストを持つため**持続します。
### Application groups & Workspace
アプリケーショングループは、ホストプール内のセッションホストで利用可能なフルデスクトップまたは特定のアプリケーションセットへの**ユーザーアクセスを制御**します。2つのタイプがあります
- **デスクトップアプリケーショングループ**ユーザーに完全なWindowsデスクトップへのアクセスを提供しますパーソナルおよびプールホストプールの両方で利用可能
- **RemoteAppグループ**:ユーザーが個別に公開されたアプリケーションにアクセスできるようにします(プールホストプールでのみ利用可能)
ホストプールには1つのデスクトップアプリケーショングループがありますが、複数のRemoteAppグループを持つことができます。ユーザーは異なるホストプールにわたって複数のアプリケーショングループに割り当てることができます。同じホストプール内でデスクトップおよびRemoteAppグループの両方に割り当てられた場合、ユーザーは管理者によって設定された優先グループタイプのリソースのみを表示します。
- **プールホストプール**:複数の**ユーザーがリソースを共有**する利用可能なセッションホスト上です。
- ホストごとに**最大ユーザー数**(セッション)を構成することが可能です。
- 登録キーを使用して**手動でVMを追加**することも、**Azureにホストの数を自動的にスケールさせる**ことも可能です。ただし、個人プールのVMを自動的にスケールさせることはできません
- ユーザーセッション内でファイルを持続させるには、**FSlogix**を使用する必要があります
**ワークスペース**は、ユーザーが割り当てられたデスクトップおよびアプリケーショングループにアクセスできる**アプリケーショングループのコレクション**です。各アプリケーショングループはワークスペースにリンクされている必要があり、一度に1つのワークスペースにのみ属することができます。
### Session Hosts
### Key Features
- **柔軟なVM作成**Azure仮想マシンを直接作成するか、後でAzureローカル仮想マシンを追加します。
- **セキュリティ機能**高度なVMセキュリティのためにTrusted Launchセキュアブート、vTPM、整合性監視を有効にします仮想ネットワークが必要です。Azure Firewallを統合し、Network Security Groupsを介してトラフィックを制御できます。
- **ドメイン参加**カスタマイズ可能な構成でActive Directoryドメイン参加をサポートします。
- **診断と監視**診断設定を有効にして、ログとメトリクスをLog Analytics、ストレージアカウント、またはイベントハブにストリーミングして監視します。
- **カスタムイメージテンプレート**:セッションホストを追加する際に使用するために作成および管理します。一般的なカスタマイズや独自のカスタムスクリプトを簡単に追加できます。
- **ワークスペース登録**:新しいまたは既存のワークスペースにデフォルトのデスクトップアプリケーショングループを簡単に登録し、ユーザーアクセス管理を簡素化します。
これらは**ユーザーが接続するVM**です。
- 自動スケーリングが選択された場合、プールのために作成する必要がある**ホストの特性**を持つテンプレートが作成されます。
- そうでない場合、ホストプールを作成する際に、作成したい**VMの特性と数**を指定でき、Azureがそれを作成して追加します。
VMを**構成するための主な機能**は次のとおりです:
- 新しいVMの**プレフィックス**名
- **VMタイプ**これは「Azure仮想マシン」Azure VMを使用するためまたは「Azureローカル仮想マシン」で、ホストをオンプレミスまたはエッジに展開できます。
- 場所、ゾーン、VMセキュリティオプション、イメージ、CPU、メモリ、ディスクサイズ…
- インターネットに公開するための**VNet、セキュリティグループおよびポート**
- 自動的に**ADドメインに参加**するための資格情報を設定することが可能、またはEntra IDディレクトリを使用
- Entra IDの場合、新しいVMをIntuneに自動的に**登録**することが可能
- Azureがホストをスケールする場合を除き、**管理者のユーザー名とパスワード**を設定する必要があります。この場合、**ユーザー名とパスワードのそれぞれに秘密を構成する必要があります**
- カスタム構成のために**実行されるスクリプトを構成**することが可能です
### Application Groups
**アプリケーショングループ**は、ユーザーがホストプール内のセッションホストで利用可能なフルデスクトップまたは特定のアプリケーションセットにアクセスするのを制御します。
アプリケーショングループには2種類あります
- **デスクトップアプリケーショングループ**ユーザーに完全なWindowsデスクトップと添付アプリへのアクセスを提供します。
- **RemoteAppグループ**:ユーザーが個別のアプリケーションにアクセスできるようにします。
- この種のアプリケーショングループを個人プールに割り当てることはできません。
- VM内で実行するバイナリへのパスを指定する必要があります。
プールプールには**1つのデスクトップアプリケーショングループ**と**複数のRemoteAppグループ**を持つことができ、ユーザーは異なるホストプールにまたがる複数のアプリケーショングループに割り当てることができます。
ユーザーが**アクセスを付与される**と、アプリケーショングループに対して**`Desktop Virtualization User`**の役割が与えられます。
### Workspaces & Connections
**ワークスペース**はアプリケーショングループのコレクションです。
デスクトップまたはアプリに**接続**するためには、[https://windows365.microsoft.com/ent#/devices](https://windows365.microsoft.com/ent#/devices)から行うことができます。
他の方法については、[https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client](https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client)に記載されています。
ユーザーが自分のアカウントにアクセスすると、**ワークスペースごとに分けられたすべてのアクセス権が表示されます**。したがって、定義されたアクセス権が表示されるように、**各アプリケーショングループを1つのワークスペースに追加する必要があります**。
ユーザーがデスクトップまたはアプリにアクセスできるようにするには、VMに対して**`Virtual Machine User Login`**または**`Virtual Machine Administrator Login`**の役割も必要です。
### Managed Identities
ホストプールにマネージドアイデンティティを割り当てることはできないため、プール内に作成されたVMにはそれらがありません。
ただし、**システムおよびユーザーマネージドアイデンティティをVMに割り当て**、その後メタデータからトークンにアクセスすることが可能です。実際、ウェブからホストプールを起動した後、生成された2つのVMにはシステム割り当てのマネージドアイデンティティが有効になっていますただし、権限はありません
### Enumeration
```bash
az extension add --name desktopvirtualization
# List HostPool of a Resource group
az desktopvirtualization hostpool list --resource-group <Resource_Group>
# List HostPools
az desktopvirtualization hostpool list
# List Workspaces
az desktopvirtualization workspace list
# List Application Groups
az desktopvirtualization applicationgroup list --resource-group <Resource_Group>
# List Application Groups By Subscription
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.DesktopVirtualization/applicationGroups?api-version=2024-04-03"
az desktopvirtualization applicationgroup list
# List Applications in a Application Group
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}/applications?api-version=2024-04-03"
# Check if Desktops are enabled
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}/desktops?api-version=2024-04-03"
# List Assigned Users to the Application Group
az rest \
--method GET \
--url "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DesktopVirtualization/applicationGroups/<APP_GROUP_NAME>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" \
| jq '.value[] | select((.properties.scope | ascii_downcase) == "/subscriptions/<subscription_id_in_lowercase>/resourcegroups/<resource_group_name_in_lowercase>/providers/microsoft.desktopvirtualization/applicationgroups/<app_group_name_in_lowercase>")'
# List hosts
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/sessionHosts?api-version=2024-04-03"
# List Workspace in a resource group
az desktopvirtualization workspace list --resource-group <Resource_Group>
# List Workspace in a subscription
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.DesktopVirtualization/workspaces?api-version=2024-04-03"
# List App Attach Package By Resource Group
# List App Attach packages
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/appAttachPackages?api-version=2024-04-03"
# List App Attach Package By Subscription
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.DesktopVirtualization/appAttachPackages?api-version=2024-04-03"
# List user sessions
az rest --method GET --url "https://management.azure.com/ssubscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostpools/{hostPoolName}/sessionhosts/{hostPoolHostName}/userSessions?api-version=2024-04-03"
# List Desktops
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}/desktops?api-version=2024-04-03"
@@ -68,35 +111,27 @@ az rest --method GET --url "https://management.azure.com/subscriptions/{subscrip
# List private endpoint connections associated with hostpool.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/privateEndpointConnections?api-version=2024-04-03"
# List private endpoint connections associated By Workspace.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/workspaces/{workspaceName}/privateEndpointConnections?api-version=2024-04-03"
# List the private link resources available for a hostpool.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/privateLinkResources?api-version=2024-04-03"
# List the private link resources available for this workspace.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/workspaces/{workspaceName}/privateLinkResources?api-version=2024-04-03"
# List sessionHosts/virtual machines.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/sessionHosts?api-version=2024-04-03"
# List start menu items in the given application group.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}/startMenuItems?api-version=2024-04-03"
# List userSessions.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/sessionHosts/{sessionHostName}/userSessions?api-version=2024-04-03"
# List userSessions By Host Pool
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/userSessions?api-version=2024-04-03"
```
### 接続
## プライベートアクセス
ウェブ経由で仮想デスクトップに接続するには、https://client.wvd.microsoft.com/arm/webclient/ (最も一般的)または https://client.wvd.microsoft.com/webclient/index.html (クラシック)を通じてアクセスできます。
他の方法については、ここに記載されています [https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client?tabs=windows](https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client?tabs=windows)
## Privesc
{{#ref}}
../az-privilege-escalation/az-virtual-desktop-privesc.md
{{#ref}}
../az-privilege-escalation/az-virtual-desktop-privesc.md
{{#endref}}
## ポストエクスプロイテーションと持続性
{{#ref}}
../az-post-exploitation/az-virtual-desktop-post-exploitation.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}