SOC Prime Bias: Medio

05 Jan 2026 16:10 UTC

Nuevo Malware VVS Stealer Apunta a Cuentas de Discord Mediante Código Python Ofuscado

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Nuevo Malware VVS Stealer Apunta a Cuentas de Discord Mediante Código Python Ofuscado
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

VVS Stealer es un nuevo ladrón de información basado en Python observado a la venta en Telegram. Está ofuscado con Pyarmor, empaquetado con PyInstaller y persiste a través de la carpeta de Inicio de Windows. El malware recopila tokens de Discord, credenciales de navegador, cookies, historial, contraseñas y capturas de pantalla. También puede inyectar una carga útil de JavaScript malicioso para secuestrar sesiones activas de Discord.

Investigación

Palo Alto Networks Unit 42 reveló el malware, señalando que ha estado a la venta desde abril de 2025. Los investigadores describieron su técnica de ofuscación, modelo de distribución y funcionalidad, incluyendo robo de credenciales e inyección en Discord. El informe vincula la herramienta a actores de amenaza francoparlantes activos en grupos de Telegram enfocados en stealer.

Mitigación

Las organizaciones deben monitorear ejecutables PyInstaller desconocidos y accesos directos inesperados en la carpeta de Inicio. Implementar reglas de detección de endpoint para scripts Python ofuscados y cargas útiles de JavaScript sospechosas. Aplicar autenticación multi-factor para cuentas de Discord y navegador y limitar privilegios administrativos que puedan ser abusados para el robo de credenciales.

Respuesta

Si se detecta VVS Stealer, aislar el endpoint afectado, recopilar artefactos de memoria y archivos, y extraer IOC. Eliminar la entrada maliciosa de inicio, terminar cualquier proceso inyectado de Discord y forzar un reinicio de contraseña para cuentas comprometidas. Realizar una investigación forense completa para localizar credenciales robadas adicionales y asegurar que la infraestructura remota de C2 esté bloqueada.

Flujo de Ataque

Ejecución de Simulación

Prerequisito: La Verificación Previa de Telemetría y Línea Base debe haber pasado.

Justificación: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTP identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados conducirán a diagnósticos erróneos.

  • Narrativa del Ataque y Comandos:
    El adversario ha comprometido una cuenta de usuario de bajo privilegio en una estación de trabajo de Windows. Utilizando un dropper de PowerShell, lanzan un ejecutable malicioso empaquetado con PyInstaller (VVS_Stealer.exe) que primero genera un proceso con la línea de comando que contiene la cadena “PyInstaller”. La carga útil luego termina forzosamente el cliente Discord en ejecución para prepararse para una etapa de inyección de robo de tokens. Todas las acciones ocurren bajo el contexto del usuario actual, generando un único Creación de Procesos evento que coincide con los criterios de la regla.

    Paso a paso:

    1. Copiar el paquete malicioso de PyInstaller a %TEMP%.
    2. Ejecutarlo con una línea de comando que incluya explícitamente la palabra “PyInstaller”.
    3. El binario malicioso llama internamente taskkill /IM Discord.exe /F para terminar Discord.
    4. La terminación genera un Creación de Procesos evento donde el Imágen campo se resuelve a la ruta del ejecutable de Discord (C:Users<user>AppDataLocalDiscordapp-... Discord.exe) y el comando de generación original aún contiene “PyInstaller”.
  • Script de Prueba de Regresión: El siguiente script de PowerShell reproduce la telemetría exacta necesaria para activar la regla de detección. Evita intencionalmente cualquier carga útil maliciosa real; en su lugar, lanza un notepad.exe proceso inofensivo pero pretende ser un ejecutable empaquetado con PyInstaller al incluir la palabra clave en la línea de comando. También termina cualquier proceso Discord en ejecución para reflejar la condición “Image endswith Discord.exe”.

    # -------------------------------------------------
    # Script de Simulación – Activa la regla Sigma #f63685c4‑feea‑431b‑a749‑55cf8661e6ac
    # -------------------------------------------------
    
    # 1. Asegúrese de que Discord esté corriendo (opcional, para garantizar la terminación)
    $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. Lanza un proceso ficticio con "PyInstaller" en su línea de comando.
    #    Usando notepad.exe como un marcador de posición benigno.
    $dummyCmd = "C:WindowsSystem32notepad.exe"
    $cmdLine = "PyInstaller_dummy_execution -run $dummyCmd"
    Start-Process -FilePath $dummyCmd -ArgumentList $cmdLine -WindowStyle Hidden
    Write-Host "[+] Lanzado proceso ficticio con palabra clave PyInstaller."
    
    # 3. Inmediatamente termina Discord para generar el evento de imagen Discord.exe.
    if (Get-Process -Name "Discord" -ErrorAction SilentlyContinue) {
        Stop-Process -Name "Discord" -Force
        Write-Host "[+] Discord.exe terminado."
    }
    
    # 4. Opcional: Limpiar la ventana del bloc de notas ficticia después de una breve espera.
    Start-Sleep -Seconds 8
    Get-Process -Name "notepad" -ErrorAction SilentlyContinue | Stop-Process -Force
    Write-Host "[+] Limpieza completada."
  • Comandos de Limpieza: Asegúrese de que no queden procesos residuales.

    # Eliminar cualquier proceso residual del bloc de notas
    Get-Process -Name "notepad" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Reiniciar Discord si es necesario para la continuidad posterior a la prueba
    $discordPath = "$env:LOCALAPPDATADiscordapp-1.0.9005Discord.exe"
    if (-Not (Get-Process -Name "Discord" -ErrorAction SilentlyContinue)) {
        Start-Process -FilePath $discordPath
        Write-Host "[+] Discord reiniciado para operaciones normales."
    }