SOC Prime Bias: Critico

05 Mag 2026 17:05

“AccountDumpling” Caccia alla ondata di phishing inviata da Google che compromette oltre 30.000 account Facebook

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso SOC Prime linkedin icon Segui
“AccountDumpling” Caccia alla ondata di phishing inviata da Google che compromette oltre 30.000 account Facebook
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

Un’operazione di phishing sfrutta Google AppSheet per inviare email dall’aspetto legittimo che attirano le vittime verso pagine dannose ospitate su Netlify e Vercel. Queste pagine raccolgono tutti i dettagli per il recupero dell’account Facebook e li inoltrano a bot Telegram in tempo reale. La campagna è stata collegata a un individuo con base in Vietnam e ha già portato alla compromissione di oltre 30.000 account Facebook. Gli account rubati vengono poi monetizzati tramite un negozio che pubblicizza servizi di recupero account.

Indagine

I ricercatori di Guardio hanno ricostruito la catena di consegna risalendo ad AppSheet, identificato quattro cluster separati di phishing e raccolto centinaia di URL di hosting dannosi. Hanno anche estratto token di bot Telegram e ID di chat, collegato l’infrastruttura a un PDF Canva contenente un nome vietnamita e analizzato la distribuzione geografica delle vittime. La loro ricerca ha rivelato un ecosistema modulare in cui un gruppo sviluppa i kit di phishing, un altro conduce le campagne e un terzo trae profitto dall’accesso agli account rubati.

Mitigazione

I difensori dovrebbero bloccare i sottodomini Netlify e Vercel noti come dannosi, monitorare le email generate da AppSheet che contengono collegamenti call-to-action sospetti e rilevare le connessioni in uscita verso gli endpoint API dei bot Telegram. Anche le organizzazioni dovrebbero rafforzare la validazione attorno ai flussi di accesso e recupero di Facebook e richiedere l’autenticazione per azioni di recupero sensibili. L’utente deve essere ricordato che le email inviate tramite servizi Google fidati possono comunque far parte di un tentativo di phishing.

Risposta

I team di sicurezza dovrebbero allertare sulle email provenienti da noreply@appsheet.com che includono collegamenti a Netlify, Vercel o shorten.tv domini sconosciuti. Le ricerche DNS per quei domini dovrebbero essere correlate con il traffico dei bot Telegram per identificare possibili esfiltrazioni. Se le credenziali sono state rubate, gli utenti colpiti devono essere obbligati a reimpostare le password e qualsiasi account Facebook compromesso deve essere revisionato immediatamente. Gli indicatori rilevanti dovrebbero essere anche condivisi con i SOC e i canali di intelligence su minacce esterni.

"graph TB %% Class definitions classDef action fill:#99ccff %% Nodes action_phishing["<b>Azione</b> – <b>T1566 Phishing</b><br/>Phishing tramite Google AppSheet per ingannare gli utenti a rivelare credenziali o cliccare su link dannosi."] class action_phishing action action_cloud_abuse["<b>Azione</b> – <b>T1496.004 Appropriazione di risorse: Appropriazione di servizi cloud</b><br/>Sfruttamento di un servizio di email cloud per inviare email dannose autentiche.<br/><b>Tecnica aggiuntiva</b> – <b>T1021.007 Servizi Remoti: Servizi Cloud</b><br/>Uso di servizi remoti cloud legittimi per svolgere attività dannose."] class action_cloud_abuse action action_credential_harvest["<b>Azione</b> – <b>T1606 Creazione di credenziali Web Forge</b><br/>Creazione di pagine di harvesting credenziali ospitate su Netlify/Vercel.<br/><b>Tecnica aggiuntiva</b> – <b>T1212 Sfruttamento per l’accesso alle credenziali</b><br/>Sfruttamento di piattaforme web per catturare credenziali utente."] class action_credential_harvest action action_gather_info["<b>Azione</b> – <b>T1589 Raccolta Informazioni di Identità della Vittima</b><br/>Raccolta di dati di identità della vittima.<br/><b>Tecniche aggiuntive</b> – <b>T1591.002 Raccolta di Informazioni sull’Org Vittima: Relazioni d’affari</b><br/>Raccolta di dettagli sulle relazioni d’affari.<br/><b>Tecnica aggiuntiva</b> – <b>T1591.004 Raccolta di Informazioni sull’Org Vittima: Identificazione Ruoli</b><br/>Identificazione dei ruoli delle vittime all’interno dell’organizzazione."] class action_gather_info action action_exfil_telegram["<b>Azione</b> – <b>T1041 Esfiltrazione attraverso il canale C2</b><br/>Esfiltrazione di dati tramite canale C2 del bot Telegram.<br/><b>Tecnica aggiuntiva</b> – <b>T1552.001 Credenziali non sicure: Credenziali nei File</b><br/>Raccolta di credenziali archiviate nei file."] class action_exfil_telegram action action_facebook_access["<b>Azione</b> – <b>T1078 Account Validi</b><br/>Uso di account validi rubati per accedere alle risorse aziendali di Facebook."] class action_facebook_access action %% Connections action_phishing –>|collegare a| action_cloud_abuse action_cloud_abuse –>|collegare a| action_credential_harvest action_credential_harvest –>|collegare a| action_gather_info action_gather_info –>|collegare a| action_exfil_telegram action_exfil_telegram –>|collegare a| action_facebook_access "

Flusso di Attacco

Esecuzione della Simulazione

Prerequisito: Il Controllo Pre-volo di Telemetria e Baseline deve essere superato.

Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno alla diagnosi errata.

  • Narrazione e Comandi dell’Attacco:

    1. Ricognizione: L’attaccante raccoglie un elenco di indirizzi email di dipendenti di Facebook da fonti pubbliche.

    2. Impostazione dell’Abuso di AppSheet: Utilizzando un account Google Workspace compromesso, l’attaccante crea un’app AppSheet che invia notifiche email. L’app è configurata per utilizzare il dominio bounce predefinito di AppSheet appsheet.bounces.google.com.

    3. Payload di Phishing: L’email di notifica contiene un’esca (“La tua password di Facebook sta per scadere – reimposta ora”) con un link dannoso che punta a una pagina di raccolta credenziali.

    4. Lancio Campagna: L’attaccante attiva il flusso di lavoro di AppSheet, facendo sì che la piattaforma invii l’email creata all’elenco di destinazione. I metadati delle email risultanti coincidono con:

      • sender_email = noreply@appsheet.com
      • delivery_domain = appsheet.bounces.google.com
    5. Risultato: La regola SIEM valuta il log in entrata, corrisponde entrambi i campi e genera un avviso.

  • Script di Test di Regolazione: Lo script seguente automatizza i passaggi 2‑4 utilizzando l’API di Google Apps Script per emulare una notifica in stile AppSheet. Richiede un JSON di account di servizio con il permesso di inviare email tramite l’API di Gmail.

    # python 3.x – inviare un'email in stile phishing via Gmail API
    import base64, json, sys
    from email.mime.text import MIMEText
    from google.oauth2 import service_account
    from googleapiclient.discovery import build
    
    # ---- Configurazione -------------------------------------------------
    SERVICE_ACCOUNT_FILE = "service-account.json"   # <-- sostituire con il percorso
    SCOPES = ["https://www.googleapis.com/auth/gmail.send"]
    SENDER = "noreply@appsheet.com"
    RECIPIENT = "victim@facebook.com"
    SUBJECT = "Importante: Azione Richiesta sul tuo Account Facebook"
    BODY = """
    Caro Utente Facebook,
    
    I nostri registri indicano che la tua password scadrà in 24 ore.
    Si prega di reimpostarla immediatamente cliccando sul link sottostante:
    
    https://malicious.example.com/steal?uid=12345
    
    Grazie,
    Team Sicurezza 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
        # Aggiungere intestazione personalizzata per imitare il dominio di rimbalzo di 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"Messaggio inviato, ID={result['id']}")
    except Exception as e:
        print(f"Errore nell'invio dell'email: {e}", file=sys.stderr)
        sys.exit(1)
  • Comandi di Pulizia: Rimuovere il messaggio di test dalla cartella di posta inviata e revocare il token di account di servizio.

    # PowerShell – cancella il messaggio di test dalla cartella Posta Inviata di Gmail usando l'API di 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
    
    # Recupera l'ID del messaggio (sostituire con ID reale dallo script di invio)
    $msgId = "INSERT_MESSAGE_ID_HERE"
    $gmail.Users.Messages.Delete("me", $msgId).Execute()
    Write-Host "Email di test cancellata."