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

27 Nov 2025 19:10

Полювання на загрози від Zscaler викриває та реконструює кампанію води Gamayun APT

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Стежити
Полювання на загрози від Zscaler викриває та реконструює кампанію води Gamayun APT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Звіт охоплює багатоступеневе проникнення, пов’язане з APT-групою Water Gamayun, яка використовує нульовий день вразливості MMC (CVE-2025-26633) для доставки завантаженого навантаження PowerShell у RAR-архіві з подвійним розширенням.

Розслідування

Zscaler реконструював ланцюг атаки від перенаправлення з пошуку Bing до скомпрометованого сайту, завантаження файлу .pdf.rar, експлуатації MSC EvilTwin, поетапних скриптів PowerShell та виконання бекдора ItunesC.exe.

Пом’якшення

Рекомендації включають моніторинг архівів з подвійним розширенням, перевірку перенаправлень, виявлення закодованих команд PowerShell та блокування зловмисних IP і доменів.

Відповідь

При виявленні, сповістити про запуск mmc.exe з PowerShell з -EncodedCommand, ізолювати файл, блокувати зовнішні з’єднання з 103.246.147.17 і активувати процедури реагування на інциденти.

graph TB %% Визначення класів classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef file fill:#ffff99 classDef c2 fill:#ffccff %% Визначення вузлів node_initial_access[“<b>Дія</b> – <b>T1659 Інʼєкція контенту</b><br/><b>Опис</b>: Компрометація легітимного сайту для впровадження шкідливих редиректів”] class node_initial_access action node_malicious_domain[“<b>Файл</b> – <b>Назва</b>: Фішинговий домен‑двійник<br/><b>Призначення</b>: Розповсюджує архів з подвійним розширенням”] class node_malicious_domain file node_pdf_rar[“<b>Файл</b> – <b>Назва</b>: brochure.pdf.rar<br/><b>Тип</b>: Архів з подвійним розширенням, замаскований під PDF”] class node_pdf_rar file node_user_execution[“<b>Дія</b> – <b>T1204.001 Шкідливе посилання</b><br/><b>Опис</b>: Жертва переходить за посиланням та завантажує архів”] class node_user_execution action node_exploit_client[“<b>Дія</b> – <b>T1203 Експлуатація клієнтського ПЗ</b><br/><b>Опис</b>: Архів розпаковує .msc, який перехоплює mmc.exe через MSC EvilTwin”] class node_exploit_client action node_cve[“<b>Інструмент</b> – <b>Назва</b>: MSC EvilTwin експлойт (CVE‑2025‑26633)<br/><b>Ціль</b>: mmc.exe”] class node_cve tool node_mmc[“<b>Процес</b> – <b>Назва</b>: mmc.exe”] class node_mmc process node_powershell[“<b>Процес</b> – <b>Назва</b>: powershell.exe”] class node_powershell process node_ps_command[“<b>Дія</b> – <b>T1059.001 PowerShell</b><br/><b>Опис</b>: EncodedCommand з Base64 UTF‑16LE payload”] class node_ps_command action node_obfuscation[“<b>Дія</b> – <b>T1027 Обфускація</b> та <b>T1140 Декодування</b><br/><b>Опис</b>: Подвійне кодування PowerShell‑команди”] class node_obfuscation action node_unrar[“<b>Інструмент</b> – <b>Назва</b>: UnRAR.exe”] class node_unrar tool node_rar_payload[“<b>Файл</b> – <b>Назва</b>: RAR‑payloadи, захищені паролем”] class node_rar_payload file node_hidden_window[“<b>Дія</b> – <b>T1564.003 Приховане вікно</b><br/><b>Опис</b>: .NET‑клас WinHpXN викликає ShowWindow для приховування консолі”] class node_hidden_window action node_itunesc[“<b>Шкідливе ПЗ</b> – <b>Назва</b>: ItunesC.exe<br/><b>Функція</b>: Лоадер і бекдор”] class node_itunesc malware node_c2[“<b>C2</b> – <b>IP</b>: 103.246.147.17<br/><b>Протокол</b>: HTTPS”] class node_c2 c2 %% Зв’язки node_initial_access –>|перенаправляє на| node_malicious_domain node_malicious_domain –>|розповсюджує| node_pdf_rar node_pdf_rar –>|завантажується| node_user_execution node_user_execution –>|запускає| node_exploit_client node_exploit_client –>|скидає| node_cve node_cve –>|перехоплює| node_mmc node_mmc –>|завантажує| node_powershell node_powershell –>|виконує| node_ps_command node_ps_command –>|використовує| node_obfuscation node_ps_command –>|завантажує| node_unrar node_unrar –>|розпаковує| node_rar_payload node_rar_payload –>|призводить до| node_hidden_window node_hidden_window –>|запускає| node_itunesc node_itunesc –>|зв’язується з| node_c2

Потік атаки

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

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

Обґрунтування: Цей розділ детально викладає точне виконання техніки противника (TTP), призначеної для активації правила виявлення. Команди та оповідь повинні точно відображати ідентифіковані TTP та прагнути до точного генерування очікуваної телеметрії логікою виявлення. Абстрактні або непов’язані приклади призведуть до неправильного діагнозу.

  • Опис атаки та команди:
    Зловмисник, використовуючи методологію Water Gamayun, готує зловмисне навантаження PowerShell, яке створює нового локального адміністратора та додає його до групи адміністраторів. Щоб приховати навантаження, зловмисник:

    1. Записує скрипт PowerShell у відкритому тексті.
    2. Кодує його в UTF‑16LE Base64.
    3. Вставляє підкреслення (_) після кожних 4 символів для підвищення ентропії.
    4. Ланцюже дію |Replace('_','') так, що виконання PowerShell видаляє підкреслення перед декодуванням, що відповідає сигнатурі виявлення.

    Остаточна команда виконання:

    powershell.exe -EncodedCommand <Base64StringWithUnderscores> | Replace('_','')

    Ця точна командна лінія відповідає двом умовам правила Sigma (-EncodedCommand and |Replace('_','')), генеруючи записи Sysmon EventID 1 та Security EventID 4688, які правило позначатиме.

  • Скрипт регресійного тесту:
    Наведений далі скрипт автоматизує створення обфускаційного навантаження та його виконання. Його можна виконати на будь-якому хості Windows з PowerShell 5.1+.

    # Імітація обфускації PowerShell стилю Water Gamayun
    # Крок 1: Визначити зловмисне навантаження PowerShell (додає локального адміністратора)
    $payload = @'
    $user = "tempAdmin"
    $pwd  = ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force
    New-LocalUser -Name $user -Password $pwd -FullName "Temp Admin" -Description "Test admin account"
    Add-LocalGroupMember -Group "Administrators" -Member $user
    '@
    
    # Крок 2: Закодувати в UTF-16LE, а потім Base64
    $bytes   = [System.Text.Encoding]::Unicode.GetBytes($payload)
    $b64     = [Convert]::ToBase64String($bytes)
    
    # Крок 3: Вставити підкреслення кожні 8 символів (імітація шаблону групи)
    $b64Underscored = ($b64 -split '(.{8})' | Where-Object {$_} | ForEach-Object { $_ + '_' }) -join ''
    
    # Крок 4: Виконати з необхідним Replace('_','') в конвеєрі
    powershell.exe -EncodedCommand $b64Underscored | Replace('_','')
  • Команди очистки:
    Наступні команди видаляють тестового користувача та відновлюють оточення.

    # Очистка: Видалити тимчасовий обліковий запис адміністратора, створений тестом
    $user = "tempAdmin"
    if (Get-LocalUser -Name $user -ErrorAction SilentlyContinue) {
        Remove-LocalUser -Name $user
        Write-Host "Deleted test user $user."
    } else {
        Write-Host "Test user $user does not exist."
    }