Neue VVS Stealer Malware zielt auf Discord-Konten durch verschleierten Python-Code ab
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
Erkennungen
Python-Datei in ungewöhnlichem Verzeichnis erstellt (über file_event)
Ansicht
Möglicher Missbrauch von Discord als C2-Kanal (über dns_query)
Ansicht
Möglicher Missbrauch von Discord als C2-Kanal (über Proxy)
Ansicht
Verdächtige Binär-/Skripte im Autostart-Standort (über file_event)
Ansicht
Mögliche PyInstaller-Nutzung (über file_event)
Ansicht
VVS Stealer PyInstaller-Paket und Discord-Beendigung [Windows Prozess-Erstellung]
Ansicht
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:
- Kopieren Sie das bösartige PyInstaller-Paket nach
%TEMP%. - Führen Sie es mit einer Befehlszeile aus, die ausdrücklich das Wort “PyInstaller” enthält.
- Die bösartige Binärdatei ruft intern
taskkill /IM Discord.exe /Fauf, um Discord zu beenden. - Das Beenden erzeugt ein Prozesserstellungs- Ereignis, bei dem das
ImageFeld zum Discord-Executable-Pfad aufgelöst wird (C:Users<user>AppDataLocalDiscordapp-... Discord.exe) und die ursprüngliche Befehlszeile beim Starten weiterhin “PyInstaller” enthält.
- Kopieren Sie das bösartige PyInstaller-Paket nach
-
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.exeProzess, 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." }