
AzureRT - Um módulo do Powershell que implementa várias táticas da Equipe Vermelha do Azure.
Módulo PowerShell que implementa vários cmdlets para interagir com o Azure e o Azure AD a partir de uma perspetiva ofensiva.
Utilitários úteis para lidar com autenticação baseada em token de acesso, alternar entre as interfaces Az e AzureAD e az cli, ataques pré-construídos fáceis de usar, como execução de comandos baseada em Runbook e muito mais.
Este kit de ferramentas traz vários cmdlets diferentes. Esta secção destaca os mais importantes e úteis.
O fluxo de trabalho típico da Red Team / auditoria começando com credenciais roubadas pode ser resumido da seguinte forma:
Credenciais Roubadas -> Autenticar no Azure/AzureAD -> verificar se são válidas -> descobrir o que podes fazer com elas
Os cmdlets abaixo são precisamente adequados para te ajudar a seguir esta sequência:
Connect-ART - Oferece vários meios para autenticar no Azure - credenciais, PSCredential, token
Connect-ARTAD - Oferece vários meios para autenticar no Azure AD - credenciais, PSCredential, token
Get-ARTWhoami - Quando te autenticares, executa isto para verificar o whoami e validar o teu acesso
Get-ARTAccess - Depois, quando souberes que tens acesso, descobre o que podes fazer e o que é possível realizando uma consciencialização situacional do Azure
Get-ARTADAccess - Da mesma forma, podes descobrir o que podes fazer no âmbito do Azure AD.
Os cmdlets implementados neste módulo foram úteis nos seguintes cenários de uso e ataque:
Az para AzureAD e vice-versa.Az, AzureAD, Microsoft.Graph e az cli ao mesmo tempoEste módulo depende dos módulos PowerShell Az e AzureAD pré-instalados. Microsoft.Graph e az cli são opcionais, mas ainda assim muito úteis. Antes de começar a trabalhar com o Azure, os seguintes comandos podem ser usados para preparar o teu ambiente 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 # OPCIONAL
Install-Module MSOnline -Force -Confirm -AllowClobber -Scope CurrentUser # OPCIONAL
Install-Module AzureADPreview -Force -Confirm -AllowClobber -Scope CurrentUser # OPCIONAL
Install-Module AADInternals -Force -Confirm -AllowClobber -Scope CurrentUser # OPCIONAL
Import-Module Az
Import-Module AzureAD
Embora apenas os dois primeiros módulos sejam necessários para o AzureRT, é bom ter os outros também pré-instalados.
Depois, para carregar este módulo, basta digitar:
PS> . .\AzureRT.ps1
E está pronto.
Ou podes deixar o AzureRT instalar e importar todas as dependências:
PS> . .\AzureRT.ps1
PS> Import-ARTModules
O módulo receberá gradualmente mais ferramentas e utilitários, naturalmente categorizados nas fases subsequentes da cadeia de ataque.
Cada cmdlet tem uma mensagem de ajuda útil detalhando parâmetros, descrição e exemplo de uso:
PS C:\> Get-Help Connect-ART
Atualmente, os seguintes utilitários estão incluídos:
Get-ARTWhoami - Exibe e valida o nosso contexto de autenticação nas interfaces Azure, AzureAD, Microsoft.Graph e AZ CLI.
Connect-ART - Invoca Connect-AzAccount para autenticar a sessão atual no Portal do Azure através de um Token de Acesso ou credenciais fornecidas. Ignora o trabalho de fornecer o ID do Tenant e o ID da Conta, extraindo-os automaticamente do Token fornecido.
Connect-ARTAD - Invoca Connect-AzureAD (e opcionalmente Connect-MgGraph) para autenticar a sessão atual no Azure Active Directory através de um Token de Acesso ou credenciais fornecidas. Ignora o trabalho de fornecer o ID do Tenant e o ID da Conta, extraindo-os automaticamente do Token fornecido.
Connect-ARTADServicePrincipal - Invoca para autenticar a sessão atual no Portal do Azure através de um Token de Acesso ou credenciais fornecidas. Ignora o trabalho de fornecer o ID do Tenant e o ID da Conta, extraindo-os automaticamente do Token fornecido. Em seguida, cria um certificado PFX autoassinado e associa-o ao Service Principal para autenticação. Depois, autentica como esse Service Principal no AzureAD e desassocia esse certificado para limpeza.
Get-ARTAccess - Realiza Consciencialização Situacional do Azure.
Get-ARTADAccess - Realiza Consciencialização Situacional do Azure AD.
Get-ARTTenants - Lista os Tenants disponíveis para o utilizador atualmente autenticado (ou baseado no Token de Acesso fornecido).
Get-ARTDangerousPermissions - Analisa os Recursos do Azure acessíveis e as permissões associadas que o utilizador tem sobre eles para encontrar todas as permissões Perigosas que poderiam ser abusadas por um atacante.
Get-ARTResource - Autentica no https://management.azure.com usando o Token de Acesso fornecido e obtém recursos acessíveis e permissões que o proprietário do token tem sobre eles.
Get-ARTRoleAssignment - Exibe uma representação mais fácil de ler das funções RBAC do Azure atribuídas ao Principal atualmente em uso.
Get-ARTADRoleAssignment - Exibe as atribuições de funções do Azure AD para o utilizador atual ou para todos os utilizadores do Azure AD.
Get-ARTADScopedRoleAssignment - Exibe atribuições de funções com âmbito do Azure AD para o utilizador atual ou para todos os utilizadores do Azure AD, associadas a Unidades Administrativas.
Add-ARTADGuestUser - Envia um e-mail de convite para Utilizador Convidado do Azure AD, permitindo expandir o acesso ao tenant do AAD para o atacante externo e devolve o URL de Resgate do Convite usado para aceitar facilmente o convite.
Set-ARTADUserPassword - Abusa da atribuição da função Authentication Administrator para redefinir a palavra-passe de outros utilizadores não administradores.
Add-ARTUserToGroup - Adiciona um Utilizador do Azure AD especificado a um Grupo do Azure AD especificado.
Add-ARTUserToRole - Adiciona um Utilizador do Azure AD especificado a uma Função do Azure AD especificada.
Add-ARTADAppSecret - Adiciona segredo do cliente a Aplicações do Azure AD. Autor de Nikhil Mittal, @nikhil_mitt.
Invoke-ARTAutomationRunbook - Cria um Runbook de Automação na Conta de Automação especificada e contra o Grupo de Trabalhadores selecionado. Esse Runbook conterá comandos PowerShell a serem executados em todas as VMs do Azure afetadas.
Invoke-ARTRunCommand - Abusa da permissão virtualMachines/runCommand contra uma VM do Azure especificada para executar um comando PowerShell personalizado.
Update-ARTAzVMUserData - Modifica o script de Dados do Utilizador da VM do Azure através de uma invocação direta da API.
Invoke-ARTCustomScriptExtension - Cria uma nova ou modifica uma Extensão de Script Personalizada da VM do Azure, levando à execução remota de código.
Get-ARTTenantID - Recupera o ID do Tenant do utilizador atual ou o ID do Tenant com base no nome de domínio fornecido.
Get-ARTPRTToken - Recupera o valor do PRT (Primary Refresh Token) do utilizador atual usando ROADtoken de Dirk-Jan Mollema.
Get-ARTPRTNonce - Recupera o valor do nonce do PRT (Primary Refresh Token) do utilizador atual.
Get-ARTUserId - Obtém o utilizador atual ou o utilizador especificado no parâmetro ObjectId através do módulo Az.
Get-ARTSubscriptionId - Utilitário que recolhe o ID da Subscrição atual.
Parse-JWTtokenRT - Analisa um token JWT de entrada e imprime-o de forma clara.
Invoke-ARTGETRequest - Recebe um Token de Acesso e invoca um pedido de API REST GET contra um URI especificado. Também verifica se o token fornecido tem a audiência necessária definida.
Import-ARTModules - Instala e Importa os módulos PowerShell necessários e opcionais para atividades da Azure Red Team.
Este e outros projetos são resultado de noites sem dormir e muito trabalho árduo. Se gostas do que faço e aprecias que eu sempre retribua à comunidade, Considera comprar-me um café (ou melhor, uma cerveja) só para dizer obrigado! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
Connect-AzAccountGet-ARTAccessTokenAzCli - Obtém um token de acesso a partir do az cli, via az account get-access-token.
Get-ARTAccessTokenAz - Obtém um token de acesso a partir do módulo Az, via Get-AzAccessToken.
Get-ARTAccessTokenAzureAD - Obtém um token de acesso do Azure Active Directory. Autor de Simon Wahlin, @SimonWahlin.
Get-ARTAccessTokenAzureADCached - Tenta recuperar um token de acesso do Azure AD em cache localmente (https://graph.microsoft.com), armazenado após Connect-AzureAD.
Remove-ARTServicePrincipalKey - Realiza ações de limpeza após executar Connect-ARTADServicePrincipal.
Get-ARTRolePermissions - Exibe todas as permissões concedidas numa função RBAC do Azure especificada.
Get-ARTADRolePermissions - Exibe todas as permissões concedidas numa função do Azure AD especificada.
Get-ARTADDynamicGroups - Exibe Grupos Dinâmicos do Azure AD juntamente com as suas Regras de Associação de utilizadores, contagem de membros e estado de associação do utilizador atual.
Get-ARTApplication - Lista Aplicações Empresariais do Azure AD que o utilizador atual é proprietário (ou todas as existentes quando -All é usado), juntamente com os seus proprietários e Service Principals.
Get-ARTApplicationProxy - Lista Aplicações Empresariais do Azure AD que têm o Application Proxy configurado.
Get-ARTApplicationProxyPrincipals - Exibe utilizadores e grupos atribuídos à aplicação Application Proxy especificada.
Get-ARTStorageAccountKeys - Exibe todas as chaves da Conta de Armazenamento disponíveis.
Get-ARTKeyVaultSecrets - Lista todos os segredos disponíveis do Azure Key Vault. Este cmdlet assume que o utilizador solicitante está conectado ao Azure AD com KeyVaultAccessToken (com âmbito para https://vault.azure.net) e tem a função "Key Vault Secrets User" atribuída (ou equivalente).
Get-ARTAutomationCredentials - Lista todas as credenciais disponíveis da Conta de Automação do Azure e tenta obter os seus valores (não é possível obter valores!).
Get-ARTAutomationRunbookCode - Invoca o método da API REST para obter o código fonte do Runbook especificado.
Get-ARTAzVMPublicIP - Recupera o endereço IP público de uma VM do Azure.
Get-ARTResourceGroupDeploymentTemplate - Exibe o modelo JSON de Implementação do Grupo de Recursos com base nos parâmetros de entrada, ou obtém todos de uma só vez.
Get-ARTAzVMUserDataFromInside - Recupera os Dados do Utilizador da VM do Azure a partir do interior de uma VM, contactando o endpoint de Metadados da Instância.