ESET Research ha scoperto un cluster di progetti Python dannosi distribuiti in PyPI, il repository ufficiale dei pacchetti Python. La minaccia prende di mira sia i sistemi Windows che Linux e solitamente fornisce una backdoor personalizzata. In alcuni casi, il carico utile finale è una variante del famigerato Ladro W4SPo un semplice monitor degli appunti per rubare criptovaluta, o entrambi. Nel maggio 2023, noi segnalati su un altro cluster di pacchetti che abbiamo trovato su PyPI che fornisce malware per il furto di password e criptovaluta, ma i due cluster sembrano essere campagne diverse.
Punti chiave di questo post sul blog:
- ESET Research ha scoperto 116 pacchetti dannosi in PyPI, il repository ufficiale di software per il linguaggio di programmazione Python, caricati in 53 progetti.
- Le vittime hanno scaricato questi pacchetti più di 10,000 volte.
- Da maggio 2023, la velocità di download è più o meno di 80 al giorno.
- Il malware fornisce una backdoor in grado di eseguire comandi remoti, esfiltrarli e acquisire screenshot.
- Il componente backdoor è implementato sia per Windows, in Python, che per Linux, in Go.
- In alcuni casi, viene invece fornito il W4SP Stealer o un monitor degli appunti che ruba criptovaluta, o entrambi.
PyPI è popolare tra i programmatori Python per condividere e scaricare codice. Poiché chiunque può contribuire al repository, i malware, che a volte si presentano come librerie di codici legittime e popolari, possono apparire lì. Abbiamo trovato 116 file (distribuzioni sorgente e ruote) da 53 progetti contenenti malware. Alcuni nomi di pacchetti sembrano simili ad altri pacchetti legittimi, ma crediamo che il modo principale in cui vengono installati dalle potenziali vittime non sia tramite typosquatting, ma attraverso l'ingegneria sociale, in cui le vittime vengono percorse correndo pip install {nome-pacchetto} poter utilizzare il pacchetto “interessante” per qualsiasi motivo.
Nell’ultimo anno, le vittime hanno scaricato questi file più di 10,000 volte; vedere la Figura 1.
PyPI infestante
I pacchetti PyPI possono assumere due forme: pacchetti sorgente, che contengono tutto il codice sorgente del progetto e sono creati al momento dell'installazione, e pacchetti precompilati (chiamati ruote), che può contenere moduli compilati per un sistema operativo specifico o una versione di Python. È interessante notare che in alcuni casi il codice Python nella distribuzione sorgente differisce dalla distribuzione creata. Il primo è pulito, mentre il secondo contiene il codice dannoso. Il gestore dei pacchetti di Python, seme, preferisce una ruota quando è disponibile piuttosto che una distribuzione originale. Di conseguenza, quello dannoso viene installato a meno che non venga esplicitamente richiesto diversamente.
Abbiamo osservato gli operatori dietro questa campagna utilizzare tre tecniche per raggruppare codice dannoso nei pacchetti Python.
Modulo test.py dannoso
La prima tecnica consiste nell'inserire un modulo “test” con codice leggermente offuscato all'interno del pacchetto. La Figura 2 mostra a prova.py file con una funzione chiamata gracile essere definito e poi chiamato. Si noti che la funzione gestisce sia i sistemi Windows che Linux.
Questo modulo di test viene importato nel mezzo del codice sorgente del modulo principale del pacchetto (__init__.py), in modo che il codice dannoso venga eseguito ogni volta che il pacchetto viene importato. La Figura 3 mostra un modulo che si maschera da screenshot e importa il file dannoso prova.py.
PowerShell in setup.py
La seconda tecnica consiste nell'incorporare il codice PowerShell nel file setup.py file, che in genere viene eseguito automaticamente dai gestori di pacchetti come seme per aiutare a installare progetti Python.
La figura 4 mostra uno script di PowerShell che scarica ed esegue la fase successiva.
Questo script di PowerShell viene scaricato trasferimento[.]sh/eyRyPT/Updater.zip in una directory temporanea come update.zip. Lo script quindi decomprime il file ZIP in C: ProgramData e lo cancella dalla directory temporanea. Successivamente, lo script esegue il file seme programma per installare le dipendenze. Infine, esegue il codice Python C:ProgramDataUpdaterserver.pyw.
Questa tecnica funziona solo su Windows e non riuscirà a infestare i sistemi Linux.
Nei metadati del pacchetto della Figura 4, potresti aver notato che l'autore del pacchetto è billythegoat356. Sono state ricevute numerose segnalazioni che associavano questo soprannome ad attività dannose, incluso un articolo di Phylum, dove rivelano il potenziale collegamento di Billy con W4SP Stealer.
Solo malware...
Nella terza tecnica gli operatori non fanno alcuno sforzo per includere nel pacchetto il codice legittimo, in modo che sia presente solo il codice dannoso, in forma leggermente offuscata. La Figura 5 mostra due porzioni di codice dannoso per Windows scritte in file temporanei e quindi eseguite pythonw.exe, che viene utilizzato al posto di python.exe in modo che il codice venga eseguito senza aprire una finestra della console.
Le fasi successive sono pacchetti Python, script o file binari scaricati da Dropbox o trasferimento.sh.
Persistenza
Su Windows, la persistenza viene ottenuta per la maggior parte del tempo tramite a Codificato VBScript (VBE), che è un file VBScript codificato, scritto in %APPDATA%/Pythonenv/pythenenv.vbe. La Figura 6 mostra cmd.exe nascondendo la directory %APPDATA%/Pythonenv, L'esecuzione di pythenenv.vbe, quindi pianificare l'esecuzione del file VBE ogni cinque minuti nell'ambito dell'attività MicrosoftWinRaRUtilityTaskB.
Su Linux, la persistenza si ottiene inserendo un file dannoso voce sul desktop, mate-utente-share.desktop, Nella ~ / .config / autostart / directory, come mostrato nella Figura 7. I file situati in avvio automatico directory vengono eseguite ad ogni avvio del sistema. La voce del desktop utilizza il nome di a MATE sottoprogetto per il nome del file, ma è solo per ridurre i sospetti perché non ha nulla a che fare con l'ambiente desktop.
La Figura 7 mostra anche i download dei moduli dl.dropbox[.]com/s/u3yn2g7rewly4nc/proclean a ~/.config/.kde/.kdepath. Questo è probabilmente un tentativo di impersonare una directory di configurazione per il file KDE GUI Plasma per Linux.
Lancio del mate-utente-share.desktop il file a sua volta esegue il file scaricato .kdepath file, che è il file eseguibile Linux contenente il componente backdoor.
Carico utile finale
In genere, il payload finale è una backdoor personalizzata che consente l'esecuzione di comandi remoti, l'esfiltrazione di file e talvolta include la possibilità di acquisire screenshot. Su Windows la backdoor è implementata in Python.
La Figura 8 mostra la backdoor alla quale si crea una connessione tramite socket TCP blazywound.ignorelist[.]com sulla porta 6001. Dopo aver inviato il nome host, l'indirizzo MAC e il nome utente al server C&C, la backdoor gestirà direttamente alcuni comandi o eseguirà qualsiasi altro comando in un processo separato e invierà l'output del comando e qualsiasi informazione di errore al server.
Su Linux la backdoor è implementata in Go; vedere la Figura 9.
In alcuni casi, al posto della backdoor il payload è una variante del famigerato Ladro W4SPo un semplice monitor degli appunti che ruba criptovaluta, o entrambi. La Figura 10 mostra un monitor degli appunti destinato alle criptovalute Bitcoin, Ethereum, Monero e Litecoin. Il malware utilizza il legittimo pyperclip pacchetto per controllare il contenuto degli appunti per gli indirizzi del portafoglio. Se trovato, il malware copia negli appunti un indirizzo controllato dall'aggressore nella speranza che la vittima incolli invece questo indirizzo in una futura transazione di criptovaluta.
I prodotti ESET rilevano i pacchetti Python dannosi come varianti di Python/Agent e Python/TrojanDownloader e la backdoor come Python/Agent.AOY o Linux/Spy.Agent.BB.
La maggior parte dei pacchetti erano già stati rimossi da PyPI al momento di questa ricerca. ESET ha comunicato con PyPI di intraprendere azioni contro i rimanenti e tutti i pacchetti dannosi noti sono ora offline. L'elenco completo dei 116 pacchetti può essere trovato nel ns Repository GitHub.
Vale la pena notare che il malware in un repository di progetto PyPI non rappresenta un problema di sicurezza con PyPI stesso. In effetti, il software che esegue PyPI lo era recentemente sottoposto a revisione da una società esterna che ha valutato che PyPl “è conforme alle migliori pratiche ampiamente accettate”.
Conclusione
PyPI continua a essere sfruttato dagli hacker per compromettere i dispositivi dei programmatori Python. Questa campagna mostra una varietà di tecniche utilizzate per includere malware nei pacchetti Python. Gli sviluppatori Python dovrebbero esaminare attentamente il codice che scaricano, verificando in particolare queste tecniche, prima installandolo sui loro sistemi. Oltre a continuare ad abusare del W4SP Stealer open source, gli operatori hanno anche implementato una backdoor semplice ma efficace. Ci aspettiamo che tale abuso di PyPI continui e consigliamo cautela durante l'installazione di codice da qualsiasi repository di software pubblico.
Per qualsiasi domanda sulla nostra ricerca pubblicata su WeLiveSecurity, contattaci all'indirizzo threatintel@eset.com.
ESET Research offre report di intelligence APT privati e feed di dati. Per qualsiasi domanda su questo servizio, visitare il Intelligence sulle minacce ESET .
IOCS
File
SHA-1 |
Nome del file |
rivelazione |
Descrizione |
439A5F553E4EE15EDCA1CFB77B96B02C77C5C388 |
cache.py |
Python/Agente.AGL |
Downloader backdoor Linux.. |
B94E493579CC1B7864C70FAFB43E15D2ED14A16B |
coloramma-0.5.4-py3-none-any.whl |
Python/Agente.AGU |
Pacchetto con programma di installazione backdoor Linux. |
AE3072A72F8C54596DCBCDE9CFE74A4146A4EF52 |
coloramma-4.5-py3-none-any.zip |
Python/Agente.AOY |
Pacchetto con backdoor Windows. |
70C271F79837B8CC42BD456A22EC51D1261ED0CA |
spazzatura.py |
Python/Agente.AGM |
Programma di installazione della persistenza di Windows. |
B0C8D6BEEE80813C8181F3038E42ADACC3848E68 |
proclean |
Linux/Spy.Agent.BB |
Backdoor di Linux. |
07204BA8D39B20F5FCDB9C0242B112FADFFA1BB4 |
prov.py |
Python/Agente.AGL |
Downloader backdoor per Linux. |
EF59C159D3FD668C3963E5ADE3C726B8771E6F54 |
tmp |
Linux/Spy.Agent.BB |
Backdoor di Linux. |
Per un elenco completo dei pacchetti dannosi, consulta il nostro GitHub repository malware-ioc.
Network NetPoulSafe
Nome del dominio |
Indirizzo IP |
Visto per la prima volta |
Descrizione |
blazywound.ignorelist[.]com |
204.152.203[.]78 |
2022-11-21 |
Server C&C per componente backdoor. |
Tecniche MITRE ATT&CK
Questa tabella è stata creata utilizzando Versione 14 del framework MITRE ATT&CK.
tattica |
ID |
Nome |
Descrizione |
Accesso iniziale |
Compromesso della supply chain: compromesso delle dipendenze software e degli strumenti di sviluppo |
Il malware viene distribuito utilizzando il servizio di gestione dei pacchetti PyPl di Python. |
|
Persistenza |
Attività/Lavoro pianificato: attività pianificata |
Su Windows, la persistenza viene ottenuta utilizzando un'attività pianificata. |
|
Esecuzione dell'avvio automatico di avvio o accesso: voci di avvio automatico XDG |
Su Linux, viene creata una voce di avvio automatico per avviare la backdoor quando l'utente accede. |
||
Evasione della difesa |
Mascheramento: corrisponde al nome o alla posizione legittimi |
Su Linux, i file persistenti hanno nomi simili al software legittimo |
|
Accesso alle credenziali |
Credenziali da archivi password: Credenziali da browser web |
W4SP ruba le password dai browser Web installati. |
|
Collezione |
Dati negli appunti |
Per rubare fondi durante una transazione di criptovaluta, i dati degli appunti vengono sostituiti. |
|
Comando e controllo |
Protocollo di livello non applicativo |
La backdoor utilizza un protocollo binario non crittografato su TCP. |
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- Platone Salute. Intelligence sulle biotecnologie e sulle sperimentazioni cliniche. Accedi qui.
- Fonte: https://www.welivesecurity.com/en/eset-research/pernicious-potpourri-python-packages-pypi/
- :ha
- :È
- :Dove
- 000
- 1
- 10
- 116
- 14
- 152
- 2023
- 7
- 8
- 80
- 9
- a
- capacità
- capace
- WRI
- abuso
- accettato
- raggiunto
- Action
- attività
- indirizzo
- indirizzi
- aiutarti
- Dopo shavasana, sedersi in silenzio; saluti;
- contro
- Agente
- Tutti
- consente
- già
- anche
- tra
- an
- ed
- Un altro
- in qualsiasi
- chiunque
- apparire
- APT
- SONO
- AS
- valutato
- At
- autore
- automaticamente
- disponibile
- precedente
- porta posteriore
- BE
- perché
- stato
- dietro
- essendo
- CREDIAMO
- MIGLIORE
- Bitcoin
- entrambi
- browser
- costruito
- impacchettare
- ma
- by
- detto
- Campagna
- Responsabile Campagne
- Materiale
- capace
- casi
- cautela
- catena
- dai un'occhiata
- verifica
- cavedano
- Cluster
- codice
- COM
- comunicato
- compilato
- componente
- compromesso
- Configurazione
- veloce
- consolle
- contatti
- contenere
- contiene
- contenuto
- continua
- continua
- continua
- contribuire
- creato
- Creazione
- Credenziali
- cryptocurrencies
- criptovaluta
- costume
- dati
- giorno
- definito
- consegnato
- fornisce un monitoraggio
- dipendenze
- schierato
- tavolo
- individuare
- sviluppatori
- Mercato
- dispositivi
- diverso
- direttamente
- scoperto
- display
- distribuito
- distribuzione
- distribuzioni
- do
- giù
- scaricare
- il download
- download
- dropbox
- durante
- ogni
- Efficace
- sforzo
- o
- incastrare
- incorporato
- Ingegneria
- iscrizione
- Ambiente
- errore
- particolarmente
- Ethereum
- Ogni
- eseguito
- esegue
- esecuzione
- esfiltrazione
- attenderti
- espressamente
- esterno
- fatto
- FAIL
- favori
- figura
- Compila il
- File
- finale
- Infine
- Impresa
- Nome
- cinque
- Nel
- modulo
- Ex
- forme
- essere trovato
- Contesto
- da
- pieno
- function
- fondi
- futuro
- GitHub
- Go
- maniglia
- Maniglie
- Avere
- Aiuto
- speranza
- HTTPS
- if
- Immagine
- implementazione
- implementato
- importazione
- importazioni
- in
- includere
- inclusi
- Compreso
- infame
- informazioni
- Richieste
- interno
- install
- installazione
- installato
- installazione
- invece
- Intelligence
- ai miglioramenti
- problema
- IT
- SUO
- stessa
- conosciuto
- Lingua
- lanciare
- strato
- legittimo
- meno
- biblioteche
- leggermente
- LINK
- linux
- Lista
- Litecoin
- collocato
- Guarda
- Mac
- Principale
- make
- il malware
- gestione
- direttore
- I gestori
- partita
- Maggio..
- medie
- Metadati
- In mezzo
- Minuti
- Moduli
- moduli
- Monero
- Monitorare
- Scopri di più
- maggior parte
- Nome
- nomi
- GENERAZIONE
- no
- Niente
- Avviso..
- notando
- adesso
- numerose
- of
- Offerte
- ufficiale
- offline
- on
- ONE
- quelli
- esclusivamente
- open source
- apertura
- operativo
- sistema operativo
- Operatori
- or
- Altro
- altrimenti
- nostro
- produzione
- ancora
- pacchetto
- Packages
- pagina
- Password
- Le password
- passato
- per
- persistenza
- pezzi
- posto
- sistemazione
- Plasma
- Platone
- Platone Data Intelligence
- PlatoneDati
- per favore
- punti
- Popolare
- potenziale
- PowerShell
- presenti
- un bagno
- probabilmente
- processi
- Prodotti
- I programmatori
- Programmazione
- progetto
- progetti
- protocollo
- la percezione
- pubblicato
- PYPL
- Python
- tasso
- piuttosto
- ragione
- ridurre
- rimanente
- a distanza
- sostituito
- Report
- deposito
- riparazioni
- colpevole
- rivelare
- Correre
- running
- corre
- in programma
- programmazione
- screenshot
- copione
- script
- Secondo
- problemi di
- vedere
- visto
- inviare
- invio
- separato
- server
- servizio
- flessibile.
- compartecipazione
- dovrebbero
- Spettacoli
- simile
- Un'espansione
- da
- So
- Social
- Ingegneria sociale
- Software
- alcuni
- a volte
- Fonte
- codice sorgente
- specifico
- Stage
- tappe
- startup
- ruba
- negozi
- tale
- sistema
- SISTEMI DI TRATTAMENTO
- tavolo
- Fai
- preso
- presa
- mira
- obiettivi
- Task
- per l'esame
- tecniche
- temporaneo
- test
- di
- che
- Il
- L’ORIGINE
- loro
- poi
- Là.
- Strumenti Bowman per analizzare le seguenti finiture:
- di
- Terza
- questo
- a fondo
- minaccia
- tre
- Attraverso
- tempo
- volte
- a
- delle transazioni
- TURNO
- seconda
- tipicamente
- per
- caricato
- su
- us
- uso
- utilizzato
- Utente
- usa
- utilizzando
- generalmente
- Variante
- varietà
- versione
- VET
- via
- Vittima
- vittime
- Visita
- camminava
- Portafoglio
- Prima
- Modo..
- we
- sito web
- Browser Web
- WELL
- sono stati
- qualunque
- Ruota
- quando
- ogni volta che
- quale
- while
- ampiamente
- larghezza
- volere
- finestra
- finestre
- con
- senza
- lavori
- valore
- scritto
- anno
- Tu
- zefiro
- Codice postale