Az - Virtual Desktop

Reading time: 7 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Azure Virtual Desktop

Virtual Desktop - це сервіс віртуалізації робочих столів та додатків. Він дозволяє надавати повні робочі столи Windows, включаючи Windows 11, Windows 10 або Windows Server, користувачам віддалено, як окремі робочі столи або через окремі додатки. Він підтримує односеансові налаштування для особистого використання та багатосеансові середовища. Користувачі можуть підключатися з практично будь-якого пристрою, використовуючи рідні додатки або веб-браузер.

Host Pools

Host pools в Azure Virtual Desktop - це колекції віртуальних машин Azure, налаштованих як хости сеансів, які надають віртуальні робочі столи та додатки користувачам. Є два основних типи:

  • Особисті хост-пули, де кожна віртуальна машина призначена для одного користувача.

  • Можна налаштувати так, щоб адміністратор міг призначати конкретних користувачів до ВМ або щоб це робилося автоматично.

  • Це ідеально підходить для людей з інтенсивними навантаженнями, оскільки кожна особа матиме свою власну ВМ. Більше того, вони зможуть зберігати файли та налаштовувати параметри на диску ОС, і ці налаштування зберігатимуться, оскільки кожен користувач має свою власну ВМ (хост).

  • Пулені хост-пули, де кілька користувачів ділять ресурси на доступних хостах сеансів.

  • Можна налаштувати максимальну кількість користувачів (сеансів) на хост.

  • Можна додати ВМ вручну, використовуючи ключі реєстрації, або дозволити Azure автоматично масштабувати кількість хостів без можливості додавання ВМ за допомогою ключа реєстрації. Автоматичне масштабування ВМ для особистих пулів не можливе.

  • Щоб зберегти файли в сеансах користувачів, потрібно використовувати FSlogix.

Session Hosts

Це ВМ, до яких підключаться користувачі.

  • Якщо було обрано автоматичне масштабування, буде створено шаблон з характеристиками хостів, які потрібно створити для пулу.
  • Якщо ні, при створенні хост-пулу можна вказати характеристики та кількість ВМ, які ви хочете створити, і Azure створить та додасть їх для вас.

Основні функції для налаштування ВМ:

  • префікс назви нових ВМ
  • тип ВМ: Це може бути “Azure virtual machine” (для використання ВМ Azure) або “Azure Local virtual machine”, що дозволяє хостам розгортатися на місці або на краю.
  • Місцезнаходження, зони, параметри безпеки ВМ, образ, ЦП, пам'ять, розмір диска…
  • VNet, група безпеки та порти, які потрібно відкрити для Інтернету
  • Можна встановити облікові дані для автоматичного приєднання до домену AD, або використовувати каталог Entra ID
  • Якщо Entra ID, можна автоматично зареєструвати нову ВМ в Intune
  • Потрібно встановити ім'я користувача адміністратора та пароль, якщо Azure не буде масштабувати хости, в цьому випадку секрет повинен бути налаштований з ім'ям користувача та іншим з паролем
  • Можна налаштувати скрипт для виконання для користувацької конфігурації

Application Groups

Групи додатків контролюють доступ користувачів до повного робочого столу або конкретних наборів додатків, доступних на хостах сеансів у межах хост-пулу.

Є два типи груп додатків:

  • Групи додатків робочого столу, які надають користувачам доступ до повних робочих столів Windows та прикріплених додатків.
  • Групи RemoteApp, які дозволяють користувачам отримувати доступ до окремих додатків.
  • Неприпустимо призначати цей тип групи додатків для особистого пулу.
  • Потрібно вказати шлях до бінарного файлу для виконання всередині ВМ.

Пулений пул може мати одну групу додатків робочого столу та кілька груп RemoteApp, і користувачі можуть бути призначені до кількох груп додатків у різних хост-пулах.

Коли користувачу надається доступ, йому надається роль Desktop Virtualization User у групі додатків.

Workspaces & Connections

Workspace - це колекція груп додатків.

Щоб підключитися до робочого столу або додатків, до яких призначено, можна зробити це з https://windows365.microsoft.com/ent#/devices І є інші методи, описані на https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client

Коли користувач отримує доступ до свого облікового запису, йому буде представлено все, до чого він має доступ, розділене за робочими просторами. Тому потрібно додати кожну групу додатків до одного робочого простору, щоб визначені доступи були видимими.

Щоб користувач міг отримати доступ до робочого столу або додатку, йому також потрібна роль Virtual Machine User Login або Virtual Machine Administrator Login на ВМ.

Managed Identities

Неможливо призначити керовані ідентичності хост-пулам, тому створені ВМ всередині пулу матимуть їх. Однак можливо призначити системні та користувацькі керовані ідентичності ВМ і потім отримати доступ до токенів з метаданих. Насправді, після запуску хост-пулів з вебу, 2 згенеровані ВМ мають увімкнену системну призначену керовану ідентичність (хоча вона не має жодних дозволів).

Enumeration

bash
az extension add --name desktopvirtualization

# List HostPools
az desktopvirtualization hostpool list

# List Workspaces
az desktopvirtualization workspace list

# List Application Groups
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 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 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"

# List MSIX Packages
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/msixPackages?api-version=2024-04-03"

# 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"

Привілегії

Az - Virtual Desktop Privesc

Після експлуатації та стійкість

Az - Virtual Desktop Post Exploitation

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks