„AccountDumpling“ Auf der Jagd nach der von Google gesendeten Phishing-Welle, die über 30.000 Facebook-Konten kompromittiert
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Eine Phishing-Operation missbraucht Google AppSheet, um legitim aussehende E-Mails zu versenden, die Opfer auf bösartige Seiten bei Netlify und Vercel locken. Diese Seiten sammeln vollständige Facebook-Konto-Wiederherstellungsdaten und leiten sie in Echtzeit an Telegram-Bots weiter. Die Kampagne wurde mit einer in Vietnam ansässigen Person in Verbindung gebracht und hat bereits zur Kompromittierung von über 30.000 Facebook-Konten geführt. Die gestohlenen Konten werden dann über einen Shop monetarisiert, der Kontowiederherstellungsdienste bewirbt.
Untersuchung
Guardio Forscher verfolgten die Lieferkette zurück zu AppSheet, identifizierten vier separate Phishing-Cluster und sammelten Hunderte von bösartigen Hosting-URLs. Sie extrahierten auch Telegram-Bot-Token und Chat-IDs, verbanden die Infrastruktur mit einem Canva-PDF mit einem vietnamesischen Namen und analysierten die geografische Verbreitung der Opfer. Ihre Forschung enthüllte ein modulares Ökosystem, in dem eine Gruppe die Phishing-Kits entwickelt, eine andere die Kampagnen durchführt und eine dritte vom Zugang zu den gestohlenen Konten profitiert.
Minderung
Verteidiger sollten die bekannten bösartigen Netlify- und Vercel-Subdomains blockieren, AppSheet-generierte E-Mails überwachen, die verdächtige Call-to-Action-Links enthalten, und ausgehende Verbindungen zu Telegram-Bot-API-Endpunkten erkennen. Organisationen sollten auch die Validierung von Facebook-Anmelde- und Wiederherstellungs-Workflows stärken und eine erneute Authentifizierung für sensible Wiederherstellungsaktionen verlangen. Anwender sollten daran erinnert werden, dass über vertrauenswürdige Google-Dienste gesendete E-Mails trotzdem Teil eines Phishing-Versuchs sein können.
Reaktion
Sicherheitsteams sollten auf E-Mails von noreply@appsheet.com die Links zu unbekannten Netlify, Vercel oder shorten.tv Domains enthalten, alarmieren. DNS-Abfragen für diese Domains sollten mit Telegram-Bot-Traffic korreliert werden, um mögliche Exfiltration zu identifizieren. Wenn Anmeldedaten gestohlen wurden, sollten betroffene Nutzer gezwungen werden, Passwörter zurückzusetzen, und alle kompromittierten Facebook-Konten sollten sofort überprüft werden. Relevante Indikatoren sollten auch mit dem SOC und externen Bedrohungsintelligenzkanälen geteilt werden.
"graph TB %% Klassendefinitionen classDef action fill:#99ccff %% Knoten action_phishing["<b>Aktion</b> – <b>T1566 Phishing</b><br/>Phishing über Google AppSheet, um Benutzer dazu zu bringen, Anmeldeinformationen preiszugeben oder auf bösartige Links zu klicken."] class action_phishing action action_cloud_abuse["<b>Aktion</b> – <b>T1496.004 Ressourcenentfremdung: Cloud-Service-Entführung</b><br/>Missbrauch eines Cloud-E-Mail-Dienstes, um authentifizierte bösartige E-Mails zu versenden.<br/><b>Zusätzliche Technik</b> – <b>T1021.007 Entfernte Dienstleistungen: Cloud-Dienste</b><br/>Verwendung legitimer Cloud-Remote-Dienste, um bösartige Aktivitäten durchzuführen."] class action_cloud_abuse action action_credential_harvest["<b>Aktion</b> – <b>T1606 Web-Anmeldeinformationen fälschen</b><br/>Erstellung von Seiten zur Anmeldedaten-Ernte auf Netlify/Vercel.<br/><b>Zusätzliche Technik</b> – <b>T1212 Ausnutzung für Anmeldedatenzugang</b><br/>Ausnutzung von Webplattformen, um Benutzeranmeldedaten zu erfassen."] class action_credential_harvest action action_gather_info["<b>Aktion</b> – <b>T1589 Opferidentitätsinformationen sammeln</b><br/>Erfassung von Opferidentitätsdaten.<br/><b>Zusätzliche Techniken</b> – <b>T1591.002 Informationen zur Opferorganisation sammeln: Geschäftliche Beziehungen</b><br/>Erfassung von Geschäftsbeziehungsdetails.<br/><b>Zusätzliche Technik</b> – <b>T1591.004 Informationen zur Opferorganisation sammeln: Rollen identifizieren</b><br/>Identifizierung von Opferrollen innerhalb der Organisation."] class action_gather_info action action_exfil_telegram["<b>Aktion</b> – <b>T1041 Exfiltration über C2-Kanal</b><br/>Exfiltration von Daten über den Telegram-Bot-C2-Kanal.<br/><b>Zusätzliche Technik</b> – <b>T1552.001 Nicht gesicherte Anmeldedaten: Anmeldedaten in Dateien</b><br/>Ernte von Anmeldedaten, die in Dateien gespeichert sind."] class action_exfil_telegram action action_facebook_access["<b>Aktion</b> – <b>T1078 Gültige Konten</b><br/>Verwendung gestohlener gültiger Konten zum Zugriff auf Facebook Business-Ressourcen."] class action_facebook_access action %% Verbindungen action_phishing –>|führt_zu| action_cloud_abuse action_cloud_abuse –>|führt_zu| action_credential_harvest action_credential_harvest –>|führt_zu| action_gather_info action_gather_info –>|führt_zu| action_exfil_telegram action_exfil_telegram –>|führt_zu| action_facebook_access "
Angriffsfluss
Erkennungen
Mögliche Dateninfiltration / -exfiltration / C2 über Drittanbieterdienste / -tools (über Proxy)
Ansehen
Mögliche Dateninfiltration / -exfiltration / C2 über Drittanbieterdienste / -tools (über DNS)
Ansehen
Phishing-E-Mails über Google AppSheet, die auf Facebook-Konten abzielen [Google Cloud Platform]
Ansehen
Simulationsausführung
Voraussetzung: Der Telemetrie- und Basislinienvorflug-Check muss bestanden haben.
Begründung: Dieser Abschnitt erläutert die genaue Ausführung der gegnerischen Technik (TTP), die dazu bestimmt ist, die Erkennungsregel auszulösen. Die Befehle und die Geschichte MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu generieren, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.
-
Angriffserzählung und Befehle:
-
Aufklärung: Der Angreifer beschafft eine Liste von E-Mail-Adressen von Facebook-Mitarbeitern aus öffentlichen Quellen.
-
AppSheet-Missbrauchsaufbau: Mit einem kompromittierten Google Workspace-Konto erstellt der Angreifer eine AppSheet-App, die E-Mail-Benachrichtigungen versendet. Die App ist so konfiguriert, dass sie die Standard-AppSheet-Bounce-Domain verwendet
appsheet.bounces.google.com. -
Phishing-Nutzlast: Die Benachrichtigungs-E-Mail enthält einen Köder („Ihr Facebook-Passwort läuft ab – jetzt zurücksetzen“) mit einem bösartigen Link zu einer Seite zur Anmeldedatenernte.
-
Kampagnenstart: Der Angreifer löst den AppSheet-Workflow aus, wodurch die Plattform die gestaltete E-Mail an die Zielliste sendet. Die resultierenden E-Mail-Metadaten entsprechen:
sender_email = noreply@appsheet.comdelivery_domain = appsheet.bounces.google.com
-
Ergebnis: Die SIEM-Regel bewertet den eingehenden Protokolleintrag, vergleicht beide Felder und erzeugt einen Alarm.
-
-
Regressionstest-Skript: Das untenstehende Skript automatisiert die Schritte 2-4 mithilfe der Google Apps Script-API, um eine Benachrichtigung im AppSheet-Stil zu emulieren. Es erfordert eine Dienstkonten-JSON mit der Berechtigung, E-Mails über die Gmail API zu senden.
# Python 3.x – senden einer gestaltet phishingartigen E-Mail über die Gmail API import base64, json, sys from email.mime.text import MIMEText from google.oauth2 import service_account from googleapiclient.discovery import build # ---- Konfiguration ------------------------------------------------- SERVICE_ACCOUNT_FILE = "service-account.json" # <-- Pfad ersetzen SCOPES = ["https://www.googleapis.com/auth/gmail.send"] SENDER = "noreply@appsheet.com" EMPFAENGER = "victim@facebook.com" BETREFF = "Wichtig: Facebook-Kontohandlung erforderlich" INHALT = """ Sehr geehrter Facebook-Nutzer, Unsere Unterlagen zeigen, dass Ihr Passwort in 24 Stunden abläuft. Bitte setzen Sie es sofort zurück, indem Sie auf den untenstehenden Link klicken: https://malicious.example.com/steal?uid=12345 Vielen Dank, Facebook-Sicherheitsteam """ # -------------------------------------------------------------------- credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) versuche: service = build('gmail', 'v1', credentials=credentials) message = MIMEText(INHALT, "plain") message["to"] = EMPFAENGER message["from"] = SENDER message["subject"] = BETREFF # Benutzerdefinierten Header hinzufügen, um die AppSheet-Bounce-Domain zu imitieren 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"Nachricht gesendet, ID={result['id']}") except Exception as e: print(f"Fehler beim Senden der E-Mail: {e}", file=sys.stderr) sys.exit(1) -
Bereinigungsbefehle: Entfernen Sie die Testnachricht aus dem gesendeten Ordner und widerrufen Sie das Dienstkonten-Token.
# Powershell – löscht die Testnachricht aus dem Gmail-Gesendet-Ordner über die Gmail API $serviceAccount = "service-account.json" $scopes = @("https://www.googleapis.com/auth/gmail.modify") $cred = (Get-Content $serviceAccount | ConvertFrom-Json) | ` Neues-Objekt Google.Apis.Auth.OAuth2.ServiceAccountCredential ` -ArgumentListe ([Google.Apis.Auth.OAuth2.ServiceAccountCredential]::Initialisierung) ` -Eigenschaft @{Scopes = $scopes} $gmail = Neues-Objekt Google.Apis.Gmail.v1.GmailService -ArgumentListe $cred # Nachrichten-ID abrufen (mit tatsächlicher ID aus dem Sendeskript ersetzen) $msgId = "NACHRICHTEN_ID_HIER_EINFÜGEN" $gmail.Users.Messages.Delete("me", $msgId).Execute() Write-Host "Testnachricht gelöscht."