Alert!

Infostealer fĂĽr Windows, macOS und Linux in zehn Pakten auf npm gefunden

Die npm-Pakete waren seit Juli verfĂĽgbar, haben die Schadroutinen aufwendig verschleiert und setzen auf ein Fake-CAPTCHA, um authentisch zu erscheinen.

vorlesen Druckansicht 14 Kommentare lesen
SchlĂĽssel am Haken auf Keyboard

(Bild: evkaz/Shutterstock.com)

Lesezeit: 3 Min.
Inhaltsverzeichnis
close notice

This article is also available in English. It was translated with technical assistance and editorially reviewed before publication.

Im JavaScript-Paketmanager npm waren seit Anfang Juli Pakete mit gut verstecktem Schadcode verfĂĽgbar. Das auf Software-Supply-Chain-Security spezialisierte Unternehmen Socket hat zehn Pakete gefunden, die zusammen auf 9900 Downloads kommen. Laut dem Socket-Blog waren sie am 28. Oktober noch auf npm verfĂĽgbar, sind dort inzwischen aber nicht mehr zu finden.

Die Pakete laden einen fĂĽr das Betriebssystem passenden Infostealer nach, der unter Windows, macOS und Linux Zugangsdaten abgreift. Der Angriff ist mehrfach verschleiert.

Die Angreifer setzen bei der Verteilung des Schadcodes auf Typosquatting: Die npm-Pakete tragen ähnliche Namen wie legitime Packages, darunter typescriptjs statt TypeScript und dizcordjs statt discord.js. Socket hat folgende Pakete mit Schadcode gefunden: typescriptjs, deezcord.js, dizcordjs ,dezcord.js, etherdjs, ethesjs, ethetsjs, nodemonjs, react-router-dom.js und zustand.js.

Videos by heise

Die Installationsroutine, die sich im "postinstall" der Konfiguration in package.json befindet, öffnet betriebssystemabhängig ein neues Terminalfenster, in dem sie dann mittels Node die Anwendung app.js startet. Auf die Weise bleibt die Ausführung im Hauptfenster verborgen.

Die Datei app.js verschleiert den Schadcode mit unterschiedlichen Methoden, darunter URL-Encoding und Switch-Anweisungen mit hexadezimalen und oktale Berechnungen:

// Control flow obfuscation makes it difficult to follow execution path
var kMvc = (0x75bcd15-0O726746425);  // Evaluates to 0
while(kMvc < (0o1000247%0x10023)) {  // Loop condition with mixed bases
  switch(kMvc) {
    case (0x75bcd15-0O726746425):  // Case 0
      kMvc = condition ? (262270%0o200031) : (0o204576-67939);
      break;
    case (0o203030-67070):  // Case 1
      // Actual logic here
      break;
  }
}

Die Kommentare im Codeausschnitt stammen von Socket. Um authentisch zu wirken, zeigt die Malware schlieĂźlich vor dem Start ein CAPTCHA als ASCII Art an.

DAs CAPTCHA ist eine reine AblenkungsmaĂźnahme.

(Bild: Socket)

Nach der Eingabe einer beliebigen Zeichensequenz – das CAPTCHA ist eine reine Ablenkungsmaßnahme – sendet der Schadcode die IP-Adresse des Zielsystems an einen Server der Angreifer und lädt ein Binary herunter, das zum zuvor ermittelten Betriebssystem passt.

Dafür wechselt die Schadsoftware die Programmiersprache auf Python: Der Schadcode findet sich in einem mittels PyInstaller verpackten Paket, das den in keinster Weise verschleierten Namen "data_extracter" trägt. PyInstaller verpackt eine Python-Anwendungen mit allen Dependencies in ein Paket und führt es auf dem Zielsystem aus. PyInstaller ist für Linux, Windows und macOS verfügbar und benötigt keine Python-Installation.

data_extracter sucht in zahlreichen Verzeichnissen und Dateien nach Zugangsdaten, darunter Firefox- und Chromium-Datenverzeichnisse, Directories fĂĽr SSH-SchlĂĽssel und Konfigurationsverzeichnisse wie ~/.aws/credentials. Das Programm durchsucht unter anderem SQLite-Datenbankdateien und JSON-Konfigrautionsdateien auf API-Keys und andere Credentials.

Die Anwendung greift zudem Cookie-Daten aus dem Browser ab und untersucht betriebssystemabhängig die Keyrings. Außerdem versucht sie Authentifizierungs-Token abzugreifen. Die gesammelten Credentials verpackt der data_extracter in eine Zip-Datei, die er schließlich an einen Server der Angreifer sendet.

Wer eins der genannten Pakete installiert hat, muss davon ausgehen, dass die Angreifer Daten abgegriffen haben. Auch wenn die gefundenen Pakete inzwischen nicht mehr zu finden sind, waren sie über drei Monate im Umlauf, und schon aufgrund der ausgefeilten Verschleierungstechniken könnten andere Pakete mit einer Variante des Angriffs betroffen sein.

Weitere Details zu den betroffenen Paketen, der Netzwerkinfrastruktur und den verwendeten MITRE ATT&CK-Techniken finden sich im Socket-Blog.

Der Vorfall ist ein erneutes Indiz, dass npm für Supply-Chain-Angrffe anfällig bleibt. Entwickler können jedoch einige Schutzmaßnahmen ergreifen.

(rme)