Дослідження ESET GopherWhisper: Повна нора шкідливих програм
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
ESET ідентифікувала раніше невідому групу APT, афілійовану з Китаєм, під назвою GopherWhisper, яка націлена на урядову організацію в Монголії. Зловмисник використовує спеціальну екосистему шкідливого ПЗ, побудовану навколо бэкдорів, загрузчиків і інжекторів на Go та C++, зловживаючи при цьому законними хмарними платформами для командного управління та управління. Його інструментарій, включаючи LaxGopher, RatGopher і BoxOfFriends, спілкується через такі сервіси, як Discord, Slack, Microsoft Outlook і file.io. Дослідники вперше виявили кампанію в січні 2025 року.
Розслідування
Аналіз ESET розкрив більш широкий набір інструментів групи, задокументував її методи ін’єкції та ідентифікував токени API Slack і Discord, використані в операції. Дослідники також витягли тисячі повідомлень командного і управлінського характеру та чернетки електронних листів Outlook, пов’язаних із кампанією. Їхнє розслідування відображало підтримуючу інфраструктуру і показало, як зловмисники використовують довірені онлайн-сервіси для приховування комунікацій та ексфільтрації даних.
Мітігація
Захисники повинні контролювати несанкціоновану активність API Slack, Discord та Outlook, блокувати підозрілі завантаження на file.io, і забезпечити суворий контроль за поведінкою завантаження DLL. Команди з безпеки також повинні виявляти аномальну активність ін’єкцій у svchost.exe та досліджувати невідомі бінарні файли на основі Go, які працюють у середовищі.
Відповідь
Якщо виявлено активність GopherWhisper, негайно ізолюйте уражену систему, завершіть шкідливі процеси, видаліть інжектовані DLL, скиньте скомпрометовані сервісні облікові записи та відмініть будь-які відкриті API токени. Слід провести повне судово-медичне розслідування, а також загрозливе полювання по всій мережі, щоб ідентифікувати пов’язані артефакти або додатково скомпрометовані хости.
"graph TB %% Class definitions classDef malware fill:#ffcccc classDef process fill:#c2f0c2 classDef file fill:#ffd9b3 classDef technique fill:#e6e6ff classDef service fill:#ffffcc classDef network fill:#d9d9d9 %% Nodes node_initial_loader["<b>Шкідливе ПЗ</b> – <b>JabGopher Loader</b><br/><b>Дія</b>: Створити svchost.exe та інжектувати LaxGopher бэкдор"] class node_initial_loader malware node_svc_host["<b>Процес</b> – svchost.exe"] class node_svc_host process node_laxgopher["<b>Шкідливе ПЗ</b> – <b>LaxGopher</b> бэкдор (DLL)"] class node_laxgopher malware node_whisper_dll["<b>Файл</b> – whisper.dll (маскування)"] class node_whisper_dll file node_process_injection["<b>Техніка</b> – T1055 Ін’єкція процесу<br/><b>Опис</b>: Ін’єктувати шкідливий код в активний процес"] class node_process_injection technique node_reflective_loading["<b>Техніка</b> – T1620 Відображене завантаження коду<br/><b>Опис</b>: Завантажити код у пам’ять без використання стандартного завантажувача ОС"] class node_reflective_loading technique node_masquerading["<b>Техніка</b> – T1036 Маскування<br/><b>Опис</b>: Перейменувати файли, щоб вони виглядали легітимними"] class node_masquerading technique node_frienddelivery["<b>Шкідливе ПЗ</b> – <b>FriendDelivery DLL</b>"] class node_frienddelivery malware node_boxoffriends["<b>Шкідливе ПЗ</b> – <b>BoxOfFriends</b> бэкдор"] class node_boxoffriends malware node_go_backdoor["<b>Шкідливе ПЗ</b> – Шкідливі програми на основі Go (RatGopher, LaxGopher)"] class node_go_backdoor malware node_c2_slack["<b>Сервіс</b> – Slack (веб-сервіс)"] class node_c2_slack service node_c2_discord["<b>Сервіс</b> – Discord (веб-сервіс)"] class node_c2_discord service node_c2_outlook["<b>Сервіс</b> – Microsoft 365 Outlook Mail REST API"] class node_c2_outlook service node_tech_c2_web["<b>Техніка</b> – T1102.002 Двостороння комунікація через веб-сервіс<br/><b>Опис</b>: Використання легітимних веб-сервісів для C2"] class node_tech_c2_web technique node_tech_mail["<b>Техніка</b> – T1071.003 Протоколи пошти<br/><b>Опис</b>: Використання поштових протоколів для C2"] class node_tech_mail technique node_remote_access["<b>Техніка</b> – T1219 Інструменти дистанційного доступу<br/><b>Опис</b>: Надання можливості виконання команд віддалено"] class node_remote_access technique node_compactgopher["<b>Шкідливе ПЗ</b> – CompactGopher"] class node_compactgopher malware node_archive["<b>Техніка</b> – T1560.001 Архівація зібраних даних за допомогою утиліти<br/><b>Опис</b>: Стиснення даних перед ексфільтрацією"] class node_archive technique node_data_limit["<b>Техніка</b> – T1030 Обмеження розміру передачі даних<br/><b>Опис</b>: Обробка обмежень розміру шляхом стиснення або поділу даних"] class node_data_limit technique node_exfil_fileio["<b>Сервіс</b> – file.io хмарне сховище"] class node_exfil_fileio service node_exfil_tech["<b>Техніка</b> – T1567.002 Ексфільтрація через веб-сервіс до хмарного сховища<br/><b>Опис</b>: Використання хмарного сховища як каналу ексфільтрації"] class node_exfil_tech technique node_transfer_to_cloud["<b>Техніка</b> – T1537 Передача даних на хмарний рахунок<br/><b>Опис</b>: Переміщення даних на контрольований зловмисником хмарний рахунок"] class node_transfer_to_cloud technique node_sslordoor["<b>Шкідливе ПЗ</b> – SSLORDoor"] class node_sslordoor malware node_raw_socket["<b>Техніка</b> – Комунікація через сирі сокети"] class node_raw_socket technique node_port_443["<b>Мережа</b> – Порт 443"] class node_port_443 network %% Connections node_initial_loader –>|створює| node_svc_host node_initial_loader –>|інжектує| node_laxgopher node_laxgopher –>|використовує| node_process_injection node_laxgopher –>|використовує| node_reflective_loading node_laxgopher –>|назва файлу| node_whisper_dll node_whisper_dll –>|маскується під| node_masquerading node_frienddelivery –>|завантажує| node_boxoffriends node_boxoffriends –>|використовує| node_process_injection node_boxoffriends –>|використовує| node_reflective_loading node_laxgopher –>|C2 через| node_c2_slack node_go_backdoor –>|C2 через| node_c2_discord node_go_backdoor –>|C2 через| node_c2_slack node_c2_slack –>|використовує техніку| node_tech_c2_web node_c2_discord –>|використовує техніку| node_tech_c2_web node_boxoffriends –>|створює чернетки через| node_c2_outlook node_c2_outlook –>|використовує техніку| node_tech_mail node_go_backdoor –>|надає| node_remote_access node_sslordoor –>|надає| node_remote_access node_compactgopher –>|стискає дані з| node_archive node_compactgopher –>|обробляє обмеження розміру через| node_data_limit node_archive –>|вивантажено у| node_exfil_fileio node_exfil_fileio –>|використовує техніку| node_exfil_tech node_exfil_fileio –>|використовує техніку| node_transfer_to_cloud node_sslordoor –>|використовує сирі сокети на| node_port_443 node_sslordoor –>|використовує| node_raw_socket "
Потік атаки
Виявлення
Коротке ім’я файлу (через cmdline)
Перегляд
Вимкнення захисту в режимі реального часу Windows Defender та інші зміни параметрів (через cmdline)
Перегляд
Можливе використання WebBrowserPassView (через cmdline)
Перегляд
Можливе проникнення / ексфільтрація даних / C2 через сторонні сервіси / інструменти (через проксі)
Перегляд
Виявлення C&C GopherWhisper через Slack, Discord та Microsoft Graph API [Мережеве з’єднання Windows]
Перегляд
Підозріла ін’єкція процесу GopherWhisper [Створення процесу Windows]
Перегляд
Виконання симуляції
Передумова: Телеметрія та перевірка вихідного стану бази повинні пройти.
Обґрунтування: Цей розділ детально описує точне виконання техніки супротивника (TTP), призначене для спрацювання правила виявлення. Команди і наратив повинні безпосередньо відображати виявлені TTP і прагнути генерувати точну телеметрію, на яку спрямована логіка виявлення.
-
Розповідь атаки та команди:
Зловмисник спочатку запускає новийsvchost.exeпроцес (вибраний хост для ін’єкції). Використовуючи відображений інжектор DLL, зловмиснийLaxGopher.dllзавантажується в пам’ять того процесу, досягнувши Ін’єкція бібліотеки динамічного підключення (T1055.001). Як тільки бэкдор стає резидентом, він відкриває прихованийcmd.exeінстанцію для виконання команд, отриманих від свого сервера C2, задовольняючи Командна оболонка Windows (T1059.003). Цей ланцюжок відображає поведінку, описану в дослідженні GopherWhisper, і генерує два події створення процесу, які шукає правило Sigma. -
Скрипт перевірки регресії:
# ------------------------------------------------------------- # Симуляція ін'єкції процесу в стилі GopherWhisper # ------------------------------------------------------------- $svcHost = "$env:SystemRootSystem32svchost.exe" $dllPath = "C:TempLaxGopher.dll" # Передбачимо, що тут існує безпечний тестовий DLL $cmdPath = "$env:SystemRootSystem32cmd.exe" # 1. Почати новий екземпляр svchost.exe (призупинено), щоб стати ціллю ін'єкції $svchost = Start-Process -FilePath $svcHost -ArgumentList "-k", "netsvcs" ` -PassThru -WindowStyle Hidden # 2. Виконати просту відображену ін'єкцію (заповнювач) # У реальному тесті ви викличете належний інжектор; тут ми просто ведемо журнал наміру. Write-Host "[*] Інжектую $dllPath у PID $($svchost.Id) (симульовано)" # Симульована команда ін'єкції: # .Invoke-ReflectiveDLLInjection.ps1 -Pid $svchost.Id -Path $dllPath # 3. Запустити cmd.exe з контексту інжеКтованого процесу (симульовано) Write-Host "[*] Запускаю cmd.exe з інжектованого процесса svchost (симульовано)" Start-Process -FilePath $cmdPath -ArgumentList "/c echo Compromised > C:Temppwned.txt" ` -WindowStyle Hidden # 4. Ненадовго призупинити, щоб Sysmon записав події Start-Sleep -Seconds 5 -
Команди очищення:
# Завершити симульовані процеси svchost.exe і cmd.exe Get-Process -Name svchost -ErrorAction SilentlyContinue | Stop-Process -Force Get-Process -Name cmd -ErrorAction SilentlyContinue | Stop-Process -Force # Видалити тестовий DLL (опціонально) Remove-Item -Path "C:TempLaxGopher.dll" -Force -ErrorAction SilentlyContinue