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.
„graph TB %% Class definitions classDef action fill:#99ccff classDef malware fill:#ff9999 classDef tool fill:#cccccc classDef technique fill:#ffff99 %% Nodes mal_vvs_stealer[„<b>Malware</b> – <b>VVS Stealer</b><br/><b>Beschreibung</b>: Informationsdieb, verpackt mit PyInstaller und verschleiert mit PyArmor.“] class mal_vvs_stealer malware tool_pyinstaller[„<b>Tool</b> – <b>PyInstaller</b><br/><b>Beschreibung</b>: Bündelt Python-Anwendungen in eigenständige ausführbare Dateien.“] class tool_pyinstaller tool tool_pyarmor[„<b>Tool</b> – <b>PyArmor</b><br/><b>Beschreibung</b>: Verschleiert Python-Bytecode, um bösartige Logik zu verbergen.“] class tool_pyarmor tool tech_T1027[„<b>Technik</b> – <b>T1027 Verschleierte Dateien oder Informationen</b><br/><b>Beschreibung</b>: Gegner verwenden Verschleierung, um bösartigen Code zu verbergen.“] class tech_T1027 technique action_download_js[„<b>Aktion</b> – Zusätzliche JavaScript-Payload herunterladen“] class action_download_js action tech_T1027_006[„<b>Technik</b> – <b>T1027.006 HTML-Schmuggel</b><br/><b>Beschreibung</b>: Bösartige Code in HTML einbetten, um Abwehrmechanismen zu umgehen.“] class tech_T1027_006 technique tech_T1505[„<b>Technik</b> – <b>T1505 Server-Software-Komponenten</b><br/><b>Beschreibung</b>: Zusätzliche serverseitige Komponenten installieren, um bösartige Aktivitäten zu unterstützen.“] class tech_T1505 technique action_persistence[„<b>Aktion</b> – Persistenz über den Startordner etablieren“] class action_persistence action tech_T1037_005[„<b>Technik</b> – <b>T1037.005 Startobjekte</b><br/><b>Beschreibung</b>: Ausführbare Dateien im Startordner des Benutzers platzieren, um beim Anmelden auszuführen.“] class tech_T1037_005 technique tech_T1547[„<b>Technik</b> – <b>T1547 Boot- oder Anmeldestart-Ausführung</b><br/><b>Beschreibung</b>: Programme für die automatische Ausführung beim Start oder der Anmeldung registrieren.“] class tech_T1547 technique action_fake_error[„<b>Aktion</b> – Falsches schwerwiegendes Fehler-Popup anzeigen“] class action_fake_error action tech_T1562_011[„<b>Technik</b> – <b>T1562.011 Sicherheitswarnung vortäuschen</b><br/><b>Beschreibung</b>: Gefälschte Sicherheitswarnungen anzeigen, um Benutzer zu täuschen.“] class tech_T1562_011 technique action_screenshot[„<b>Aktion</b> – Bildschirm aufnehmen“] class action_screenshot action tech_T1113[„<b>Technik</b> – <b>T1113 Bildschirmaufnahme</b><br/><b>Beschreibung</b>: Screenshots des Desktops des Opfers aufnehmen.“] class tech_T1113 technique action_browser_harvest[„<b>Aktion</b> – Browserdaten ernten (Cookies, Passwörter, Verlauf)“] class action_browser_harvest action tech_T1555_003[„<b>Technik</b> – <b>T1555.003 Anmeldedaten von Webbrowsern</b><br/><b>Beschreibung</b>: Gespeicherte Anmeldedaten und Cookies aus Browsern extrahieren.“] class tech_T1555_003 technique action_discord_hijack[„<b>Aktion</b> – Discord-Client beenden und bösartiges JavaScript injizieren“] class action_discord_hijack action tech_T1539[„<b>Technik</b> – <b>T1539 Web-Sitzungscookie stehlen</b><br/><b>Beschreibung</b>: Aktive Web-Sitzungscookies aus Browsern erhalten.“] class tech_T1539 technique tech_T1134_003[„<b>Technik</b> – <b>T1134.003 Zugangstoken-Manipulation</b><br/><b>Beschreibung</b>: Authentifizierungstokens stehlen oder imitieren.“] class tech_T1134_003 technique action_c2_exfil[„<b>Aktion</b> – Daten über webbasiertes C2 exfiltrieren“] class action_c2_exfil action tech_T1071_001[„<b>Technik</b> – <b>T1071.001 Anwendungsschichtprotokoll: Webprotokolle</b><br/><b>Beschreibung</b>: Standardmäßigen Webverkehr für Befehls- und Kontrolloperationen nutzen.“] class tech_T1071_001 technique tech_T1102[„<b>Technik</b> – <b>T1102 Webdienst</b><br/><b>Beschreibung</b>: Kommunikation mit entfernten Servern über Webdienste zur Datenexfiltration.“] class tech_T1102 technique %% Connections mal_vvs_stealer u002du002d>|verwendet| tech_T1027 mal_vvs_stealer u002du002d>|verpackt mit| tool_pyinstaller mal_vvs_stealer u002du002d>|verschleiert mit| tool_pyarmor mal_vvs_stealer u002du002d>|lädt herunter| action_download_js action_download_js u002du002d>|verwendet| tech_T1027_006 action_download_js u002du002d>|verwendet| tech_T1505 action_download_js u002du002d>|etabliert Persistenz über| action_persistence action_persistence u002du002d>|verwendet| tech_T1037_005 action_persistence u002du002d>|nutzt| tech_T1547 action_persistence u002du002d>|zeigt an| action_fake_error action_fake_error u002du002d>|verwendet| tech_T1562_011 action_fake_error u002du002d>|nimmt auf| action_screenshot action_screenshot u002du002d>|verwendet| tech_T1113 action_screenshot u002du002d>|erntet| action_browser_harvest action_browser_harvest u002du002d>|verwendet| tech_T1555_003 action_browser_harvest u002du002d>|zielt auf Discord ab und injiziert JS| action_discord_hijack action_discord_hijack u002du002d>|verwendet| tech_T1539 action_discord_hijack u002du002d>|verwendet| tech_T1134_003 action_discord_hijack u002du002d>|exfiltriert über| action_c2_exfil action_c2_exfil u002du002d>|verwendet| tech_T1071_001 action_c2_exfil u002du002d>|verwendet| tech_T1102 „
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." }