Python-pakken trådflydende, opdaget på PyPI, er blevet identificeret som ondsindet, der indeholder en konventionel infostealer-malware. Dens definerende karakteristika er dog brugen af avancerede kodeforsløringsteknikker, der skjuler dens nyttelast, hvilket gør analyse særligt udfordrende. Denne malware bruger tre lag af forsløring iterativt på tværs af sin angrebskæde, hvilket skaber betydelige hindringer for manuel dekonstruktion.
Vores Malware Early Warning-team rapporterede pakken til PyPI-sikkerhedsteamet, som hurtigt fjernede den. I denne artikel forklarer vi trinene i trådflydende's angreb og de metoder, det bruger til at skjule sit formål, med fokus på, hvordan infostealer-malware og kodeforvirring fungerer sammen.
Snydeark: Infostealer-malware og kodeforvirring
Hvad er Infostealer-malware?
Infostealer-malware fungerer som en lusket tyv i din digitale verden. Den stjæler stille og roligt følsomme oplysninger, såsom dine adgangskoder, kreditkortnumre eller personlige oplysninger, uden at du bemærker det. Disse programmer registrerer, hvad du skriver (keylogging), hijacker din browser eller scanner filer på din enhed for at indsamle værdifulde data. Den mest skræmmende del? De udmærker sig ved at holde sig under radaren.
Hvad er kodeforvirring?
Kodeforvrængning er dybest set kunsten at skjule ting i det åbne, og det bruges ofte af hackere til at gøre deres ondsindede kode sværere at få øje på eller forstå. Forestil dig nogen, der skriver kode på en måde, der bevidst er forvirrende, krypterer dele af den eller roder med, hvordan den ser ud, for at forstyrre antivirusværktøjer eller forskere. Det er en smart, men frustrerende taktik, der hjælper malware med at forblive aktiv længere og undgå at blive opdaget.
Tilsløringslag af ThreadFluent Infostealer Malware
1. Tredobbelt kryptering
Forvirringsprocessen begynder med en stærkt krypteret nyttelast indlejret i fluent.py fil. Den indledende kodnings- og dekrypteringsproces kan opsummeres som følger:
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)) ) Denne forvirringsproces involverer:
- CompressionBrug af gzip og bzip.
- Symmetrisk krypteringKædet kryptering med ChaCha20, Blowfish og AES.
- Asymmetrisk krypteringRSA bruges til at kryptere de symmetriske nøgler.
Resultatet kodes i Base64 og indsættes som kodede_dataHver iteration bygger videre på den foregående og skaber en indlejret krypteringsstruktur, der gør det exceptionelt vanskeligt at afdække den faktiske nyttelast uden reverse engineering.
2. Gzip-dekomprimering
I mange mellemliggende trin anvender malwaren en ligetil, men effektiv tilsløringsmetode: Gzip-komprimering kombineret med Base64-kodning.
import base64, zlib; eval(zlib.decompress(base64.b64decode(<STR>).decode('utf-8')) Denne teknik sikrer, at den tilslørede nyttelast forbliver skjult gennem alle etaperne.
3. Kodesammenkædning og dynamisk kompilering
Det sidste lag involverer opdeling af den obfuskerede nyttelast på tværs af flere variabler, som dynamisk sammenkædes og afkodes under udførelsen:
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')) Denne fase er særligt besværlig at reverse engineere manuelt, da hver variabel skal afkodes og rekombineres for at afsløre den næste nyttelast.
Ved at kombinere disse obfuskeringsteknikker, infostealer malware in trådflydende undgår opdagelse, hvilket viser den afgørende rolle, som Kode sløring i moderne cyberangreb.
ThreadFluents flertrins angrebskæde
trådflydende infostealer malware består af fire forskellige faser, der hver især introducerer yderligere lag af Kode sløringDisse faser tjener ikke blot til at levere nyttelasten, men også til at beskytte den mod detektion og analyse.

Trin 0: Indledende kodeudførelse
Indgangspunktet er __init__.py fil, som starter udførelsen af den obfuskerede nyttelast i fluent.pyDenne fil bruger flerlags obfuskation (som beskrevet i trin 1-3) til at producere Stage 1-dråbetælleren:
import os,threading def main(): if os.name == 'nt': from . import fluent fluent.main() thread = threading.Thread(target=main , daemon=True) thread.start() Trin 1: Indledende dropper
Den første dropper, når den er deobfuskeret, downloader og integrerer yderligere ondsindet kode, puts.py, fra et GitHub-arkiv Rødhårede-skafter-1337/repuests (advarsel: potentiel skadelig kode her).
Dropperen indlejres puts.py ind i den lokale installation af den populære anmodninger bibliotek, ændrer dets __init__.py fil for at køre deobfuskation og udføre det næste trin. Denne deobfuskation består i at vende mange anvendelser af obfuskationslagene 1 ... 3 om.
Fase 2: Anden dropper
Den anden dropper, når den er deobfuskeret efter samme proces, downloader endnu en nyttelast, ssl.py fra GitHub-arkivet, omdøber det til udp.py, og genererer en låsefil for at sikre, at malwaren ikke geninstalleres gentagne gange. Derefter køres den for at deobfuscere den, hvilket resulterer i udførelse af den endelige infostealer-nyttelast.
Fase 3: Sidste infostyver
Den sidste fase er en fuldt funktionel infostealer, der anvender avancerede undvigelsesteknikker:
- Anti-analysefunktioner:
- Registrerer antimalware-værktøjer og afslutter, hvis der registreres sortlistede processer, IP-adresser, værtsnavne eller virtuelle miljøer.
- Dataeksfiltrering:
- Indsamler omfattende oplysninger. Lige fra IP-adresse, Mac-adresse, VPN-data, browsercookies/historik, kreditkortdata og loginoplysninger til krypto-wallets, inklusive et skærmbillede.
- Sender stjålne data (krypteret) via en Telegram-kanal ved hjælp af skabelonen vist her:

Deobfuskeringsstrategi
For at analysere lignende pakker skal forskere systematisk vende deres tilsløringslag om:
- Emulér obfuskationstrin: Skriv scripts til at simulere transformationerne (f.eks. dekryptering, dekomprimering) uden at udføre nyttelasten.
- Omvendte krypteringslag: Udpak og dekrypter nyttelasten ved hjælp af de integrerede nøgler og algoritmer.
- Iterativ analyse: Behandl hvert mellemliggende trin iterativt for at rekonstruere den endelige nyttelast.
Automatiserede værktøjer og sandbox-miljøer er afgørende for at strømline denne analyse.
Vil du lære mere om at være på forkant med trusler i realtid?
Download vores whitepaper, 'Tidlig advarsel: Trusselsdetektion og prioritering i realtid', og find ud af, hvordan du beskytter din softwareforsyningskæde.
Trusselskuespilleren
Tilsyneladende blev pakken udgivet fra to PyPI-konti, ABIRHOSSAIN10 og anomilano785, i øjeblikket fjernet.
Der er en (i øjeblikket aktiv) GitHub-konto med navnet ABIRHOSSAIN10, hvilket kunne være relateret til kampagnen. Den Rødhårede-skafter-1337 GitHub-brugeren, der ejer det repository, der bruges til at downloade fase 2- og 3-nyttelaster, er også under analyse.
Selvom tilskrivning altid er kompliceret, og medlemskab af et rødt hold er en mulighed, antyder typen og mængden af information, der er blevet udfiltreret, en ondsindet aktør.
Konklusion: Kodeforvirringens rolle i malwareudviklingen
trådflydende Pakken eksemplificerer moderne malware-tilsløring i sin flertrinslevering. Kombineret med de anvendte undvigelsesteknikker demonstrerer denne pakke en klar indsats for at undgå detektion og modstå analyse.
Denne analyse understreger vigtigheden af samarbejde og automatiserede værktøjer i bekæmpelsen af sådanne trusler. Ved at dissekere og forstå disse metoder kan sikkerhedsprofessionelle udvikle bedre forsvar mod lignende malware i fremtiden.
Hvordan Xygenis MEW-system forhindrede den skadelige threadfluent-pakke i at nå produktion
Xygenis Tidlig advarsel om malware (MEW) systemet var afgørende for at stoppe trådflydende Python-pakke, en ondsindet afhængighed, der indeholder avanceret kode sløring og en flertrins infostealer malware, før det kunne kompromittere produktionsmiljøer. Sådan gør du:
- Detektion gennem statisk analyse
MEW set trådflydende's skjulte kode, og finder mistænkelige tegn som lagdelt kryptering og usædvanlig afhængighedsaktivitet. - Vurdering af tilgængelighed under kørsel
Systemet fandt ud af, at pakkens kode kunne køre under brug, hvilket markerede den som en alvorlig trussel uden rent faktisk at køre den. - CI/CD Pipeline Beskyttelse
MEW blokeret trådflydende i realtid, forhindrede det i at blive inkluderet i builds og forhindrede det i at nå produktion. Det sendte udviklere handlingsrettede advarsler, hvilket sparede værdifuld tid. - Threat Intelligence Sharing
Xygeni rapporterede hurtigt pakken til PyPI og delte sine fund med sit globale sikkerhedsnetværk og forhindrede dermed den i at sprede sig yderligere.
Ved at fange trådflydende Tidligt sørgede Xygenis MEW-system for, at den ondsindede kode ikke skadede softwareforsyningskæder eller CI/CD arbejdsgange.
Beskyt din CI/CD Pipelines gratis
Forebyg trusler som f.eks. trådflydende med Xygenis system til tidlig varsling af malware. Start din gratis prøveversion i dag og sikr din softwareforsyningskæde.
Luis Rodriguez
Luis Rodriguez er fysioterapeutcist + matematiker og CISSP. I øjeblikket medstifter og CTO hos Xygeni Security. Han har over 20 års erfaring inden for softwaresikkerhed og har deltaget i projekter som f.eks. SAST og SCAHan fokuserer i øjeblikket på software supply chain security.
Daniel Martin
Daniel Martín er cybersikkerhedsekspert og medlem af Xygenis forskningssikkerhedsteam med speciale i SDLC sikkerheds- og applikationssårbarhedsreduktion.






