«AccountDumpling»: Cazando la Ola de Phishing Enviada por Google Que Comprometió Más de 30,000 Cuentas de Facebook
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Una operación de phishing aprovecha Google AppSheet para enviar correos electrónicos con apariencia legítima que atraen a las víctimas hacia páginas maliciosas alojadas en Netlify y Vercel. Esas páginas recopilan detalles completos de recuperación de cuentas de Facebook y los envían a bots de Telegram en tiempo real. La campaña se ha vinculado a un individuo con sede en Vietnam y ya ha resultado en el compromiso de más de 30,000 cuentas de Facebook. Las cuentas robadas luego se monetizan a través de una tienda que publicita servicios de recuperación de cuentas.
Investigación
Los investigadores de Guardio rastrearon la cadena de entrega de regreso a AppSheet, identificaron cuatro grupos de phishing separados y recopilaron cientos de URLs de alojamiento malicioso. También extrajeron tokens de bot de Telegram y IDs de chat, conectaron la infraestructura a un PDF de Canva que contenía un nombre vietnamita, y analizaron la distribución geográfica de las víctimas. Su investigación expuso un ecosistema modular en el que un grupo desarrolla los kits de phishing, otro lleva a cabo las campañas, y un tercero se beneficia del acceso a las cuentas robadas.
Mitigación
Los defensores deben bloquear los subdominios maliciosos conocidos de Netlify y Vercel, monitorear los correos electrónicos generados por AppSheet que contienen enlaces de llamada a acción sospechosos, y detectar conexiones salientes a los endpoints de la API de bots de Telegram. Las organizaciones también deben fortalecer la validación alrededor de los flujos de trabajo de inicio de sesión y recuperación en Facebook y requerir reautenticación para acciones sensibles de recuperación. A los usuarios se les debe recordar que los correos electrónicos enviados a través de servicios confiables de Google aún pueden ser parte de un intento de phishing.
Respuesta
Los equipos de seguridad deben alertar sobre correos electrónicos de noreply@appsheet.com que incluyan enlaces a Netlify, Vercel o shorten.tv dominios desconocidos. Las búsquedas de DNS para esos dominios deben correlacionarse con el tráfico de bots de Telegram para identificar posibles exfiltraciones. Si se han robado credenciales, a los usuarios afectados se les debe obligar a restablecer las contraseñas y cualquier cuenta de Facebook comprometida debe revisarse de inmediato. Los indicadores relevantes también deben compartirse con el SOC y canales externos de inteligencia de amenazas.
"graph TB %% Class definitions classDef action fill:#99ccff %% Nodes action_phishing["<b>Acción</b> – <b>T1566 Phishing</b><br/>Phishing a través de Google AppSheet para engañar a los usuarios revelando credenciales o haciendo clic en enlaces maliciosos."] class action_phishing action action_cloud_abuse["<b>Acción</b> – <b>T1496.004 Secuestro de Recursos: Secuestro de Servicios en la Nube</b><br/>Abuso de un servicio de correo electrónico en la nube para enviar correos electrónicos maliciosos autenticados.<br/><b>Técnica Adicional</b> – <b>T1021.007 Servicios Remotos: Servicios en la Nube</b><br/>Uso de servicios remotos legítimos en la nube para llevar a cabo actividad maliciosa."] class action_cloud_abuse action action_credential_harvest["<b>Acción</b> – <b>T1606 Falsificación de Credenciales Web</b><br/>Creación de páginas de recolección de credenciales alojadas en Netlify/Vercel.<br/><b>Técnica Adicional</b> – <b>T1212 Explotación para Acceso a Credenciales</b><br/>Explotación de plataformas web para capturar credenciales de usuario."] class action_credential_harvest action action_gather_info["<b>Acción</b> – <b>T1589 Recolección de Información de Identidad de la Víctima</b><br/>Recolección de datos de identidad de la víctima.<br/><b>Técnicas Adicionales</b> – <b>T1591.002 Recolección de Información de la Organización de la Víctima: Relaciones Comerciales</b><br/>Recolección de detalles de relaciones comerciales.<br/><b>Técnica Adicional</b> – <b>T1591.004 Recolección de Información de la Organización de la Víctima: Identificación de Roles</b><br/>Identificación de roles de la víctima dentro de la organización."] class action_gather_info action action_exfil_telegram["<b>Acción</b> – <b>T1041 Exfiltración a través del Canal de Comando y Control (C2)</b><br/>Exfiltración de datos a través del canal C2 del bot de Telegram.<br/><b>Técnica Adicional</b> – <b>T1552.001 Credenciales No Aseguradas: Credenciales en Archivos</b><br/>Recolección de credenciales almacenadas en archivos."] class action_exfil_telegram action action_facebook_access["<b>Acción</b> – <b>T1078 Cuentas Válidas</b><br/>Uso de cuentas válidas robadas para acceder a recursos empresariales de Facebook."] class action_facebook_access action %% Conexiones 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 "
Flujo de Ataque
Detecciones
Posible Infiltración / Exfiltración de Datos / C2 a través de Servicios de Terceros / Herramientas (a través de proxy)
Ver
Posible Infiltración / Exfiltración de Datos / C2 a través de Servicios de Terceros / Herramientas (a través de DNS)
Ver
Correos Electrónicos de Phishing a través de Google AppSheet Apuntando a Cuentas de Facebook [Plataforma Cloud de Google]
Ver
Ejecución de Simulación
Requisito: Verificación Previa de Telemetría y Línea Base debe haber pasado.
Razonamiento: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y tienen como objetivo generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados conducirán a un diagnóstico erróneo.
-
Narrativa del Ataque y Comandos:
-
Reconocimiento: El atacante cosecha una lista de direcciones de correo electrónico de empleados de Facebook de fuentes públicas.
-
Configuración de Abuso de AppSheet: Usando una cuenta Google Workspace comprometida, el atacante crea una aplicación AppSheet que envía notificaciones por correo electrónico. La aplicación está configurada para usar el dominio de rebote predeterminado de AppSheet
appsheet.bounces.google.com. -
Carga Maliciosa de Phishing: El correo electrónico de notificación contiene un cebo («Tu contraseña de Facebook está a punto de expirar – restablece ahora») con un enlace malicioso que apunta a una página de recolección de credenciales.
-
Lanzamiento de Campaña: El atacante activa el flujo de trabajo de AppSheet, lo que hace que la plataforma envíe el correo electrónico diseñado a la lista de objetivos. Los metadatos resultantes del correo electrónico coinciden con:
sender_email = noreply@appsheet.comdelivery_domain = appsheet.bounces.google.com
-
Resultado: La regla de SIEM evalúa la entrada del registro entrante, coincide con ambos campos, y genera una alerta.
-
-
Script de Prueba de Regresión: El script a continuación automatiza los pasos 2-4 usando la API de Google Apps Script para emular una notificación estilo AppSheet. Requiere un JSON de cuenta de servicio con permiso para enviar correos a través de la API de Gmail.
# python 3.x – enviar un correo estilo phishing elaborado a través de Gmail API import base64, json, sys from email.mime.text import MIMEText from google.oauth2 import service_account from googleapiclient.discovery import build # ---- Configuración ------------------------------------------------- SERVICE_ACCOUNT_FILE = "service-account.json" # <-- reemplazar con ruta SCOPES = ["https://www.googleapis.com/auth/gmail.send"] SENDER = "noreply@appsheet.com" RECIPIENT = "victim@facebook.com" SUBJECT = "Importante: Se requiere acción en la cuenta de Facebook" BODY = """ Estimado usuario de Facebook, Nuestros registros indican que su contraseña expirará en 24 horas. Por favor, restablézcala inmediatamente haciendo clic en el enlace a continuación: https://malicious.example.com/steal?uid=12345 Gracias, Equipo de Seguridad de 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 # Agregar un encabezado personalizado para imitar el dominio de rebote de 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"Mensaje enviado, ID={result['id']}") except Exception as e: print(f"Error al enviar el correo: {e}", file=sys.stderr) sys.exit(1) -
Comandos de Limpieza: Eliminar el mensaje de prueba del buzón de enviados y revocar el token de la cuenta de servicio.
# PowerShell – eliminar el mensaje de prueba de la carpeta de enviados de Gmail usando Gmail API $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 # Recuperar el ID del mensaje (reemplazar con el ID real del script de envío) $msgId = "INSERT_MESSAGE_ID_HERE" $gmail.Users.Messages.Delete("me", $msgId).Execute() Write-Host "Correo de prueba eliminado."