Python-paketet trådflytande, upptäckt på PyPI, har identifierats som skadlig, som innehåller en konventionell informationsstöldkod. Dess utmärkande egenskap är dock användningen av avancerade kodförvirringstekniker som döljer dess nyttolast, vilket gör analysen särskilt utmanande. Denna skadliga kod använder tre lager av förvirring iterativt över sin attackkedja, vilket skapar betydande hinder för manuell dekonstruktion.
Vårt team för tidig varning mot skadlig kod rapporterade paketet till PyPI-säkerhetsteamet, som snabbt tog bort det. I den här artikeln förklarar vi stegen i processen. trådflytandes attack och de metoder den använder för att dölja sitt syfte, med fokus på hur informationsstöld och kodförvirring fungerar tillsammans.
Fusklapp: Informationsstöld med skadlig programvara och kodförvirring
Vad är Infostealer-skadlig programvara?
Infostealer-skadlig programvara fungerar som en smygande tjuv i din digitala värld. Den stjäl i tysthet känslig information, som dina lösenord, kreditkortsnummer eller personuppgifter, utan att du märker det. Dessa program registrerar vad du skriver (keylogging), kapar din webbläsare eller skannar filer på din enhet för att samla in värdefull data. Det läskigaste? De utmärker sig på att hålla sig under radarn.
Vad är kodobfuscation?
Kodförvirring är i grunden konsten att dölja saker i synfältet, vilket ofta används av hackare för att göra sin skadliga kod svårare att upptäcka eller förstå. Tänk dig någon som skriver kod på ett sätt som avsiktligt är förvirrande, krypterar delar av den eller ändrar hur den ser ut för att störa antivirusverktyg eller forskare. Det är en smart men frustrerande taktik som hjälper skadlig kod att förbli aktiv längre och undvika upptäckt.
Obfuskeringslager av ThreadFluent Infostealer-skadlig programvara
1. Trippelkryptering
Obfuskationsprocessen börjar med en kraftigt krypterad nyttolast inbäddad i fluent.py fil. Den inledande kodnings- och dekrypteringsprocessen kan sammanfattas enligt följande:
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)) ) Denna förvirringsprocess innefattar:
- kompressionAnvänder gzip och bzip.
- Symmetrisk krypteringKedjekryptering med ChaCha20, Blowfish och AES.
- Asymmetrisk krypteringRSA används för att kryptera de symmetriska nycklarna.
Resultatet kodas i Base64 och infogas som kodad_dataVarje iteration bygger på den föregående och skapar en kapslad krypteringsstruktur som gör det exceptionellt svårt att avslöja den faktiska nyttolasten utan reverse engineering.
2. Gzip-dekomprimering
I många mellanliggande steg använder skadlig programvara en enkel men effektiv förvirringsmetod: Gzip-komprimering i kombination med Base64-kodning.
import base64, zlib; eval(zlib.decompress(base64.b64decode(<STR>).decode('utf-8')) Denna teknik säkerställer att den obfuskerade nyttolasten förblir dold genom hela etappen.
3. Kodsammanfogning och dynamisk kompilering
Det sista lagret innebär att den obfuskerade nyttolasten delas upp över flera variabler, som dynamiskt sammanfogas och avkodas under exekveringen:
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')) Det här steget är särskilt besvärligt att bakåtkompilera manuellt, eftersom varje variabel måste avkodas och rekombineras för att avslöja nästa nyttolast.
Genom att kombinera dessa förvirringstekniker, den infostealer malware in trådflytande undviker upptäckt, vilket visar den avgörande rollen av Kodförvirring i moderna cyberattacker.
ThreadFluents flerstegsattackkedja
Ocuco-landskapet trådflytande infostealer malware består av fyra distinkta steg, som vart och ett introducerar ytterligare lager av KodförvirringDessa steg tjänar inte bara till att leverera nyttolasten utan också skydda den mot upptäckt och analys.

Steg 0: Initial kodkörning
Ingångspunkten är __init__.py fil, som initierar körningen av den obfuskerade nyttolasten i fluent.pyDen här filen använder flerskiktad obfuskering (enligt beskrivningen i steg 1–3) för att producera steg 1-droppern:
import os,threading def main(): if os.name == 'nt': from . import fluent fluent.main() thread = threading.Thread(target=main , daemon=True) thread.start() Steg 1: Initial dropper
Den första droppern, när den har deobfuskerats, laddar ner och bäddar in ytterligare skadlig kod, puts.py, från ett GitHub-arkiv Rödhåriga-skaft-1337/reputations (varning: potentiellt skadlig kod här).
Droppern bäddas in puts.py in i den lokala installationen av den populära förfrågningar biblioteket, modifierar dess __init__.py filen för att köra deobfuskeringen och utföra nästa steg. Denna deobfuskering består av att reversera många tillämpningar av obfuskeringslagren 1 … 3.
Steg 2: Andra droppern
Den andra droppern, när den har deobfuskerats enligt samma process, laddar ner ytterligare en nyttolast, ssl.py från GitHub-arkivet, byter namn på det till udp.py, och genererar en låsfil för att säkerställa att skadlig programvara inte installeras om upprepade gånger. Sedan körs den för att deobfuskera den, vilket resulterar i att den slutliga infostealer-nyttolasten körs.
Steg 3: Slutgiltig informationstjuv
Det sista steget är en fullt fungerande informationstjuv som använder avancerade undanflyktstekniker:
- Antianalysfunktioner:
- Upptäcker verktyg mot skadlig kod och avslutas om svartlistade processer, IP-adresser, värdnamn eller virtuella miljöer upptäcks.
- Dataexfiltrering:
- Samlar in omfattande information. Allt från IP-adress, Mac-adress, VPN-data, webbläsarens cookiehistorik/historik, kreditkortsuppgifter och inloggningsuppgifter för kryptoplånböcker, inklusive en skärmdump.
- Skickar stulen data (krypterad) via en Telegram-kanal med hjälp av mallen som visas här:

Strategi för deobfuskation
För att analysera liknande paket måste forskare systematiskt vända på dess obfuskeringslager:
- Steg för att emulera obfuskation: Skriv skript för att simulera transformationerna (t.ex. dekryptering, dekomprimering) utan att köra nyttolasten.
- Omvända krypteringslager: Extrahera och dekryptera nyttolasten med hjälp av de inbäddade nycklarna och algoritmerna.
- Iterativ analys: Bearbeta varje mellansteg iterativt för att rekonstruera den slutliga nyttolasten.
Automatiserade verktyg och sandlådemiljöer är avgörande för att effektivisera denna analys.
Vill du lära dig mer om att ligga steget före hoten i realtid?
Ladda ner vår whitepaper, "Tidig varning: Hotdetektering och prioritering i realtid", och upptäck hur du skyddar din programvaruleveranskedja.
Hotaktören
Tydligen publicerades paketet från två PyPI-konton, ABIRHOSSAIN10 och anomilano785, för närvarande borttagen.
Det finns ett (för närvarande aktivt) GitHub-konto som heter ABIRHOSSAIN10, vilket skulle kunna vara relaterat till kampanjen. Den Rödhåriga-skaft-1337 GitHub-användaren som äger arkivet som används för att ladda ner nyttolaster för steg 2 och 3 analyseras också.
Även om tillskrivning alltid är komplicerat och medlemskap i ett rött team är en möjlighet, antyder typen och mängden information som sipprats ut en illvillig aktör.
Slutsats: Kodförvirringens roll i utvecklingen av skadlig kod
Ocuco-landskapet trådflytande Paketet exemplifierar modern förvirring av skadlig kod i sin flerstegsleverans. Tillsammans med de använda undvikningsteknikerna visar detta paket en tydlig ansträngning att undvika upptäckt och motstå analys.
Denna analys understryker vikten av samarbete och automatiserade verktyg för att bekämpa sådana hot. Genom att analysera och förstå dessa metoder kan säkerhetspersonal utveckla bättre försvar mot liknande skadlig kod i framtiden.
Hur Xygenis MEW-system förhindrade att det skadliga threadfluent-paketet nådde produktion
Xygenis Tidig varning om skadlig kod (MEW) systemet var avgörande för att stoppa trådflytande Python-paket, ett skadligt beroende som innehåller avancerade koddämpning och en flerstegs infostealer malware, innan det kunde äventyra produktionsmiljöer. Så här gör du:
- Detektion genom statisk analys
MEW upptäckt trådflytandes dolda kod, och hittar misstänkta tecken som kryptering i flera lager och ovanlig beroendeaktivitet. - Bedömning av tillgänglighet vid körning
Systemet upptäckte att paketets kod kunde köras under användning, vilket markerade det som ett allvarligt hot utan att faktiskt köra det. - CI/CD Pipeline Skydd
MEW blockerad trådflytande i realtid, stoppade den från att inkluderas i byggen och förhindrade den från att nå produktion. Den skickade utvecklare åtgärdbara varningar, vilket sparade värdefull tid. - Hot Intelligence Sharing
Xygeni rapporterade snabbt paketet till PyPI och delade sina resultat med sitt globala säkerhetsnätverk, vilket stoppade det från att sprida sig ytterligare.
Genom att fånga trådflytande Tidigt såg Xygenis MEW-system till att den skadliga koden inte skadade mjukvaruleveranskedjor eller CI/CD arbetsflöden.
Skydda din CI/CD Pipelines gratis
Förhindra hot som trådflytande med Xygenis system för tidig varning mot skadlig kod. Starta din fri rättegång idag och säkra din programvaruleveranskedja.
Luis Rodriguez
Luis Rodriguez är en fysioterapeutcist + matematiker och CISSP. För närvarande medgrundare och teknisk chef på Xygeni Security. Han har över 20 års erfarenhet av programvarusäkerhet och har deltagit i projekt som SAST och SCAHan fokuserar för närvarande på software supply chain security.
Daniel Martin
Daniel Martín är expert på cybersäkerhet och medlem i Xygenis forskningsteam för säkerhet, specialiserat på SDLC säkerhets- och applikationssårbarhetsreducering.






