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 la integración de nuevos servidores internos (servidores unidos al dominio) en Azure Arc utilizando el método de Objeto de Directiva de Grupo. Para facilitar esto, Microsoft proporciona un kit de herramientas de implementación necesario para iniciar el procedimiento de incorporación. Dentro del archivo ArcEnableServerGroupPolicy.zip, se pueden encontrar los siguientes scripts: DeployGPO.ps1, EnableAzureArc.ps1 y AzureArcDeployment.psm1.
Cuando se ejecuta, el script DeployGPO.ps1 realiza las siguientes acciones:
Crea la GPO de Incorporación de Servidores Azure Arc dentro del dominio local.
Copia el script de incorporación EnableAzureArc.ps1 en el recurso compartido de red designado creado para el proceso de incorporación, que también contiene el paquete de instalación de Windows.
Al ejecutar este script, los administradores del sistema deben proporcionar dos parámetros principales: ServicePrincipalId y ServicePrincipalClientSecret. Además, requiere otros parámetros como el dominio, el FQDN del servidor que aloja el recurso compartido y el nombre del recurso compartido. También se deben proporcionar más detalles como el ID del inquilino, el grupo de recursos y otra información necesaria al script.
Se genera un secreto cifrado en el directorio AzureArcDeploy en el recurso compartido especificado utilizando cifrado DPAPI-NG. El secreto cifrado se almacena en un archivo llamado encryptedServicePrincipalSecret. La evidencia de esto se puede encontrar en el script DeployGPO.ps1, donde el cifrado se realiza llamando a ProtectBase64 con $descriptor y $ServicePrincipalSecret como entradas. El descriptor consiste en los SIDs del grupo de Computadoras de Dominio y Controladores de Dominio, asegurando que el ServicePrincipalSecret solo pueda ser descifrado por los Controladores de Dominio y grupos de seguridad de Computadoras de Dominio, como se indica en los comentarios del script.
Tenemos las siguientes condiciones:
Hemos penetrado con éxito la red interna.
Tenemos la capacidad de crear o asumir el control de una cuenta de computadora dentro de Active Directory.
Hemos descubierto un recurso compartido de red que contiene el directorio AzureArcDeploy.
Existen varios métodos para obtener una cuenta de máquina dentro de un entorno de AD. Uno de los más comunes es explotar la cuota de cuentas de máquina. Otro método implica comprometer una cuenta de máquina a través de ACLs vulnerables o diversas otras configuraciones incorrectas.
Una vez que se obtiene una cuenta de máquina, es posible autenticarse utilizando esta cuenta. Podemos usar el comando runas.exe con la bandera netonly o usar pass-the-ticket con Rubeus.exe.
Al tener el TGT para nuestra cuenta de computadora almacenado en memoria, podemos usar el siguiente script para descifrar el secreto del principal de servicio.
Alternativamente, podemos usar SecretManagement.DpapiNG.
En este punto, podemos recopilar la información restante necesaria para conectarnos a Azure desde el archivo ArcInfo.json, que se almacena en el mismo recurso compartido de red que el archivo encryptedServicePrincipalSecret. Este archivo contiene detalles como: TenantId, servicePrincipalClientId, ResourceGroup y más. Con esta información, podemos usar Azure CLI para autenticarnos como el 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)