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

07 Apr 2026 18:30

Mustang Panda та PlugX: Глибокий аналіз операцій завантажувача, що керуються фішингом

Author Photo
Ruslan Mikhalov Керівник досліджень загроз у SOC Prime linkedin icon Стежити
Mustang Panda та PlugX: Глибокий аналіз операцій завантажувача, що керуються фішингом
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Звіт описує багатоступеневий вторгнення, що приписується групі Mustang Panda, пов’язаній з Китаєм. Ланцюг починається з використаного Windows ярлика (LNK), який запускає завантажувач PowerShell. Цей завантажувач скидає відволікаючий архів ZIP, вилучає зашифрований DLL, і в кінцевому підсумку розгортає троян віддаленого доступу PlugX із використанням відображеного завантаження та введення в пул потоків. Трафік керування та контролю надсилається через HTTPS на інфраструктуру, пов’язану з coastallasercompany.com. Імплант також реалізує ухилення від виявлення шляхом хешування API, обходу PEB та маскування рядків для зменшення ймовірності статичного виявлення.

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

Аналітики відновили шлях виконання від початку до кінця: початкове активацію LNK, підготовчий етап PowerShell, побічне завантаження DLL, розшифрування в пам’яті та остаточний запуск PlugX. Інструментарій використовує API хешування, схоже на DJB2, та ROL-13 хешування для вирішення імпорту, а також конфігураційний блок, зашифрований RC4. Стійкість була помічена шляхом модифікації ключа реєстру HKCU Run. Розслідування вилучило готові до виявлення індикатори, включаючи імена файлів, хеші та домен C2, використовуваний для маячком через HTTPS.

Пом’якшення

Блокуйте або ізолюйте ненадійні .lnk файли та обмежте виконання PowerShell, особливо сценаріїв, що читають або записують у локації доступні для користувача. Моніторте створення підозрілих файлів під %LocalAppData%, зокрема випадково згенеровані імена, схожі на GUID, та зміцнюйте поведінку пошуку DLL, щоб зменшити можливості побічного завантаження. Застосовуйте контроль DNS/проксі, щоб заборонити доступ до виявленого домену C2, та використовуйте перевірку TLS, де це доречно, щоб виявити аномалії у шаблонах HTTPS.

Відповідь

Якщо виявлено підозрілу активність, ізолюйте хост, захоплюйте зміну пам’яті і зберігайте зашифровану конфігурацію для глибшого аналізу. Скануйте середовище на наявність вилучених IOC, усувайте заражені артефакти та вилучайте шкідливий пункт стійкості HKCU Run. Замініть облікові дані у визначеному обсязі і полюйте на ознаки бічного переміщення, що відповідають техніці оператора PlugX.

"graph TB %% Визначення класів classDef technique fill:#ffcc99 classDef artifact fill:#ccffcc classDef process fill:#ccccff classDef registry fill:#ffe599 %% Початковий доступ initial_zip["<b>Артефакт</b> – Шкідливий ZIP архів, що містить .lnk"] class initial_zip artifact lnk_shortcut["<b>Артефакт</b> – Ярлик (.lnk) із прихованою іконкою"] class lnk_shortcut artifact tech_lnk_smack["<b>Техніка</b> – T1027.012 Маскування іконки LNK<br/><b>Опис</b>: Використання іконки LNK для приховування шкідливого навантаження"] class tech_lnk_smack technique tech_user_exec["<b>Техніка</b> – T1204.002 Виконання користувачем: Шкідливий файл<br/><b>Опис</b>: Жертва відкриває шкідливий файл"] class tech_user_exec technique %% Виконання psh_stage["<b>Процес</b> – Етап PowerShell, виконаний .lnk"] class psh_stage process tech_psh["<b>Техніка</b> – T1059.001 PowerShell<br/><b>Опис</b>: Інтерпретатор команд та сценаріїв"] class tech_psh technique tech_archive_custom["<b>Техніка</b> – T1560.003 Архівування за допомогою власного методу<br/><b>Опис</b>: Читає ZIP як сирі байти"] class tech_archive_custom technique extracted_exe["<b>Артефакт</b> – Витягнутий легітимний виконавчий файл"] class extracted_exe artifact malicious_dll["<b>Артефакт</b> – Eraser.dll (шкідливий)"] class malicious_dll artifact encrypted_dat["<b>Артефакт</b> – Зашифроване .dat навантаження"] class encrypted_dat artifact %% Стійкість run_key["<b>Реєстр</b> – HKCUSoftwareMicrosoftWindowsCurrentVersionRun запис"] class run_key registry tech_run_key["<b>Техніка</b> – T1037.001 Скрипт запуску (Скрипти ініціалізації під час запуску або логіну)<br/><b>Опис</b>: Стійкість ключа запуску"] class tech_run_key technique shortcut_mod["<b>Техніка</b> – T1547.009 Модифікація ярликів<br/><b>Опис</b>: Зміна ярликів для автозапуску"] class shortcut_mod technique active_setup["<b>Техніка</b> – T1547.014 Активна установка<br/><b>Опис</b>: Запис реєстру для автозапуску через Активну установку"] class active_setup technique psh_profile["<b>Техніка</b> – T1546.013 Профіль PowerShell<br/><b>Опис</b>: Гачки профілю PowerShell для виконання"] class psh_profile technique %% Ухилення від захисту tech_compress["<b>Техніка</b> – T1027.015 Стиснення<br/><b>Опис</b>: Стискає навантаження в ZIP"] class tech_compress technique tech_dynamic_api["<b>Техніка</b> – T1027.007 Динамічне вирішення API<br/><b>Опис</b>: Визначає API під час виконання за допомогою хеша"] class tech_dynamic_api technique tech_embedded["<b>Техніка</b> – T1027.009 Вбудовані навантаження<br/><b>Опис</b>: Вбудовує зашифровані навантаження"] class tech_embedded technique tech_deobfuscate["<b>Техніка</b> – T1140 Деобфускація/Декодування файлів або інформації<br/><b>Опис</b>: RC4/XOR розшифровка під час виконання"] class tech_deobfuscate technique tech_masquerade["<b>Техніка</b> – T1036.008 Маскування: Маскування типу файлу<br/><b>Опис</b>: Накладає PDF-підробку"] class tech_masquerade technique %% Підвищення привілеїв / Виконання tech_reflective["<b>Техніка</b> – T1620 Відображене завантаження коду<br/><b>Опис</b>: Завантажує DLL у пам’ять без запису на диск"] class tech_reflective technique tech_injection["<b>Техніка</b> – T1055.001 Ін’єкція процесу: Ін’єкція DLL<br/><b>Опис</b>: Ін’єкція DLL через обхід PEB та виклики обробки пула потоків"] class tech_injection technique %% Командування та управління c2_https["<b>Процес</b> – HTTPS C2 зв’язок (порт 443)"] class c2_https process tech_nonstd_port["<b>Техніка</b> – T1571 Нестандартний порт<br/><b>Опис</b>: Використовує звичайний порт для змішування трафіку"] class tech_nonstd_port technique tech_dead_drop["<b>Техніка</b> – T1102.001 Розв’язувач мертвих схованок<br/><b>Опис</b>: Отримує адресу сервера з веб-служби"] class tech_dead_drop technique tech_proxy["<b>Техніка</b> – T1090.002 Проксі: Зовнішнє проксі<br/><b>Опис</b>: Маршрутизує трафік через зовнішнє проксі"] class tech_proxy technique %% Зв’язки initial_zip –>|містить| lnk_shortcut lnk_shortcut –>|використовує| tech_lnk_smack lnk_shortcut –>|спрацьовує| tech_user_exec tech_user_exec –>|призводить до| psh_stage psh_stage –>|виконує| tech_psh psh_stage –>|читає| tech_archive_custom tech_archive_custom –>|витягує| extracted_exe tech_archive_custom –>|витягує| malicious_dll tech_archive_custom –>|витягує| encrypted_dat psh_stage –>|записує| run_key run_key –>|втілює| tech_run_key psh_stage –>|створює| shortcut_mod psh_stage –>|створює| active_setup psh_stage –>|підключає| psh_profile psh_stage –>|застосовує| tech_compress psh_stage –>|застосовує| tech_dynamic_api psh_stage –>|застосовує| tech_embedded psh_stage –>|застосовує| tech_deobfuscate psh_stage –>|застосовує| tech_masquerade malicious_dll –>|діє як| tech_reflective malicious_dll –>|виконує| tech_injection tech_injection –>|дозволяє| c2_https c2_https –>|використовує| tech_nonstd_port c2_https –>|використовує| tech_dead_drop c2_https –>|може маршрутизувати через| tech_proxy %% Призначення класів class initial_zip,lnk_shortcut,extracted_exe,malicious_dll,encrypted_dat artifact class psh_stage,c2_https process class run_key registry class tech_lnk_smack,tech_user_exec,tech_psh,tech_archive_custom,tech_run_key,shortcut_mod,active_setup,psh_profile,tech_compress,tech_dynamic_api,tech_embedded,tech_deobfuscate,tech_masquerade,tech_reflective,tech_injection,tech_nonstd_port,tech_dead_drop,tech_proxy technique "

Хід атаки

Виявлення

Можлива спроба побічного завантаження DLL Eraser (через image_load)

Команда SOC Prime
03 квітня 2026

Можливе виконання через приховані командні рядки PowerShell (через cmdline)

Команда SOC Prime
03 квітня 2026

Виклик підозрілих методів .NET з PowerShell (через powershell)

Команда SOC Prime
03 квітня 2026

Виклик підозрілих класів/методів .NET з командного рядка PowerShell (через створення процесу)

Команда SOC Prime
03 квітня 2026

Індикатори компромісу (HashSha256) для виявлення: PlugX : Mustang Panda APT Внутрішня частина Mustang Panda: від векторів фішингових атак до PlugX — глибокий аналіз інфраструктури завантажувача

Правила AI SOC Prime
03 квітня 2026

Індикатори компромісу (HashSha1) для виявлення: PlugX : Mustang Panda APT Внутрішня частина Mustang Panda: від векторів фішингових атак до PlugX — глибокий аналіз інфраструктури завантажувача

Правила AI SOC Prime
03 квітня 2026

Індикатори компромісу (HashMd5) для виявлення: PlugX : Mustang Panda APT Внутрішня частина Mustang Panda: від векторів фішингових атак до PlugX — глибокий аналіз інфраструктури завантажувача

Правила AI SOC Prime
03 квітня 2026

Виконання прихованого вікна PowerShell та розпакування архіву-прикриття [Windows PowerShell]

Правила AI SOC Prime
03 квітня 2026

Виявлення шкідливого бокового завантаження DLL через ErsChk.exe [Створення процесу в Windows]

Правила AI SOC Prime
03 квітня 2026

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

Передумова: Перевірка телеметрії та базових показників перед польотом повинна пройти.

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

  • Опис атаки та команди:
    Аттакер отримав доступ до скомпрометованої робочої станції та хоче підготувати шкідливі навантаження, залишаючись невидимим для користувача. Вони запускають PowerShell в прихованому режимі (-w hidden) щоб уникнути спливаючих вікон. У тій самій PowerShell сесії вони використовують вбудовану tar утиліту (доступну на сучасних версіях Windows) для вилучення архіву-прикриття, що містить наступні етапи навантаження безпосередньо у %LocalAppData%, доступну позицію, яку часто ігнорують захисні засоби.

    Кроки:

    1. Створіть невеликий tar архів (payloads.tar) що містить безпечний фіктивний файл (симулює шкідливий навантаження).
    2. Збережіть архів у тимчасовій локації (C:Temp).
    3. Запустіть PowerShell приховане вікно, що виконує tar команду вилучення таргетування %LocalAppData%.
  • Сценарій регресійного тесту:

    # ---------------------------------------------------------
    # Крок 1 – Підготовка зразка tar архіву (імітує навантаження)
    # ---------------------------------------------------------
    $tempDir   = "C:Temp"
    $archive   = "$tempDirpayloads.tar"
    $payload   = "$tempDirdummy.txt"
    $destDir   = "$Env:LocalAppDataStagedPayloads"
    
    # Переконайтеся, що папка temp існує
    New-Item -ItemType Directory -Path $tempDir -Force | Out-Null
    
    # Створіть фіктивний файл для архівування
    "Це фіктивний файл з навантаженням." | Set-Content -Path $payload -Encoding UTF8
    
    # Створіть tar архів (вимагає tar для Windows)
    tar -cf $archive -C $tempDir dummy.txt
    
    # ---------------------------------------------------------
    # Крок 2 – Виконання прихованого PowerShell, що розпаковує архів
    # ---------------------------------------------------------
    $extractCmd = "tar -xvf `"$archive`" -C `"$Env:LocalAppData`""
    $psArgs     = "-NoProfile -WindowStyle Hidden -Command `$extractCmd"
    
    Start-Process -FilePath "powershell.exe" -ArgumentList $psArgs -WindowStyle Hidden
    
    # ---------------------------------------------------------
    # Крок 3 – Необов'язково: Перевірка вилучення (для ручної перевірки)
    # ---------------------------------------------------------
    Write-Host "Розпакування завершено. Файли тепер повинні існувати в $Env:LocalAppData"
  • Команди очищення:

    # Видалити тимчасові файли та підготовані навантаження
    Remove-Item -Path "C:Temppayloads.tar" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "C:Tempdummy.txt"   -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$Env:LocalAppDatadummy.txt" -Force -ErrorAction SilentlyContinue
    # За бажанням видаліть всю папку підготовки, якщо була створена
    Remove-Item -Path "$Env:LocalAppDataStagedPayloads" -Recurse -Force -ErrorAction SilentlyContinue