
AzureRT - Un módulo de PowerShell que implementa varias tácticas de Red Team de Azure.
Módulo de Powershell que implementa varios cmdlets para interactuar con Azure y Azure AD desde una perspectiva ofensiva.
Utilidades útiles que manejan autenticación basada en tokens de acceso, cambio entre interfaces Az a AzureAD y az cli, ataques predefinidos fáciles de usar como ejecución de comandos basada en Runbook y más.
Este kit de herramientas trae muchos cmdlets variados. Esta sección destaca los más importantes y útiles.
El flujo de trabajo típico de Red Team / auditoría que comienza con credenciales robadas se puede resumir de la siguiente manera:
Credentials Stolen -> Authenticate to Azure/AzureAD -> find whether they're valid -> find out what you can do with them
Los siguientes cmdlets están precisamente diseñados para ayudarte a seguir esta secuencia:
Connect-ART - Ofrece varios medios para autenticarse en Azure - credenciales, PSCredential, token
Connect-ARTAD - Ofrece varios medios para autenticarse en Azure AD - credenciales, PSCredential, token
Get-ARTWhoami - Cuando te autenticas, ejecuta esto para verificar whoami y validar tu acceso
Get-ARTAccess - Luego, cuando sepas que tienes acceso, descubre lo que puedes hacer y lo que es posible realizando conciencia situacional de Azure
Get-ARTADAccess - De manera similar, puedes descubrir lo que puedes hacer con alcance en Azure AD.
Los cmdlets implementados en este módulo resultaron útiles en los siguientes escenarios de uso y ataque:
Az a AzureAD y viceversa.Az, AzureAD, Microsoft.Graph y az cli al mismo tiempo.Este módulo depende de los módulos de Powershell Az y AzureAD preinstalados. Microsoft.Graph y az cli son opcionales pero igualmente muy útiles. Antes de comenzar a trabajar con Azure, se pueden usar los siguientes comandos para preparar el entorno ofensivo:
Install-Module Az -Force -Confirm -AllowClobber -Scope CurrentUser
Install-Module AzureAD -Force -Confirm -AllowClobber -Scope CurrentUser
Install-Module Microsoft.Graph -Force -Confirm -AllowClobber -Scope CurrentUser # OPTIONAL
Install-Module MSOnline -Force -Confirm -AllowClobber -Scope CurrentUser # OPTIONAL
Install-Module AzureADPreview -Force -Confirm -AllowClobber -Scope CurrentUser # OPTIONAL
Install-Module AADInternals -Force -Confirm -AllowClobber -Scope CurrentUser # OPTIONAL
Import-Module Az
Import-Module AzureAD
Aunque solo los dos primeros módulos son requeridos por AzureRT, es bueno tener también los otros preinstalados.
Luego, para cargar este módulo, simplemente escribe:
PS> . .\AzureRT.ps1
Y ya estás listo.
O puedes dejar que AzureRT instale e importe todas las dependencias:
PS> . .\AzureRT.ps1
PS> Import-ARTModules
El módulo irá recibiendo gradualmente nuevas herramientas y utilidades, categorizadas naturalmente en fases posteriores de la cadena de eliminación.
Cada cmdlet tiene un mensaje de ayuda detallado con parámetros, descripción y ejemplo de uso:
PS C:\> Get-Help Connect-ART
Actualmente, se incluyen las siguientes utilidades:
Get-ARTWhoami - Muestra y valida nuestro contexto de autenticación en las interfaces Azure, AzureAD, Microsoft.Graph y AZ CLI.Connect-ART - Invoca Connect-AzAccount para autenticar la sesión actual en el Portal de Azure mediante un token de acceso o credenciales proporcionados. Evita la carga de proporcionar el Tenant ID y Account ID extrayéndolos automáticamente del token proporcionado.Connect-ARTAD - Invoca Connect-AzureAD (y opcionalmente Connect-MgGraph) para autenticar la sesión actual en Azure Active Directory mediante un token de acceso o credenciales proporcionados. Evita la carga de proporcionar el Tenant ID y Account ID extrayéndolos automáticamente del token proporcionado.Connect-ARTADServicePrincipal - Invoca Connect-AzAccount para autenticar la sesión actual en el Portal de Azure mediante un token de acceso o credenciales proporcionados. Evita la carga de proporcionar el Tenant ID y Account ID extrayéndolos automáticamente del token proporcionado. Luego crea un certificado PFX autofirmado y lo asocia con el Service Principal para la autenticación. Después, se autentica como ese Service Principal en AzureAD y desasocia ese certificado para limpiar.Get-ARTAccess - Realiza conciencia situacional de Azure.Get-ARTADAccess - Realiza conciencia situacional de Azure AD.Get-ARTTenants - Lista los inquilinos disponibles para el usuario autenticado actualmente (o el basado en el token de acceso proporcionado).Get-ARTDangerousPermissions - Analiza los recursos de Azure accesibles y los permisos asociados que el usuario tiene sobre ellos para encontrar todos los peligrosos que podrían ser abusados por un atacante.Get-ARTResource - Se autentica en https://management.azure.com usando el token de acceso proporcionado y obtiene los recursos accesibles y los permisos que el propietario del token tiene sobre ellos.Get-ARTRoleAssignment - Muestra una representación un poco más fácil de leer de los roles RBAC de Azure asignados a la entidad de seguridad actualmente utilizada.Get-ARTADRoleAssignment - Muestra las asignaciones de roles de Azure AD en un usuario actual o en todos los usuarios de Azure AD.Get-ARTADScopedRoleAssignment - Muestra las asignaciones de roles con ámbito de Azure AD en un usuario actual o en todos los usuarios de Azure AD, asociadas con Unidades Administrativas.Add-ARTADGuestUser - Envía un correo electrónico de invitación de usuario invitado de Azure AD, permitiendo expandir el acceso al inquilino de AAD para el atacante externo y devuelve la URL de canje de invitación utilizada para aceptar fácilmente la invitación.Set-ARTADUserPassword - Abusa de la asignación del rol Authentication Administrator para restablecer la contraseña de otros usuarios no administradores.Add-ARTUserToGroup - Agrega un usuario de Azure AD especificado al grupo de Azure AD especificado.Add-ARTUserToRole - Agrega un usuario de Azure AD especificado al rol de Azure AD especificado.Add-ARTADAppSecret - Agrega un secreto de cliente a las aplicaciones de Azure AD. Creado por Nikhil Mittal, @nikhil_mittInvoke-ARTAutomationRunbook - Crea un Runbook de Automation en la cuenta de Automation especificada y contra el grupo de Workers seleccionado. Ese Runbook contendrá comandos de Powershell que se ejecutarán en todas las máquinas virtuales de Azure afectadas.Invoke-ARTRunCommand - Abusa del permiso virtualMachines/runCommand contra una máquina virtual de Azure especificada para ejecutar un comando personalizado de Powershell.Update-ARTAzVMUserData - Modifica el script de datos de usuario de la VM de Azure mediante una invocación directa a la API.Invoke-ARTCustomScriptExtension - Crea una nueva o modifica la extensión de script personalizado de la VM de Azure, lo que lleva a la ejecución remota de código.Get-ARTTenantID - Recupera el Tenant ID del usuario actual o el Tenant ID basado en el nombre de dominio proporcionado.Get-ARTPRTToken - Recupera el valor del PRT (Primary Refresh Token) del usuario actual utilizando ROADtoken de Dirk-Jan MollemaGet-ARTPRTNonce - Recupera el valor nonce del PRT (Primary Refresh Token) del usuario actual.Get-ARTUserId - Obtiene el usuario actual o el usuario especificado en el parámetro ObjectId mediante el módulo Az.Get-ARTSubscriptionId - Ayudante que recopila el ID de suscripción actual.Parse-JWTtokenRT - Analiza el token JWT de entrada y lo imprime de forma clara.Invoke-ARTGETRequest - Toma un token de acceso e invoca una solicitud API del método GET REST contra un URI especificado. También verifica si el token proporcionado tiene la audiencia requerida.Import-ARTModules - Instala e importa los módulos de Powershell requeridos y opcionales para actividades de Azure Red Team.Este y otros proyectos son el resultado de noches sin dormir y mucho trabajo duro. Si te gusta lo que hago y aprecias que siempre retribuyo a la comunidad, Considera invitarme un café (o mejor una cerveza) solo para darme las gracias! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
Get-ARTAccessTokenAzCli - Obtiene un token de acceso de az cli mediante az account get-access-token.Get-ARTAccessTokenAz - Obtiene un token de acceso del módulo Az mediante Get-AzAccessToken.Get-ARTAccessTokenAzureAD - Obtiene un token de acceso de Azure Active Directory. Creado por Simon Wahlin, @SimonWahlin Get-ARTAccessTokenAzureADCached - Intenta recuperar el token de acceso de AzureAD almacenado en caché local (https://graph.microsoft.com), guardado después de que ocurrió Connect-AzureAD.Remove-ARTServicePrincipalKey - Realiza acciones de limpieza después de ejecutar Connect-ARTADServicePrincipal.Get-ARTRolePermissions - Muestra todos los permisos otorgados en un rol RBAC de Azure especificado.Get-ARTADRolePermissions - Muestra todos los permisos otorgados en un rol de Azure AD especificado.Get-ARTADDynamicGroups - Muestra los grupos dinámicos de Azure AD junto con sus reglas de membresía de usuario, recuento de miembros y estado de membresía del usuario actual.Get-ARTApplication - Enumera las aplicaciones empresariales de Azure AD de las que el usuario actual es propietario (o todas las existentes cuando se usa -All) junto con sus propietarios y Service Principals.Get-ARTApplicationProxy - Enumera las aplicaciones empresariales de Azure AD que tienen configurado Application Proxy.Get-ARTApplicationProxyPrincipals - Muestra los usuarios y grupos asignados a la aplicación de Application Proxy especificada.Get-ARTStorageAccountKeys - Muestra todas las claves de cuenta de almacenamiento disponibles.Get-ARTKeyVaultSecrets - Enumera todos los secretos disponibles de Azure Key Vault. Este cmdlet asume que el usuario solicitante se conectó a Azure AD con KeyVaultAccessToken (con alcance a https://vault.azure.net) y tiene el rol "Key Vault Secrets User" asignado (o equivalente).Get-ARTAutomationCredentials - Enumera todas las credenciales disponibles de la cuenta de Azure Automation e intenta obtener sus valores (¡no puede obtener valores!).Get-ARTAutomationRunbookCode - Invoca el método REST API para obtener el código fuente del Runbook especificado.Get-ARTAzVMPublicIP - Recupera la dirección IP pública de una máquina virtual de Azure.Get-ARTResourceGroupDeploymentTemplate - Muestra la plantilla JSON de implementación del grupo de recursos según los parámetros de entrada, o los obtiene todos a la vez.Get-ARTAzVMUserDataFromInside - Recupera los datos de usuario de la VM de Azure desde el interior de una VM accediendo al punto final de metadatos de instancia.