„Ein weiser Ninja sucht keinen Feind, den er nicht vollständig versteht.“ – Splinter von Teenage Mutant Ninja Turtles
Als technischer Redakteur mit Leidenschaft für Science-Fiction ist es einer der aufregendsten Teile meines Jobs bei Sonatype, wenn ich die Möglichkeit habe, mit dem Sicherheitsforschungsteam zusammenzuarbeiten.
Seitdem wir es gefunden haben
Das kommt nicht selten vor: Sie prüfen ständig Hunderte verdächtiger Pakete aus Open-Source-Registern, um festzustellen, ob sie wirklich bösartig sind. Während dieses Vorgangs identifizieren sie bekannte Muster zwischen den Paketen und führen manchmal, wenn sie starke Ähnlichkeiten erkennen, weitere Recherchen durch, um den dahinter stehenden Akteur/die Kampagne aufzuspüren.
Zwischen der letzten Woche des Jahres 2022 und Anfang 2023 hat unser KI-System verdächtige Pakete markiert, die in die PyPI-Registrierung hochgeladen wurden, darunter pyrologin
, easytimestamp
, discorder
, discord-dev
, style.py
und pythonstyles
. Unsere Sicherheitsforscher haben sie untersucht und bestätigt, dass sie tatsächlich bösartig waren. Und nach weiterer Analyse stellten sie fest, dass diese Pakete eine Reihe von Funktionen hinzufügten, die in Python-Malware nicht oft zu finden sind.
In einer De-facto-Strategie verstecken Kriminelle eine Nutzlast in der Datei setup[.]py
sodass Entwickler nur eine einfache Pip-Installation durchführen müssen, um sich zu infizieren. In diesem Fall würden sie versehentlich ein PowerShell-Skript starten, das eine ZIP-Datei herunterlädt, um Bibliotheken zu installieren, mit denen der Angreifer die Maus und die Tastatur des Opfers steuern, Screenshots erstellen und versteckte Remoteverbindungen herstellen kann. Darüber hinaus filtern diese Pakete auch vertrauliche Informationen wie Passwörter, Cookies und Kryptowährungs-Wallet-Daten heraus und versuchen sogar, ein Tool für den Fernzugriff zu installieren. Unsere Ergebnisse stimmten mit überein
Dennoch hatte der Sicherheitsforscher Carlos Fernandez ein unheimliches Déjà-vu-Gefühl. In der Woche, nachdem wir die Pakete veröffentlicht hatten, schossen ihm Erinnerungen daran durch den Kopf, frühere Versionen dieser Malware gesehen zu haben. Ein Bedrohungsakteur mag seine Malware im Laufe der Zeit weiterentwickelt haben, aber wir mussten sichergehen, also setzte ich meinen OSINT-Hut auf, um ihm zu zeigen, ob an seiner Intuition etwas Wahres dran war.
Wenn wir auf unsere Datenbank zurückblicken, wurde am 25. September 2022 ein Paket namens pygradient
in das PyPI-Repository hochgeladen. Unsere KI hat es als verdächtig gekennzeichnet und unsere Sicherheitsforscher haben bestätigt, dass es Malware enthielt und die Quellen eines anderen Pakets namens pystyle
bündelte. Beide Bibliotheken wurden von verfasst
Der W4SP-Stealer zeichnet sich durch Persistenz (er wird jedes Mal reaktiviert, wenn Benutzer den PC neu starten), Verschleierung (der Autor verspricht, dass er völlig nicht erkennbar ist) und Steganographietechniken aus, um polymorphe und stark verschleierte Nutzlasten innerhalb einer Bilddatei zu verbergen. Die Malware sendet alle Discord-Konten, Kreditkarten, Passwörter und Krypto-Wallets des Opfers über eine fest codierte Discord-Webhook-Adresse an den Angreifer zurück. Kriminelle, die an dieser Malware interessiert sind, haben sie gekauft, indem sie etwa 20 US-Dollar in Krypto bezahlt haben.
Ursprünglich war pystyle
nicht böswilliger Natur – ein harmloses Paket, um Konsolenausgaben zu formatieren und einzufärben, um die Lesbarkeit und das Benutzererlebnis zu verbessern. Laut Phylum-Forschung entschied man sich jedoch, sobald es populär wurde (das Paket ist immer noch auf PyPI aktiv und verzeichnet jeden Monat mehr als 40.000 Downloads), in einigen Versionen W4SP-Malware hinzuzufügen.
Open-Source-Pakete wie pystyle
können monatelang als Sleeper-Agenten fungieren, um später von ihrem eigenen Autor für böswillige Zwecke aktiviert zu werden. Ein riskantes Unterfangen, da ihr beliebtes Paket von Sicherheitsforschern wie uns entdeckt werden kann, die es als bösartig melden und es für immer entfernen lassen. Aus diesem Grund erstellen sie oft neue Pakete, in denen sie den Quellcode einer harmlosen Bibliothek enthalten, eine Art bösartige Nutzlast hinzufügen und sie unter einem neuen Namen hochladen: etwas Generisches, harmlos klingendes, unschuldig aussehendes. Ein Name wie pygradient
.
Nachdem wir mit Carlos einen genaueren Blick darauf geworfen hatten, stellten wir fest, dass dieser Proto-RAT-Mutanten-Malware einige Funktionen der Dezember-Versionen fehlten: Obwohl sie auch ein PowerShell-Skript startete und vertrauliche Daten exfiltrierte, verwendete sie keine Base64-codierten Payloads oder eine Zulassungsliste txt-Datei, um eine Selbstinfektion zu vermeiden. In gewisser Weise war es eine mildere, weniger anspruchsvolle Variante.
Doch dann schauten wir uns die Anfang November hochgeladenen Pakete an, darunter paintpy
, devicespoof
und devicespoofer
, und nachdem wir tiefer eingetaucht waren, fanden wir die Bestätigung unseres Verdachts: Die Malware entwickelte sich tatsächlich weiter.
Auch wenn BillyTheGoat seit November nicht mehr auf GitHub aktiv ist, finden wir immer noch Malware, die auf seinen Kreationen basiert oder direkt von ihnen stiehlt, meist von einem Benutzer, der offenbar in Portugal ansässig ist
Dieser Benutzer hat in PyPI ein kürzlich entferntes Paket namens pystilez
hochgeladen, das scheinbar fälschlicherweise BillyTheGoat zugeschrieben wurde
Checkmarxapicolor
(zusammen mit gleichnamigen Varianten) gefunden hatte, das einen Discord-Server-Link in seinem Schadcode enthielt. Das mit einem verifizierten Steam-Konto verknüpfte Administratorprofil und der Name „zeeckt“ tauchten als einer der Steam-Aliase des Angreifers auf.
Ein Sicherheitsforscher veröffentlichte eine der Payloads von Zeeckt zu Bildungszwecken und erhielt eine interessante Antwort vom Co-Autor des W4SP-Stealers:
Wie ironisch, dass Ihr Stealer gestohlen wurde.
Derselbe Autor, offenbar ein 17-jähriger Python-Entwickler, bringt seine Frustration in einer README-Datei auf seinem GitHub-Profil noch einmal zum Ausdruck:
Wir wissen nicht genau, welchen Schadcode Zeeckt von anderen Kriminellen gestohlen hat, aber eines ist sicher: Dieser Name taucht weiterhin in Malware-Kampagnen in Open-Source-Registern auf.
Carlos hat kürzlich vier weitere Pakete gefundenforenitq
, forenith
, forenity
und forenitz
. Nach weiteren Untersuchungen markierte er sie als bösartig und meldete sie zur Entfernung bei PyPI. Im schnellsten Fall dauerte es von der Veröffentlichung bis zur Löschung etwa 20 Minuten.
Als Carlos sich setup[.]py
in forenitq
ansah , fand er die folgende Nutzlast der ersten Stufe:
Der Angreifer erstellt drei temporäre Dateien, die mithilfe des „Start“-Befehls Windows-Binärdateien von bestimmten URLs herunterladen und ausführen. Obwohl die Slugs /rat
und /clip
auf eine böswillige Absicht hinweisen, konnten wir diese Annahme nicht bestätigen, ohne unter die Haube zu schauen.
Zum Zeitpunkt des Verfassens dieses Artikels ist die unter hxxp://20[.]226[.]18[.]203
gehostete Seite noch aktiv und zeigt nur einen Link zu einer Discord-Einladung an, die bereits abgelaufen oder privat ist.
Carlos bemerkte, dass das Paket als beliebt galt
Nachdem er die RAT-Datei entschlüsselt hatte, fand er eine Zeile, die einen möglichen Clipboard-Hijacker lädt, dessen Einzelheiten jedoch Base64-codiert waren:
Bei der Dekodierung erhalten wir einen Python-Code, der die Zwischenablage eines Opfers kapern soll, um die beabsichtigte Kryptowährungs-Wallet-Adresse durch die Adresse des Angreifers zu ersetzen:
Es sucht nach bestimmten Mustern wie Bitcoin (bc1), Ethereum (0x), Monero (4) und Litecoin (L oder M oder 3) und ersetzt, wenn ein Muster gefunden wird, die beabsichtigte Adresse durch die Kryptowährungs-Wallet-Adresse des Angreifers .
Der Code verwendet die
Darüber hinaus haben wir weitere Techniken entdeckt, die dieser RAT-Mutant verwendet, um der Erkennung zu entgehen: eine Nutzlast der ersten Stufe, die der Datei forenitq/ansi[.]py
anstelle von setup[.]py
hinzugefügt wird, und eine polymorphe Nutzlast der zweiten Stufe, die sich bei jeder Ausführung ändert die Binärdatei.
Der Angreifer fügte außerdem eine neue Befehls- und Kontrollfunktion mit einem sehr umfassenden Hilfemenü hinzu – und dieses Mal ist es falsch:
Wie Sie sehen, sind böswillige Akteure bestrebt, Ihre Kryptogelder und Systemzugangsdaten zu stehlen, um weiter in Ihre Infrastruktur einzudringen. Ihre RAT-Malware mutiert ständig, um ausweichender zu sein und den Entwicklern mehr Schaden zuzufügen. Wenn Sie Ihre Software-Lieferkette heute nicht schützen können, sollten Sie so schnell wie möglich entsprechende Maßnahmen ergreifen.
hxxp://20[.]226[.]18[.]203/inject/tCxFLYLT6ViY9ZnP
hxxp://20[.]226[.]18[.]203/clip
hxxp://20[.]226[.]18[.]203/rat