Supply-Chain-Angriff auf Axios bezieht bösartige Abhängigkeit von NPM
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Ein böswilliges npm-Paket, plain-crypto-js@4.2.1, wurde veröffentlicht und später als transitive Abhängigkeit durch kompromittierte Veröffentlichungen des weit verbreiteten JavaScript-HTTP-Clients Axios eingebunden. Das Paket verwendet ein Post-Installationsskript, um einen mehrstufigen Remote-Access-Trojaner bereitzustellen, der auf Windows, macOS und Linux abzielt. Der Angriff scheint auf langlebigen npm-Token zu beruhen, die es den Bedrohungsakteuren ermöglichen, böswillige Versionen außerhalb des üblichen Veröffentlichungsworkflows des Projekts zu verbreiten. Das frühzeitige Erkennen der manipulierten Abhängigkeit kann den RAT stoppen, bevor er auf betroffenen Systemen ausgeführt wird.
Untersuchung
Socket Research führte eine statische Analyse des setup.js -Droppers durch und entschlüsselte kodierte Zeichenfolgen, um die C2-Domain, die Logik der Payload-Lieferung und die angezielten Dateisystempfade aufzudecken. Die Forscher identifizierten drei kompromittierte Axios-Versionen und zwei zusätzliche npm-Pakete, die denselben böswilligen Code enthielten. Sie extrahierten auch Netzwerkindikatoren, Datei-Pfade und User-Agent-Zeichenfolgen, die für die Erkennungserstellung und Regelgenerierung verwendet werden können.
Abschwächung
Organisationen sollten alle langlebigen npm-Token widerrufen und Anmeldeinformationen für alle potenziell betroffenen Konten ändern. Kompromittierte Axios-Versionen und jegliche Pakete, die von plain-crypto-js@4.2.1 abhängig sind, sollten sofort entfernt oder zurückgestuft werden. Teams sollten auch Lockfiles, CI/CD-Pipelines und Sicherheitskontrollen der Softwarelieferkette überprüfen, um unautorisierte Veröffentlichungstätigkeiten zu identifizieren und die Wahrscheinlichkeit zukünftiger Paketkompromittierungen zu verringern.
Reaktion
Sicherheitsteams sollten npm-Installationsprotokolle auf Verweise auf plain-crypto-js@4.2.1 und die betroffenen Axios-Versionen überwachen. Erkennungsregeln sollten für die Ausführung des Postinstall-Hooks, den Netzwerkzugang zu sfrclak.comund die bösartige User-Agent-Zeichenfolge erstellt werden. Wenn eine Kompromittierung bestätigt wird, sollten betroffene Systeme isoliert, flüchtiger Speicher zur Analyse gesammelt und der Host neu erstellt werden, wenn der RAT gefunden wird.
graph TB %% Class definitions classDef technique fill:#c2e0ff classDef tool fill:#ffd9b3 classDef malware fill:#f5b7b1 classDef process fill:#d5f5e3 %% Technique nodes tech_t1195_002[„<b>Technik</b> – <b>T1195.002</b> Lieferkettenangriff: Software kompromittieren<br/><b>Beschreibung</b>: Angreifer kompromittieren Updates oder Paketverteilung zur Ausführung von Schadcode.“] class tech_t1195_002 technique tech_t1127_003[„<b>Technik</b> – <b>T1127.003</b> Proxy-Ausführung über vertrauenswürdige Tools<br/><b>Beschreibung</b>: Schadcode über post-install Skript.“] class tech_t1127_003 technique tech_t1059_004[„<b>Technik</b> – <b>T1059.004</b> Unix Shell<br/><b>Beschreibung</b>: Nutzung von curl, chmod, nohup.“] class tech_t1059_004 technique tech_t1059_001[„<b>Technik</b> – <b>T1059.001</b> PowerShell“] class tech_t1059_001 technique tech_t1059_005[„<b>Technik</b> – <b>T1059.005</b> Visual Basic“] class tech_t1059_005 technique tech_t1059_003[„<b>Technik</b> – <b>T1059.003</b> Windows CMD“] class tech_t1059_003 technique tech_t1027_014[„<b>Technik</b> – <b>T1027.014</b> Verschleierung“] class tech_t1027_014 technique tech_t1070_004[„<b>Technik</b> – <b>T1070.004</b> Spuren löschen“] class tech_t1070_004 technique tech_t1195_001[„<b>Technik</b> – <b>T1195.001</b> Abhängigkeiten kompromittieren“] class tech_t1195_001 technique tech_t1127[„<b>Technik</b> – <b>T1127</b> npm Hooks“] class tech_t1127 technique tech_t1082[„<b>Technik</b> – <b>T1082</b> Systeminformationen sammeln“] class tech_t1082 technique tech_t1219[„<b>Technik</b> – <b>T1219</b> Remotezugriff“] class tech_t1219 technique tech_t1102_002[„<b>Technik</b> – <b>T1102.002</b> Webkommunikation“] class tech_t1102_002 technique tech_t1570[„<b>Technik</b> – <b>T1570</b> Laterale Übertragung“] class tech_t1570 technique tech_t1036_005[„<b>Technik</b> – <b>T1036.005</b> Tarnung“] class tech_t1036_005 technique tech_t1036_003[„<b>Technik</b> – <b>T1036.003</b> Umbenennung“] class tech_t1036_003 technique process_curl[„<b>Prozess</b> – curl“] class process_curl process process_chmod[„<b>Prozess</b> – chmod“] class process_chmod process process_nohup[„<b>Prozess</b> – nohup“] class process_nohup process malware_rat[„<b>Malware</b> – macOS RAT“] class malware_rat malware %% Connections (UNCHANGED) tech_t1195_002 –>|leads_to| tech_t1127_003 tech_t1127_003 –>|uses| tech_t1059_004 tech_t1059_004 –>|executes| tech_t1059_001 tech_t1059_004 –>|executes| tech_t1059_005 tech_t1059_004 –>|executes| tech_t1059_003 tech_t1059_004 –>|employs| tech_t1027_014 tech_t1059_004 –>|leverages| tech_t1195_001 tech_t1059_004 –>|leverages| tech_t1127 tech_t1059_004 –>|collects| tech_t1082 tech_t1027_014 –>|enables| tech_t1070_004 tech_t1082 –>|enables| tech_t1219 tech_t1219 –>|communicates via| tech_t1102_002 tech_t1102_002 –>|facilitates| tech_t1570 tech_t1570 –>|results in| tech_t1036_005 tech_t1570 –>|results in| tech_t1036_003 tech_t1059_004 –>|downloads| process_curl tech_t1059_004 –>|sets permissions| process_chmod tech_t1059_004 –>|runs background| process_nohup malware_rat –>|is the| tech_t1219
Angriffsablauf
Erkennungen
Verdächtige MacOS – Plist-Standorte und Namen (via file_event)
Ansicht
Verdächtige NodeJS-Kindprozesse [Windows] (via cmdline)
Ansicht
Hochladen / Herunterladen von Remote-Dateien über Standardwerkzeuge (via cmdline)
Ansicht
MacOS Verdächtige Änderung der Datei-Berechtigungen im Tmp-Ordner (via cmdline)
Ansicht
Verdächtige CURL-Nutzung (via cmdline)
Ansicht
Mögliche Ausführung durch die Verwendung von chmod und nohup in einem einzelnen Befehl (via cmdline)
Ansicht
Downloads in verdächtige Ordner (via cmdline)
Ansicht
LOLBAS WScript / CScript (via process_creation)
Ansicht
Die Möglichkeit der Ausführung durch versteckte PowerShell-Befehlszeilen (via cmdline)
Ansicht
Nohup-Nutzung (via cmdline)
Ansicht
IOCs (SourceIP) zur Erkennung: Lieferkettenangriff auf Axios zieht böswillige Abhängigkeit von npm
Ansicht
IOCs (DestinationIP) zur Erkennung: Lieferkettenangriff auf Axios zieht böswillige Abhängigkeit von npm
Ansicht
IOCs (E-Mails) zur Erkennung: Lieferkettenangriff auf Axios zieht böswillige Abhängigkeit von npm
Ansicht
PowerShell- und VBScript-Ausweichtaktiken im Lieferkettenangriff [Windows Prozess-Erstellung]
Ansicht
Erkennung der Ausführung bösartiger npm-Paketpostinstall-Hooks [Linux-Prozess-Erstellung]
Ansicht
Erkennung eines bösartigen Python-Skripts und temporärer Datei im Linux-Lieferkettenangriff [Linux-Datei-Ereignis]
Ansicht
Umbenanntes Windows-Terminal und selbstlöschendes VBScript erkannt [Windows-Datei-Ereignis]
Ansicht
PowerShell-Skriptausführung mit versteckten und Umgehungs-Flags [Windows PowerShell]
Ansicht
Simulation Ausführung
Voraussetzung: Der Telemetrie- und Basislinientest muss bestanden worden sein.
Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der Adversary-Technik (TTP), die darauf ausgelegt ist, die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.
-
Angriffs-Narrativ & Befehle:
Ein Angreifer, der begrenzte Benutzerrechte auf einer kompromittierten Arbeitsstation erlangt hat, möchte eine bösartige VBScript-Payload über ein legitimes npm-Paket (Lieferketten-Szenario) herunterladen. Um generischen PowerShell-Erkennung auszuweichen, kopiert der Angreifer
powershell.exein eine neue Datei namenspowershell_renamed.exehält aber die Zeichenfolge „powershell“ im Dateinamen bei (sodass derImage|containsCheck immer noch übereinstimmt). Der Angreifer führt dann eine “where powershell”-Abfrage aus, um den Pfad des umbenannten Binärdatei zu ermitteln und startet schließlich die VBScript-Payload mitcscript //nologoum das Logo-Banner zu unterdrücken. -
Regressionstest-Skript:
# ------------------------------------------------- # Schritt 1: Erstellen einer umbenannten Kopie von powershell.exe # ------------------------------------------------- $src = "$env:SystemRootSystem32WindowsPowerShellv1.0powershell.exe" $dst = "$env:Temppowershell_renamed.exe" Copy-Item -Path $src -Destination $dst -Force # ------------------------------------------------- # Schritt 2: Verwenden von 'where', um auf die umbenannte Binärdatei zu verweisen # ------------------------------------------------- $whereOutput = & where.exe powershell_renamed Write-Host "Umbenannte PowerShell gefunden unter: $whereOutput" # ------------------------------------------------- # Schritt 3: Erstellen einer einfachen bösartigen VBScript-Payload # ------------------------------------------------- $vbsPath = "$env:Tempmalicious.vbs" @" Set objShell = CreateObject("WScript.Shell") objShell.Run "cmd.exe /c echo pwned > $env:Temppwned.txt", 0, False "@ | Set-Content -Path $vbsPath -Encoding ASCII # ------------------------------------------------- # Schritt 4: Ausführen des VBScript still mit cscript //nologo # ------------------------------------------------- & $dst -Command "cscript //nologo `"$vbsPath`"" # ------------------------------------------------- # Ende der Simulation # ------------------------------------------------- -
Bereinigungskommandos:
# Entfernen der umbenannten PowerShell-Binärdatei Remove-Item -Path "$env:Temppowershell_renamed.exe" -Force -ErrorAction SilentlyContinue # Löschen der bösartigen VBScript-Datei Remove-Item -Path "$env:Tempmalicious.vbs" -Force -ErrorAction SilentlyContinue # Entfernen von Beweisen für die Ausführung Remove-Item -Path "$env:Temppwned.txt" -Force -ErrorAction SilentlyContinue