ClickFix до MaaS: Всередині модульного Windows RAT і його панелі управління
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Netskope Threat Labs спостерігали за кампанією ClickFix, яка доставляє спеціальний RAT для Windows, побудований на Node.js через шкідливі MSI-інсталятори. Завантажуваний файл тримає ключові модулі в пам’яті та використовує потокову передачу gRPC через Tor для командного серверу C2. Помилка в OPSEC викрила протокол адміністрування панелі, що вказує на модель зловмисного ПЗ як послуга з відстеженням гаманця. Постійність налаштовується через значення HKCU Run на рівні користувача.
Розслідування
Дослідники захопили MSI, декодували PowerShell-інструменти завантаження та відстежили динамічне завантаження модулів Node.js. Вони витягнули та розшифрували конфігураційний блок для відновлення адреси C2 .onion. Виявлений файл admin.proto показав функції MaaS, такі як управління кількома операторами та моніторинг гаманців, і аналітики відзначили наявність само-лікуючого наручного програмного засобу плюс використання Tor для анонімізації трафіку.
Зменшення ризику
Блокуйте виконання непідписаних MSI з недовірених джерел та моніторте HKCU…Run на наявність нових, підозрілих записів. Виявляйте PowerShell, що завантажує MSI з доменів, таких як cloud-verificate.com. Повідомляйте про conhost.exe або node.exe, запущені з прихованими аргументами, та про появу tor.exe на кінцевих точках, які його не потребують.
Відповідь
Ізолюйте уражені хости, збирайте пам’ять для аналізу внутрішньопам’яткових модулів та видаліть стійкість HKCU Run. Перегляньте %LOCALAPPDATA%LogicOptimizer на наявність стадійних артефактів та будь-якої запланованої активності tor.exe, потім блокуйте onion-сторінки та пов’язані домени/IP. Полюйте по всьому підприємству на ті ж артефакти інсталятора та ланцюги процесів.
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#cccccc classDef process fill:#ccffcc %% Nodes action_user_exec[“<b>Дія</b> – <b>T1204.001 Виконання користувачем: шкідливе посилання</b><br/>Жертва натискає шкідливе посилання та запускає PowerShell”] class action_user_exec action process_powershell_cmd[“<b>Процес</b> – <b>T1059.001 PowerShell</b><br/>Base64 команда завантажує MSI інсталятор”] class process_powershell_cmd process action_msi_install[“<b>Дія</b> – <b>T1546.016 Інсталяційні пакети</b><br/>Тиха MSI інсталяція Node.js”] class action_msi_install action tool_msiexec[“<b>Інструмент</b> – msiexec.exe<br/>Виконання через системний бінарний проксі”] class tool_msiexec tool action_persistence[“<b>Постійність</b> – ключ Run<br/>Запис у HKCU Run”] class action_persistence action tool_tor[“<b>Інструмент</b> – tor.exe<br/>Зовнішній проксі”] class tool_tor tool action_tor_proxy[“<b>Дія</b> – мультихоп проксі<br/>Трафік C2 через Tor SOCKS5”] class action_tor_proxy action action_grpc_comm[“<b>Дія</b> – gRPC комунікація<br/>Зв’язок із .onion C2”] class action_grpc_comm action action_encrypted_channel[“<b>Дія</b> – зашифрований канал<br/>AES-256-CBC або XOR”] class action_encrypted_channel action action_collection[“<b>Дія</b> – збір даних хоста<br/>Збір системної інформації”] class action_collection action action_archive[“<b>Дія</b> – кастомний архів<br/>Багатошарове шифрування”] class action_archive action action_config_repo[“<b>Дія</b> – конфігурація<br/>Отримання C2 даних”] class action_config_repo action action_dynamic_resolution[“<b>Дія</b> – динамічне розв’язання<br/>Розв’язує .onion під час виконання”] class action_dynamic_resolution action action_ip_discovery[“<b>Дія</b> – визначення IP<br/>Отримання зовнішньої IP”] class action_ip_discovery action %% Edges action_user_exec –>|triggers| process_powershell_cmd process_powershell_cmd –>|downloads| action_msi_install action_msi_install –>|uses| tool_msiexec action_msi_install –>|enables| action_persistence action_persistence –>|downloads| tool_tor tool_tor –>|enables| action_tor_proxy action_tor_proxy –>|routes| action_grpc_comm action_grpc_comm –>|encrypted via| action_encrypted_channel action_encrypted_channel –>|carries| action_collection action_collection –>|archives| action_archive action_archive –>|stores config in| action_config_repo action_config_repo –>|provides| action_dynamic_resolution action_dynamic_resolution –>|connects to| action_ip_discovery action_collection –>|discovers| action_ip_discovery
Потік атаки
Виявлення
NodeJS, виконуваний з незвичайного місця (через cmdline)
Переглянути
Можливі точки стійкості [ASEPs – Реєстр/НТУЗЕР вулиця] (через реєстраційний захід)
Переглянути
Завантаження або завантаження через PowerShell (через cmdline)
Переглянути
LOLBAS Конхост (через cmdline)
Переглянути
MsiExec запускається процесом командної оболонки (через cmdline)
Переглянути
Можливі спроби зв’язку з доменами пошуку IP (через dns)
Переглянути
Можливі інструменти мережі Tor (через cmdline)
Переглянути
Виявлення виконання Conhost для запуску Node для скрипта Bootstrap [Створення процесу в Windows]
Переглянути
Виконання шкідливої команди PowerShell для завантаження та встановлення MSI [PowerShell Windows]
Переглянути
Виконання моделювання
Передумова: Перевірка телеметрії та базової лінії попереднього польоту повинна бути пройдена.
Обґрунтування: Цей розділ детально описує точне виконання техніки супротивника (TTP), розробленої для спрацьовування правила виявлення. Команди та розповідь ПОВИННІ прямо відображати ідентифіковані TTP і мають за мету створити саме таку телеметрію, яку очікує логіка виявлення.
-
Опис та команди атаки:
- Мета: Атакуючий хоче запустити шкідливе завантаження Node.js (
bootstrap.js) без підозри. - Метод: Використовуйте підписаний двійковий файл Windows (
conhost.exe) як проксі для запускуnode.exeв безголовому режимі, передаючи початковий сценарій як аргумент. - Кроки:
- Завантажте шкідливий
bootstrap.jsв записувану директорію (наприклад,%TEMP%). - Запустіть
conhost.exeз точним рядком аргументів, який правило очікує. - Команда виконується в контексті поточного користувача, імітуючи легітимне породження процесу.
- Завантажте шкідливий
# 1. Завантажте шкідливу bootstrap.js (змодельовано нешкідливий вміст для тесту) $bootstrapPath = "$env:TEMPbootstrap.js" Set-Content -Path $bootstrapPath -Value "// злісний заповнювач завантаження" # 2. Виконайте conhost.exe для запуску node.exe з потрібними прапорами $conhost = "$env:windirsystem32conhost.exe" $args = '--headless "node.exe" "bootstrap.js"' Start-Process -FilePath $conhost -ArgumentList $args -WorkingDirectory $env:TEMP - Мета: Атакуючий хоче запустити шкідливе завантаження Node.js (
-
Скрипт регресійного тесту:
# ------------------------------------------------- # Регресійний тест: Виклик Bootstrap через Conhost # ------------------------------------------------- # Переконайтесь, що Sysmon працює і веде реєстрацію подій ProcessCreate. # Завантажте dummy-скрипт початкового завантаження $bootstrap = "$env:TEMPbootstrap.js" Set-Content -Path $bootstrap -Value "// тестовий вміст початкового завантаження" # Визначте точну командну лінію, що шукає правило виявлення $conhostPath = "$env:windirsystem32conhost.exe" $cmdLine = '--headless "node.exe" "bootstrap.js"' # Запустіть conhost з шкідливими на вигляд аргументами Start-Process -FilePath $conhostPath -ArgumentList $cmdLine -WorkingDirectory $env:TEMP Write-Host "Симуляція завершена – перевірте SIEM для попередження." -
Команди очищення:
# Зупиніть усі решті процеси node або conhost, запущені тестом Get-Process -Name node, conhost -ErrorAction SilentlyContinue | Stop-Process -Force # Видалити тимчасовий скрипт початкового завантаження Remove-Item -Path "$env:TEMPbootstrap.js" -Force -ErrorAction SilentlyContinue Write-Host "Очистка завершена."