SOC Prime Bias: Kritisch

22 Jan. 2026 19:09

Analyse der BigSquatRat npm Paketkampagne

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
Analyse der BigSquatRat npm Paketkampagne
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Der Bericht beschreibt ein bösartiges npm-Paket, bigmathix, das einen Node.js Remote Access Trojan installiert. Es verwendet verschleierten mehrstufigen Code, um Nachlade-Payloads von einem von Angreifern kontrollierten GitHub-Inhalt und aurevian.cloud abzurufen. Die Erkennung wird durch dynamische Entschlüsselungsschlüssel und ein erforderliches Initialisierungsargument, das die Ausführung steuert, erschwert, was einem zielgerichteten Supply-Chain-Angriff auf JavaScript-Entwickler entspricht.

Untersuchung

Forscher haben das Paket entschlüsselt, um eine Kette zu rekonstruieren, die einen Kindprozess erzeugt, DNS-Auflösung durchführt und eingebettete URLs mit abgeleiteten Schlüsseln entschlüsselt. Durch bruteforce des Initialisierungswerts erhielten sie eine zweite Payload von aurevian.cloud, die zusätzliche Verschleierung in der endgültigen RAT-Logik einführte. Analysten korrelierten auch verwandte GitHub-Repositories und zusätzliche npm-Pakete, die zu ähnlichen Zeitpunkten veröffentlicht wurden, um den Umfang der Kampagne zu kartieren.

Minderung

Vermeiden Sie unzuverlässige npm-Abhängigkeiten – insbesondere neu veröffentlichte Pakete mit wenigen Downloads oder Module mit abrupten Versionsänderungen – und validieren Sie die Integrität über Hashes/Herkunftskontrollen. Überwachen Sie verdächtige Child-Prozesse, die von node.exe gestartet werden, und unerwartete ausgehende Abfragen zu unbekannten Domains. Wenden Sie Egress-Filterung für aurevian.cloud an und alarmieren Sie bei Persistenz wie Windows-Run-Keys oder Linux-systemd-Diensten, die von Node.js-Prozessen erstellt wurden.

Reaktion

Wenn bigmathix identifiziert wird, isolieren Sie den Endpunkt, entfernen Sie das Paket und beenden Sie gestartete Node.js-Prozesse. Löschen Sie erstellte Run-Keys oder systemd-Einheiten, blockieren Sie zugehörige Domains/IPs und sammeln Sie Protokolle, die DNS, Prozessabstammung und Netzwerkabfluss zeigen. Führen Sie Forensik durch, um heruntergeladene Payloads und Persistenz wie wscript.exe Launcher oder geplante Dienste zu identifizieren und suchen Sie dann in der gesamten Umgebung nach passenden Artefakten.

„graph TB %% Class Definitions Section classDef action fill:#99ccff classDef process fill:#ffcc99 classDef persistence fill:#ccffcc classDef c2 fill:#ccccff classDef cleanup fill:#ffccff %% Nodes Definitions node_supply_chain[„<b>Technik</b> – T1195.001 Lieferkettenkompromittierung<br /><b>Beschreibung</b>: Kompromittieren der Software-Lieferkette zur Verbreitung bösartiger Codes.<br /><b>Detail</b>: Bösartiges npm-Paket ‚bigmathix‘ veröffentlicht.“] class node_supply_chain action node_obfuscation[„<b>Technik</b> – T1027 Verschleierte Dateien oder Informationen<br /><b>Subu2011techniken</b>: T1027.009 (Steganographie), T1027.004 (Kompilieren nach Lieferung)<br /><b>Beschreibung</b>: Paket enthält stark verschleiertes JavaScript, das zur Laufzeit entschleiert wird.“] class node_obfuscation action node_process_creation[„<b>Technik</b> – T1543 Systemprozess erstellen oder ändern<br /><b>Subu2011technik</b>: T1543.001 (Start-Agent)<br /><b>Beschreibung</b>: Loader erzeugt einen Child-Node.js-Prozess und bricht den Prozessbaum, um die Ausführung zu verbergen (T1036.009).“] class node_process_creation process node_dns_key_derivation[„<b>Technik</b> – T1071.004 Anwendungsprotokoll DNS<br /><b>Zusätzlich</b>: T1590.002 (Domain/IP), T1596.001 (Kryptografisches Material beziehen)<br /><b>Beschreibung</b>: Generiert numerisches Argument, führt DNS-Lookup für IP durch, kombiniert IP mit SHA‑256-Hash des entfernten README, um Entschlüsselungsschlüssel abzuleiten.“] class node_dns_key_derivation action node_encrypted_download[„<b>Technik</b> – T1573.001 Verschlüsselter Kanal Asymmetrische Kryptographie<br /><b>Beschreibung</b>: Verwendet AES‑GCM-verschlüsselten Kanal, um eine zweite Stufe-Payload von aurevian.cloud abzurufen.“] class node_encrypted_download action node_persistence_linux[„<b>Technik</b> – T1543.002 Systemdienst<br /><b>Beschreibung</b>: Erstellt einen systemd-Dienst und startet ihn über systemctl für Persistenz auf Linux.“] class node_persistence_linux persistence node_persistence_windows[„<b>Technik</b> – T1547.014 Registrierungs-Run-Keys-Startup-Ordner<br /><b>Beschreibung</b>: Erstellt einen ASEP-Run‑Key, der wscript.exe u2192 node.exe zum Persistieren auf Windows startet.“] class node_persistence_windows persistence node_c2[„<b>Technik</b> – T1104 Werkzeuginfiltration (C2)<br /><b>Beschreibung</b>: RAT fragt C2 ab, führt empfangene Befehle aus und überprüft die MetaMask-Chrome-Erweiterung.“] class node_c2 c2 node_cleanup[„<b>Technik</b> – T1070.004 Dateilöschung, T1070.009 Registrierung leeren<br /><b>Beschreibung</b>: Die Endstufe löscht ihre Dateien und entfernt Registrierungs-/Run-Key-Einträge, um Beweise zu löschen.“] class node_cleanup cleanup %% Verbindungen, die den Angriffsablauf zeigen node_supply_chain u002du002d>|führt zu| node_obfuscation node_obfuscation u002du002d>|führt zu| node_process_creation node_process_creation u002du002d>|verwendet| node_dns_key_derivation node_dns_key_derivation u002du002d>|verwendet| node_encrypted_download node_encrypted_download u002du002d>|ermöglicht| node_persistence_linux node_encrypted_download u002du002d>|ermöglicht| node_persistence_windows node_persistence_linux u002du002d>|unterstützt| node_c2 node_persistence_windows u002du002d>|unterstützt| node_c2 node_c2 u002du002d>|auslöst| node_cleanup „

Angriffsablauf

Simulationsausführung

Voraussetzung: Der Telemetrie- & Baseline-Prüfflug muss bestanden sein.

Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der gegnerischen Technik (TTP), die entwickelt wurde, um die Erkennungsregel auszulösen. Die Befehle und die Erzählung MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht verwandte Beispiele führen zu Fehlinterpretationen.

  • Angriffserzählung & Befehle:
    Der Angreifer besitzt eine bösartige JavaScript-Payload, die die Node.js-Laufzeit zur Ausführung benötigt. Um die Standardanwendungs-Whitelisting zu umgehen, verwenden sie wscript.exe– ein nativer Windows Skript-Host – um zu starten node.exe indirekt, wodurch eine Eltern-/Kindbeziehung entsteht, die der Erkennungsregel entspricht. Die Schritte sind:

    1. Einen bösartigen Skript fallen lassen (malicious.js), das einfach node.exe mit der Payload erzeugt.
    2. Erstellen Sie ein Wrapper-JavaScript (launcher.js), das der Windows-Skripthost ausführen wird; dieser Wrapper verwendet WScript.Shell um anzuführen node.exe mit der Payload erzeugt.
    3. Führen Sie den Wrapper aus über wscript.exe //B //Nologo launcher.js.
    4. Der resultierende Prozessbaum ist wscript.exe → node.exe → malicious.js, was die Zieltelemetrie erzeugt.
  • Regressions-Testszenario:
    Das folgende PowerShell-Skript automatisiert die gesamte Kette auf einem Windows-Testhost.

    # -------------------------------------------------
    # Regressionstest – Node.js RAT Ausführung über wscript
    # -------------------------------------------------
    
    # Variablen
    $tempPath = "$env:TEMP"
    $launcherPath = Join-Path $tempPath "launcher.js"
    $payloadPath  = Join-Path $tempPath "malicious.js"
    $nodePath     = "C:Program Filesnodejsnode.exe"   # Anpassen, falls woanders installiert
    
    # 1. Schreiben Sie die bösartige Nutzlast (einfacher Konsolen-Log für Demo)
    $payloadContent = @"
    console.log('Malicious payload executed');
    // Echter RAT-Code wäre hier
    "@
    $payloadContent | Out-File -FilePath $payloadPath -Encoding ASCII
    
    # 2. Schreiben Sie den Launcher, der von wscript ausgeführt wird
    $launcherContent = @"
    var shell = WScript.CreateObject("WScript.Shell");
    // Führen Sie node.exe mit dem bösartigen Skript aus
    var cmd = "`"$nodePath`" `"$payloadPath`"";
    shell.Run(cmd, 0, false);
    "@
    $launcherContent | Out-File -FilePath $launcherPath -Encoding ASCII
    
    # 3. Führen Sie die Kette über wscript aus
    Write-Host "Starten der bösartigen Kette..."
    wscript.exe //B //Nologo $launcherPath
    
    # Pause, um Telemetrie erfassen zu lassen
    Start-Sleep -Seconds 5
    
    # 4. Optional: Überprüfen Sie, ob der Node-Prozess ausgeführt wird (zur manuellen Beobachtung)
    Get-Process -Name node -ErrorAction SilentlyContinue
    
    # -------------------------------------------------
    # Ende des Regressions-Tests
    # -------------------------------------------------
  • Aufräumbefehle: Artefakte entfernen und verbleibende Prozesse beenden.

    # Aufräum-Skript – nach der Validierung ausführen
    $tempPath = "$env:TEMP"
    Remove-Item -Path (Join-Path $tempPath "launcher.js") -ErrorAction SilentlyContinue
    Remove-Item -Path (Join-Path $tempPath "malicious.js") -ErrorAction SilentlyContinue
    
    # Beenden Sie alle streunenden node.exe-Prozesse, die durch den Test erzeugt wurden
    Get-Process -Name node -ErrorAction SilentlyContinue | Stop-Process -Force