SOC Prime Bias: Середній

14 Apr 2026 18:48

Обфусцирований JavaScript у центрі атаки

Author Photo
Ruslan Mikhalov Керівник досліджень загроз у SOC Prime linkedin icon Стежити
Обфусцирований JavaScript у центрі атаки
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Фішинговий лист доставив зловмисний JavaScript-файл всередині архіву RAR, запустивши ланцюг зараження, який закінчується виконанням шкідливого програмного забезпечення Formbook. Після запуску скрипт записує кілька файлів у загальнодоступну папку, встановлює стійкість через заплановане завдання та запускає PowerShell-навантаження, яке дешифрує AES-зашифрований вміст для завантаження шкідливої бібліотеки .NET DLL. Ця DLL потім ін’ектується в MSBuild.exe процес, де продовжує виконання та розгортає фінальну стадію шкідливого ПЗ. Кампанія також включає кілька методів уникнення захисту, включаючи виправлення ETW та AMSI для зменшення виявлення.

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

Під час аналізу дослідники виявили JavaScript-дроппер cbmjlzan.JS, разом із запланованим завданням, налаштованим на запуск скопійованого скрипта кожні п’ятнадцять хвилин для стійкості. Вони також відслідковували команду PowerShell, відповідальну за декодування даних, закодованих у base64, прихованих всередині файлів зображень. Дешифрований вміст показав бібліотеку .NET DLL, яка була ін’ектована в MSBuild.exe і використовувалась для доставки Formbook. Додаткові індикатори, включаючи шляхи файлів, імена завдань та криптографічний матеріал, були вилучені для підтримки глибшого розслідування та розробки виявлення.

Пом’якшення

Організації повинні блокувати виконання ненадійних JavaScript-файлів та PowerShell-скриптів, запущених з доступних користувачу каталогів, при цьому пильно стежачи за запланованими завданнями, створеними з незвичними або випадковими іменами. Виконавчі контролі повинні застосовуватися до MSBuild.exe щоб запобігти зловживанню в ланцюгах шкідливого ПЗ. Інструменти безпеки також повинні виявляти поведінку ін’єкції DLL, втручання в ETW та AMSI, а також відомі підписи, пов’язані з Formbook. Навчання користувачів залишається важливим для зменшення ризику, який становлять вкладення з фішинговими атак.

Відповідь

Захисники повинні генерувати сповіщення, коли з’являється ідентифікований JavaScript-файл або пов’язане заплановане завдання, потім ізолювати уражену точку та зібрати леткі докази для аналізу. Зловмисні файли повинні бути видалені, заплановане завдання – вилучено, а ін’ектована DLL – повністю досліджена, щоб зрозуміти повний потік виконання. Будь-які скомпрометовані компоненти системи повинні бути відновлені або знову побудовані для забезпечення цілісності. Відповідні IOCs також слід поділитися з ширшою спільнотою безпеки, щоб допомогти іншим виявити подібну активність.

graph TB %% Class definitions classDef action fill:#ffcccc classDef tool fill:#99ccff classDef process fill:#ffff99 classDef file fill:#ccffcc classDef malware fill:#ffcc99 %% Nodes email_phishing[“<b>Дія</b> – <b>T1566.001 Фішинг із вкладенням</b><br/>Шкідливий RAR-файл доставлений через email”] class email_phishing action tool_wsh[“<b>Інструмент</b> – <b>Назва</b>: Windows Script Host (JavaScript)<br/><b>Техніка</b>: T1559.001 Component Object Model”] class tool_wsh tool action_copy[“<b>Дія</b> – <b>T1559.001 Component Object Model</b><br/>Скрипт копіює себе до C:\\Users\\Public\\Libraries”] class action_copy action action_sched[“<b>Дія</b> – <b>T1053 Заплановане завдання</b><br/>Створює завдання для забезпечення стійкості”] class action_sched action tool_ps[“<b>Інструмент</b> – <b>Назва</b>: PowerShell<br/><b>Техніка</b>: T1059.001 Інтерпретатор команд”] class tool_ps tool action_decode[“<b>Дія</b> – <b>T1027.004 Компіляція після доставки</b> & <b>T1140 Декодування/розшифрування</b><br/>Base64-декодування та AES-розшифрування”] class action_decode action action_patch[“<b>Дія</b> – <b>T1027.005 Видалення індикаторів</b><br/>Патчинг ETW та AMSI у пам’яті”] class action_patch action file_dll[“<b>Файл</b> – <b>Назва</b>: Orio.png (містить зашифрований .NET DLL)<br/><b>Техніка</b>: Прихований payload”] class file_dll file process_msbuild[“<b>Процес</b> – <b>Назва</b>: msbuild.exe<br/><b>Техніка</b>: T1127.001 Proxy-виконання через dev tools”] class process_msbuild process action_inject[“<b>Дія</b> – <b>T1055.001 Ін’єкція процесу</b><br/>Впровадження DLL у msbuild.exe”] class action_inject action malware_formbook[“<b>Шкідливе ПЗ</b> – <b>Назва</b>: Formbook<br/><b>Джерело</b>: Вбудований payload у Brio.png”] class malware_formbook malware %% Edges / Flow email_phishing –>|delivers| tool_wsh tool_wsh –>|uses COM to| action_copy action_copy –>|leads to| action_sched tool_wsh –>|launches| tool_ps tool_ps –>|executes| action_decode tool_ps –>|applies| action_patch action_decode –>|produces| file_dll action_patch –>|prepares environment for| file_dll file_dll –>|loaded by| process_msbuild process_msbuild –>|receives| action_inject action_inject –>|extracts final payload from| malware_formbook

Потік Атаки

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

Передумова: Телеметрія і Перевірка Основних Даних повинні бути пройдені.

Пояснення: Цей розділ детально описує точне виконання техніки супротивника (TTP), розробленої для активації правила виявлення. Команди та наратив МАЮТЬ безпосередньо відображати виявлені TTPs та прагнути згенерувати саме той канон телеметрії, який очікується логікою виявлення.

  • Атаковий Нарратів та Команди:
    Зловмисник, який пробрався в обліковий запис з низькими привілеями, бажає завантажити зловмисне навантаження, яке зберігається у вигляді рядка Base64 у скомпрометованому репозиторії скриптів. Щоб уникнути виявлення, зловмисник створює однолайнер PowerShell, який (1) декодує Base64 рядок, (2) викликає його через iexі (3) створює AES об’єкт для дешифрування подальших вбудованих даних. Точна команда записується відповідно до лексики правила.

    powershell
    C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -Noexit -nop -c iex([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(('REPLACED_STRING'.Replace('VFHDVXDJCF',''))))) ; $aes_var = [System.Security.Cryptography.Aes]::Create()
    
    • Зловмисник замінює REPLACED_STRING на легітимний Base64 навантаження після видалення відомої мітки (VFHDVXDJCF).
    • The -Noexit -nop -c перемикачі пригнічують запити та обхід політики виконання, що відповідає умовам виявлення.
    • The $aes_var назва змінної зберігається дослівно для задоволення другого критерію вибору.
  • Скрипт Регресійного Тесту: Наступний PowerShell-скрипт відтворює точну команду в контрольованому способі, що забезпечує отримання SIEM ідентичної телеметрії.

    # Скрипт Регресійного Тесту – активує виявлення
    $payload = "U2FtcGxlIEJhc2U2NCBTdHJpbmc="   # "Sample Base64 String"
    $marker  = "VFHDVXDJCF"
    $obfuscated = $payload.Replace($marker, "")   # симулює .Replace, який використовується у виявленні
    $command = @"
    C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -Noexit -nop -c iex([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(('${obfuscated}'.Replace('VFHDVXDJCF',''))))) ; $aes_var = [System.Security.Cryptography.Aes]::Create()
    "@
    
    # Виконати створену команду
    Invoke-Expression $command
  • Команди очищення: Видалення будь-яких залишкових AES-об’єктів та зупинка запущеної сесії PowerShell.

    # Очищення – завершити дочірній процес PowerShell, якщо все ще працює
    Get-Process -Name powershell -ErrorAction SilentlyContinue | Where-Object { $_.Path -like "*WindowsPowerShellv1.0powershell.exe" } | Stop-Process -Force
    
    # Опціонально видалити будь-які тимчасові змінні
    Remove-Variable -Name payload, marker, obfuscated, command -ErrorAction SilentlyContinue