ESET Research je odkril gručo zlonamernih projektov Python, ki se distribuirajo v PyPI, uradno skladišče paketov Python. Grožnja cilja tako na sisteme Windows kot Linux in običajno ponuja stranska vrata po meri. V nekaterih primerih je končni tovor različica zloglasnega W4SP Stealer, ali preprost monitor odložišča za krajo kriptovalute ali oboje. Maja 2023 smo poročali na drugi skupini paketov, ki smo jih našli na PyPI, ki prinaša zlonamerno programsko opremo za krajo gesel in kriptovalut, vendar se zdi, da sta skupini različni kampanji.
Ključne točke te objave v spletnem dnevniku:
- ESET Research je v PyPI, uradnem repozitoriju programske opreme za programski jezik Python, odkril 116 zlonamernih paketov, naloženih v 53 projektih.
- Žrtve so te pakete prenesle več kot 10,000-krat.
- Od maja 2023 je stopnja prenosov več ali manj 80 na dan.
- Zlonamerna programska oprema ponuja stranska vrata, ki so zmožna oddaljenega izvajanja ukazov, eksfiltracije in snemanja posnetkov zaslona.
- Komponenta backdoor je implementirana za Windows v Pythonu in Linux v Go.
- V nekaterih primerih je namesto tega dostavljen W4SP Stealer ali monitor odložišča, ki ukrade kriptovaluto, ali oboje.
PyPI je priljubljen med programerji Python za skupno rabo in prenos kode. Ker lahko vsakdo prispeva k skladišču, se tam lahko pojavi zlonamerna programska oprema – ki se včasih predstavlja kot legitimne, priljubljene knjižnice kode. Našli smo 116 datotek (izvorne distribucije in kolesa) iz 53 projektov, ki vsebujejo zlonamerno programsko opremo. Nekatera imena paketov so res podobna drugim, zakonitim paketom, vendar menimo, da glavni način, kako jih morebitne žrtve namestijo, ni preko tipkarjenja, temveč socialni inženiring, kjer se žrtve sprehodijo skozi tek pip namestite {package-name} da lahko uporabijo “zanimiv” paket iz kakršnega koli razloga.
V zadnjem letu so žrtve prenesle te datoteke več kot 10,000-krat; glej sliko 1.
Okužba s PyPI
Paketi PyPI so lahko v dveh oblikah: izvorni paketi, ki vsebujejo vso izvorno kodo projekta in so zgrajeni ob namestitvi, ter vnaprej pripravljeni paketi (imenovani kolesa), ki lahko vsebuje prevedene module za določen operacijski sistem ali različico Python. Zanimivo je, da se v nekaterih primerih koda Python v izvorni distribuciji razlikuje od vgrajene distribucije. Prvi je čist, drugi pa vsebuje zlonamerno kodo. Pythonov upravitelj paketov, pip, daje prednost kolesu, ko je na voljo, in ne izvorni distribuciji. Posledično se zlonamerna namesti, razen če ni izrecno zahtevano drugače.
Opazili smo, da operaterji za to kampanjo uporabljajo tri tehnike za združevanje zlonamerne kode v pakete Python.
Zlonamerni modul test.py
Prva tehnika je namestitev "testnega" modula z rahlo zakrito kodo znotraj paketa. Slika 2 prikazuje a test.py datoteka s funkcijo, imenovano graby se definira in nato kliče. Upoštevajte, da funkcija obravnava sisteme Windows in Linux.
Ta preskusni modul je uvožen sredi izvorne kode glavnega modula paketa (__init__.py), tako da se zlonamerna koda zažene ob vsakem uvozu paketa. Slika 3 prikazuje modul, ki se maskira kot snemalnik zaslona in uvozi zlonamerno test.py.
PowerShell v setup.py
Druga tehnika je vdelava kode PowerShell v setup.py datoteko, ki jo običajno samodejno zaženejo upravitelji paketov, kot je npr pip za pomoč pri namestitvi projektov Python.
Slika 4 prikazuje skript PowerShell, ki prenese in izvede naslednjo stopnjo.
Ta skript PowerShell se prenese prenos[.]sh/eyRyPT/Updater.zip v začasni imenik kot update.zip. Skript nato datoteko ZIP razpakira v C: ProgramData in ga izbriše iz začasnega imenika. Nato skript zažene pip program za namestitev odvisnosti. Na koncu zažene kodo Python C:ProgramDataUpdaterserver.pyw.
Ta tehnika deluje samo v sistemu Windows in ne bo okužila sistemov Linux.
V metapodatkih paketa s slike 4 ste morda opazili, da je avtor paketa billythegoat356. Obstajajo številna poročila, ki ta vzdevek povezujejo z zlonamernimi dejavnostmi, vključno z članek iz Phylum, kjer razkrijejo Billyjevo potencialno povezavo z W4SP Stealerjem.
Samo zlonamerna programska oprema ...
Pri tretji tehniki se operaterji ne trudijo, da bi v paket vključili zakonito kodo, tako da je prisotna le zlonamerna koda v rahlo zakriti obliki. Slika 5 prikazuje dva dela zlonamerne kode za Windows, ki se zapišeta v začasne datoteke in nato izvajata z njimi pythonw.exe, ki se uporablja namesto python.exe tako da se koda izvede brez odpiranja okna konzole.
Naslednje stopnje so paketi Python, skripti ali binarne datoteke, prenesene iz Dropboxa ali prenos.sh.
Vztrajnost
V sistemu Windows je obstojnost večino časa dosežena prek a Kodirano VBScript (VBE), ki je kodirana datoteka VBScript, zapisana v %APPDATA%/Pythonenv/pythenenv.vbe. Slika 6 prikazuje cmd.exe skrivanje imenika %APPDATA%/Pythonenv, tek pythenenv.vbe, in nato načrtovanje izvajanja datoteke VBE vsakih pet minut v okviru opravila MicrosoftWinRaRUtilityTaskB.
V sistemu Linux je vztrajnost dosežena s postavitvijo zlonamernega vnos namizja, mate-user-share.desktopV ~ / .config / samodejni zagon / imenik, kot je prikazano na sliki 7 . Datoteke, ki se nahajajo v samodejni zagon imenika se izvedejo ob vsakem zagonu sistema. Vnos namizja uporablja ime a MATE podprojekt za njegovo ime datoteke, vendar je samo zato, da zmanjša sum, ker nima nobene zveze z namiznim okoljem.
Slika 7 prikazuje tudi prenose modulov dl.dropbox[.]com/s/u3yn2g7rewly4nc/proclean do ~/.config/.kde/.kdepath. To je verjetno poskus lažnega predstavljanja konfiguracijskega imenika za KDE Plasma GUI za Linux.
Zagon programa mate-user-share.desktop datoteka pa izvede preneseno .kdepath ki je izvedljiva datoteka Linuxa, ki vsebuje komponento backdoor.
Končni tovor
Običajno je končni tovor stranska vrata po meri, ki omogočajo oddaljeno izvajanje ukazov, izločanje datotek in včasih vključujejo možnost snemanja posnetkov zaslona. V sistemu Windows so zadnja vrata implementirana v Pythonu.
Slika 8 prikazuje stranska vrata, ki ustvarjajo povezavo v vtičnico TCP blazywound.ignorelist[.]com na vratih 6001. Po pošiljanju imena gostitelja, naslova MAC in uporabniškega imena strežniku C&C bo stranska vrata neposredno obdelala nekatere ukaze ali zagnala kateri koli drug ukaz v ločenem procesu in strežniku poslala izhod ukaza in morebitne informacije o napaki.
V sistemu Linux so zadnja vrata implementirana v Go; glej sliko 9.
V nekaterih primerih je koristni tovor namesto backdoor različica zloglasnega W4SP Stealer, ali preprost monitor odložišča, ki krade kriptovalute, ali oboje. Slika 10 prikazuje monitor odložišča, ki cilja na kriptovalute Bitcoin, Ethereum, Monero in Litecoin. Zlonamerna programska oprema uporablja zakonito pyperclip paket za preverjanje vsebine odložišča za naslove denarnice. Če je najdena, zlonamerna programska oprema kopira naslov, ki ga nadzoruje napadalec, v odložišče v upanju, da bo žrtev namesto tega prilepila ta naslov v prihodnji transakciji s kriptovalutami.
Izdelki ESET zaznajo zlonamerne pakete Python kot različice Python/Agent in Python/TrojanDownloader, stranska vrata pa kot Python/Agent.AOY ali Linux/Spy.Agent.BB.
Večino paketov je PyPI že odstranil v času te raziskave. ESET je komuniciral s PyPI, da bi ukrepal proti preostalim in vsi znani zlonamerni paketi so zdaj brez povezave. Celoten seznam 116 paketov najdete v našem GitHub repozitorij.
Treba je omeniti, da zlonamerna programska oprema v repozitoriju projekta PyPI ni varnostna težava samega PyPI. Pravzaprav je bila programska oprema, ki poganja PyPI nedavno revidirano zunanje podjetje, ki je ocenilo, da je PyPl "v skladu s splošno sprejetimi najboljšimi praksami".
zaključek
PyPI še naprej zlorabljajo kibernetski napadalci, da bi ogrozili naprave programerjev Python. Ta kampanja prikazuje različne tehnike, ki se uporabljajo za vključitev zlonamerne programske opreme v pakete Python. Razvijalci Pythona bi morali temeljito preveriti kodo, ki jo prenesejo, še posebej preveriti te tehnike, pred nameščajo v svoje sisteme. Poleg tega, da še naprej zlorabljajo odprtokodni W4SP Stealer, so operaterji uvedli tudi preprosta, a učinkovita stranska vrata. Pričakujemo, da se bo takšna zloraba PyPI nadaljevala, in svetujemo previdnost pri nameščanju kode iz katerega koli javnega repozitorija programske opreme.
Za vsa vprašanja o naši raziskavi, objavljeni na WeLiveSecurity, nas kontaktirajte na grožnjaintel@eset.com.
ESET Research ponuja zasebna obveščevalna poročila APT in vire podatkov. Za vsa vprašanja o tej storitvi obiščite ESET Threat Intelligence stran.
IoC
datoteke
SHA-1 |
Ime datoteke |
Odkrivanje |
Opis |
439A5F553E4EE15EDCA1CFB77B96B02C77C5C388 |
cache.py |
Python/Agent.AGL |
Backdoor prenosnik za Linux.. |
B94E493579CC1B7864C70FAFB43E15D2ED14A16B |
coloramma-0.5.4-py3-none-any.whl |
Python/Agent.AGU |
Paket z namestitvenim programom za backdoor za Linux. |
AE3072A72F8C54596DCBCDE9CFE74A4146A4EF52 |
coloramma-4.5-py3-none-any.zip |
Python/Agent.AOY |
Paket s stranskimi vrati Windows. |
70C271F79837B8CC42BD456A22EC51D1261ED0CA |
junk.py |
Python/Agent.AGM |
Namestitveni program za obstojnost sistema Windows. |
B0C8D6BEEE80813C8181F3038E42ADACC3848E68 |
očistiti |
Linux/Spy.Agent.BB |
Zadnja vrata Linuxa. |
07204BA8D39B20F5FCDB9C0242B112FADFFA1BB4 |
prov.py |
Python/Agent.AGL |
Zakulisni prenosnik za Linux. |
EF59C159D3FD668C3963E5ADE3C726B8771E6F54 |
tmp |
Linux/Spy.Agent.BB |
Zadnja vrata Linuxa. |
Za celoten seznam zlonamernih paketov si oglejte naš GitHub skladišče malware-ioc.
mreža
Domena |
IP naslov |
Prvič viden |
Opis |
blazywound.ignorelist[.]com |
204.152.203[.]78 |
2022-11-21 |
C&C strežnik za backdoor komponento. |
Tehnike MITER ATT&CK
Ta tabela je bila izdelana z uporabo različica 14 okvira MITER ATT&CK.
Taktika |
ID |
Ime |
Opis |
Začetni dostop |
Kompromis oskrbovalne verige: ogrožanje odvisnosti programske opreme in razvojna orodja |
Zlonamerna programska oprema se distribuira s Pythonovo storitvijo za upravljanje paketov PyPl. |
|
Vztrajnost |
Načrtovano opravilo/opravilo: Načrtovano opravilo |
V sistemu Windows je obstojnost dosežena z načrtovanim opravilom. |
|
Izvedba samodejnega zagona zagona ali prijave: Vnosi za samodejni zagon XDG |
V sistemu Linux se ustvari vnos samodejnega zagona za zagon stranskih vrat, ko se uporabnik prijavi. |
||
Izmikanje obrambi |
Prikrivanje: ujemanje z zakonitim imenom ali lokacijo |
V sistemu Linux imajo obstojne datoteke imena, podobna zakoniti programski opremi |
|
Dostop s poverilnicami |
Poverilnice iz shramb gesel: Poverilnice iz spletnih brskalnikov |
W4SP ukrade gesla iz nameščenih spletnih brskalnikov. |
|
Collection |
Podatki odložišča |
Za krajo sredstev med transakcijo s kriptovalutami se podatki iz odložišča zamenjajo. |
|
Poveljevanje in nadzor |
Protokol neaplikacijske plasti |
Zadnja vrata uporabljajo nešifriran binarni protokol preko TCP. |
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoData.Network Vertical Generative Ai. Opolnomočite se. Dostopite tukaj.
- PlatoAiStream. Web3 Intelligence. Razširjeno znanje. Dostopite tukaj.
- PlatoESG. Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- PlatoHealth. Obveščanje o biotehnologiji in kliničnih preskušanjih. Dostopite tukaj.
- vir: https://www.welivesecurity.com/en/eset-research/pernicious-potpourri-python-packages-pypi/
- :ima
- : je
- :kje
- 000
- 1
- 10
- 116
- 14
- 152
- 2023
- 7
- 8
- 80
- 9
- a
- sposobnost
- Sposobna
- O meni
- zloraba
- sprejeta
- doseže
- Ukrep
- dejavnosti
- Naslov
- naslovi
- svetuje
- po
- proti
- Agent
- vsi
- omogoča
- že
- Prav tako
- med
- an
- in
- Še ena
- kaj
- kdo
- zdi
- APT
- SE
- AS
- ocenili
- At
- Avtor
- samodejno
- Na voljo
- nazaj
- Zakulisni
- BE
- ker
- bilo
- zadaj
- počutje
- Verjemite
- BEST
- Bitcoin
- tako
- brskalniki
- zgrajena
- Sveženj
- vendar
- by
- se imenuje
- Akcija
- Kampanje
- CAN
- lahko
- primeri
- previdnost
- verige
- preveriti
- preverjanje
- čiščenje
- Grozd
- Koda
- COM
- sporočeno
- zbranih
- komponenta
- Kompromis
- konfiguracija
- povezava
- Konzole
- kontakt
- vsebujejo
- Vsebuje
- vsebina
- naprej
- se nadaljuje
- nadaljevati
- prispevajo
- ustvaril
- Ustvarjanje
- Mandatno
- cryptocurrencies
- cryptocurrency
- po meri
- datum
- dan
- opredeljen
- dostavi
- daje
- odvisnosti
- razporejeni
- desktop
- odkrivanje
- Razvijalci
- Razvoj
- naprave
- drugačen
- neposredno
- odkril
- prikazovalniki
- porazdeljena
- distribucija
- Distribucije
- do
- navzdol
- prenesi
- nalaganje
- prenosov
- varno shrambo
- med
- vsak
- Učinkovito
- prizadevanje
- bodisi
- Embed
- vgrajeni
- Inženiring
- Vpis
- okolje
- Napaka
- zlasti
- ethereum
- Tudi vsak
- izvršeno
- Izvaja
- izvedba
- eksfiltracija
- pričakovati
- izrecno
- zunanja
- Dejstvo
- FAIL
- uslug
- Slika
- file
- datoteke
- končna
- končno
- Firm
- prva
- pet
- za
- obrazec
- Nekdanji
- Obrazci
- je pokazala,
- Okvirni
- iz
- polno
- funkcija
- Skladi
- Prihodnost
- GitHub
- Go
- ročaj
- Ročaji
- Imajo
- pomoč
- upam,
- HTTPS
- if
- slika
- Izvajanje
- izvajali
- uvoz
- uvoz
- in
- vključujejo
- vključuje
- Vključno
- zloglasni
- Podatki
- Poizvedbe
- v notranjosti
- namestitev
- namestitev
- nameščen
- Namestitev
- Namesto
- Intelligence
- v
- vprašanje
- IT
- ITS
- sam
- znano
- jezik
- kosilo
- plast
- legitimno
- manj
- knjižnice
- rahlo
- LINK
- linux
- Seznam
- Litecoin
- nahaja
- Poglej
- mac
- Glavne
- Znamka
- zlonamerna programska oprema
- upravljanje
- upravitelj
- Vodje
- Stave
- Maj ..
- srednje
- metapodatki
- Bližnji
- Minute
- Moduli
- Moduli
- Monero
- monitor
- več
- Najbolj
- Ime
- Imena
- Naslednja
- št
- nič
- Opaziti..
- Opažam
- zdaj
- številne
- of
- Ponudbe
- Uradni
- offline
- on
- ONE
- tiste
- samo
- open source
- o odprtju
- deluje
- operacijski sistem
- operaterji
- or
- Ostalo
- drugače
- naši
- izhod
- več
- paket
- pakete
- Stran
- Geslo
- gesla
- preteklosti
- za
- vztrajnost
- kosov
- Kraj
- dajanje
- Plazma
- platon
- Platonova podatkovna inteligenca
- PlatoData
- prosim
- točke
- Popular
- potencial
- PowerShell
- predstaviti
- zasebna
- verjetno
- Postopek
- Izdelki
- Programerji
- Programiranje
- Projekt
- projekti
- protokol
- javnega
- objavljeno
- PYPL
- Python
- Oceniti
- precej
- Razlog
- zmanjša
- Preostalih
- daljinsko
- nadomesti
- Poročila
- Skladišče
- Raziskave
- povzroči
- razkrivajo
- Run
- tek
- deluje
- načrtovano
- razporejanje
- galerija
- script
- skripte
- drugi
- varnost
- glej
- videl
- pošljite
- pošiljanja
- ločena
- strežnik
- Storitev
- nastavitev
- delitev
- shouldnt
- Razstave
- Podoben
- Enostavno
- saj
- So
- socialna
- Socialni inženiring
- Software
- nekaj
- Včasih
- vir
- Izvorna koda
- specifična
- Stage
- postopka
- zagon
- ukradejo
- trgovine
- taka
- sistem
- sistemi
- miza
- Bodite
- sprejeti
- ob
- ciljanje
- Cilji
- Naloga
- tehnika
- tehnike
- začasna
- Test
- kot
- da
- O
- Vir
- njihove
- POTEM
- Tukaj.
- te
- jih
- tretja
- ta
- temeljito
- Grožnja
- 3
- skozi
- čas
- krat
- do
- transakcija
- OBRAT
- dva
- tipično
- pod
- naložili
- naprej
- us
- uporaba
- Rabljeni
- uporabnik
- uporablja
- uporabo
- navadno
- Variant
- raznolikost
- različica
- VET
- preko
- Žrtva
- žrtve
- obisk
- hodil
- denarnica
- je
- način..
- we
- web
- Spletni brskalniki
- Dobro
- so bili
- karkoli
- Kolo
- kdaj
- kadar koli
- ki
- medtem
- pogosto
- širina
- bo
- okno
- okna
- z
- brez
- deluje
- vredno
- pisni
- leto
- Vi
- zefirnet
- Zip