SOC Prime Bias: Medium

05 Jan 2026 16:10 UTC

Neue VVS Stealer Malware zielt auf Discord-Konten durch verschleierten Python-Code ab

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Folgen
Neue VVS Stealer Malware zielt auf Discord-Konten durch verschleierten Python-Code ab
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

VVS Stealer ist ein neu beobachteter, auf Python basierender Informationsdiebstahl, der auf Telegram verkauft wird. Er ist mit Pyarmor verschleiert, mit PyInstaller verpackt und bleibt über den Windows-Startup-Ordner bestehen. Die Malware erfasst Discord-Tokens, Browser-Anmeldedaten, Cookies, Verlauf, Passwörter und Screenshots. Sie kann auch eine bösartige JavaScript-Nutzlast injizieren, um aktive Discord-Sitzungen zu kapern.

Untersuchung

Palo Alto Networks Unit 42 enthüllte die Malware und stellte fest, dass sie seit April 2025 zum Verkauf angeboten wird. Forscher beschrieben ihre Verschleierungstechnik, das Vertriebsmodell und die Funktionalität, einschließlich Anmeldedaten-Diebstahl und Discord-Injektion. Der Bericht verbindet das Tool mit französischsprachigen Bedrohungsakteuren, die in auf Stealer fokussierten Telegram-Gruppen aktiv sind.

Abschwächung

Organisationen sollten auf unbekannte PyInstaller-Executables und unerwartete Verknüpfungen im Startup-Ordner achten. Endpunkterkennungsregeln für verschleierte Python-Skripte und verdächtige JavaScript-Nutzlasten bereitstellen. Mehrfaktor-Authentifizierung für Discord- und Browser-Konten erzwingen und administrative Privilegien einschränken, die für Anmeldedaten-Diebstahl missbraucht werden könnten.

Antwort

Wenn VVS Stealer entdeckt wird, isolieren Sie den betroffenen Endpunkt, sammeln Sie Speicher- und Datei-Artefakte und extrahieren Sie IOCs. Entfernen Sie den bösartigen Starteintrag, beenden Sie alle injizierten Discord-Prozesse und erzwingen Sie einen Passwort-Reset für kompromittierte Konten. Führen Sie eine vollständige forensische Untersuchung durch, um zusätzlich gestohlene Anmeldedaten zu lokalisieren und sicherzustellen, dass die Remote-C2-Infrastruktur blockiert ist.

Angriffsfluss

Simulation Ausführen

Voraussetzung: Die Telemetrie- und Basislinien-Vorflugprüfung muss bestanden sein.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), die zur Auslösung der Erkennungsregel entwickelt wurde. Die Befehle und Erzählungen MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht zusammenhängende Beispiele führen zu Fehldiagnosen.

  • Angriffserzählung & Befehle:
    Der Gegner hat ein niedrig privilegiertes Benutzerkonto auf einem Windows-Workstation kompromittiert. Mit einem PowerShell-Dropper starten sie ein bösartiges PyInstaller-verpacktes Executable (VVS_Stealer.exe), das zuerst einen Prozess mit der Befehlszeile unter Verwendung des Strings „PyInstaller“ ausführt. Die Nutzlast beendet dann gewaltsam den laufenden Discord-Client, um sich auf eine Token-Diebstahl-Injektionsphase vorzubereiten. Alle Aktionen erfolgen im Kontext des aktuellen Benutzers und erzeugen ein einziges Prozesserstellungs- Ereignis, das den Kriterien der Regel entspricht.

    Schritt-für-Schritt-Anleitung:

    1. Kopieren Sie das bösartige PyInstaller-Paket nach %TEMP%.
    2. Führen Sie es mit einer Befehlszeile aus, die ausdrücklich das Wort “PyInstaller” enthält.
    3. Die bösartige Binärdatei ruft intern taskkill /IM Discord.exe /F auf, um Discord zu beenden.
    4. Das Beenden erzeugt ein Prozesserstellungs- Ereignis, bei dem das Image Feld zum Discord-Executable-Pfad aufgelöst wird (C:Users<user>AppDataLocalDiscordapp-... Discord.exe) und die ursprüngliche Befehlszeile beim Starten weiterhin “PyInstaller” enthält.
  • Regressionstest-Skript: Das folgende PowerShell-Skript reproduziert die genaue Telemetrie, die zur Auslösung der Erkennungsregel erforderlich ist. Es vermeidet absichtlich jegliche real bösartige Nutzlast; stattdessen startet es einen harmlosen notepad.exe Prozess, aber gibt vor , ein PyInstaller-verpacktes Executable zu sein, indem das Schlüsselwort in die Befehlszeile eingebettet wird. Es beendet auch jeden laufenden Discord-Prozess, um die Bedingung „Image endet mit Discord.exe“ widerzuspiegeln.

    # -------------------------------------------------
    # Simulationsskript – Triggers Sigma-Regel #f63685c4‑feea‑431b‑a749‑55cf8661e6ac
    # -------------------------------------------------
    
    # 1. Stellen Sie sicher, dass Discord läuft (optional, um die Beendigung zu gewährleisten)
    $discordPath = "$env:LOCALAPPDATADiscordapp-1.0.9005Discord.exe"
    if (-Not (Get-Process -Name "Discord" -ErrorAction SilentlyContinue)) {
        Start-Process -FilePath $discordPath -WindowStyle Hidden
        Start-Sleep -Seconds 5
    }
    
    # 2. Starten Sie einen Dummy-Prozess mit "PyInstaller" in der Befehlszeile.
    #    Verwenden von notepad.exe als harmlosen Platzhalter.
    $dummyCmd = "C:WindowsSystem32notepad.exe"
    $cmdLine = "PyInstaller_dummy_execution -run $dummyCmd"
    Start-Process -FilePath $dummyCmd -ArgumentList $cmdLine -WindowStyle Hidden
    Write-Host "[+] Dummy-Prozess mit PyInstaller-Schlüsselwort gestartet."
    
    # 3. Beenden Sie sofort Discord, um das Discord.exe-Image-Ereignis zu erzeugen.
    if (Get-Process -Name "Discord" -ErrorAction SilentlyContinue) {
        Stop-Process -Name "Discord" -Force
        Write-Host "[+] Discord.exe beendet."
    }
    
    # 4. Optional: Bereinigen Sie das Dummy-Notepad-Fenster nach einer kurzen Verzögerung.
    Start-Sleep -Seconds 8
    Get-Process -Name "notepad" -ErrorAction SilentlyContinue | Stop-Process -Force
    Write-Host "[+] Bereinigung abgeschlossen."
  • Bereinigungskommandos: Stellen Sie sicher, dass keine verbleibenden Prozesse vorhanden sind.

    # Entfernen Sie alle verbleibenden Dummy-Notepad-Prozesse
    Get-Process -Name "notepad" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Starten Sie Discord neu, falls für die Post-Test-Kontinuität erforderlich
    $discordPath = "$env:LOCALAPPDATADiscordapp-1.0.9005Discord.exe"
    if (-Not (Get-Process -Name "Discord" -ErrorAction SilentlyContinue)) {
        Start-Process -FilePath $discordPath
        Write-Host "[+] Discord für normalen Betrieb neu gestartet."
    }