ESET Research hat eine Reihe bösartiger Python-Projekte entdeckt, die in verbreitet werden PyPI, das offizielle Python-Paket-Repository. Die Bedrohung zielt sowohl auf Windows- als auch auf Linux-Systeme ab und stellt normalerweise eine benutzerdefinierte Hintertür bereit. In einigen Fällen ist die endgültige Nutzlast eine Variante des berüchtigten W4SP-Stealer, oder ein einfacher Zwischenablagemonitor zum Stehlen von Kryptowährungen, oder beides. Im Mai 2023 haben wir berichtet auf einer anderen Gruppe von Paketen, die wir auf PyPI gefunden haben und die Malware zum Diebstahl von Passwörtern und Kryptowährungen liefert, aber die beiden Gruppen scheinen unterschiedliche Kampagnen zu sein.
Kernpunkte dieses Blogposts:
- ESET Research hat 116 Schadpakete in PyPI, dem offiziellen Software-Repository für die Programmiersprache Python, entdeckt, die in 53 Projekten hochgeladen wurden.
- Opfer haben diese Pakete über 10,000 Mal heruntergeladen.
- Seit Mai 2023 beträgt die Downloadrate etwa 80 pro Tag.
- Die Malware stellt eine Hintertür bereit, mit der Befehle aus der Ferne ausgeführt, exfiltriert und Screenshots erstellt werden können.
- Die Backdoor-Komponente ist sowohl für Windows in Python als auch für Linux in Go implementiert.
- In einigen Fällen wird stattdessen der W4SP Stealer oder ein Clipboard-Monitor, der Kryptowährungen stiehlt, oder beides geliefert.
PyPI ist bei Python-Programmierern zum Teilen und Herunterladen von Code beliebt. Da jeder zum Repository beitragen kann, kann dort Malware auftauchen, die sich manchmal als legitime, beliebte Codebibliotheken ausgibt. Wir haben 116 Dateien (Quelldistributionen und Wheels) aus 53 Projekten gefunden, die Malware enthalten. Einige Paketnamen sehen zwar ähnlich aus wie andere, legitime Pakete, aber wir glauben, dass die Hauptmethode, mit der sie von potenziellen Opfern installiert werden, nicht durch Typosquatting, sondern durch Social Engineering erfolgt, bei dem Opfer durch die Ausführung geführt werden pip install {Paketname} um das „interessante“ Paket aus welchem Grund auch immer nutzen zu können.
Im vergangenen Jahr haben die Opfer diese Dateien mehr als 10,000 Mal heruntergeladen; siehe Abbildung 1.
PyPI befallen
PyPI-Pakete können zwei Formen annehmen: Quellpakete, die den gesamten Quellcode des Projekts enthalten und bei der Installation erstellt werden, und vorgefertigte Pakete (genannt Räder), die kompilierte Module für ein bestimmtes Betriebssystem oder eine bestimmte Python-Version enthalten können. Interessanterweise unterscheidet sich der Python-Code in der Quelldistribution in einigen Fällen von der erstellten Distribution. Ersteres ist sauber, während letzteres den Schadcode enthält. Pythons Paketmanager, Pip, bevorzugt ein Rad, wenn es verfügbar ist, gegenüber einer Quelldistribution. Infolgedessen wird der Schädling installiert, sofern nicht ausdrücklich etwas anderes angefordert wird.
Wir haben beobachtet, dass die Betreiber dieser Kampagne drei Techniken nutzten, um Schadcode in Python-Paketen zu bündeln.
Schädliches test.py-Modul
Die erste Technik besteht darin, ein „Test“-Modul mit leicht verschleiertem Code im Paket zu platzieren. Abbildung 2 zeigt a test.py Datei mit einer aufgerufenen Funktion graby definiert und dann aufgerufen wird. Beachten Sie, dass die Funktion sowohl Windows- als auch Linux-Systeme unterstützt.
Dieses Testmodul wird in der Mitte des Quellcodes des Hauptmoduls des Pakets importiert (__init__.py), sodass der Schadcode jedes Mal ausgeführt wird, wenn das Paket importiert wird. Abbildung 3 zeigt ein Modul, das sich als Screenshoter ausgibt und den Schadcode importiert test.py.
PowerShell in setup.py
Die zweite Technik besteht darin, PowerShell-Code einzubetten setup.py Datei, die normalerweise automatisch von Paketmanagern wie ausgeführt wird Pip um bei der Installation von Python-Projekten zu helfen.
Abbildung 4 zeigt ein PowerShell-Skript, das die nächste Stufe herunterlädt und ausführt.
Dieses PowerShell-Skript wird heruntergeladen transfer[.]sh/eyRyPT/Updater.zip in ein temporäres Verzeichnis als update.zip. Das Skript dekomprimiert dann die ZIP-Datei in C: ProgramData und löscht es aus dem temporären Verzeichnis. Als nächstes führt das Skript aus Pip Programm zum Installieren von Abhängigkeiten. Schließlich wird der Python-Code ausgeführt C:ProgramDataUpdaterserver.pyw.
Diese Technik funktioniert nur unter Windows und kann Linux-Systeme nicht befallen.
In den Paketmetadaten aus Abbildung 4 ist Ihnen möglicherweise aufgefallen, dass der Autor des Pakets ist billythegoat356. Es gab zahlreiche Berichte, die diesen Spitznamen mit böswilligen Aktivitäten in Verbindung brachten, darunter eine Artikel von Phylum, wo sie Billys mögliche Verbindung zum W4SP Stealer enthüllen.
Nur Malware…
Bei der dritten Technik unternehmen die Betreiber keine Anstrengungen, legitimen Code in das Paket aufzunehmen, sodass nur der Schadcode in leicht verschleierter Form vorhanden ist. Abbildung 5 zeigt zwei Schadcodeteile für Windows, die in temporäre Dateien geschrieben und dann ausgeführt werden pythonw.exe, das anstelle von verwendet wird python.exe sodass der Code ausgeführt wird, ohne dass ein Konsolenfenster geöffnet wird.
Die nächsten Schritte sind Python-Pakete, Skripte oder Binärdateien, die entweder von Dropbox oder heruntergeladen werden transfer.sh.
Beharrlichkeit
Unter Windows wird die Persistenz meist über a erreicht VBScript-kodiert (VBE)-Datei, bei der es sich um eine codierte VBScript-Datei handelt, in die geschrieben wird %APPDATA%/Pythonenv/pythenenv.vbe. Abbildung 6 zeigt cmd.exe Verstecken des Verzeichnisses %APPDATA%/Pythonenv, Laufen pythenenv.vbeund dann die VBE-Datei so planen, dass sie alle fünf Minuten unter der Aufgabe ausgeführt wird MicrosoftWinRaRUtilityTaskB.
Unter Linux wird Persistenz durch das Platzieren eines Schadprogramms erreicht Desktop-Eintrag, mate-user-share.desktopIn der ~ / .config / autostart / Verzeichnis, wie in Abbildung 7 dargestellt. Dateien im Auto-Start Verzeichnis werden bei jedem Systemstart ausgeführt. Der Desktop-Eintrag verwendet den Namen von a MATE Teilprojekt für seinen Dateinamen, aber das dient nur dazu, den Verdacht zu verringern, da es nichts mit der Desktop-Umgebung zu tun hat.
Abbildung 7 zeigt auch die Modul-Downloads dl.dropbox[.]com/s/u3yn2g7rewly4nc/proclean zu ~/.config/.kde/.kdepath. Dies ist wahrscheinlich ein Versuch, ein Konfigurationsverzeichnis für zu imitieren KDE Plasma-GUI für Linux.
Starten der mate-user-share.desktop Die Datei wiederum führt die heruntergeladene Datei aus .kdepath Datei, bei der es sich um die ausführbare Linux-Datei handelt, die die Backdoor-Komponente enthält.
Endgültige Nutzlast
In der Regel handelt es sich bei der endgültigen Nutzlast um eine benutzerdefinierte Hintertür, die die Ausführung von Befehlen aus der Ferne und die Exfiltration von Dateien ermöglicht und manchmal auch die Möglichkeit bietet, Screenshots zu erstellen. Unter Windows ist die Hintertür in Python implementiert.
Abbildung 8 zeigt, wie die Hintertür eine TCP-Socket-Verbindung herstellt blazywound.ignorelist[.]com auf Port 6001. Nach dem Senden des Hostnamens, der MAC-Adresse und des Benutzernamens an den C&C-Server verarbeitet die Hintertür einige Befehle direkt oder führt andere Befehle in einem separaten Prozess aus und sendet die Befehlsausgabe und etwaige Fehlerinformationen an den Server zurück.
Unter Linux ist die Hintertür in Go implementiert; siehe Abbildung 9.
In einigen Fällen handelt es sich bei der Nutzlast anstelle der Hintertür um eine Variante des berüchtigten W4SP-Stealeroder ein einfacher Zwischenablagemonitor, der Kryptowährung stiehlt, oder beides. Abbildung 10 zeigt einen Clipboard-Monitor, der auf die Kryptowährungen Bitcoin, Ethereum, Monero und Litecoin abzielt. Die Malware nutzt das legitime pyperclip Paket zum Überprüfen des Inhalts der Zwischenablage auf Wallet-Adressen. Wenn die Malware gefunden wird, kopiert sie eine vom Angreifer kontrollierte Adresse in die Zwischenablage in der Hoffnung, dass das Opfer diese Adresse stattdessen in eine zukünftige Kryptowährungstransaktion einfügt.
ESET-Produkte erkennen die bösartigen Python-Pakete als Varianten von Python/Agent und Python/TrojanDownloader und die Hintertür als Python/Agent.AOY oder Linux/Spy.Agent.BB.
Die meisten Pakete wurden zum Zeitpunkt dieser Untersuchung bereits von PyPI entfernt. ESET hat mit PyPI kommuniziert, um gegen die verbleibenden Pakete vorzugehen, und alle bekannten Schadpakete sind jetzt offline. Die vollständige Liste der 116 Pakete finden Sie in unserem GitHub-Repository.
Es ist erwähnenswert, dass Malware in einem PyPI-Projekt-Repository kein Sicherheitsproblem für PyPI selbst darstellt. Tatsächlich war die Software, auf der PyPI ausgeführt wurde kürzlich geprüft von einem externen Unternehmen, das feststellte, dass PyPl „weithin anerkannten Best Practices entsprach“.
Zusammenfassung
PyPI wird weiterhin von Cyberangreifern missbraucht, um die Geräte von Python-Programmierern zu kompromittieren. Diese Kampagne zeigt verschiedene Techniken, die verwendet werden, um Malware in Python-Pakete einzubinden. Python-Entwickler sollten den heruntergeladenen Code gründlich prüfen, insbesondere auf diese Techniken. Bevor es auf ihren Systemen installieren. Die Betreiber missbrauchen nicht nur weiterhin den Open-Source-W4SP-Stealer, sondern haben auch eine einfache, aber effektive Hintertür eingesetzt. Wir gehen davon aus, dass dieser Missbrauch von PyPI anhalten wird und raten zur Vorsicht bei der Installation von Code aus einem öffentlichen Software-Repository.
Bei Fragen zu unseren auf WeLiveSecurity veröffentlichten Forschungsergebnissen kontaktieren Sie uns bitte unter Bedrohungintel@eset.com.
ESET Research bietet private APT-Intelligence-Berichte und Daten-Feeds. Bei Fragen zu diesem Service besuchen Sie bitte die ESET Threat Intelligence
IoCs
Mappen
SHA-1 |
Dateiname |
Entdeckung |
Beschreibung |
439A5F553E4EE15EDCA1CFB77B96B02C77C5C388 |
Cache.py |
Python/Agent.AGL |
Linux-Backdoor-Downloader. |
B94E493579CC1B7864C70FAFB43E15D2ED14A16B |
coloramma-0.5.4-py3-none-any.whl |
Python/Agent.AGU |
Paket mit Linux-Backdoor-Installer. |
AE3072A72F8C54596DCBCDE9CFE74A4146A4EF52 |
coloramma-4.5-py3-none-any.zip |
Python/Agent.AOY |
Paket mit Windows-Hintertür. |
70C271F79837B8CC42BD456A22EC51D1261ED0CA |
junk.py |
Python/Agent.AGM |
Windows-Persistenz-Installationsprogramm. |
B0C8D6BEEE80813C8181F3038E42ADACC3848E68 |
proclean |
Linux/Spy.Agent.BB |
Linux-Hintertür. |
07204BA8D39B20F5FCDB9C0242B112FADFFA1BB4 |
prov.py |
Python/Agent.AGL |
Linux-Backdoor-Downloader. |
EF59C159D3FD668C3963E5ADE3C726B8771E6F54 |
tmp |
Linux/Spy.Agent.BB |
Linux-Hintertür. |
Eine vollständige Liste der Schadpakete finden Sie auf unserem GitHub Malware-IOC-Repository.
Netzwerk
Domain Name |
IP Address |
Zum ersten Mal gesehen |
Beschreibung |
blazywound.ignorelist[.]com |
204.152.203[.]78 |
2022-11-21 |
C&C-Server für Backdoor-Komponente. |
MITRE ATT&CK-Techniken
Diese Tabelle wurde mit erstellt Version 14 des MITRE ATT&CK-Frameworks.
Taktik |
ID |
Name und Vorname |
Beschreibung |
Erster Zugriff |
Kompromittierung der Lieferkette: Kompromittierung von Softwareabhängigkeiten und Entwicklungstools |
Malware wird über den PyPl-Paketverwaltungsdienst von Python verbreitet. |
|
Beharrlichkeit |
Geplanter Task/Job: Geplanter Task |
Unter Windows wird die Persistenz durch eine geplante Aufgabe erreicht. |
|
Boot- oder Anmelde-Autostart-Ausführung: XDG-Autostart-Einträge |
Unter Linux wird ein Autostart-Eintrag erstellt, um die Hintertür zu starten, wenn sich der Benutzer anmeldet. |
||
Verteidigungsflucht |
Maskierung: Übereinstimmung mit legitimem Namen oder Ort |
Unter Linux haben persistente Dateien ähnliche Namen wie legitime Software |
|
Zugang zu Anmeldeinformationen |
Anmeldeinformationen aus Kennwortspeichern: Anmeldeinformationen aus Webbrowsern |
W4SP stiehlt Passwörter von den installierten Webbrowsern. |
|
Sammlung |
Daten aus der Zwischenablage |
Um Gelder während einer Kryptowährungstransaktion zu stehlen, werden die Daten in der Zwischenablage ersetzt. |
|
Command and Control |
Non-Application-Layer-Protokoll |
Die Hintertür verwendet ein unverschlüsseltes Binärprotokoll über TCP. |
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoData.Network Vertikale generative KI. Motiviere dich selbst. Hier zugreifen.
- PlatoAiStream. Web3-Intelligenz. Wissen verstärkt. Hier zugreifen.
- PlatoESG. Kohlenstoff, CleanTech, Energie, Umwelt, Solar, Abfallwirtschaft. Hier zugreifen.
- PlatoHealth. Informationen zu Biotechnologie und klinischen Studien. Hier zugreifen.
- Quelle: https://www.welivesecurity.com/en/eset-research/pernicious-potpourri-python-packages-pypi/
- :hast
- :Ist
- :Wo
- 000
- 1
- 10
- 116
- 14
- 152
- 2023
- 7
- 8
- 80
- 9
- a
- Fähigkeit
- Fähig
- Über uns
- Missbrauch
- akzeptiert
- erreicht
- Action
- Aktivitäten
- Adresse
- Adressen
- beraten
- Nach der
- gegen
- Makler
- Alle
- erlaubt
- bereits
- ebenfalls
- unter
- an
- und
- Ein anderer
- jedem
- jemand
- erscheinen
- APT
- SIND
- AS
- bewertet
- At
- Autor
- Im Prinzip so, wie Sie es von Google Maps kennen.
- verfügbar
- Zurück
- Hintertür-
- BE
- weil
- war
- hinter
- Sein
- Glauben
- BESTE
- Bitcoin
- beide
- Browsern
- erbaut
- bündeln
- aber
- by
- namens
- Kampagnen (Campaign)
- Kampagnen
- CAN
- fähig
- Fälle
- Vorsicht
- Kette
- aus der Ferne überprüfen
- Überprüfung
- reinigen
- Cluster
- Code
- COM
- mitgeteilt
- kompiliert
- Komponente
- Kompromiss
- Konfiguration
- Verbindung
- Konsul (Console)
- Kontakt
- enthalten
- enthält
- Inhalt
- fortsetzen
- weiter
- fortgesetzt
- beitragen
- erstellt
- Erstellen
- Referenzen
- Kryptowährungen
- kryptowährung
- Original
- technische Daten
- Tag
- definiert
- geliefert
- liefert
- Abhängigkeiten
- Einsatz
- Desktop
- entdecken
- Entwickler
- Entwicklung
- Geräte
- anders
- Direkt
- entdeckt
- Displays
- verteilt
- Verteilung
- Ausschüttungen
- do
- nach unten
- herunterladen
- Herunterladen
- Downloads
- Dropbox
- im
- jeder
- Effektiv
- Anstrengung
- entweder
- einbetten
- eingebettet
- Entwicklung
- Eintrag
- Arbeitsumfeld
- Fehler
- insbesondere
- Astraleum
- Jedes
- ausgeführt
- Führt aus
- Ausführung
- Exfiltration
- erwarten
- explizit
- extern
- Tatsache
- FAIL
- Gefälligkeiten
- Abbildung
- Reichen Sie das
- Mappen
- Finale
- Endlich
- Fest
- Vorname
- fünf
- Aussichten für
- unten stehende Formular
- Früher
- Formen
- gefunden
- Unser Ansatz
- für
- voller
- Funktion
- Mittel
- Zukunft
- GitHub
- Go
- Griff
- Griffe
- Haben
- Hilfe
- ein Geschenk
- HTTPS
- if
- Image
- Implementierung
- umgesetzt
- Einfuhr
- Importe
- in
- das
- Dazu gehören
- Einschließlich
- berüchtigt
- Information
- Anfragen
- innerhalb
- installieren
- Installation
- installiert
- Installieren
- beantragen müssen
- Intelligenz
- in
- Problem
- IT
- SEINE
- selbst
- bekannt
- Sprache
- starten
- Schicht
- legitim
- weniger
- Bibliotheken
- leicht
- LINK
- linux
- Liste
- Litecoin
- located
- aussehen
- mac
- Main
- um
- Malware
- Management
- Manager
- Manager
- Spiel
- Kann..
- mittlere
- Metadaten
- Mitte
- Minuten
- Modul
- Module
- Monero
- Überwachen
- mehr
- vor allem warme
- Name
- Namen
- weiter
- nicht
- nichts
- Notiz..
- Bemerkens
- jetzt an
- und viele
- of
- Angebote
- offiziell
- Offline-Bereich.
- on
- EINEM
- Einsen
- einzige
- Open-Source-
- Eröffnung
- die
- Betriebssystem
- Betreiber
- or
- Andere
- Andernfalls
- UNSERE
- Möglichkeiten für das Ausgangssignal:
- übrig
- Paket
- Pakete
- Seite
- Passwort
- Passwörter
- passt
- für
- Beharrlichkeit
- Stücke
- Ort
- Platzierung
- Plasma
- Plato
- Datenintelligenz von Plato
- PlatoData
- Bitte
- Punkte
- Beliebt
- Potenzial
- Powershell
- Gegenwart
- privat
- wahrscheinlich
- Prozessdefinierung
- Produkte
- Programmierer
- Programmierung
- Projekt
- Projekte
- Protokoll
- Öffentlichkeit
- veröffentlicht
- PYPL
- Python
- Bewerten
- lieber
- Grund
- Veteran
- verbleibenden
- entfernt
- ersetzt
- Meldungen
- Quelle
- Forschungsprojekte
- Folge
- zeigen
- Führen Sie
- Laufen
- läuft
- vorgesehen
- Planung
- Screenshots
- Skript
- Skripte
- Zweite
- Sicherheitdienst
- sehen
- gesehen
- senden
- Sendung
- getrennte
- Server
- Setup
- ,,teilen"
- sollte
- Konzerte
- ähnlich
- Einfacher
- da
- So
- Social Media
- Soziale Technik
- Software
- einige
- manchmal
- Quelle
- Quellcode
- spezifisch
- Stufe
- Stufen
- Anfang
- Stiehlt
- Läden
- so
- System
- Systeme und Techniken
- Tabelle
- Nehmen
- gemacht
- Einnahme
- Targeting
- Ziele
- Aufgabe
- Technik
- Techniken
- vorübergehend
- Test
- als
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- Die Quelle
- ihr
- dann
- Dort.
- Diese
- vom Nutzer definierten
- Dritte
- fehlen uns die Worte.
- gründlich
- Bedrohung
- nach drei
- Durch
- Zeit
- mal
- zu
- Transaktion
- WENDE
- XNUMX
- typisch
- für
- hochgeladen
- auf
- us
- -
- benutzt
- Mitglied
- verwendet
- Verwendung von
- gewöhnlich
- Variante
- Vielfalt
- Version
- VET
- Opfer
- Opfer
- Besuchen Sie
- ging
- Wallet
- wurde
- Weg..
- we
- Netz
- Internetbrowser
- GUT
- waren
- was auch immer
- Rad
- wann
- sobald
- welche
- während
- weit
- Breite
- werden wir
- Fenster
- Fenster
- mit
- ohne
- Werk
- wert
- geschrieben
- Jahr
- Du
- Zephyrnet
- PLZ