paint-brush
Wie RAT-Mutanten in Python Daten stehlen und sich der Erkennung entziehenvon@hernanortiz
3,749 Lesungen
3,749 Lesungen

Wie RAT-Mutanten in Python Daten stehlen und sich der Erkennung entziehen

von Hernán Ortiz7m2023/02/02
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

Obwohl unsere Sicherheitsforscher täglich bösartige Python-Pakete finden, erregt eine neue Art von Malware, die wir RAT-Mutanten nennen, unsere Aufmerksamkeit. Sie haben sich im Laufe der Zeit verändert und angepasst, um ausweichender und gefährlicher zu sein. Hier erfahren Sie, wie sie Ihre Kryptowährungs-Wallets und persönlichen Daten stehlen, Ihre Maus und Tastatur fernsteuern und sich so weiterentwickeln können, dass sie nicht entdeckt werden.
featured image - Wie RAT-Mutanten in Python Daten stehlen und sich der Erkennung entziehen
Hernán Ortiz HackerNoon profile picture



„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  letzten Monat eine Reihe von Python-Paketen die dem entsprechen, was wir RAT-Mutanten nennen – neuartige Malware, die sich die Fähigkeiten von Remote-Access-Trojanern und Informationsdiebstahlern zunutze macht – hatten unsere Sicherheitsforscher ein quälendes Déjà-vu-Gefühl.


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 Phylums technischer Bericht der gleichen Pakete.


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.

Die Ursprungsgeschichte

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 billythegoat356 , auch bekannt als BillyTheGoat, auch bekannt als BillyV3 (mit Beiträgen von loTus04 und BlueRed). Dieser Autor aus Frankreich (das lässt zumindest sein Standort auf GitHub und die in seinen Discord-Kanälen gesprochene Sprache vermuten) wird als die Person dahinter genannt Hyperion , ein Python-Verschleierer, den wir häufig in kürzlich hochgeladener Malware gefunden haben, und einer der Ersteller von W4SP-Stealer , ein Informationsdiebstahler, der seit Juli in einem aktiv ist anhaltender Angriff auf die Lieferkette Register zu öffnen.


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.



Nach der Dekodierung des Bildes wird ein versteckter, mit Base64 verschleierter Python-Code enthüllt.



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.

Ein Nachahmer auf der Jagd nach Malware

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 Zeeckt .


Dieser Benutzer hat in PyPI ein kürzlich entferntes Paket namens pystilez hochgeladen, das scheinbar fälschlicherweise BillyTheGoat zugeschrieben wurde StartJacking – eine Technik, um die Reputation ihres neuen Pakets zu steigern, indem sie es mit einer beliebten GitHub-Bibliothek verknüpft und so mit ihren Hunderten von Stars und Forks in Verbindung gebracht wird.


Checkmarx hat verfolgt Dieser bösartige Akteur wurde entdeckt, nachdem er einen W4SP-Angriff in einem Paket namens apicolor (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.


Kontrollpunkt berichtete außerdem, dass dieser Bedrohungsakteur gefälschte Benutzer erstellte, indem er die Profile beliebter GitHub-Konten kopierte, um die Legitimität zu erhöhen. Und eines ihrer Opfer beschloss, etwas zu erschaffen ein YouTube-Video warnt Menschen vor diesem Angriff, nachdem sie auf eines ihrer gefälschten Profile hereingefallen sind.


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.


Heimtückischere Varianten nagen an Ihrem Kryptovermögen

Carlos hat kürzlich vier weitere Pakete gefunden Zeeckt : forenitq , 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 Colorama Paket, deren Metadaten für einen möglichen StarJacking-Versuch verwendet werden.


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 pyperclip Bibliothek zum Kopieren und Einfügen von Daten aus der Zwischenablage. Es wird die Bibliothek installieren, falls sie noch nicht installiert ist, und dann die Kryptowährungs-Wallet-Adresse in die Zwischenablage kopieren. Der Code wird dann in eine Endlosschleife gesetzt, um die Zwischenablage auf Wallet-Adressmuster zu überwachen.


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.


IOCs (Indikatoren für Kompromisse)

hxxp://20[.]226[.]18[.]203/inject/tCxFLYLT6ViY9ZnP

hxxp://20[.]226[.]18[.]203/clip

hxxp://20[.]226[.]18[.]203/rat