Арсенал ESET Research FishMonger розширено: SprySOCKS для Windows
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Дослідники ESET виявили два нові варіанти бекдору SprySOCKS для Windows, названі WIN_DRV і WIN_PLUS, які пов’язані з групою загроз FishMonger. Версія WIN_DRV використовує драйвер ядра для підвищеної непомітності, включаючи можливість приховати мережеві з’єднання, процеси та файли. Обидва варіанти підтримують кілька комунікаційних протоколів і надають широкий набір команд для управління системою та крадіжки даних.
Розслідування
Розслідування спиралося на зразки шкідливих програм, виявлені через VirusTotal та телеметрію ESET, що виявляє активність у період з 2023 по 2024 рік. Дослідники проаналізували повні ланцюжки виконання, включаючи DLL-завантаження, завантаження драйверів ядра за допомогою DriverLoader та RawWNPF, а також ін’єкцію процесу з використанням технік допельгенгінгу. Дослідження також виявило шаблони командно-контрольного спілкування та жорстко закодовані ключі шифрування, які спільні для декількох компонентів.
Пом’якшення
Організації повинні пріоритетно оновлювати додатки, орієнтовані на інтернет, щоб зменшити ризик початкового компрометації через вразливості N-day. Важливими є посилене виконання підпису драйверів і моніторинг несанкціонованої інсталяції драйверів ядра. Захисники також повинні стежити за підозрілими запланованими завданнями, змінами в реєстрі в рамках параметрів виконання файлів зображень та незвичними реєстраціями процесорів друку.
Відповідь
Якщо ці загрози виявлено, уражені системи слід негайно ізолювати, щоб зупинити подальше бокове переміщення або крадіжку даних. Розслідувачі повинні провести детальний судовий аналіз, щоб визначити оригінальний вектор вторгнення та повний обсяг компрометації, з особливою увагою до рівня збереження ядра. Мережеві журнали повинні бути перевірені на спілкування з відомою командно-контрольною інфраструктурою, а системні зміни, такі як нові служби або змінені ключі реєстру, повинні бути перевірені.
graph TB %% Визначення класів classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef defense fill:#ffcc99 %% Початковий доступ action_exploit[“<b>Дія</b> – <b>T1190 Exploit Public-Facing Application</b><br/>Опис: Використання N-day вразливостей<br/>у публічно доступних серверах для отримання початкового доступу.”] class action_exploit action %% Розгалуження варіантів op_variant((“AND”)) class op_variant tool %% Шлях варіанту WIN_DRV action_win_drv_persist[“<b>Дія</b> – <b>T1546.012 Event Triggered Execution: IFEO</b><br/>Опис: Реєстрація шкідливого відлагоджувача для vds.exe<br/>Інструмент: скрипт klelam00007.bat”] class action_win_drv_persist action action_win_drv_dll[“<b>Дія</b> – <b>T1574.001 Hijack Execution Flow: DLL</b><br/>Опис: DLL side-loading через легітимний підписаний виконуваний файл<br/>Інструмент: ApphostRegistrationVerifier.exe завантажує tpsvcloc.dll”] class action_win_drv_dll action malware_loader[“<b>Шкідливе ПЗ</b>: Loader<br/>Опис: Використовує Process Doppelgänging<br/>для виконання ін’єкції.”] class malware_loader malware action_reflective[“<b>Дія</b> – <b>T1620 Reflective Code Loading</b><br/>Опис: Ін’єкція shellcode бекдора SprySOCKS<br/>через Process Doppelgänging.”] class action_reflective action process_svchost[“<b>Процес</b>: svchost.exe<br/>Опис: Цільовий процес для<br/>ін’єкції shellcode.”] class process_svchost process malware_sprysocks[“<b>Шкідливе ПЗ</b>: SprySOCKS Backdoor<br/>Опис: Підтримує C2-зв’язок<br/>та виконує збір інформації.”] class malware_sprysocks malware tool_driver_loader[“<b>Інструмент</b>: DriverLoader<br/>Опис: Розгортає драйвер<br/>на рівні ядра.”] class tool_driver_loader tool malware_rootkit[“<b>Шкідливе ПЗ</b>: RawWNPF Kernel Driver<br/>Опис: Виконує функції руткіта (T1014)<br/>для приховування процесів, файлів і ключів реєстру.”] class malware_rootkit malware action_port_knocking[“<b>Дія</b> – <b>T1205.001 Traffic Signaling: Port Knocking</b><br/>Опис: Перенаправлення спеціально сформованого TCP-трафіку<br/>через Windows Filtering Platform.”] class action_port_knocking action %% Шлях варіанту WIN_PLUS action_win_plus_persist[“<b>Дія</b> – <b>T1547.012 Boot or Logon Autostart Execution: Print Processors</b><br/>Опис: Встановлення VSPMsg.dll як<br/>Print Processor для забезпечення закріплення.”] class action_win_plus_persist action %% Післяексплуатаційні дії та збір даних action_keylogging[“<b>Дія</b> – <b>T1056.001 Input Capture: Keylogging</b><br/>Опис: Перехоплення натискань клавіш,<br/>даних буфера обміну та заголовків вікон.”] class action_keylogging action action_c2[“<b>Дія</b> – <b>T1132.001 Command and Control: Protocol</b><br/>Опис: Зв’язок через TCP, UDP та WebSocket<br/>із використанням AES-128 шифрування.”] class action_c2 action action_defense_impair[“<b>Дія</b> – <b>T1562.004 Defense Impairment: Disable or Modify Tools</b><br/>Опис: Зміна правил Windows Firewall<br/>за допомогою netsh.exe для дозволу трафіку.”] class action_defense_impair action %% З’єднання action_exploit –>|призводить_до| op_variant %% Потік WIN_DRV op_variant –>|шлях_варіанту| action_win_drv_persist action_win_drv_persist –>|призводить_до| action_win_drv_dll action_win_drv_dll –>|завантажує| malware_loader malware_loader –>|виконує| action_reflective action_reflective –>|інжектує_у| process_svchost process_svchost –>|запускає| malware_sprysocks malware_sprysocks –>|розгортає| tool_driver_loader tool_driver_loader –>|відображає| malware_rootkit malware_rootkit –>|забезпечує| action_port_knocking %% Потік WIN_PLUS op_variant –>|шлях_варіанту| action_win_plus_persist action_win_plus_persist –>|використовує| action_reflective %% Спільні післяексплуатаційні дії malware_sprysocks –>|виконує| action_keylogging malware_sprysocks –>|спілкується_через| action_c2 malware_sprysocks –>|виконує| action_defense_impair %% Логічне з’єднання action_defense_impair –>|активує| action_c2
Потік атак
Виявлення
Можливе використання Schtasks або AT для збереження (через командний рядок)
Переглянути
Можливе використання PING для відкладеного виконання (через командний рядок)
Переглянути
Підозрілі модифікації брандмауера через CLI (через командний рядок)
Переглянути
Мережева активність бекдору FishMonger SprySOCKS [Підключення до мережі Windows]
Переглянути
Виявлення підозрілих svchost.exe і пов’язаних активностей [Створення процесу Windows]
Переглянути
## Виконання симуляції
Передумова: попередня перевірка телеметрії та базового рівня повинна пройти.
Підстава: цей розділ детально описує точне виконання техніки супротивника (TTP), розробленої для того, щоб викликати правило виявлення. Команди та наратив ПОВИННІ безпосередньо відображати виявлені TTP і прагнути створити точну телеметрію, що очікується логікою виявлення. Абстрактні або несумісні приклади призведуть до помилкового діагнозу.
-
Наратив атаки і команди: Супротивник успішно впровадив бекдор SprySOCKS на скомпрометованому хості Windows. Щоб встановити командно-контрольний канал, шкідлива програма відкриває сокет, що слухає, на порті 53781. Щоб забезпечити, що комунікація буде визнана їх власним C2 сервером, шкідлива програма вприскує магічне шістнадцяткове значення
0xACACBCBCв початкові пакети рукостискання. Це імітує специфічну поведінку протоколу групи FishMonger для забезпечення надійної комунікації через перехоплений або відхилений трафік. -
Скрипт регресійного тестування:
# Скрипт симуляції: Генерація мережевих артефактів SprySOCKS # Цей скрипт імітує мережеву поведінку бекдору SprySOCKS. $TargetPort = 53781 $MagicValue = [byte[]] @(0xAC, 0xAC, 0xBC, 0xBC) $Listener = [System.Net.Sockets.TcpListener]$TargetPort try { Write-Host "[+] Запуск прослуховувача на порту $TargetPort..." -ForegroundColor Cyan $Listener.Start() $Client = $Listener.AcceptTcpClient() $Stream = $Client.GetStream() Write-Host "[+] Підключення встановлено. Надсилання магічного значення $MagicValue..." -ForegroundColor Yellow # Вставка магічного значення у потік для виклику логіки 'selection1' $Stream.Write($MagicValue, 0, $MagicValue.Length) Start-Sleep -Seconds 5 } catch { Write-Error "[-] Симуляція не вдалася: $($_.Exception.Message)" } finally { Write-Host "[+] Очищення підключень..." -ForegroundColor Cyan $Stream.Close() $Client.Close() $Listener.Stop() } -
Команди очищення:
# Переконатися, що не залишилося активних несанкціонованих прослуховувачів Get-NetTCPConnection -LocalPort 53781 -ErrorAction SilentlyContinue | Remove-NetTCPConnection Write-Host "[+] Очищення завершено." -ForegroundColor Green