GWS - Google Platforms Phishing

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Metodologia Genérica de Phishing

Phishing em Grupos do Google

Aparentemente, por padrão, nos membros do workspace podem criar grupos e convidar pessoas para eles. Você pode então modificar o e-mail que será enviado ao usuário adicionando alguns links. O e-mail virá de um endereço do Google, então parecerá legítimo e as pessoas podem clicar no link.

Também é possível definir o endereço DE como o e-mail do grupo do Google para enviar mais e-mails aos usuários dentro do grupo, como na imagem a seguir, onde o grupo google--support@googlegroups.com foi criado e um e-mail foi enviado a todos os membros do grupo (que foram adicionados sem consentimento algum)

Phishing no Google Chat

Você pode iniciar um chat com uma pessoa apenas tendo o endereço de e-mail dela ou enviar um convite para conversar. Além disso, é possível criar um Espaço que pode ter qualquer nome (por exemplo, "Suporte Google") e convidar membros para ele. Se eles aceitarem, podem pensar que estão falando com o Suporte Google:

No entanto, nos meus testes, os membros convidados nem mesmo receberam um convite.

Você pode verificar como isso funcionou no passado em: https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s

Phishing no Google Docs

No passado, era possível criar um documento aparentemente legítimo e, em um comentário, mencionar algum e-mail (como @user@gmail.com). O Google enviava um e-mail para esse endereço de e-mail notificando que foram mencionados no documento. Atualmente, isso não funciona, mas se você der acesso de e-mail à vítima ao documento, o Google enviará um e-mail indicando isso. Esta é a mensagem que aparece quando você menciona alguém:

As vítimas podem ter mecanismos de proteção que não permitem que e-mails indicando que um documento externo foi compartilhado com eles cheguem ao seu e-mail.

Phishing no Google Calendar

Você pode criar um evento de calendário e adicionar tantos endereços de e-mail da empresa que está atacando quantos desejar. Agende este evento de calendário em 5 ou 15 minutos a partir do horário atual. Faça o evento parecer legítimo e coloque um comentário e um título indicando que eles precisam ler algo (com o link de phishing).

Este é o alerta que aparecerá no navegador com um título de reunião "Demitindo Pessoas", então você poderia definir um título mais parecido com phishing (e até mesmo alterar o nome associado ao seu e-mail).

Para parecer menos suspeito:

  • Configure para que os destinatários não possam ver as outras pessoas convidadas

  • NÃO envie e-mails notificando sobre o evento. Então, as pessoas só verão o aviso sobre uma reunião em 5 minutos e que precisam ler aquele link.

  • Aparentemente, usando a API, você pode definir como Verdadeiro que as pessoas aceitaram o evento e até criar comentários em nome delas.

Phishing de Redirecionamento de Scripts de Aplicativos

É possível criar um script em https://script.google.com/ e expor como um aplicativo da web acessível por todos que usará o domínio legítimo script.google.com. Então, com algum código como o seguinte, um atacante poderia fazer o script carregar conteúdo arbitrário nesta página sem parar de acessar o domínio:

function doGet() {
return HtmlService.createHtmlOutput('<meta http-equiv="refresh" content="0;url=https://cloud.hacktricks.xyz/pentesting-cloud/workspace-security/gws-google-platforms-phishing#app-scripts-redirect-phishing">')
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

Por exemplo, ao acessar https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec você verá:

Note que um aviso aparecerá, pois o conteúdo é carregado dentro de um iframe.

Phishing de OAuth de Scripts de Aplicativos

É possível criar Scripts de Aplicativos anexados a documentos para tentar obter acesso ao token OAuth de uma vítima, para mais informações verifique:

pageGWS - App Scripts

Phishing de Aplicativos OAuth

Qualquer uma das técnicas anteriores pode ser usada para fazer o usuário acessar um aplicativo OAuth do Google que irá solicitar ao usuário algum acesso. Se o usuário confiar na fonte, ele pode confiar no aplicativo (mesmo que esteja solicitando permissões de alto privilégio).

Observe que o Google apresenta um prompt feio avisando que o aplicativo não é confiável em vários casos e os administradores do Workspace podem até mesmo impedir que as pessoas aceitem aplicativos OAuth.

O Google permite criar aplicativos que podem interagir em nome dos usuários com vários serviços do Google: Gmail, Drive, GCP...

Ao criar um aplicativo para agir em nome de outros usuários, o desenvolvedor precisa criar um aplicativo OAuth dentro do GCP e indicar os escopos (permissões) que o aplicativo precisa para acessar os dados dos usuários. Quando um usuário deseja usar esse aplicativo, ele será solicitado a aceitar que o aplicativo terá acesso aos seus dados especificados nos escopos.

Esta é uma maneira muito eficaz de phishing usuários não técnicos para usar aplicativos que acessam informações sensíveis porque eles podem não entender as consequências. No entanto, em contas de organizações, existem maneiras de evitar que isso aconteça.

Prompt de Aplicativo Não Verificado

Como mencionado, o Google sempre apresentará um prompt ao usuário para aceitar as permissões que estão dando ao aplicativo em seu nome. No entanto, se o aplicativo for considerado perigoso, o Google mostrará primeiro um prompt indicando que é perigoso e tornando mais difícil para o usuário conceder as permissões ao aplicativo.

Este prompt aparece em aplicativos que:

  • Usam qualquer escopo que pode acessar dados privados (Gmail, Drive, GCP, BigQuery...)

  • Aplicativos com menos de 100 usuários (aplicativos > 100 também precisam passar por um processo de revisão para parar de exibir o prompt não verificado)

Escopos Interessantes

Aqui você pode encontrar uma lista de todos os escopos do OAuth do Google.

  • cloud-platform: Visualize e gerencie seus dados em vários serviços da Google Cloud Platform. Você pode se passar pelo usuário no GCP.

  • admin.directory.user.readonly: Veja e baixe o diretório do GSuite de sua organização. Obtenha nomes, telefones, URLs de calendário de todos os usuários.

Criar um Aplicativo OAuth

Comece criando um ID de Cliente OAuth

  1. Acesse https://console.cloud.google.com/apis/credentials/oauthclient e clique em configurar a tela de consentimento.

  2. Em seguida, será perguntado se o tipo de usuário é interno (apenas para pessoas em sua organização) ou externo. Selecione o que se adequar às suas necessidades

  • Interno pode ser interessante se você já comprometeu um usuário da organização e está criando este aplicativo para fazer phishing em outro.

  1. Dê um nome ao aplicativo, um e-mail de suporte (observe que você pode definir um e-mail de grupo do Google para tentar se anonimizar um pouco mais), um logotipo, domínios autorizados e outro e-mail para atualizações.

  2. Selecione os escopos OAuth.

  • Esta página é dividida em permissões não sensíveis, permissões sensíveis e permissões restritas. Sempre que você adicionar uma nova permissão, ela será adicionada em sua categoria. Dependendo das permissões solicitadas, diferentes prompts aparecerão para o usuário indicando o quão sensíveis essas permissões são.

  • Tanto admin.directory.user.readonly quanto cloud-platform são permissões sensíveis.

  1. Adicione os usuários de teste. Enquanto o status do aplicativo estiver em teste, apenas esses usuários poderão acessar o aplicativo, então certifique-se de adicionar o e-mail que você vai fazer phishing.

Agora vamos obter credenciais para um aplicativo da web usando o ID de Cliente OAuth previamente criado:

  1. Volte para https://console.cloud.google.com/apis/credentials/oauthclient, uma opção diferente aparecerá desta vez.

  2. Selecione criar credenciais para um aplicativo da web

  3. Defina origens Javascript necessárias e URIs de redirecionamento

  • Você pode definir em ambos algo como http://localhost:8000/callback para testes

  1. Obtenha suas credenciais de aplicativo

Por fim, vamos executar um aplicativo da web que usará as credenciais do aplicativo OAuth. Você pode encontrar um exemplo em https://github.com/carlospolop/gcp_oauth_phishing_example.

git clone ttps://github.com/carlospolop/gcp_oauth_phishing_example
cd gcp_oauth_phishing_example
pip install flask requests google-auth-oauthlib
python3 app.py --client-id "<client_id>" --client-secret "<client_secret>"

Vá para http://localhost:8000, clique no botão Login com Google, você será solicitado com uma mensagem como esta:

O aplicativo mostrará o token de acesso e de atualização que podem ser facilmente utilizados. Para mais informações sobre como usar esses tokens, confira:

pageGCP - Non-svc Persistance

Usando gcloud

É possível fazer algo usando o gcloud em vez do console web, confira:

pageGCP - ClientAuthConfig Privesc

Referências

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización