Americas

Asia

Oceania

von Lucian Constantin, Julia Mutzbauer

Neue Verschleierungstaktik entdeckt: Angreifer verwenden kompilierten Python-Bytecode

News
07 Juni 20236 Minuten

Sicherheitsforscher haben einen Python-Angriff entdeckt, der auf einer neuen Verschleierungstechnik basiert.

IT-Security-Forscher haben einen neuen Malware-Code entdeckt, der in einer Python-Bytecode-Datei (PYC) versteckt ist.

IT-Security-Forscher haben einen neuen Malware-Code entdeckt, der in einer Python-Bytecode-Datei (PYC) versteckt ist.

Foto: Agus_Gatam – shutterstock.com

Das Forscherteam der Sicherheitsfirma ReversingLabs hat einen neuen Malware-Code aufgespürt, der in einer Python-Bytecode-Datei (PYC) versteckt ist. Im Gegensatz zu herkömmlichen Quellcode-Dateien, die von der Python-Laufzeitumgebung erst interpretiert werden müssen, kann der Code direkt ausgeführt werden. “Es handelt sich möglicherweise um den ersten Supply-Chain-Angriff, der die Tatsache ausnutzt, dass Python-Bytecode-Dateien direkt ausgeführt werden können”, heißt es im Forschungsbericht.

“Wenn dies der Fall ist, stellt dies ein weiteres Risiko für die Lieferkette dar, da diese Art von Angriff wahrscheinlich von den meisten Sicherheitstools übersehen wird, die nur Python-Quellcode (PY)-Dateien scannen”, warnen die Sicherheitsexperten. “Und das in einer Zeit, in der die Zahl der bösartigen Einträge im Python Package Index (PyPI) sprunghaft ansteigt.”

Kompilierter Code versus Quellcode

Die überwiegende Mehrheit der Pakete, die auf öffentlichen Repositories wie npm für JavaScript, PyPI für Python und RubyGems für Ruby zu finden sind, bestehen aus Open-Source-Code-Dateien, die in Archiven verpackt sind. Sie sind leicht zu entpacken und zu lesen. Deshalb wurden Sicherheitsscanner für diese Repositories entwickelt, die mit dieser Art von Paketen umgehen können.

Währenddessen suchen Hacker laufend nach Methoden, diese Sicherheitsscanner auszutricksen. Die häufigste Umgehungstechnik bei Klartextcode ist die Verschleierung. Dabei werden Funktionen der Programmiersprache selbst wie Kodierung, Dekodierung oder eval verwendet, um den Code unlesbar, aber dennoch funktionsfähig zu machen. Eine gängige Technik ist beispielsweise die Kodierung von bösartigem Code in base64. Doch viele Sicherheitstools können mit einer solchen Kodierung mittlerweile umgehen.

Im PyPI-Ökosystem sind die Cyberkriminellen, die hinter der W4SP Stealer-Malware stecken, dafür bekannt, dass sie Techniken wie base64-Kodierung, LZMA-Komprimierung und Minifizierung einsetzen – das Entfernen von Leerzeichen und Kommentaren aus dem Code, um ihn kompakter, aber auch schwerer lesbar zu machen. Die Gruppe verwendet dazu einige Open-Source-Tools von Drittanbietern wie pyminifier, Kramer oder Hyperion. Bei einer Variante der W4SP-Angriffe wurde der verschleierte bösartige Code in den Dateien über den Rand des Standardbildschirms hinaus verschoben, so dass jemand, der die Quellcodedatei manuell überprüft, ihn leicht übersehen könnte.

PYC-Dateien sind jedoch anders. Sie sind nicht wie PY-Skripte im Klartext für Menschen lesbar. PYC-Dateien werden erzeugt, wenn der Python-Interpreter ein Python-Skript importiert oder ausführt. Da sie bereits interpretierter (kompilierter) Code sind, können sie später direkt vom Python-Interpreter ausgeführt werden, ohne das ursprüngliche Skript neu zu interpretieren. Dies steigert die Performance, da die Ausführungszeiten kürzer sind. Der häufigste Verwendungszweck für solche Dateien ist die Verteilung von Python-Modulen.

In den meisten Fällen von PyPI-Malware ist der bösartige verschleierte Code dazu gedacht, eine externe URL zu erreichen und von dort die Malware herunterzuladen. In der Regel handelt es sich dabei um einen Info Stealer. Dies bietet Sicherheitstools jedoch die Möglichkeit, verdächtiges Verhalten zu erkennen. Die Sicherheitsforscher haben nun ein Paket namens fshec2 entdeckt, das eine bösartige PYC-Datei enthielt und die gesamte bösartige Payload dort versteckte. Dadurch ist es ist viel schwieriger, sie zu erkennen, wenn das Sicherheitstool nicht darauf ausgelegt ist, sie zu dekompilieren.

“Loader-Skripte, wie die im fshec2-Paket, enthalten nur eine minimale Menge an Python-Code und führen eine einfache Aktion aus: das Laden eines kompilierten Python-Moduls”, erklären die ReversingLabs-Forscher. “Dabei handelt es sich zufällig um ein bösartiges Modul. Inspector, das Standardtool des PyPI-Sicherheitsteams zur Analyse von PyPI-Paketen, bietet derzeit keine Möglichkeit, Binärdateien zu analysieren, um bösartige Verhaltensweisen zu erkennen. Der kompilierte Code der PYC-Datei musste dekompiliert werden, um seinen Inhalt zu analysieren”, führen die Security-Experten aus.

Das von ReversingLabs gefundene fshec2-Paket zeigte darüber hinaus ein weiteres Verhalten, das wahrscheinlich dazu diente, die Erkennung zu umgehen. Normalerweise wird ein Modul aus einem Python-Skript mit der import-Anweisung importiert. Das bösartige PYC-Modul wurde in diesem Fall jedoch mit importlib geladen, einem separaten Paket, das die Importfunktionalität implementiert und nur für bestimmte Fälle verwendet wird, etwa wenn eine importierte Bibliothek beim Import dynamisch verändert wird. In diesem Fall wurde das bösartige PYC-Modul nicht verändert, so dass es keinen anderen technischen Grund für die Verwendung von importlib gibt, als die Verwendung der regulären Import-Direktive zu vermeiden, wahrscheinlich um die Entdeckung zu umgehen.

Diebstahl von Zugangsdaten scheint das Hauptziel zu sein

Sobald sie auf einem Rechner ausgeführt wird, sammelt die bösartige Payload fshec2 Informationen über das System wie Benutzernamen, Verzeichnislisten und Hostnamen und richtet dann einen Cron-Job unter Linux oder eine geplante Aufgabe unter Windows ein. Ziel ist es, Befehle auszuführen, die von einem entfernten Server abgerufen werden. Die Befehle ermöglichen es der Malware, sich selbst zu aktualisieren. Die Angreifer sind damit in der Lage, eine neue Version sowie zusätzliche Nutzungsdaten in Form von Python-Skripten zu liefern.

Die Forscher von ReversingLabs analysierten den Command-and-Control-Server und stießen dabei auf Fehlkonfigurationen. Dadurch hatten sie einen Einblick auf einige Informationen. So fanden sie beispielsweise heraus, dass die Opferrechner eine inkrementelle ID erhalten, und konnten bestätigen, dass die Malware tatsächlich von mehreren Opfern ausgeführt wurde.

“Die schiere Anzahl dieser Fehler führt uns zu der Schlussfolgerung, dass dieser Angriff nicht das Werk eines staatlich gesponserten Akteurs und kein Advanced Persistent Threat (APT) war”, so die Forscher. Das Team habe zwar nicht genügend Belege gesammelt, um diese Annahme beweisen zu können, aber die Auswertung der Dateinamen habe ergeben, dass der Angriff in einigen Fällen erfolgreich war. Das Ziel sei jedoch bisher unklar.

“Wir können jedoch bestätigen, dass die Entwickler das bösartige PyPI-Paket installiert haben und dass ihre Rechnernamen, Benutzernamen und Verzeichniseinträge als Ergebnis gesammelt wurden”, so das Fazit der Security-Experten. Einige der Dateinamen, die auf dem Server gefunden wurden, lassen darauf schließen, dass die Angreifer auf einigen Rechnern Keylogging-Funktionen eingesetzt haben.

“In der Vergangenheit war npm der unglückliche Spitzenreiter und auch PyPI war im Rennen, welche Open-Source-Plattform die meiste Aufmerksamkeit von Malware-Autoren auf sich zieht”, so die Forscher. “In den letzten sechs Monaten haben ReversingLabs und andere jedoch einen deutlichen Anstieg des Volumens der in PyPI veröffentlichten Malware beobachtet. Tatsächlich wurde im Mai die Erstellung neuer Benutzerkonten und Projekte auf PyPI aufgrund des hohen Aufkommens an bösartigen Aktivitäten vorübergehend für einige Stunden ausgesetzt.”

ReversingLabs meldete den neuen Angriffsvektor an das PyPI-Sicherheitsteam, das das Paket entfernte und zurückmeldete, dass sie diese Angriffstechnik noch nie gesehen hätten. Dies schließt nicht aus, dass weitere ähnliche Pakete ihren Weg in das Repository finden werden.

Um mit diesen modernen Bedrohungen der Software-Lieferkette fertig zu werden, benötigen Unternehmen mehr als nur Lösungen zur statischen Codeanalyse. Sie benötigen Tools, die auch sensible Entwicklungssysteme auf verdächtige Prozesse, die Ausführung von Dateien, unbefugten URL-Zugriff, Befehle zum Sammeln von Informationen und die Verwendung von leicht zu missbrauchenden Funktionen wie get_path oder importlib überwachen können.

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation CSO Online.