SOC Prime Bias: Critico

15 May 2026 13:51 UTC

FrostyNeighbor: Nuove Malizie e Minacce Digitali

Author Photo
SOC Prime Team linkedin icon Segui
FrostyNeighbor: Nuove Malizie e Minacce Digitali
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

ESET riferisce che il gruppo APT FrostyNeighbor, noto anche come Ghostwriter, ha ripreso gli attacchi contro le organizzazioni governative ucraine utilizzando PDF di spear-phishing che consegnano un downloader basato su JavaScript noto come PicassoLoader, che alla fine distribuisce un beacon Cobalt Strike. La campagna si basa su una convalida basata sulla geolocalizzazione, persistenza tramite task pianificati e tecniche di dropping multipli di file per ridurre la visibilità ed eludere la rilevazione. La sua infrastruttura è posizionata dietro Cloudflare e utilizza diversi needbinding.icu domini.

Indagine

I ricercatori hanno ricostruito l’intera catena di attacco, a partire dall’esca del PDF dannoso, passando per il dropper JavaScript e il downloader PicassoLoader, e concludendo con la consegna del payload Cobalt Strike. Hanno estratto indicatori tra cui nomi di file, modifiche al registro e URL di comando e controllo, quindi li hanno collegati alle tecniche conosciute di FrostyNeighbor. Il rapporto evidenzia anche lo sfruttamento di CVE-2023-38831 in WinRAR e CVE-2024-42009 in Roundcube.

Mitigazione

Le organizzazioni dovrebbero bloccare i tipi di allegati sospetti, imporre controlli rigorosi sull’esecuzione di macro e script, monitorare i task pianificati creati da binari sconosciuti e limitare il traffico HTTPS in uscita verso domini noti malevoli. Le vulnerabilità citate dovrebbero essere prontamente corrette, e le restrizioni sul minimo privilegio dovrebbero essere applicate all’uso di rundll32.exe uso.

Risposta

Se vengono rilevati indicatori correlati, isolare immediatamente il sistema colpito, raccogliere artefatti forensi e cercare sia il beacon Cobalt Strike che i componenti PicassoLoader. Resettare qualsiasi credenziale esposta e rivedere le voci dei task pianificati e delle chiavi Run per segni di persistenza.

Flusso di Attacco

Esecuzione di Simulazione

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

Motivazione: Questa sezione descrive l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente i TTP identificati e mirano a generare la telemetria esatta attesa dalla logica di rilevamento.

  • Narrazione e Comandi dell’Attacco:

    L’avversario ha ottenuto un punto d’appoggio sull’host della vittima e desidera distribuire un beacon Cobalt Strike senza essere rilevato. Essi:

    1. Copia rundll32.exe in una posizione non standard (C:ProgramDataTemprundll32.exe) per eludere gli allarmi della whitelist semplice.
    2. Deposita la DLL dannosa (ViberPC.dll) in %ProgramData%. Questa DLL contiene il payload Cobalt Strike bootstrappato.
    3. Esegue la copia rundll32.exe con una riga di comando che carica la DLL dannosa (%ProgramData%ViberPC.dll).
    4. Deposita due file JavaScript (53_7.03.2026_R.js and Update.js) che contengono JScript che contatta il server C2 e finalizza l’installazione del beacon.
    5. Esegue i file JavaScript usando cscript.exe, causando la creazione di processi di cui Immagine termina con .js e di cui CommandLine contiene esattamente i nomi dei file.

    Questi passaggi generano gli eventi di creazione dei processi di Sysmon esatti corrispondenti a selezione1, selezione2e selezione3 nella regola Sigma.

  • Script Test di Regressione:

    # Simulazione Distribuzione Cobalt Strike FrostyNeighbor
    # -------------------------------------------------
    # 1. Prepara i percorsi
    $tempDir = "$env:ProgramDataTemp"
    $rundllCopy = Join-Path $tempDir "rundll32.exe"
    $malDll    = "$env:ProgramDataViberPC.dll"
    $js1       = "$env:ProgramData53_7.03.2026_R.js"
    $js2       = "$env:ProgramDataUpdate.js"
    
    # 2. Assicurati che la directory temp esista
    New-Item -Path $tempDir -ItemType Directory -Force | Out-Null
    
    # 3. Copia rundll32.exe in una posizione non standard
    Copy-Item -Path "$env:SystemRootSystem32rundll32.exe" -Destination $rundllCopy -Force
    
    # 4. Crea una DLL dannosa fittizia (nel vero attacco questo sarebbe il payload)
    $dummyDll = [IO.File]::ReadAllBytes("$env:SystemRootSystem32driversetchosts") # binario sostitutivo
    [IO.File]::WriteAllBytes($malDll, $dummyDll)
    
    # 5. Esegui la rundll32 copiata con la DLL dannosa
    Start-Process -FilePath $rundllCopy -ArgumentList "`"$malDll`"" -WindowStyle Hidden
    
    # 6. Deposita i payload JavaScript
    $jsContent = @"
    // JScript semplice che si connette a un endpoint C2 (simulato)
    var xhr = new ActiveXObject("MSXML2.XMLHTTP");
    xhr.open("GET", "http://127.0.0.1:8080/beacon", false);
    xhr.send();
    "@
    
    Set-Content -Path $js1 -Value $jsContent -Encoding ASCII
    Set-Content -Path $js2 -Value $jsContent -Encoding ASCII
    
    # 7. Esegui i file JavaScript tramite cscript (questo crea processi con immagine .js)
    Start-Process -FilePath "cscript.exe" -ArgumentList "//NoLogo `"$js1`"" -WindowStyle Hidden
    Start-Process -FilePath "cscript.exe" -ArgumentList "//NoLogo `"$js2`"" -WindowStyle Hidden
    
    # 8. Pausa per permettere l'ingestione del SIEM
    Start-Sleep -Seconds 15
  • Comandi di Pulizia:

    # Pulizia dopo la simulazione
    $percorsi = @(
        "$env:ProgramDataViberPC.dll",
        "$env:ProgramData53_7.03.2026_R.js",
        "$env:ProgramDataUpdate.js",
        "$env:ProgramDataTemprundll32.exe"
    )
    foreach ($p in $percorsi) {
        if (Test-Path $p) { Remove-Item -Path $p -Force }
    }
    # Interrompi eventualmente i processi cscript rimanenti avviati dal test
    Get-Process -Name cscript -ErrorAction SilentlyContinue | Stop-Process -Force