Azure Pentesting
AINDA ESTOU CONSTRUINDO A METODOLOGIA AZURE
Informações Básicas
Metodologia de Pentester/Red Team do Azure
Para auditar um ambiente AZURE, é muito importante saber: quais serviços estão sendo usados, o que está sendo exposto, quem tem acesso a quê e como os serviços internos do Azure e os serviços externos estão conectados.
Do ponto de vista de um Red Team, o primeiro passo para comprometer um ambiente Azure é conseguir obter algumas credenciais para o Azure AD. Aqui estão algumas ideias sobre como fazer isso:
Vazamentos no github (ou similar) - OSINT
Engenharia Social
Reutilização de senha (vazamentos de senha)
Vulnerabilidades em Aplicações Hospedadas no Azure
Server Side Request Forgery com acesso ao endpoint de metadados
Leitura de Arquivo Local
/home/NOME_DE_USUÁRIO/.azure
C:\Users\NOME_DE_USUÁRIO\.azure
O arquivo
accessTokens.json
noaz cli
antes da versão 2.30 - Jan2022 - armazenava tokens de acesso em texto claroO arquivo
azureProfile.json
contém informações sobre o usuário logado.az logout
remove o token.Versões mais antigas do
Az PowerShell
armazenavam tokens de acesso em texto claro noTokenCache.dat
. Também armazena ServicePrincipalSecret em texto claro noAzureRmContext.json
. O cmdletSave-AzContext
pode ser usado para armazenar tokens. UseDisconnect-AzAccount
para removê-los.Terceiros comprometidos
Funcionário Interno
Phishing Comum (credenciais ou aplicativo Oauth)
Mesmo que você não tenha comprometido nenhum usuário dentro do tenant do Azure que está atacando, você pode coletar algumas informações dele:
Depois de conseguir obter credenciais, você precisa saber de quem são essas credenciais e a que elas têm acesso, então você precisa realizar alguma enumeração básica:
Enumeração Básica
Lembre-se de que a parte mais barulhenta da enumeração é o login, não a enumeração em si.
SSRF
Se você encontrou um SSRF em uma máquina dentro do Azure, verifique esta página para truques:
Bypass de Condições de Login
Em casos onde você tem algumas credenciais válidas, mas não consegue fazer login, estas são algumas proteções comuns que podem estar em vigor:
Whitelist de IP -- Você precisa comprometer um IP válido
Restrições geográficas -- Descubra onde o usuário mora ou onde estão os escritórios da empresa e obtenha um IP da mesma cidade (ou país, pelo menos)
Navegador -- Talvez apenas um navegador de um determinado SO (Windows, Linux, Mac, Android, iOS) seja permitido. Descubra qual SO a vítima/empresa usa.
Você também pode tentar comprometer credenciais de Service Principal, pois geralmente são menos limitadas e seu login é menos revisado
Depois de contornar isso, você pode ser capaz de voltar à sua configuração inicial e ainda terá acesso.
Tomada de Subdomínio
Whoami
Aprenda como instalar az cli, AzureAD e Az PowerShell na seção Az - AzureAD.
Uma das primeiras coisas que você precisa saber é quem você é (em qual ambiente você está):
Um dos comandos mais importantes para enumerar o Azure é Get-AzResource
do Az PowerShell, pois permite que você saiba os recursos que seu usuário atual tem visibilidade.
Você pode obter as mesmas informações na console web acessando https://portal.azure.com/#view/HubsExtension/BrowseAll ou pesquisando por "Todos os recursos"
Enumeração do AzureAD
Por padrão, qualquer usuário deve ter permissões suficientes para enumerar coisas como, usuários, grupos, funções, principais de serviço... (ver permissões padrão do AzureAD). Você pode encontrar aqui um guia:
Agora que você tem algumas informações sobre suas credenciais (e se você é um red team, espero que você não tenha sido detectado). É hora de descobrir quais serviços estão sendo usados no ambiente. Na seção a seguir, você pode verificar algumas maneiras de enumerar alguns serviços comuns.
Principal de Serviço e Política de Acesso
Um serviço do Azure pode ter uma Identidade de Sistema (do próprio serviço) ou usar uma Identidade Gerenciada Atribuída ao Usuário. Essa Identidade pode ter Política de Acesso para, por exemplo, um KeyVault para ler segredos. Essas Políticas de Acesso devem ser restritas (princípio do menor privilégio), mas podem ter mais permissões do que o necessário. Normalmente, um App Service usaria o KeyVault para recuperar segredos e certificados.
Portanto, é útil explorar essas identidades.
SCM do App Service
Console Kudu para fazer login no 'container' do App Service.
Webshell
Use portal.azure.com e selecione o shell, ou use shell.azure.com, para um bash ou powershell. O 'disco' deste shell é armazenado como um arquivo de imagem em uma conta de armazenamento.
Azure DevOps
Azure DevOps é separado do Azure. Ele possui repositórios, pipelines (yaml ou release), quadros, wiki e mais. Grupos de Variáveis são usados para armazenar valores de variáveis e segredos.
Ferramentas de Reconhecimento Automatizado
Last updated