Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-01-10 13:19:11 +00:00
parent bbe988d21f
commit f8c174bfc3
2 changed files with 68 additions and 22 deletions

View File

@@ -4,7 +4,7 @@
## Información Básica
Las Cuentas de Automatización de Azure son servicios basados en la nube en Microsoft Azure que ayudan a **automatizar tareas** como la gestión de recursos, la configuración y las actualizaciones en entornos de Azure y locales. Proporcionan **Runbooks** (scripts para automatización que se ejecutan), **programaciones** y **grupos de trabajadores híbridos** para ejecutar **trabajos** de automatización, habilitando infraestructura como código (IaC) y automatización de procesos para mejorar la eficiencia y consistencia en la gestión de recursos en la nube.
Las Cuentas de Automatización de Azure son servicios basados en la nube en Microsoft Azure que ayudan a **automatizar tareas** como la gestión de recursos, la configuración y las actualizaciones en entornos de Azure y locales. Proporcionan **Runbooks** (scripts para automatización que se ejecutan), **programaciones** y **grupos de trabajadores híbridos** para ejecutar **trabajos de automatización**, habilitando infraestructura como código (IaC) y automatización de procesos para mejorar la eficiencia y consistencia en la gestión de recursos en la nube.
### Configuraciones
@@ -46,11 +46,11 @@ Cuando la sincronización está habilitada, en el **repositorio de Github se cre
Ten en cuenta que estos webhooks **no serán visibles** al listar webhooks en los runbooks asociados al repositorio de Github. También ten en cuenta que **no es posible cambiar la URL del repositorio** de un control de versiones una vez creado.
Para que el control de versiones configurado funcione, la **Cuenta de Automatización de Azure** necesita tener una identidad administrada (sistema o usuario) con el rol de **`Contribuyente`**. Además, para asignar una identidad administrada de usuario a la Cuenta de Automatización, es posible hacerlo simplemente configurando la variable **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** al **ID de Cliente de la Identidad Administrada de Usuario**.
Para que el control de versiones configurado funcione, la **Cuenta de Automatización de Azure** necesita tener una identidad administrada (sistema o usuario) con el rol de **`Contribuyente`**. Además, para asignar una identidad administrada de usuario a la Cuenta de Automatización, es necesario indicar el ID de cliente de la MI de usuario en la variable **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**.
### Entornos de Ejecución
Al crear un Runbook es posible seleccionar el entorno de ejecución. Por defecto, los siguientes entornos de ejecución están disponibles:
Al crear un Runbook, es posible seleccionar el entorno de ejecución. Por defecto, los siguientes entornos de ejecución están disponibles:
- **Powershell 5.1**
- **Powershell 7.1**
@@ -61,21 +61,28 @@ Al crear un Runbook es posible seleccionar el entorno de ejecución. Por defecto
Sin embargo, también es posible **crear tus propios entornos**, utilizando uno de estos como base. En el caso de Python, es posible subir paquetes `.whl` al entorno que se utilizará. En el caso de PowerShell, es posible subir paquetes `.zip` con los módulos que se tendrán en la ejecución.
### Trabajador Híbrido
### Grupos de Trabajadores Híbridos
Un Runbook puede ejecutarse en un **contenedor dentro de Azure** o en un **Trabajador Híbrido** (máquina no Azure).\
El **Agente de Análisis de Registros** se despliega en la VM para registrarla como un trabajador híbrido.\
Los trabajos de trabajadores híbridos se ejecutan como **SYSTEM** en Windows y como cuenta **nxautomation** en Linux.\
Cada Trabajador Híbrido está registrado en un **Grupo de Trabajadores Híbridos**.
En Azure Automation, el entorno de ejecución predeterminado para los runbooks es el **Azure Sandbox**, una plataforma basada en la nube gestionada por Azure, adecuada para tareas que involucran recursos de Azure. Sin embargo, este sandbox tiene limitaciones, como el acceso restringido a recursos locales y restricciones en el tiempo de ejecución y uso de recursos. Para superar estas limitaciones, se emplean Grupos de Trabajadores Híbridos. Un Grupo de Trabajadores Híbridos consiste en **uno o más Trabajadores de Runbook Híbridos instalados en tus propias máquinas**, ya sea en local, en otros entornos de nube o en VMs de Azure. Esta configuración permite que los runbooks se ejecuten directamente en estas máquinas, proporcionando acceso directo a recursos locales, la capacidad de ejecutar tareas más largas y que consumen más recursos, y la flexibilidad para interactuar con entornos más allá del alcance inmediato de Azure.
Por lo tanto, si puedes elegir ejecutar un **Runbook** en un **Trabajador Híbrido de Windows**, ejecutarás **comandos arbitrarios** dentro de una máquina externa como **System** (buena técnica de pivot).
Cuando se crea un grupo de trabajadores híbridos, es necesario indicar las **credenciales** a utilizar. Hay 2 opciones:
- **Credenciales predeterminadas**: No necesitas proporcionar las credenciales y los runbooks se ejecutarán dentro de las VMs como **Sistema**.
- **Credenciales específicas**: Necesitas proporcionar el nombre del objeto de credenciales dentro de la cuenta de automatización, que se utilizará para ejecutar los **runbooks dentro de las VMs**. Por lo tanto, en este caso, podría ser posible **robar credenciales válidas** para las VMs.
Por lo tanto, si puedes elegir ejecutar un **Runbook** en un **Trabajador Híbrido de Windows**, ejecutarás **comandos arbitrarios** dentro de una máquina externa como **Sistema** (una buena técnica de pivot).
Además, si el trabajador híbrido se está ejecutando en Azure con otras Identidades Administradas adjuntas, el runbook podrá acceder a la **identidad administrada del runbook y todas las identidades administradas de la VM desde el servicio de metadatos**.
> [!TIP]
> Recuerda que el **servicio de metadatos** tiene una URL diferente (**`http://169.254.169.254`**) que el servicio desde donde se obtiene el token de identidades administradas de la cuenta de automatización (**`IDENTITY_ENDPOINT`**).
### Configuración de Estado (SC)
>[!WARNING]
> Como se indica en [la documentación](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), la Configuración de Estado de Automatización de Azure será retirada el 30 de septiembre de 2027 y reemplazada por [Configuración de Máquina de Azure](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview).
> Como se indica en [la documentación](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview), la Configuración de Estado de Automatización de Azure será retirada el 30 de septiembre de 2027 y reemplazada por [Azure Machine Configuration](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview).
Las Cuentas de Automatización también soportan **Configuración de Estado (SC)**, que es una característica que ayuda a **configurar** y **mantener** el **estado** de tus VMs. Es posible **crear** y **aplicar** configuraciones DSC a máquinas **Windows** y **Linux**.
Las Cuentas de Automatización también admiten **Configuración de Estado (SC)**, que es una característica que ayuda a **configurar** y **mantener** el **estado** de tus VMs. Es posible **crear** y **aplicar** configuraciones DSC a máquinas **Windows** y **Linux**.
Desde la perspectiva de un atacante, esto era interesante porque permitía **ejecutar código PS arbitrario en todas las VMs configuradas**, permitiendo escalar privilegios a las identidades administradas de estas VMs, potencialmente pivotando a nuevas redes... Además, las configuraciones podrían contener **información sensible**.
@@ -180,6 +187,15 @@ az automation dsc configuration show --automation-account-name <AUTOMATION-ACCOU
# Get State Configuration content
az automation dsc configuration show-content --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME> --name <DSC-CONFIG-NAME>
# Get hybrid worker groups for an automation account
az automation hrwg list --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME>
# Get hybrid worker group details
az automation hrwg show --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME> --name <HYBRID-WORKER-GROUP>
# Get more details about a hybrid worker group (like VMs inside it)
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/hybridRunbookWorkerGroups/<hybrid-worker-group-name>/hybridRunbookWorkers?&api-version=2021-06-22"
```
```powershell