Nuevo Malware VVS Stealer Apunta a Cuentas de Discord Mediante Código Python Ofuscado
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
Detecciones
Archivo de Python Creado en Directorio Inusual (mediante file_event)
Ver
Posible Abuso de Discord como Canal C2 (mediante dns_query)
Ver
Posible Abuso de Discord como Canal C2 (mediante proxy)
Ver
Binarios / Scripts Sospechosos en Ubicación de Autoinicio (mediante file_event)
Ver
Posible Utilización de PyInstaller (mediante file_event)
Ver
Paquete PyInstaller de VVS Stealer y Terminación de Discord [Creación de Procesos en Windows]
Ver
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:
- Copiar el paquete malicioso de PyInstaller a
%TEMP%. - Ejecutarlo con una línea de comando que incluya explícitamente la palabra “PyInstaller”.
- El binario malicioso llama internamente
taskkill /IM Discord.exe /Fpara terminar Discord. - La terminación genera un Creación de Procesos evento donde el
Imágencampo 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”.
- Copiar el paquete malicioso de PyInstaller a
-
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.exeproceso 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." }