banner
Nachrichtenzentrum
Sofortige Lieferung

Angreifer nutzen Python-kompilierten Bytecode, um der Entdeckung zu entgehen

Oct 03, 2023

Von Lucian Constantin

CSO Senior Writer, CSO |

Angreifer, die es auf Open-Source-Paket-Repositorys wie PyPI (Python Package Index) abgesehen haben, haben eine neue Technik entwickelt, um ihren Schadcode vor Sicherheitsscannern, manuellen Überprüfungen und anderen Formen der Sicherheitsanalyse zu verbergen. Bei einem Vorfall haben Forscher Malware-Code gefunden, der in einer Python-Bytecode-Datei (PYC) versteckt ist und direkt ausgeführt werden kann, im Gegensatz zu Quellcodedateien, die von der Python-Laufzeitumgebung interpretiert werden.

„Es ist möglicherweise der erste Supply-Chain-Angriff, der die Tatsache ausnutzt, dass Python-Bytecode-Dateien direkt ausgeführt werden können, und er erfolgt inmitten eines Anstiegs böswilliger Übermittlungen an den Python Package Index“, sagten Forscher des Sicherheitsunternehmens ReversingLabs in einem Bericht. „Wenn ja, stellt dies in Zukunft ein weiteres Risiko für die Lieferkette dar, da diese Art von Angriff wahrscheinlich von den meisten Sicherheitstools übersehen wird, die nur Python-Quellcodedateien (PY) scannen.“

Die überwiegende Mehrheit der Pakete, die in öffentlichen Repositories wie npm für JavaScript, PyPI für Python und RubyGems für Ruby zu finden sind, bestehen aus Open-Source-Codedateien, die in Archiven gepackt sind. Sie lassen sich leicht entpacken und lesen. Aus diesem Grund wurden Sicherheitsscanner für diese Repositories entwickelt, um diese Art der Verpackung zu handhaben.

Angreifer befinden sich in einem ständigen Kampf mit Sicherheitsunternehmen, um der Entdeckung zu entgehen, und die häufigste Umgehungstechnik, wenn es um Klartextcode geht, ist die Verschleierung. Dabei werden Funktionen der Programmiersprache selbst wie Kodierung, Dekodierung oder Auswertung verwendet, um den Code unlesbar, aber dennoch funktionsfähig zu machen. Beispielsweise ist die Codierung von Schadcode in Base64 eine häufig verwendete Technik, doch Sicherheitstools können mit einer solchen Codierung umgehen.

Im PyPI-Ökosystem sind die Cyberkriminellen hinter der Malware W4SP Stealer dafür bekannt, Techniken wie Base64-Kodierung, LZMA-Komprimierung und Minimierung einzusetzen – das Entfernen von Leerzeichen und Kommentaren aus dem Code, um ihn kompakter, aber auch schwerer lesbar zu machen. Um dies zu erreichen, nutzt die Gruppe einige Open-Source-Tools von Drittanbietern wie Pyminifier, Kramer oder Hyperion. Bei einer Variante der W4SP-Angriffe wurde der verschleierte Schadcode in den Dateien über den Rand der Standardbildschirmränder hinaus verschoben, sodass jemand, der die Quellcodedatei manuell überprüft, ihn nicht sehen kann.

Allerdings sind PYC-Dateien anders. Sie sind nicht wie Klartext-PY-Skripte für Menschen lesbar. PYC-Dateien werden generiert, wenn der Python-Interpreter ein Python-Skript importiert oder ausführt. Da es sich bereits um interpretierten (kompilierten) Code handelt, können sie später direkt vom Python-Interpreter ausgeführt werden, ohne dass das ursprüngliche Skript neu interpretiert werden muss. Dies steigert die Leistung, da die Ausführungszeiten schneller sind, und die häufigste Verwendung 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, auf eine externe URL zuzugreifen und die Malware herunterzuladen – in der Regel ein Informationsdiebstahler –, was eine weitere Möglichkeit für Sicherheitstools darstellt, verdächtiges Verhalten zu erkennen. Bei diesem jüngsten Vorfall wurde festgestellt, dass ein Paket namens fshec2 eine schädliche PYC-Datei enthält. Die gesamte schädliche Nutzlast kann in der Datei verborgen sein und es ist viel schwieriger, sie zu erkennen, wenn das Sicherheitstool nicht für die Dekompilierung ausgelegt ist.

„Loader-Skripte wie die im fshec2-Paket entdeckten enthalten eine minimale Menge Python-Code und führen eine einfache Aktion aus: das Laden eines kompilierten Python-Moduls“, sagten die ReversingLabs-Forscher. „Es handelt sich einfach 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ösartiges Verhalten zu erkennen. Kompilierter Code aus dem Die .PYC-Datei musste dekompiliert werden, um ihren Inhalt zu analysieren.“

Das von ReversingLabs gefundene fshec2-Paket zeigte zusätzliches Verhalten, das wahrscheinlich dazu gedacht war, der Entdeckung zu entgehen. Normalerweise wird ein Modul mithilfe der Importanweisung aus einem Python-Skript importiert. Allerdings wurde das bösartige PYC-Modul in diesem Fall mit importlib geladen, einem separaten Paket, das die Importfunktionalität implementiert und nur in bestimmten Fällen verwendet wird, etwa wenn eine importierte Bibliothek beim Import dynamisch geändert wird. In diesem Fall wurde der bösartige PYC nicht geändert, daher gibt es keinen technischen Grund, importlib zu verwenden, außer die Verwendung der regulären Import-Direktive zu vermeiden, was wahrscheinlich zur Umgehung der Erkennung führen soll.

Sobald die schädliche Payload fshec2 auf einer Maschine ausgeführt wird, sammelt sie Informationen über das System wie Benutzernamen, Verzeichnislisten und Hostnamen und richtet dann einen Cron-Job unter Linux oder eine geplante Aufgabe unter Windows ein, um von einem Remote-Server abgerufene Befehle auszuführen. Die Befehle ermöglichen der Malware eine Selbstaktualisierung, wobei die Angreifer eine neue Version sowie zusätzliche Payloads in Form von Python-Skripten bereitstellen können.

Die Forscher von ReversingLabs analysierten den Command-and-Control-Server und fanden Fehlkonfigurationen, die es ihnen ermöglichten, einen Blick auf einige Informationen zu werfen. Sie fanden beispielsweise heraus, dass die Opfercomputer eine inkrementelle ID erhalten und konnten bestätigen, dass die Malware tatsächlich von mehreren Opfern ausgeführt wurde.

„Die schiere Anzahl dieser Fehler könnte uns zu dem Schluss führen, dass dieser Angriff nicht das Werk eines staatlich geförderten Akteurs und keine fortgeschrittene anhaltende Bedrohung (Advanced Persistent Threat, APT) war“, sagten die Forscher. „Obwohl mein Team nicht genügend Beweise gesammelt hat, um diese Annahme auf die eine oder andere Weise zu beweisen, konnten wir durch die Sammlung der Dateinamen durch Erhöhen der Datei-ID feststellen, dass der Angriff in einigen Fällen erfolgreich war. Unsere Forscher können immer noch nicht sagen, wer oder was die Ziele sind.“ Wir können jedoch bestätigen, dass die Entwickler das bösartige PyPI-Paket installiert haben und dass dadurch ihre Computernamen, Benutzernamen und Verzeichnislisten erfasst wurden.“

Einige der auf dem Server gefundenen Dateinamen deuten darauf hin, 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 um die Frage, welche Open-Source-Plattform die meiste Aufmerksamkeit von Malware-Autoren auf sich zieht“, sagten die Forscher. „In den letzten sechs Monaten haben ReversingLabs und andere jedoch einen deutlichen Anstieg der Menge an auf PyPI veröffentlichter Malware beobachtet. Tatsächlich wurde im Mai die Erstellung neuer Benutzerkonten und Projekte auf PyPI vorübergehend für einige Stunden ausgesetzt zu einem hohen Maß an böswilliger Aktivität führen.“

ReversingLabs meldete den neuen Angriffsvektor dem PyPI-Sicherheitsteam, das das Paket entfernte und sagte, dass sie diese Angriffstechnik noch nie zuvor gesehen hätten. Dies schließt die Möglichkeit nicht aus, dass andere ähnliche Pakete in das Repository gelangen.

Um mit diesen modernen Bedrohungen der Software-Lieferkette umzugehen, benötigen Unternehmen mehr als statische Code-Analyselösungen. Sie benötigen Tools, die auch sensible Entwicklungssysteme auf verdächtige Prozesserstellung, Dateiausführung, unbefugten URL-Zugriff, Befehle zum Sammeln von Informationen und die Verwendung leicht zu missbrauchender Funktionen wie get_path oder importlib überwachen können.

Lucian Constantin ist leitender Autor bei CSO und befasst sich mit Informationssicherheit, Privatsphäre und Datenschutz.

Copyright © 2023 IDG Communications, Inc.

Kompilierter Code versus Quellcode Der Diebstahl von Anmeldeinformationen scheint das Hauptziel zu sein. Lesen Sie als Nächstes dies