SOC Prime Bias: Critico

12 Gen 2026 15:59

BlueDelta (APT28) Phishing delle Credenziali tramite Hosting Gratuito e Ngrok

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
BlueDelta (APT28) Phishing delle Credenziali tramite Hosting Gratuito e Ngrok
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sintesi

BlueDelta, un gruppo affiliato al GRU noto anche come APT28/Fancy Bear, ha condotto molteplici campagne di raccolta credenziali tra febbraio e settembre 2025. Le campagne hanno utilizzato servizi di hosting e tunneling gratuiti per ospitare pagine di accesso falsificate di Outlook, Google e Sophos VPN ed esfiltrare le credenziali acquisite. Gli esche includevano documenti PDF legittimi e un linguaggio specifico per la regione per aumentare la credibilitĂ . L’operazione ha preso di mira enti energetici, di ricerca nucleare, governativi e accademici in Turchia, Macedonia del Nord e Uzbekistan.

Indagine

Il gruppo Insikt di Recorded Future ha raccolto oltre una dozzina di pagine di phishing ospitate su servizi quali Webhook.site, InfinityFree, Byet Internet Services e ngrok. JavaScript sulle pagine ha acquisito nomi utente, password e identificatori delle vittime, inviato beacon a webhook controllati dagli attaccanti, e successivamente ha reindirizzato le vittime ai portali autentici. Diverse varianti hanno riutilizzato codice e modificato i nomi delle variabili per ottimizzare la distribuzione. L’infrastruttura era di breve durata e ha sfruttato link accorciati come ShortURL.at.

Mitigazione

Blocca i domini noti di hosting e tunneling gratuiti, monitora il traffico in uscita verso i servizi di webhook, e applica l’autenticazione a due fattori su tutti gli account esposti esternamente. Educa gli utenti sulle pagine di phishing che imitano OWA, Google e portali VPN, specialmente quando sono allegati esche PDF. Implementa il filtraggio di rete per gli URL maligni noti e applica controlli di sicurezza delle email per rilevare link PDF sospetti.

Risposta

Allerta gli analisti SOC quando si osservano HTTP POST verso endpoint noti di webhook e quando vengono caricate pagine di raccolta credenziali. Quarantena la pagina malevola, isola gli account utente interessati, forza il reset delle password e rivedi i log per movimenti laterali. Conduci una caccia alle minacce per altre pagine che utilizzano la stessa infrastruttura e aggiorna di conseguenza le liste di blocco.

“graph TB %% Class Definitions classDef action fill:#99ccff classDef service fill:#ffcc99 classDef tool fill:#cccccc %% Nodes u2013 Reconnaissance recon_info[“<b>Azione</b> – <b>T1591 Raccogliere Informazioni sull’Organizzazione della Vittima</b>: Raccogliere indirizzi email pubblici e dettagli sull’organizzazione dei ricercatori target.”] class recon_info action recon_roles[“<b>Azione</b> – <b>T1591.004 Identificare Ruoli</b>: Determinare funzioni lavorative specifiche come analisti energetici, studiosi di think-tank e personale di sicurezza.”] class recon_roles action %% Nodes u2013 Resource Development resource_dev[“<b>Azione</b> – <b>T1583.006 Acquisire Servizi Web di Infrastruttura</b>: Registrare domini usa e getta e utilizzare servizi di hosting/tunneling gratuiti (Webhook.site, InfinityFree, Byet, ngrok, shorturl.at).”] class resource_dev service %% Nodes u2013 Phishing phishing[“<b>Azione</b> – <b>T1566.001 Spearphishing Allegato</b>: Invia email confezionata contenente un link malevolo abbreviato che reindirizza attraverso diversi URL.”] class phishing action %% Nodes u2013 Obfuscation html_smuggling[“<b>Azione</b> – <b>T1027.006 HTML Smuggling</b>: Il primo reindirizzamento serve HTML che brevemente incorpora un’esca PDF legittima tramite meta-refresh.”] class html_smuggling action %% Nodes u2013 Credential Harvesting credential_forge[“<b>Azione</b> – <b>T1606 Forgiare Credenziali Web / T1056.003 Cattura di Portale Web</b>: Pagine di accesso falsificate (OWA, Google, Sophos VPN) catturano credenziali con JavaScript.”] class credential_forge tool %% Nodes u2013 Input Capture Beacon web_capture_beacon[“<b>Azione</b> – <b>T1056.003 Cattura di Portale Web</b>: JavaScript invia segnale di pagina aperta e credenziali inserite al webhook dell’attaccante.”] class web_capture_beacon tool %% Nodes u2013 Exfiltration exfil_webhook[“<b>Azione</b> – <b>T1567.004 Esfiltrazione via Webhook</b>: Inviare dati catturati come JSON al webhook controllato dall’attaccante (webhook.site, ngrok-free.app).”] class exfil_webhook service %% Nodes u2013 Command and Control c2_webprotocol[“<b>Azione</b> – <b>T1071.001 Protocolli Strato Applicazione Web</b>: Usare traffico web standard per la comunicazione C2.”] class c2_webprotocol service c2_webservice[“<b>Azione</b> – <b>T1102.002 Comunicazione Bidirezionale Servizio Web</b>: Mantenere un canale bidirezionale persistente tramite il servizio di webhook.”] class c2_webservice service %% Nodes u2013 Tunneling protocol_tunnel[“<b>Azione</b> – <b>T1572 Tunneling Protocollo</b>: Sfruttare i tunnel di ngrok per esporre gli endpoint di esfiltrazione locali su internet.”] class protocol_tunnel tool %% Nodes u2013 Post-Esfiltrazione Reindirizzamento post_redirect[“<b>Azione</b> – Post-Esfiltrazione Reindirizzamento: Dopo la cattura dei dati, le vittime vengono inviate al documento legittimo originale o al portale VPN per evitare sospetti.”] class post_redirect action %% Connections u2013 Flow recon_info u002du002d>|leads_to| recon_roles recon_roles u002du002d>|leads_to| resource_dev resource_dev u002du002d>|enables| phishing phishing u002du002d>|triggers| html_smuggling html_smuggling u002du002d>|delivers| credential_forge credential_forge u002du002d>|captures| web_capture_beacon web_capture_beacon u002du002d>|sends_to| exfil_webhook exfil_webhook u002du002d>|supports| c2_webprotocol c2_webprotocol u002du002d>|uses| c2_webservice c2_webservice u002du002d>|relies_on| protocol_tunnel protocol_tunnel u002du002d>|facilitates| post_redirect “

Flusso di Attacco

Esecuzione di Simulazione

Prerequisito: Il controllo pre-volo di Telemetria e Base deve essere superato.

Razionale: 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 le TTP identificate e mirare a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a una diagnosi errata.

  • Narrativa dell’Attacco & Comandi:

    1. Consegna iniziale del phishing: Un attaccante invia un’email di phishing contenente un URL corto che reindirizza al malevolo webhook.site pagina.
    2. Interazione della vittima: La vittima clicca sul link; il browser segue il reindirizzamento e emette una richiesta HTTP GET richiesta a https://webhook.site/e8ae3bbd-ab02-46b7-b84c-f5f4baa5d7c7.
    3. Pagina di cattura delle credenziali: La pagina ospita JavaScript che ruba le credenziali inserite e le invia tramite POST allo stesso URL del webhook, ma il proxy registra solo la richiesta iniziale GET, sufficiente ad attivare la regola.
    4. Per il test, emuliamo la vittima utilizzando il Invoke-WebRequest di PowerShell per richiedere l’esatto URL malevolo, riproducendo la stessa voce del log proxy.
  • Script di Test di Regressione:

    # -------------------------------------------------
    # Simulazione di Accesso al Sito Webhook BlueDelta (TC-20260109-9X3BZ)
    # -------------------------------------------------
    $maliciousUrls = @(
        "https://webhook.site/e8ae3bbd-ab02-46b7-b84c-f5f4baa5d7c7",
        "https://webhook.site/3791f8c0-1308-4c5b-9c82-0dc416aeb9c4"
    )
    
    foreach ($url in $maliciousUrls) {
        try {
            Write-Host "Richiesta URL malevolo: $url"
            Invoke-WebRequest -Uri $url -UseBasicParsing -Method GET -TimeoutSec 10 | Out-Null
            Write-Host "âś… Richiesta inviata."
        } catch {
            Write-Warning "Richiesta a $url fallita: $_"
        }
    }
  • Comandi di Pulizia:

    # Svuota la cache del proxy (se applicabile) per evitare voci residue
    net stop "Squid Service"
    net start "Squid Service"
    
    # Rimuove eventuali file temporanei creati dallo script (nessuno in questo caso)
    Write-Host "Pulizia completata."