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

@@ -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}}