GWS - Google Platforms Phishing

Support HackTricks

Metodologia Genérica de Phishing

Phishing em Google Groups

Aparentemente, por padrão, em workspace os membros 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 FROM como o e-mail do grupo do Google para enviar mais e-mails para os 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 qualquer consentimento)

Phishing em Google Chat

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

Nos meus testes, no entanto, os membros convidados não receberam nem mesmo um convite.

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

Phishing em 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 enviou um e-mail para esse endereço de e-mail notificando que foi mencionado no documento. Hoje em dia, isso não funciona, mas se você der ao e-mail da vítima acesso 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 elas cheguem ao seu e-mail.

Phishing em Google Calendar

Você pode criar um evento de calendário e adicionar quantos endereços de e-mail da empresa que você está atacando tiver. Agende este evento de calendário em 5 ou 15 min 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 "Demissão de Pessoas", então você poderia definir um título mais parecido com phishing (e até mesmo mudar 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. Assim, as pessoas só verão seu aviso sobre uma reunião em 5 minutos e que precisam ler aquele link.

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

Phishing de Redirecionamento de App Scripts

É possível criar um script em https://script.google.com/ e expor como uma aplicação web acessível por todos que usará o domínio legítimo script.google.com. 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, acessando https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec você verá:

Observe que um aviso aparecerá à medida que o conteúdo for 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, consulte:

GWS - 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 solicitará ao usuário algum acesso. Se o usuário confiar na fonte, ele pode confiar na aplicação (mesmo que esteja pedindo permissões de alto privilégio).

Observe que o Google apresenta um aviso feio informando que a aplicação é não confiável em vários casos e os administradores do Workspace podem até impedir que as pessoas aceitem aplicativos OAuth.

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 atraente de phish 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.

Aviso de Aplicativo Não Verificado

Como foi mencionado, o Google sempre apresentará um aviso ao usuário para aceitar as permissões que estão concedendo ao aplicativo em seu nome. No entanto, se o aplicativo for considerado perigoso, o Google mostrará primeiro um aviso indicando que é perigoso e dificultando para o usuário conceder as permissões ao aplicativo.

Esse aviso 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 um processo de revisão também é necessário para parar de mostrar o aviso de não verificado)

Escopos Interessantes

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

  • cloud-platform: Visualizar e gerenciar seus dados em serviços do Google Cloud Platform. Você pode se passar pelo usuário no GCP.

  • admin.directory.user.readonly: Ver e baixar o diretório GSuite da sua organização. Obter nomes, telefones, URLs de calendário de todos os usuários.

Criar um Aplicativo OAuth

Comece criando um ID de Cliente OAuth

  1. Vá para 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 na sua organização) ou externo. Selecione o que melhor se adequa às suas necessidades

  • Interno pode ser interessante se você já comprometeu um usuário da organização e está criando este aplicativo para phish 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 logo, 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 à sua categoria. Dependendo das permissões solicitadas, diferentes avisos aparecerão para o usuário indicando 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 for de teste, apenas esses usuários poderão acessar o aplicativo, então certifique-se de adicionar o e-mail que você vai phish.

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

  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 web

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

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

  1. Obtenha suas credenciais do aplicativo

Finalmente, vamos executar um aplicativo 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 with Google, você será solicitado com uma mensagem como esta:

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

GCP - Token Persistance

Usando glcoud

É possível fazer algo usando gcloud em vez do console da web, verifique:

GCP - ClientAuthConfig Privesc

Referências

Support HackTricks

Last updated