Az - Arc vulnerable GPO Deploy Script
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Azure Arc permite a integração de novos servidores internos (servidores de domínio unidos) no Azure Arc usando o método de Objeto de Política de Grupo. Para facilitar isso, a Microsoft fornece um kit de ferramentas de implantação necessário para iniciar o procedimento de integração. Dentro do arquivo ArcEnableServerGroupPolicy.zip, os seguintes scripts podem ser encontrados: DeployGPO.ps1, EnableAzureArc.ps1 e AzureArcDeployment.psm1.
Quando executado, o script DeployGPO.ps1 realiza as seguintes ações:
Cria o GPO de Integração de Servidores Azure Arc dentro do domínio local.
Copia o script de integração EnableAzureArc.ps1 para o compartilhamento de rede designado criado para o processo de integração, que também contém o pacote de instalação do Windows.
Ao executar este script, os administradores de sistema precisam fornecer dois parâmetros principais: ServicePrincipalId e ServicePrincipalClientSecret. Além disso, requer outros parâmetros, como o domínio, o FQDN do servidor que hospeda o compartilhamento e o nome do compartilhamento. Detalhes adicionais, como o ID do locatário, grupo de recursos e outras informações necessárias também devem ser fornecidos ao script.
Um segredo criptografado é gerado no diretório AzureArcDeploy no compartilhamento especificado usando a criptografia DPAPI-NG. O segredo criptografado é armazenado em um arquivo chamado encryptedServicePrincipalSecret. Evidências disso podem ser encontradas no script DeployGPO.ps1, onde a criptografia é realizada chamando ProtectBase64 com $descriptor e $ServicePrincipalSecret como entradas. O descriptor consiste nos SIDs do grupo de Computadores de Domínio e Controladores de Domínio, garantindo que o ServicePrincipalSecret só possa ser descriptografado pelos grupos de segurança de Controladores de Domínio e Computadores de Domínio, conforme observado nos comentários do script.
Temos as seguintes condições:
Conseguimos penetrar com sucesso na rede interna.
Temos a capacidade de criar ou assumir o controle de uma conta de computador dentro do Active Directory.
Descobrimos um compartilhamento de rede contendo o diretório AzureArcDeploy.
Existem vários métodos para obter uma conta de máquina dentro de um ambiente AD. Um dos mais comuns é explorar a cota de conta de máquina. Outro método envolve comprometer uma conta de máquina através de ACLs vulneráveis ou várias outras configurações incorretas.
Uma vez que uma conta de máquina é obtida, é possível autenticar usando essa conta. Podemos usar o comando runas.exe com a flag netonly ou usar pass-the-ticket com Rubeus.exe.
Ao ter o TGT para nossa conta de computador armazenado na memória, podemos usar o seguinte script para descriptografar o segredo do principal de serviço.
Alternativamente, podemos usar SecretManagement.DpapiNG.
Neste ponto, podemos reunir as informações restantes necessárias para conectar ao Azure a partir do arquivo ArcInfo.json, que está armazenado na mesma unidade de rede que o arquivo encryptedServicePrincipalSecret. Este arquivo contém detalhes como: TenantId, servicePrincipalClientId, ResourceGroup e mais. Com essas informações, podemos usar o Azure CLI para autenticar como o service principal comprometido.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)