Il pacchetto Python fluente, scoperto su PyPI, è stato identificato come maligno, contenente un malware infostealer convenzionale. Tuttavia, la sua caratteristica distintiva è l'uso di tecniche avanzate di offuscamento del codice che oscurano il suo payload, rendendo l'analisi particolarmente impegnativa. Questo malware utilizza tre livelli di offuscamento in modo iterativo lungo la sua catena di attacco, creando ostacoli significativi per la decostruzione manuale.
Il nostro team Malware Early Warning ha segnalato il pacchetto al team di sicurezza PyPI, che lo ha rapidamente rimosso. In questo articolo spieghiamo le fasi di fluentee i metodi utilizzati per nascondere il suo scopo, concentrandosi su come il malware infostealer e l'offuscamento del codice lavorano insieme.
Cheat Sheet: Malware Infostealer e offuscamento del codice
Che cos'è il malware Infostealer?
Il malware Infostealer agisce come un ladro furtivo nel tuo mondo digitale. Cattura silenziosamente informazioni sensibili, come password, numeri di carte di credito o dati personali, senza che tu te ne accorga. Questi programmi registrano ciò che digiti (keylogging), dirottano il tuo browser o scansionano file sul tuo dispositivo per raccogliere dati preziosi. La parte più spaventosa? Sono eccellenti nel rimanere sotto il radar.
Cos'è l'offuscamento del codice?
L'offuscamento del codice è fondamentalmente l'arte di nascondere le cose in bella vista, spesso usata dagli hacker per rendere il loro codice dannoso più difficile da individuare o comprendere. Immagina qualcuno che scrive codice in un modo deliberatamente confuso, crittografandone parti o alterandone l'aspetto per confondere gli strumenti antivirus o i ricercatori. È una tattica intelligente ma frustrante che aiuta il malware a rimanere attivo più a lungo ed evitare il rilevamento.
Livelli di offuscamento del malware ThreadFluent Infostealer
1. Tripla crittografia
Il processo di offuscamento inizia con un payload fortemente crittografato incorporato nel fluente.py file. Il processo iniziale di codifica e decifratura può essere riassunto come segue:
encoded_data = base64_module.b64decode("... BASE-6 with encrypted payload, IV and RSA-encrypted keys…”); # … Sequential decryption: ChaCha20, Blowfish and AES … encrypted_payload = AES_Cipher.new(aes_key, AES_Cipher.MODE_CBC, iv=aes_iv).decrypt(encrypted_payload[16:]) final_payload = unpad_function(encrypted_payload, AES_Cipher.block_size) exec( zlib_module.decompress(bz2_module.decompress(final_payload)) ) Questo processo di offuscamento comporta:
- Compressione: Utilizzo di gzip e bzip.
- Crittografia simmetrica: Crittografia concatenata con ChaCha20, Blowfish e AES.
- Crittografia asimmetrica: RSA utilizzato per crittografare le chiavi simmetriche.
Il risultato viene codificato in Base64 e inserito come dati_codificatiOgni iterazione si basa sulla precedente, creando una struttura di crittografia nidificata che rende eccezionalmente difficile scoprire il payload effettivo senza reverse engineering.
2. Decompressione Gzip
In molti passaggi intermedi, il malware impiega un metodo di offuscamento semplice ma efficace: la compressione Gzip combinata con la codifica Base64.
import base64, zlib; eval(zlib.decompress(base64.b64decode(<STR>).decode('utf-8')) Questa tecnica garantisce che il payload offuscato rimanga nascosto durante tutte le fasi.
3. Concatenazione del codice e compilazione dinamica
Lo strato finale prevede la suddivisione del payload offuscato su più variabili, che vengono concatenate e decodificate dinamicamente durante l'esecuzione:
import base64, zlib FEQXCBDOZKHVIhT = '...' # ....(111 other variables with base-64 encoded values) ... zZytWuvuEdBXSrO = eval(<FEQXCBDOZKHVIhT' encoded with '\x>) + eval(<next variable, encoded>) + eval( ' zlib.decompress(base64.b64decode(<VAR>)).decode('utf-8') ') + ... eval(compile(base64.b64decode(eval(zZytWuvuEdBXSrO)).decode('utf-8'), ‘<app>', 'exec')) Questa fase è particolarmente macchinosa da sottoporre a reverse engineering manuale, poiché ogni variabile deve essere decodificata e ricombinata per rivelare il payload successivo.
Combinando queste tecniche di offuscamento, il malware informatico in fluente elude il rilevamento, evidenziando il ruolo critico di Offuscamento del codice negli attacchi informatici moderni.
La catena di attacco multi-fase di ThreadFluent
Migliori fluente malware informatico comprende quattro fasi distinte, ciascuna delle quali introduce ulteriori livelli di Offuscamento del codiceQueste fasi servono non solo a consegnare il carico utile, ma anche a proteggerlo dal rilevamento e dall'analisi.

Fase 0: Esecuzione iniziale del codice
Il punto di ingresso è il __init__.py file, che avvia l'esecuzione del payload offuscato in fluente.pyQuesto file utilizza l'offuscamento multistrato (come descritto nei passaggi 1–3) per produrre il contagocce di Fase 1:
import os,threading def main(): if os.name == 'nt': from . import fluent fluent.main() thread = threading.Thread(target=main , daemon=True) thread.start() Fase 1: contagocce iniziale
Il primo dropper, una volta deoffuscato, scarica e incorpora codice dannoso aggiuntivo, mette.py, da un repository GitHub Gambe-rosse-1337/repuests (attenzione: potrebbe contenere codice dannoso).
Il contagocce si incastra mette.py nell'installazione locale del popolare richieste biblioteca, modificandone la __init__.py file per eseguire la deoffuscazione ed eseguire la fase successiva. Questa deoffuscazione consiste nell'invertire molte applicazioni degli strati di offuscamento 1 … 3.
Fase 2: Secondo contagocce
Il secondo dropper, una volta deoffuscato seguendo lo stesso processo, scarica un altro payload, ssl.py dal repository GitHub, lo rinomina come udp.py, e genera un file di blocco per garantire che il malware non si reinstalli ripetutamente. Quindi viene eseguito per deoffuscarlo, con conseguente esecuzione del payload infostealer finale.
Fase 3: Infostealer finale
La fase finale è un infostealer completamente funzionante che impiega tecniche di evasione avanzate:
- Funzionalità anti-analisi:
- Rileva gli strumenti antimalware e termina se vengono rilevati processi, IP, nomi host o ambienti virtuali nella blacklist.
- Esfiltrazione di dati:
- Cattura informazioni esaustive. Che vanno da IP, indirizzo Mac, dati VPN, cookie/cronologia del browser, dati della carta di credito e credenziali del portafoglio crittografico, tra gli altri, incluso uno screenshot.
- Invia dati rubati (criptati) tramite un canale Telegram, utilizzando il modello mostrato qui:

Strategia di deoffuscamento
Per analizzare pacchetti simili, i ricercatori devono invertire sistematicamente i suoi livelli di offuscamento:
- Emulare i passaggi di offuscamento: Scrivere script per simulare le trasformazioni (ad esempio decrittazione, decompressione) senza eseguire il payload.
- Livelli di crittografia inversa: Estrarre e decifrare il payload utilizzando le chiavi e gli algoritmi incorporati.
- Analisi iterativa: Elaborare ogni fase intermedia in modo iterativo per ricostruire il carico utile finale.
Per semplificare questa analisi sono essenziali strumenti automatizzati e ambienti sandbox.
Vuoi saperne di più su come prevenire le minacce in tempo reale?
Scarica il nostro whitepaper "Early Warning: rilevamento e definizione delle priorità delle minacce in tempo reale" e scopri come proteggere la tua supply chain software.
L'attore della minaccia
A quanto pare il pacchetto è stato pubblicato da due account PyPI, ABIRROSSAIN10 and anomilano785, attualmente rimosso.
Esiste un account GitHub (attualmente attivo) denominato ABIRROSSAIN10, che potrebbe essere correlato alla campagna. Il Gambe-rosse-1337 Anche l'utente GitHub proprietario del repository utilizzato per scaricare i payload delle fasi 2 e 3 è sotto analisi.
Sebbene l'attribuzione sia sempre complicata e l'appartenenza a un red team sia una possibilità, il tipo e il volume di informazioni esfiltrate lasciano intendere l'esistenza di un malintenzionato.
Conclusione: il ruolo dell'offuscamento del codice nell'evoluzione del malware
Migliori fluente package esemplifica l'offuscamento del malware moderno nella sua distribuzione multi-fase. Insieme alle tecniche di evasione impiegate, questo pacchetto dimostra un chiaro sforzo per eludere il rilevamento e resistere all'analisi.
Questa analisi sottolinea l'importanza degli sforzi collaborativi e degli strumenti automatizzati nella lotta a tali minacce. Analizzando e comprendendo questi metodi, i professionisti della sicurezza possono sviluppare difese migliori contro malware simili in futuro.
Come il sistema MEW di Xygeni ha impedito al pacchetto threadfluent dannoso di raggiungere la produzione
Quello di Xygeni Allerta precoce sul malware (MEW) il sistema è stato determinante nel fermare il fluente Pacchetto Python, una dipendenza dannosa contenente funzionalità avanzate offuscamento del codice e un multi-stadio malware informatico, prima che potesse compromettere gli ambienti di produzione. Ecco come:
- Rilevamento tramite analisi statica
MEW avvistato fluenteil codice nascosto, individuando segnali sospetti come crittografia a strati e attività di dipendenza insolite. - Valutazione della raggiungibilità in fase di esecuzione
Il sistema ha scoperto che il codice del pacchetto poteva essere eseguito durante l'uso, contrassegnandolo come una minaccia seria senza effettivamente eseguirlo. - CI/CD Pipeline Marchio
MEW bloccato fluente in tempo reale, ne ha impedito l'inclusione nelle build e impedito che raggiungesse la produzione. Ha inviato agli sviluppatori avvisi attuabili, risparmiando tempo prezioso. - Condivisione dell'intelligence sulle minacce
Xygeni ha segnalato rapidamente il pacchetto a PyPI e ha condiviso le sue scoperte con la sua rete di sicurezza globale, impedendone l'ulteriore diffusione.
catturando fluente all'inizio, il sistema MEW di Xygeni ha fatto in modo che il codice dannoso non danneggiasse le catene di fornitura del software o CI/CD flussi di lavoro.
Proteggi il tuo CI/CD Pipelines gratis
Prevenire minacce come fluente con il sistema Malware Early Warning di Xygeni. Inizia il tuo prova gratuita oggi stesso e metti in sicurezza la tua supply chain software.
Luis Rodriguez
Luis Rodriguez è un fisicocist + matematico e CISSP. Attualmente co-fondatore e CTO di Xygeni Security. Ha oltre 20 anni di esperienza nella sicurezza software e ha partecipato a progetti come SAST and SCAAttualmente si concentra su software supply chain security.
Daniel Martin
Daniel Martín è un esperto di sicurezza informatica e membro del team di sicurezza della ricerca Xygeni, specializzato in SDLC sicurezza e mitigazione delle vulnerabilità delle applicazioni.






