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

This commit is contained in:
Translator
2025-02-26 16:08:41 +00:00
parent cc352df4c6
commit 3eae91cb11
5 changed files with 137 additions and 64 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}}
## Віртуальний робочий стіл
Для отримання додаткової інформації про Віртуальний робочий стіл перегляньте наступну сторінку:
{{#ref}}
../az-services/az-virtual-desktop.md
{{#endref}}
### Загальні техніки
- Перезаписати **MSIX пакет з облікового запису зберігання**, щоб отримати RCE в будь-якій VM, що використовує цей додаток.
- У remoteapp можливо змінити **шлях до бінарного файлу для виконання**.
- **Вийти з додатків** в оболонку, щоб отримати 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,7 @@ az rest --method PUT \
}
}'
```
Крім того, ви можете змінити користувача віртуальної машини та пароль для доступу до неї.
```bash
az vm user update \
--resource-group <RESOURCE_GROUP_NAME> \
--name <VM_NAME> \
--username <USERNAME> \
--password <NEW_PASSWORD>
```
Зверніть увагу, що для того, щоб користувач міг отримати доступ до робочого столу або програми, йому також потрібна роль `Virtual Machine User Login` або `Virtual Machine Administrator Login` над VM.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -105,7 +105,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>DesiredConfigurationState (DSC)</summary>
Це **розширення VM**, яке належить Microsoft і використовує PowerShell DSC для управління конфігурацією Azure Windows VMs. Тому його можна використовувати для **виконання довільних команд** у Windows VMs через це розширення:
Це **VM розширення**, яке належить Microsoft і використовує PowerShell DSC для управління конфігурацією Azure Windows VMs. Тому його можна використовувати для **виконання довільних команд** у Windows VMs через це розширення:
```bash
# Content of revShell.ps1
Configuration RevShellConfig {
@@ -157,13 +157,13 @@ Set-AzVMDscExtension `
<summary>Гібридний Runbook Worker</summary>
Це розширення VM, яке дозволяє виконувати runbook у VM з облікового запису автоматизації. Для отримання додаткової інформації перегляньте службу [Automation Accounts](../az-services/az-automation-account/index.html).
Це розширення ВМ, яке дозволяє виконувати runbook у ВМ з облікового запису автоматизації. Для отримання додаткової інформації перегляньте службу [Automation Accounts](../az-services/az-automation-account/index.html).
</details>
### `Microsoft.Compute/disks/write, Microsoft.Network/networkInterfaces/join/action, Microsoft.Compute/virtualMachines/write, (Microsoft.Compute/galleries/applications/write, Microsoft.Compute/galleries/applications/versions/write)`
Це необхідні дозволи для **створення нового галерейного застосунку та його виконання всередині VM**. Галерейні застосунки можуть виконувати будь-що, тому зловмисник може зловживати цим для компрометації екземплярів VM, виконуючи довільні команди.
Це необхідні дозволи для **створення нового галерейного застосунку та його виконання всередині ВМ**. Галерейні застосунки можуть виконувати будь-що, тому зловмисник може зловживати цим для компрометації екземплярів ВМ, виконуючи довільні команди.
Останні 2 дозволи можуть бути уникнуті шляхом спільного використання застосунку з орендарем.
@@ -298,13 +298,13 @@ Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt
### `Microsoft.Compute/virtualMachines/login/action`
Ця дозволяє користувачу **увійти як користувач у VM через SSH або RDP** (за умови, що автентифікація Entra ID увімкнена у VM).
Ця дозволяє користувачу **увійти як користувач у VM через SSH або RDP** (якщо автентифікація Entra ID увімкнена у VM).
Увійдіть через **SSH** за допомогою **`az ssh vm --name <vm-name> --resource-group <rsc-group>`** та через **RDP** з вашими **звичайними обліковими даними Azure**.
### `Microsoft.Compute/virtualMachines/loginAsAdmin/action`
Ця дозволяє користувачу **увійти як користувач у VM через SSH або RDP** (за умови, що автентифікація Entra ID увімкнена у VM).
Ця дозволяє користувачу **увійти як користувач у VM через SSH або RDP** (якщо автентифікація Entra ID увімкнена у VM).
Увійдіть через **SSH** за допомогою **`az ssh vm --name <vm-name> --resource-group <rsc-group>`** та через **RDP** з вашими **звичайними обліковими даними Azure**.
@@ -349,8 +349,18 @@ az vm identity assign \
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 як адміністратор. Отже, здається, що це надає доступ до WAC для контролю ВМ...
Згідно з [**документацією**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute), це дозволяє вам керувати ОС вашого ресурсу через Windows Admin Center як адміністратор. Отже, здається, що це надає доступ до WAC для контролю ВМ...
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -9,56 +9,100 @@ Virtual Desktop - це **сервіс віртуалізації робочих
### Host Pools
Host pools в Azure Virtual Desktop - це колекції віртуальних машин Azure, налаштованих як хости сеансів, які надають віртуальні робочі столи та додатки користувачам. Є два основних типи:
- **Особисті хост-пули**, де кожна віртуальна машина призначена для одного користувача, з його середовищем
- **Об'єднані хост-пули**, де кілька користувачів ділять ресурси на будь-якому доступному хості сеансу. Має налаштовуваний ліміт сеансів, а конфігурація хоста сеансу дозволяє Azure Virtual Desktop автоматизувати створення хостів сеансів на основі конфігурації.
Кожен хост-пул має **токен реєстрації**, який використовується для реєстрації віртуальних машин у хост-пулі.
- **Особисті хост-пули**, де кожна віртуальна машина призначена для одного користувача.
- Можна налаштувати так, щоб **адміністратор міг призначати** конкретних користувачів до ВМ або щоб це робилося **автоматично**.
- Це ідеально підходить для людей з інтенсивними навантаженнями, оскільки кожна особа матиме свою власну ВМ. Більше того, вони зможуть зберігати файли та налаштовувати параметри на диску ОС, і ці налаштування зберігатимуться, оскільки **кожен користувач має свою власну ВМ (хост)**.
### Application groups & Workspace
Групи додатків **контролюють доступ користувачів** до повного робочого столу або конкретних наборів додатків, доступних на хостах сеансів у хост-пулі. Є два типи:
- **Групи додатків робочого столу**, які надають користувачам доступ до повного робочого столу Windows (доступні як з особистими, так і з об'єднаними хост-пулами)
- **Групи RemoteApp**, які дозволяють користувачам отримувати доступ до окремих опублікованих додатків (доступні лише з об'єднаними хост-пулами).
Хост-пул може мати одну групу додатків робочого столу, але кілька груп RemoteApp. Користувачі можуть бути призначені до кількох груп додатків у різних хост-пулах. Якщо користувач призначений як до групи робочого столу, так і до групи RemoteApp у одному й тому ж хост-пулі, він бачить лише ресурси з переважного типу групи, встановленого адміністраторами.
- **Пулені хост-пули**, де кілька **користувачів ділять ресурси** на доступних хостах сеансів.
- Можна налаштувати **максимальну кількість користувачів** (сеансів) на хост.
- Можна **додати ВМ вручну**, використовуючи ключі реєстрації, або **дозволити Azure автоматично масштабувати** кількість хостів без можливості додавання ВМ за допомогою ключа реєстрації. Автоматичне масштабування ВМ для особистих пулів не можливе.
- Щоб зберегти файли в сеансах користувачів, потрібно використовувати **FSlogix**.
**Workspace** - це **колекція груп додатків**, що дозволяє користувачам отримувати доступ до робочих столів та груп додатків, призначених їм. Кожна група додатків повинна бути пов'язана з робочим простором, і вона може належати лише одному робочому простору одночасно.
### 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://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)
Коли користувач отримує доступ до свого облікового запису, йому буде **представлено все, до чого він має доступ, розділене за робочими просторами**. Тому потрібно додати **кожну групу додатків до одного робочого простору**, щоб визначені доступи були видимими.
Щоб користувач міг отримати доступ до робочого столу або додатку, йому також потрібна роль **`Virtual Machine User Login`** або **`Virtual Machine Administrator Login`** на ВМ.
### Managed Identities
Неможливо призначити керовані ідентичності хост-пулам, тому створені ВМ всередині пулу матимуть їх.
Однак можливо **призначити системні та користувацькі керовані ідентичності ВМ** і потім отримати доступ до токенів з метаданих. Насправді, після запуску хост-пулів з вебу, 2 згенеровані ВМ мають увімкнену системну призначену керовану ідентичність (хоча вона не має жодних дозволів).
### Key Features
- **Гнучке створення ВМ**: Створюйте віртуальні машини Azure безпосередньо або додавайте локальні віртуальні машини Azure пізніше.
- **Функції безпеки**: Увімкніть Trusted Launch (безпечний завантаження, vTPM, моніторинг цілісності) для розширеної безпеки ВМ (необхідна віртуальна мережа). Може інтегрувати Azure Firewall і контролювати трафік через групи безпеки мережі.
- **Приєднання до домену**: Підтримка приєднання до домену Active Directory з налаштовуваними конфігураціями.
- **Діагностика та моніторинг**: Увімкніть налаштування діагностики для потокового запису журналів і метрик до Log Analytics, облікових записів зберігання або подій для моніторингу.
- **Шаблони користувацьких зображень**: Створюйте та керуйте ними для використання при додаванні хостів сеансів. Легко додавайте загальні налаштування або власні скрипти.
- **Реєстрація робочого простору**: Легко реєструйте групи додатків робочого столу за замовчуванням до нових або існуючих робочих просторів для спрощеного управління доступом користувачів.
### 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 +112,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"
```
### Connection
Щоб підключитися до віртуального робочого столу через веб, ви можете отримати доступ через 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
{{#endref}}
## Після експлуатації та стійкість
{{#ref}}
../az-post-exploitation/az-virtual-desktop-post-exploitation.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}