Az - Virtual Desktop
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Azure Virtual Desktop
Virtual Desktop, masaüstü ve uygulama sanallaştırma hizmetidir. Kullanıcılara, Windows 11, Windows 10 veya Windows Server dahil olmak üzere tam Windows masaüstlerini, bireysel masaüstler veya bireysel uygulamalar aracılığıyla uzaktan sunma imkanı sağlar. Kişisel kullanım için tek oturumlu kurulumları ve çoklu oturum ortamlarını destekler. Kullanıcılar, yerel uygulamalar veya bir web tarayıcısı kullanarak neredeyse her cihazdan bağlanabilirler.
Host Pools
Azure Virtual Desktop’taki host havuzları, kullanıcılar için sanal masaüstleri ve uygulamalar sağlayan oturum ana bilgisayarı olarak yapılandırılmış Azure sanal makinelerinin koleksiyonlarıdır. İki ana tür vardır:
-
Kişisel host havuzları, her sanal makinenin tek bir kullanıcıya tahsis edildiği yerlerdir.
-
Yönetici belirli kullanıcıları VM’lere atayacak şekilde yapılandırılabilir veya bunun otomatik olarak yapılması sağlanabilir.
-
Bu, yoğun iş yüküne sahip kişiler için idealdir çünkü her kişi kendi VM’sine sahip olacaktır. Ayrıca, dosyaları depolayabilir ve OS diskinde ayarları yapılandırabilirler ve bunlar her kullanıcının kendi VM’si (host) olduğu için kalıcı olacaktır.
-
Paylaşımlı host havuzları, birden fazla kullanıcının mevcut oturum ana bilgisayarlarında kaynakları paylaştığı yerlerdir.
-
Her host için maksimum kullanıcı sayısı (oturum) yapılandırılabilir.
-
Kayıt anahtarları kullanarak VM’leri manuel olarak eklemek veya Azure’ın otomatik olarak host sayısını ölçeklendirmesine izin vermek mümkündür; ancak kayıt anahtarı kullanarak VM ekleme seçeneği yoktur. Kişisel havuzlar için VM’leri otomatik olarak ölçeklendirmek mümkün değildir.
-
Kullanıcı oturumlarında dosyaların kalıcı olması için FSlogix kullanmak gereklidir.
Session Hosts
Bunlar, kullanıcıların bağlanacağı VM’lerdir.
- Otomatik ölçeklendirme seçilmişse, havuz için oluşturulması gereken hostların özellikleri ile bir şablon oluşturulacaktır.
- Aksi takdirde, Host havuzunu oluştururken oluşturmak istediğiniz VM’lerin özelliklerini ve sayısını belirtmek mümkündür ve Azure bunları sizin için oluşturup ekleyecektir.
VM’leri yapılandırmak için ana özellikler şunlardır:
- Yeni VM’lerin ön ek adı
- VM türü: Bu, “Azure sanal makinesi” (Azure VM’lerini kullanmak için) veya “Azure Yerel sanal makinesi” olarak ayarlanabilir; bu, hostların yerinde veya kenarda dağıtılmasına izin verir.
- Konum, bölgeler, VM güvenlik seçenekleri, görüntü, CPU, bellek, Disk boyutu…
- İnternete açılacak VNet, güvenlik grubu ve portlar
- Otomatik olarak bir AD alanına katılmak için kimlik bilgileri ayarlamak mümkündür veya Entra ID dizinini kullanabilirsiniz.
- Entra ID kullanılıyorsa, yeni VM’yi Intune’a otomatik olarak kaydetmek mümkündür.
- Azure hostları ölçeklendirecekse, bir yönetici kullanıcı adı ve şifre ayarlamak gereklidir; bu durumda bir şifre, kullanıcı adı ile ve başka bir şifre ile yapılandırılmalıdır.
- Özel yapılandırma için çalıştırılacak bir betik yapılandırmak mümkündür.
Application Groups
Uygulama grupları, kullanıcıların bir tam masaüstüne veya bir host havuzundaki oturum ana bilgisayarlarında mevcut olan belirli uygulama setlerine erişimini kontrol eder.
İki tür uygulama grubu vardır:
- Masaüstü uygulama grupları, kullanıcılara tam Windows masaüstlerine ve ekli uygulamalara erişim sağlar.
- RemoteApp grupları, kullanıcılara bireysel uygulamalara erişim sağlar.
- Bu tür bir uygulama grubunu Kişisel Havuz’a atamak mümkün değildir.
- VM içinde çalıştırılacak ikili dosyanın yolunu belirtmek gereklidir.
Bir Paylaşımlı Havuz, bir Masaüstü uygulama grubuna ve birden fazla RemoteApp grubuna sahip olabilir ve kullanıcılar farklı host havuzları arasında birden fazla uygulama grubuna atanabilir.
Bir kullanıcıya erişim verildiğinde, uygulama grubunda Masaüstü Sanallaştırma Kullanıcısı rolü verilir.
Workspaces & Connections
Workspace, uygulama gruplarının bir koleksiyonudur.
Atanan masaüstüne veya uygulamalara bağlanmak için https://windows365.microsoft.com/ent#/devices adresinden bağlanmak mümkündür. Ayrıca https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client adresinde açıklanan diğer yöntemler de vardır.
Bir kullanıcı hesabına eriştiğinde, erişim sağladığı her şeyin workspace’ler tarafından ayrılmış olarak sunulacağını görecektir. Bu nedenle, tanımlı erişimlerin görünür olması için her uygulama grubunu bir workspace’e eklemek gereklidir.
Bir kullanıcının bir Masaüstüne veya bir uygulamaya erişebilmesi için, ayrıca VM üzerinde Sanal Makine Kullanıcı Girişi veya Sanal Makine Yöneticisi Girişi rolüne sahip olması gerekmektedir.
Managed Identities
Host havuzlarına yönetilen kimlikler atamak mümkün değildir, bu nedenle bir havuz içindeki oluşturulan VM’ler bunlara sahip olmayacaktır. Ancak, VM’lere sistem ve kullanıcı yönetilen kimlikleri atamak ve ardından token’lara metadata’dan erişmek mümkündür. Aslında, web üzerinden host havuzları başlatıldıktan sonra, oluşturulan 2 VM’nin sistem atanan yönetilen kimliği etkinleştirilmiştir (ancak herhangi bir izin yoktur).
Enumeration
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"
Privesc
Post Exploitation & Persistence
Az - Virtual Desktop Post Exploitation
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

