SOC Prime Bias: Medio

05 Jan 2026 16:10 UTC

Il nuovo malware VVS Stealer prende di mira gli account Discord tramite codice Python offuscato

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
Il nuovo malware VVS Stealer prende di mira gli account Discord tramite codice Python offuscato
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

VVS Stealer è un nuovo information stealer basato su Python osservato in vendita su Telegram. È offuscato con Pyarmor, confezionato con PyInstaller e persiste attraverso la cartella di avvio di Windows. Il malware raccoglie token Discord, credenziali del browser, cookie, cronologia, password e screenshot. Può anche iniettare un payload JavaScript dannoso per dirottare sessioni Discord attive.

Indagine

Palo Alto Networks Unit 42 ha divulgato il malware, notando che è stato offerto in vendita dall’aprile 2025. I ricercatori hanno descritto la tecnica di offuscamento, il modello di distribuzione e le funzionalità tra cui il furto di credenziali e l’iniezione Discord. Il rapporto collega lo strumento ad attori di minacce di lingua francese attivi in gruppi Telegram focalizzati su stealer.

Mitigazione

Le organizzazioni dovrebbero monitorare la presenza di eseguibili PyInstaller sconosciuti e collegamenti inaspettati nella cartella di avvio. Implementare regole di rilevamento a livello di endpoint per script Python offuscati e payload JavaScript sospetti. Applicare l’autenticazione multi-fattore per account Discord e browser e limitare i privilegi amministrativi che potrebbero essere utilizzati per l’estrazione di credenziali.

Risposta

Se viene rilevato VVS Stealer, isolare l’endpoint interessato, raccogliere artefatti di memoria e file, ed estrarre IOC. Rimuovere la voce di avvio dannosa, terminare eventuali processi Discord iniettati e forzare il reset della password per gli account compromessi. Effettuare un’indagine forense completa per localizzare ulteriori credenziali rubate e assicurarsi che l’infrastruttura C2 remota sia bloccata.

Flusso di attacco

Esecuzione della simulazione

Prerequisito: il controllo preliminare di telemetria e baseline deve essere superato.

Ragionamento: questa sezione descrive l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.

  • Narrazione dell’attacco e comandi:
    L’avversario ha compromesso un account utente con privilegi bassi su una workstation Windows. Utilizzando un dropper PowerShell, avviano un eseguibile confezionato con PyInstaller dannoso (VVS_Stealer.exe) che per primo genera un processo con la linea di comando contenente la stringa “PyInstaller”. Il payload quindi termina forzatamente il client Discord in esecuzione per prepararsi a una fase di iniezione per il furto di token. Tutte le azioni avvengono sotto il contesto dell’utente corrente, generando un singolo Evento di creazione del processo che corrisponde ai criteri della regola.

    Passo-passo:

    1. Copia il pacchetto PyInstaller dannoso in %TEMP%.
    2. Eseguire con una linea di comando che includa esplicitamente la parola “PyInstaller”.
    3. Il binario dannoso chiama internamente taskkill /IM Discord.exe /F per terminare Discord.
    4. La terminazione genera un Evento di creazione del processo evento in cui il campo Immagine viene risolto nel percorso dell’eseguibile Discord (C:Users<user>AppDataLocalDiscordapp-... Discord.exe) e la linea di comando originaria contiene ancora “PyInstaller”.
  • Script di test di regressione: Il seguente script PowerShell riproduce la telemetria esatta necessaria per attivare la regola di rilevamento. Evita intenzionalmente qualsiasi payload dannoso reale; invece, lancia un processo innocuo notepad.exe ma finge di essere un eseguibile confezionato con PyInstaller incorporando la parola chiave nella linea di comando. Termina anche qualsiasi processo Discord in esecuzione per riflettere la condizione “Immagine termina con Discord.exe”. pretends to be a PyInstaller‑packed executable by embedding the keyword in the command line. It also terminates any running Discord process to mirror the “Image endswith Discord.exe” condition.

    # -------------------------------------------------
    # Simulation Script – Triggers Sigma rule #f63685c4‑feea‑431b‑a749‑55cf8661e6ac
    # -------------------------------------------------
    
    # 1. Ensure Discord is running (optional, to guarantee termination)
    $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. Launch a dummy process with "PyInstaller" in its command line.
    #    Using notepad.exe as a benign placeholder.
    $dummyCmd = "C:WindowsSystem32notepad.exe"
    $cmdLine = "PyInstaller_dummy_execution -run $dummyCmd"
    Start-Process -FilePath $dummyCmd -ArgumentList $cmdLine -WindowStyle Hidden
    Write-Host "[+] Launched dummy process with PyInstaller keyword."
    
    # 3. Immediately terminate Discord to generate the Discord.exe image event.
    if (Get-Process -Name "Discord" -ErrorAction SilentlyContinue) {
        Stop-Process -Name "Discord" -Force
        Write-Host "[+] Discord.exe terminated."
    }
    
    # 4. Optional: Clean up the dummy notepad window after a short delay.
    Start-Sleep -Seconds 8
    Get-Process -Name "notepad" -ErrorAction SilentlyContinue | Stop-Process -Force
    Write-Host "[+] Cleanup completed."
  • Comandi di pulizia: Assicurati che non rimangano processi residui.

    # Remove any lingering dummy notepad processes
    Get-Process -Name "notepad" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Restart Discord if needed for post‑test continuity
    $discordPath = "$env:LOCALAPPDATADiscordapp-1.0.9005Discord.exe"
    if (-Not (Get-Process -Name "Discord" -ErrorAction SilentlyContinue)) {
        Start-Process -FilePath $discordPath
        Write-Host "[+] Discord restarted for normal operations."
    }