Відстеження кампаній зловмисного програмного забезпечення з використанням повторного матеріалу
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Ця кампанія повторно використовує зображення «носій» JPEG, яке приховує шкідливе навантаження між тегами BaseStart- і -BaseEnd. Первісний доступ здійснюється через експлуатацію редактора Microsoft Equation Editor (CVE-2017-11882) у спеціально створеному вкладенні, яке завантажує HTA. HTA запускає PowerShell для отримання .NET бінарного етапу. Повторне використання одного й того ж зображення у багатьох зразках свідчить про те, що оператор спирається на повторювані компоненти.
Розслідування
Дослідник спостерігав TELERADIO_IB_OBYEKTLRIN_BURAXILIS_FORMASI.xIs, який містить експлойт редактора Equation Editor. Ланцюжок витягує HTA з шкідливої IP, яка виконує PowerShell для завантаження другого навантаження, розміщеного на іншій IP. Останній етап — це .NET бінарний файл, вбудований у JPEG носій і відновлений за допомогою обмежувачів BaseStart/-BaseEnd. Подібні зображення носіїв були знайдені в десятках подань VirusTotal.
Пом’якшення
Виправте CVE-2017-11882 та підтримуйте Office в актуальному стані. Блокуйте або обмежте виконання HTA, забезпечте підписання скриптів PowerShell та використовуйте фільтрацію URL/IP, щоб відмовити у доступі до інфраструктури хостингу.
Відповідь
Виявляйте та ізолюйте вкладення та етап HTA та повідомляйте про активність завантаження PowerShell до ідентифікованих IP. Ізолюйте уражені хости та виконуйте судову експертизу пам’яті, щоб знайти та видалити навантаження .NET в пам’яті.
Потік атаки
Виявлення
Підозріле ухилення MSHTA за допомогою захисних команд (через process_creation)
Proof of Value
Підозрілі рядки PowerShell (через powershell)
Proof of Value
Підозріле пряме завантаження файлу за IP (через proxy)
Proof of Value
Підозрілий дочірній процес Equation Editor (через cmdline)
Proof of Value
Підозрілі рядки PowerShell (через cmdline)
Proof of Value
IOC (цільовий IP), які потрібно виявити: Відстеження кампаній зловмисного ПЗ з повторним використанням матеріалу
Proof of Value
IOC (джерело IP), які потрібно виявити: Відстеження кампаній зловмисного ПЗ з повторним використанням матеріалу
Proof of Value
Виявлення зловмисного HTA та доставки навантаження зображення Base64 [Proxy]
Proof of Value
Отримання навантаження PowerShell з технікою енкодингу Base64 [Windows Powershell]
Proof of Value
Виконання симуляції
Передумова: Перевірка телеметрії та базового рівня повинна бути успішно пройдена.
Обґрунтування: У цьому розділі детально виконується техніка суперника (TTP), розроблена для запуску правила виявлення. Команди та наратив МАЮТЬ безпосередньо відображати виявлені TTP і мають на меті створити саме ту телеметрію, яку очікує логіка виявлення.
-
Наратив атаки та команди:
Супротивник використав вразливість клієнта, яка подає шкідливий HTA файл. HTA запускає PowerShell з командним рядком, який вбудовує шкідливе навантаження (наприклад,Invoke-Expressionзапуститиcalc.exe) закодоване в Base64. Навантаження обгорнуте між рядкамиBaseStart-and-BaseEndщоб атакуючий міг надійно витягати його на ходу. Команда, виконана на скомпрометованому хості:powershell.exe -NoProfile -Command "$b='BaseStart-$( [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Start-Process calc.exe')) )-BaseEnd'; $payload=$b -replace '.*BaseStart-','' -replace '-BaseEnd.*',''; IEX ([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($payload)))"Цей командний рядок задовольняє обидві
selection_base_startandselection_base_endумови, через що правило спрацьовує. -
Скрипт регресійного тестування: Наступний автономний скрипт PowerShell відтворює шкідливу поведінку і може бути запущений на будь-якому Windows хості з увімкненою зазначеною телеметрією.
# Скрипт регресійного тестування – викликає правило виявлення # 1. Створення закодованого в Base64 навантаження (запуск calc.exe) $payload = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Start-Process calc.exe')) # 2. Складання повного командного рядка з роздільниками $cmd = "BaseStart-$payload-BaseEnd" # 3. Виконання PowerShell з розробленою командою $fullCommand = "powershell.exe -NoProfile -Command `"& {`$b='$cmd'; `$payload=`$b -replace '.*BaseStart-','' -replace '-BaseEnd.*',''; IEX ([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(`$payload)))`"" # 4. Запуск команди (це запустить calc.exe) Invoke-Expression $fullCommand -
Команди очищення: Видаліть всі артефакти та, за потреби, завершіть запущений процес.
# Очищення – закрийте Калькулятор, якщо він все ще запущений, та очищує історію команд Get-Process calc -ErrorAction SilentlyContinue | Stop-Process -Force # За бажанням, очистіть історію PowerShell (тільки для поточної сесії) Remove-Item (Get-PSReadlineOption).HistorySavePath -ErrorAction SilentlyContinue