“AccountDumpling” Caçando a Onda de Phishing Enviada pelo Google que Comprometeu mais de 30.000 Contas do Facebook
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Uma operação de phishing abusa do Google AppSheet para enviar e-mails que parecem legítimos, atraindo vítimas para páginas maliciosas hospedadas no Netlify e Vercel. Essas páginas coletam todos os detalhes de recuperação de conta do Facebook e os encaminham para bots do Telegram em tempo real. A campanha foi vinculada a um indivíduo no Vietnã e já resultou na violação de mais de 30.000 contas do Facebook. As contas roubadas são então monetizadas através de uma loja que anuncia serviços de recuperação de contas.
Investigação
Pesquisadores da Guardio rastrearam a cadeia de entrega de volta ao AppSheet, identificaram quatro clusters de phishing separados e reuniram centenas de URLs de hospedagem maliciosas. Eles também extraíram tokens de bot do Telegram e IDs de chat, conectaram a infraestrutura a um PDF do Canva contendo um nome vietnamita e analisaram a dispersão geográfica das vítimas. A pesquisa deles expôs um ecossistema modular no qual um grupo desenvolve os kits de phishing, outro conduz as campanhas e um terceiro lucra com o acesso a contas roubadas.
Mitigação
Defensores devem bloquear os subdomínios maliciosos conhecidos do Netlify e Vercel, monitorar e-mails gerados pelo AppSheet que contenham links suspeitos de call-to-action e detectar conexões de saída para os endpoints da API do bot do Telegram. As organizações também devem reforçar a validação em torno dos fluxos de trabalho de login e recuperação do Facebook e exigir re-autenticação para ações de recuperação sensíveis. Os usuários devem ser lembrados de que e-mails enviados por serviços confiáveis do Google ainda podem fazer parte de uma tentativa de phishing.
Resposta
As equipes de segurança devem alertar sobre e-mails de noreply@appsheet.com que incluam links para Netlify, Vercel ou shorten.tv domínios. Consultas DNS para esses domínios devem ser correlacionadas com o tráfego do bot do Telegram para identificar possível exfiltração. Se as credenciais forem roubadas, os usuários afetados devem ser forçados a redefinir senhas e qualquer conta do Facebook comprometida deve ser revisada imediatamente. Indicadores relevantes também devem ser compartilhados com o SOC e canais externos de inteligência de ameaças.
"graph TB %% Class definitions classDef action fill:#99ccff %% Nodes action_phishing["<b>Ação</b> – <b>T1566 Phishing</b><br/>Phishing via Google AppSheet para enganar usuários para revelar credenciais ou clicar em links maliciosos."] class action_phishing action action_cloud_abuse["<b>Ação</b> – <b>T1496.004 Seqüestro de Recursos: Seqüestro de Serviço em Nuvem</b><br/>Abuso de um serviço de email em nuvem para enviar emails maliciosos autenticados.<br/><b>Técnica Adicional</b> – <b>T1021.007 Serviços Remotos: Serviços em Nuvem</b><br/>Uso de serviços remotos em nuvem legítimos para realizar atividades maliciosas."] class action_cloud_abuse action action_credential_harvest["<b>Ação</b> – <b>T1606 Criação de Credenciais Web</b><br/>Criação de páginas de captura de credenciais hospedadas no Netlify/Vercel.<br/><b>Técnica Adicional</b> – <b>T1212 Exploração para Acesso a Credenciais</b><br/>Exploitação de plataformas web para capturar credenciais de usuários."] class action_credential_harvest action action_gather_info["<b>Ação</b> – <b>T1589 Reunir Informações de Identidade da Vítima</b><br/>Coleta de dados de identidade da vítima.<br/><b>Técnicas Adicionais</b> – <b>T1591.002 Reunir Informações da Organização da Vítima: Relacionamentos Comerciais</b><br/>Reunindo detalhes de relacionamentos comerciais.<br/><b>Técnica Adicional</b> – <b>T1591.004 Reunir Informações da Organização da Vítima: Identificar Papéis</b><br/>Identificando papéis da vítima dentro da organização."] class action_gather_info action action_exfil_telegram["<b>Ação</b> – <b>T1041 Exfiltração através de Canal C2</b><br/>Exfiltração de dados através do canal C2 do bot Telegram.<br/><b>Técnica Adicional</b> – <b>T1552.001 Credenciais Não Seguras: Credenciais Em Ficheiros</b><br/>Colheita de credenciais armazenadas em arquivos."] class action_exfil_telegram action action_facebook_access["<b>Ação</b> – <b>T1078 Contas Válidas</b><br/>Uso de contas válidas roubadas para acessar recursos do Facebook Business."] class action_facebook_access action %% Connections action_phishing –>|leads_to| action_cloud_abuse action_cloud_abuse –>|leads_to| action_credential_harvest action_credential_harvest –>|leads_to| action_gather_info action_gather_info –>|leads_to| action_exfil_telegram action_exfil_telegram –>|leads_to| action_facebook_access "
Fluxo de Ataque
Detecções
Possível Infração / Exfiltração de Dados / C2 via Serviços / Ferramentas de Terceiros (via proxy)
Visualizar
Possível Infração / Exfiltração de Dados / C2 via Serviços / Ferramentas de Terceiros (via dns)
Visualizar
Emails de Phishing via Google AppSheet Alvejando Contas do Facebook [Google Cloud Platform]
Visualizar
Execução da Simulação
Pré-requisito: O Teste Preliminar de Telemetria e Linha de Base deve ter passado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e narrativas DEVEM refletir diretamente as TTPs identificadas e objetivar gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a erros de diagnóstico.
-
Narrativa do Ataque & Comandos:
-
Reconnaissance: O atacante colhe uma lista de endereços de e-mail de funcionários do Facebook de fontes públicas.
-
Configuração de Abuso do AppSheet: Usando uma conta comprometida do Google Workspace, o atacante cria um aplicativo AppSheet que envia notificações por e-mail. O aplicativo está configurado para usar o domínio de bounce padrão do AppSheet
appsheet.bounces.google.com. -
Carga de Phishing: O e-mail de notificação contém uma isca (“Sua senha do Facebook está expirando – redefina agora”) com um link malicioso apontando para uma página de captura de credenciais.
-
Lançamento da Campanha: O atacante dispara o fluxo de trabalho do AppSheet, fazendo com que a plataforma envie o e-mail elaborado para a lista de alvos. Os metadados resultantes do e-mail correspondem a:
sender_email = noreply@appsheet.comdelivery_domain = appsheet.bounces.google.com
-
Resultado: A regra do SIEM avalia a entrada do log que chega, corresponde a ambos os campos e gera um alerta.
-
-
Script de Teste de Regressão: O script abaixo automatiza as etapas 2-4 usando a API do Google Apps Script para emular uma notificação no estilo AppSheet. Requer um JSON de conta de serviço com permissão para enviar e-mails via API do Gmail.
# python 3.x – envie um email no estilo de phishing através da API do Gmail import base64, json, sys from email.mime.text import MIMEText from google.oauth2 import service_account from googleapiclient.discovery import build # ---- Configuração ------------------------------------------------- SERVICE_ACCOUNT_FILE = "service-account.json" # <-- substitua pelo caminho SCOPES = ["https://www.googleapis.com/auth/gmail.send"] SENDER = "noreply@appsheet.com" RECIPIENT = "victim@facebook.com" SUBJECT = "Importante: Ação Requerida na Conta do Facebook" BODY = """ Caro Usuário do Facebook, Nossos registros indicam que sua senha expirará em 24 horas. Por favor, redefina-a imediatamente clicando no link abaixo: https://malicious.example.com/steal?uid=12345 Obrigado, Equipe de Segurança do Facebook """ # -------------------------------------------------------------------- credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) try: service = build('gmail', 'v1', credentials=credentials) message = MIMEText(BODY, "plain") message["to"] = RECIPIENT message["from"] = SENDER message["subject"] = SUBJECT # Adicione cabeçalho personalizado para mimetizar o domínio de bounce do AppSheet message["X-Delivery-Domain"] = "appsheet.bounces.google.com" raw = base64.urlsafe_b64encode(message.as_bytes()).decode() send_body = {"raw": raw} result = service.users().messages().send(userId="me", body=send_body).execute() print(f"Mensagem enviada, ID={result['id']}") except Exception as e: print(f"Erro ao enviar e-mail: {e}", file=sys.stderr) sys.exit(1) -
Comandos de Limpeza: Remova a mensagem de teste da pasta de enviados e revogue o token da conta de serviço.
# PowerShell – elimine a mensagem de teste da pasta de Enviados do Gmail usando a API do Gmail $serviceAccount = "service-account.json" $scopes = @("https://www.googleapis.com/auth/gmail.modify") $cred = (Get-Content $serviceAccount | ConvertFrom-Json) | ` New-Object Google.Apis.Auth.OAuth2.ServiceAccountCredential ` -ArgumentList ([Google.Apis.Auth.OAuth2.ServiceAccountCredential]::Initializer) ` -Property @{Scopes = $scopes} $gmail = New-Object Google.Apis.Gmail.v1.GmailService -ArgumentList $cred # Recupere o ID da mensagem (substituir pelo ID real do script de envio) $msgId = "INSERT_MESSAGE_ID_HERE" $gmail.Users.Messages.Delete("me", $msgId).Execute() Write-Host "Email de teste deletado."