ESET Research on havainnut joukon haitallisia Python-projekteja, joita jaetaan PyPI, virallinen Python-pakettivarasto. Uhka kohdistuu sekä Windows- että Linux-järjestelmiin ja tarjoaa yleensä mukautetun takaoven. Joissakin tapauksissa lopullinen hyötykuorma on muunnelma pahamaineisesta W4SP Stealer, tai yksinkertainen leikepöytämonitori kryptovaluutan varastamiseen tai molempiin. Toukokuussa 2023 me raportoitu toisessa PyPI:stä löydetyssä pakettiklusterissa, joka toimittaa salasanoja ja kryptovaluuttoja varastavia haittaohjelmia, mutta nämä kaksi klusteria näyttävät olevan eri kampanjoita.
Tämän blogikirjoituksen pääkohdat:
- ESET Research löysi 116 haittapakettia PyPI:stä, Python-ohjelmointikielen virallisesta ohjelmistovarastosta, jotka on ladattu 53 projektiin.
- Uhrit ovat ladanneet nämä paketit yli 10,000 XNUMX kertaa.
- Toukokuusta 2023 lähtien latausnopeus on ollut enemmän tai vähemmän 80 päivässä.
- Haittaohjelma tarjoaa takaoven, joka pystyy suorittamaan etäkomentoja, suodattamaan ja ottamaan kuvakaappauksia.
- Takaovikomponentti on toteutettu sekä Windowsissa Pythonissa että Linuxissa Gossa.
- Joissakin tapauksissa sen sijaan toimitetaan W4SP Stealer tai leikepöytämonitori, joka varastaa kryptovaluuttoja, tai molemmat.
PyPI on suosittu Python-ohjelmoijien keskuudessa koodin jakamiseen ja lataamiseen. Koska kuka tahansa voi osallistua arkistoon, haittaohjelmat – joskus esiintyen laillisina, suosittuina koodikirjastoina – voivat esiintyä siellä. Löysimme 116 tiedostoa (lähdejakeluja ja -pyörät) 53 projektista, jotka sisältävät haittaohjelmia. Jotkin pakettien nimet näyttävät samanlaisilta kuin muut, lailliset paketit, mutta uskomme, että potentiaaliset uhrit asentavat ne pääasiallisesti kirjoitusvirheiden avulla, vaan sosiaalisen manipuloinnin avulla, jossa uhrit kävelevät juoksemalla. pip asennus {paketin nimi} voidakseen käyttää "kiinnostavaa" pakettia mistä tahansa syystä.
Kuluneen vuoden aikana uhrit latasivat nämä tiedostot yli 10,000 1 kertaa; katso kuva XNUMX.
PyPI-tartunnan saaminen
PyPI-paketit voivat olla kahdessa muodossa: lähdepaketit, jotka sisältävät kaiken projektin lähdekoodin ja jotka rakennetaan asennuksen yhteydessä, ja valmiiksi rakennetut paketit (ns. pyörät), joka voi sisältää käännettyjä moduuleja tietylle käyttöjärjestelmälle tai Python-versiolle. Mielenkiintoista on, että joissakin tapauksissa lähdejakelun Python-koodi eroaa rakennetusta jakelusta. Ensimmäinen on puhdas, kun taas jälkimmäinen sisältää haitallisen koodin. Pythonin paketinhallinta, pIP, suosii pyörää, kun se on saatavilla, lähdejakelun sijaan. Tämän seurauksena haitallinen asennetaan, ellei nimenomaisesti toisin pyydetä.
Olemme havainneet tämän kampanjan takana olevia operaattoreita käyttämällä kolmea tekniikkaa haitallisen koodin niputtamiseksi Python-paketteihin.
Haitallinen test.py-moduuli
Ensimmäinen tekniikka on sijoittaa "testi"-moduuli, jossa on kevyesti hämärtynyt koodi pakkauksen sisään. Kuva 2 esittää a test.py tiedosto, jonka funktio on nimeltään graby määritellään ja sitten kutsutaan. Huomaa, että toiminto käsittelee sekä Windows- että Linux-järjestelmiä.
Tämä testimoduuli tuodaan keskelle paketin päämoduulin lähdekoodia (__init__.py), jotta haitallinen koodi suoritetaan aina, kun paketti tuodaan. Kuva 3 näyttää moduulin, joka naamioituu kuvakaappaajaksi ja tuo haitallisen sisällön test.py.
PowerShell osoitteessa setup.py
Toinen tekniikka on upottaa PowerShell-koodi setup.py tiedosto, jonka paketinhallintaohjelmat, kuten pIP auttaa Python-projektien asentamisessa.
Kuva 4 näyttää PowerShell-komentosarjan, joka lataa ja suorittaa seuraavan vaiheen.
Tämä PowerShell-skripti latautuu siirtää[.]sh/eyRyPT/Updater.zip väliaikaiseen hakemistoon nimellä update.zip. Tämän jälkeen komentosarja purkaa ZIP-tiedoston C: ProgramData ja poistaa sen väliaikaisesta hakemistosta. Seuraavaksi skripti suorittaa pIP ohjelma riippuvuuksien asentamiseen. Lopuksi se ajaa Python-koodin sisään C:ProgramDataUpdaterserver.pyw.
Tämä tekniikka toimii vain Windowsissa, eikä se saa tartunnan Linux-järjestelmiin.
Olet ehkä huomannut kuvan 4 paketin metatiedoissa, että paketin kirjoittaja on Billythegoat356. On ollut lukuisia raportteja, joissa tämä lempinimi on liitetty haitallisiin toimiin, mukaan lukien an artikkeli Phylumista, jossa he paljastavat Billyn mahdollisen linkin W4SP Stealeriin.
Pelkkää haittaohjelmaa…
Kolmannessa tekniikassa operaattorit eivät yritä sisällyttää pakettiin laillista koodia, joten vain haitallinen koodi on läsnä, kevyesti hämärässä muodossa. Kuvassa 5 näkyy kaksi Windowsille tarkoitettua haitallista koodia, jotka kirjoitetaan väliaikaisiin tiedostoihin ja suoritetaan sitten niiden kanssa pythonw.exe, jota käytetään sen sijaan python.exe niin, että koodi suoritetaan avaamatta konsoliikkunaa.
Seuraavat vaiheet ovat Python-paketit, komentosarjat tai binaaritiedostot, jotka ladataan joko Dropboxista tai transfer.sh.
Sitkeys
Windowsissa pysyvyys saavutetaan suurimman osan ajasta a VBScript-koodattu (VBE) -tiedosto, joka on koodattu VBScript-tiedosto, johon on kirjoitettu %APPDATA%/Pythonenv/pythenenv.vbe. Kuva 6 esittää cmd.exe piilottaa hakemiston %APPDATA%/Pythonenv, juoksemassa pythenenv.vbe, ja ajoittaa sitten VBE-tiedoston suoritettavaksi viiden minuutin välein tehtävän alla MicrosoftWinRaRUtilityTaskB.
Linuxissa pysyvyys saavutetaan asettamalla haitallinen työpöydän syöttö, mate-user-share.desktop, Ja ~ / .config / autostart / hakemistosta, kuten kuvasta 7 näkyy. Tiedostot, jotka sijaitsevat osoitteessa automaattinen käynnistys hakemisto suoritetaan jokaisen järjestelmän käynnistyksen yhteydessä. Työpöytämerkintä käyttää nimeä a MATE osaprojekti sen tiedostonimelle, mutta se on vain vähentää epäilyksiä, koska sillä ei ole mitään tekemistä työpöytäympäristön kanssa.
Kuvassa 7 näkyy myös moduulilataukset dl.dropbox[.]com/s/u3yn2g7rewly4nc/proclean että ~/.config/.kde/.kdepath. Tämä on luultavasti yritys esiintyä kokoonpanohakemistona KDE Plasma GUI Linuxille.
Käynnistäminen mate-user-share.desktop tiedosto puolestaan suorittaa ladatun .kdepath tiedosto, joka on Linuxin suoritettava tiedosto, joka sisältää takaovikomponentin.
Lopullinen hyötykuorma
Yleensä lopullinen hyötykuorma on mukautettu takaovi, joka mahdollistaa komentojen etäsuorittamisen, tiedostojen suodattamisen ja joskus sisältää mahdollisuuden ottaa kuvakaappauksia. Windowsissa takaovi on toteutettu Pythonissa.
Kuvassa 8 on esitetty takaovi, joka luo TCP-socket-yhteyden blazywound.ignorelist[.]com portissa 6001. Lähetettyään isäntänimen, MAC-osoitteen ja käyttäjänimen C&C-palvelimelle, takaovi käsittelee suoraan joitain komentoja tai suorittaa minkä tahansa muun komennon erillisessä prosessissa ja lähettää takaisin komennon ulostulon ja mahdolliset virhetiedot palvelimelle.
Linuxissa takaovi toteutetaan Go; katso kuva 9.
Joissakin tapauksissa hyötykuorma on takaoven sijaan muunnelma pahamaineisesta W4SP Stealertai yksinkertainen leikepöydän näyttö, joka varastaa kryptovaluuttoja, tai molemmat. Kuva 10 näyttää leikepöydän monitorin, joka on kohdistettu Bitcoin-, Ethereum-, Monero- ja Litecoin-kryptovaluuttoihin. Haittaohjelma käyttää laillista pyperclip paketti, jolla voit tarkistaa leikepöydän sisällön lompakon osoitteet. Jos haittaohjelma löydetään, se kopioi hyökkääjän hallitseman osoitteen leikepöydälle siinä toivossa, että uhri liittää tämän osoitteen sen sijaan myöhempään kryptovaluuttatapahtumaan.
ESET-tuotteet havaitsevat haitalliset Python-paketit Python/Agent- ja Python/TrojanDownloader-versioina ja takaoven Python/Agent.AOY tai Linux/Spy.Agent.BB.
PyPI poisti suurimman osan paketeista jo tämän tutkimuksen aikana. ESET otti yhteyttä PyPI:hen ryhtyäkseen toimiin jäljellä olevia vastaan, ja kaikki tunnetut haittapaketit ovat nyt offline-tilassa. Täydellinen luettelo 116 paketista löytyy sivuiltamme GitHub-arkisto.
On syytä huomata, että PyPI-projektivaraston haittaohjelmat eivät ole itse PyPI:n tietoturvaongelma. Itse asiassa PyPI:tä käyttävä ohjelmisto oli äskettäin auditoitu ulkopuolinen yritys, joka arvioi, että PyPl "noudatti laajalti hyväksyttyjä parhaita käytäntöjä".
Yhteenveto
Kyberhyökkääjät käyttävät edelleen PyPI:tä väärin Python-ohjelmoijien laitteiden vaarantamiseksi. Tämä kampanja näyttää erilaisia tekniikoita, joita käytetään haittaohjelmien sisällyttämiseen Python-paketteihin. Python-kehittäjien tulee tarkastaa lataamansa koodi perusteellisesti ja erityisesti tarkistaa nämä tekniikat, ennen asentamalla sen järjestelmiinsä. Sen lisäksi, että operaattorit ovat jatkaneet avoimen lähdekoodin W4SP Stealerin väärinkäyttöä, he ovat myös ottaneet käyttöön yksinkertaisen, mutta tehokkaan takaoven. Odotamme tällaisen PyPI:n väärinkäytön jatkuvan ja suosittelemme varovaisuutta asennettaessa koodia mistä tahansa julkisesta ohjelmistovarastosta.
Jos sinulla on kysyttävää WeLiveSecurityssä julkaistusta tutkimuksestamme, ota meihin yhteyttä osoitteessa uhkaintel@eset.com.
ESET Research tarjoaa yksityisiä APT-tietoraportteja ja tietosyötteitä. Jos sinulla on kysyttävää tästä palvelusta, käy osoitteessa ESET Threat Intelligence sivu.
IoC: t
Asiakirjat
SHA-1 |
Tiedostonimi |
Detection |
Kuvaus |
439A5F553E4EE15EDCA1CFB77B96B02C77C5C388 |
cache.py |
Python/Agent.AGL |
Linuxin takaoven latausohjelma.. |
B94E493579CC1B7864C70FAFB43E15D2ED14A16B |
coloramma-0.5.4-py3-none-any.whl |
Python/Agent.AGU |
Paketti Linuxin takaoven asennusohjelmalla. |
AE3072A72F8C54596DCBCDE9CFE74A4146A4EF52 |
coloramma-4.5-py3-none-any.zip |
Python/Agent.AOY |
Paketti Windowsin takaovella. |
70C271F79837B8CC42BD456A22EC51D1261ED0CA |
junk.py |
Python/Agent.AGM |
Windowsin pysyvyyden asennusohjelma. |
B0C8D6BEEE80813C8181F3038E42ADACC3848E68 |
julistaa |
Linux/Spy.Agent.BB |
Linuxin takaovi. |
07204BA8D39B20F5FCDB9C0242B112FADFFA1BB4 |
prov.py |
Python/Agent.AGL |
Linuxin takaoven latausohjelma. |
EF59C159D3FD668C3963E5ADE3C726B8771E6F54 |
tmp |
Linux/Spy.Agent.BB |
Linuxin takaovi. |
Täydellinen luettelo haitallisista paketeista on GitHubissa haittaohjelma-ioc arkisto.
verkko
Verkkotunnus |
IP-osoite |
Ensin nähty |
Kuvaus |
blazywound.ignorelist[.]com |
204.152.203[.]78 |
2022-11-21 |
C&C-palvelin takaovikomponentille. |
MITER ATT & CK -tekniikat
Tämä pöytä on rakennettu käyttämällä version 14 MITER ATT & CK -kehyksen puitteissa.
Taktiikka |
ID |
Nimi |
Kuvaus |
Ensimmäinen käyttöoikeus |
Toimitusketjun kompromissi: kompromissi ohjelmistoriippuvuudet ja kehitystyökalut |
Haittaohjelmia levitetään Pythonin PyPl-paketinhallintapalvelulla. |
|
Sitkeys |
Aikataulutettu tehtävä/työ: Aikataulutettu tehtävä |
Windowsissa pysyvyys saavutetaan ajoitetulla tehtävällä. |
|
Käynnistyksen tai kirjautumisen automaattinen käynnistys: XDG Autostart Entries |
Linuxissa luodaan automaattisen käynnistyksen merkintä, joka käynnistää takaoven, kun käyttäjä kirjautuu sisään. |
||
Puolustuksen kiertäminen |
Naamiointi: vastaa oikeutettua nimeä tai sijaintia |
Linuxissa pysyvillä tiedostoilla on samanlaiset nimet kuin laillisilla ohjelmistoilla |
|
Kirjautumistietojen käyttö |
Tunnustiedot salasanakaupoista: Kirjautumistiedot verkkoselaimista |
W4SP varastaa salasanat asennetuista verkkoselaimista. |
|
Kokoelma |
Leikepöydän tiedot |
Varastaaksesi varoja kryptovaluuttatapahtuman aikana, leikepöydän tiedot korvataan. |
|
Command and Control |
Non-Application Layer Protocol |
Takaovi käyttää salaamatonta binaariprotokollaa TCP:n yli. |
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- PlatoData.Network Vertical Generatiivinen Ai. Vahvista itseäsi. Pääsy tästä.
- PlatoAiStream. Web3 Intelligence. Tietoa laajennettu. Pääsy tästä.
- PlatoESG. hiili, CleanTech, energia, ympäristö, Aurinko, Jätehuolto. Pääsy tästä.
- PlatonHealth. Biotekniikan ja kliinisten kokeiden älykkyys. Pääsy tästä.
- Lähde: https://www.welivesecurity.com/en/eset-research/pernicious-potpourri-python-packages-pypi/
- :on
- :On
- :missä
- 000
- 1
- 10
- 116
- 14
- 152
- 2023
- 7
- 8
- 80
- 9
- a
- kyky
- pystyy
- Meistä
- hyväksikäyttö
- hyväksytty
- saavutettu
- Toiminta
- toiminta
- osoite
- osoitteet
- neuvoa
- Jälkeen
- vastaan
- Agentti
- Kaikki
- mahdollistaa
- jo
- Myös
- keskuudessa
- an
- ja
- Toinen
- Kaikki
- joku
- näyttää
- APT
- OVAT
- AS
- arvioitu
- At
- kirjoittaja
- automaattisesti
- saatavissa
- takaisin
- takaoven
- BE
- koska
- ollut
- takana
- ovat
- Uskoa
- PARAS
- Bitcoin
- sekä
- selaimet
- rakennettu
- Niputtaa
- mutta
- by
- nimeltään
- Kampanja
- Kampanjat
- CAN
- kykenee
- tapauksissa
- varovaisuus
- ketju
- tarkastaa
- tarkkailun
- puhdas
- Cluster
- koodi
- KOM
- tiedoksi
- koottu
- komponentti
- kompromissi
- Konfigurointi
- liitäntä
- Console
- ottaa yhteyttä
- sisältää
- sisältää
- pitoisuus
- jatkaa
- jatkuu
- jatkuu
- edistävät
- luotu
- Luominen
- Valtakirja
- cryptocurrencies
- kryptovaluutta
- asiakassuhde
- tiedot
- päivä
- määritelty
- toimitettu
- Antaa
- riippuvuudet
- käyttöön
- pöytä-
- havaita
- kehittäjille
- Kehitys
- Laitteet
- eri
- suoraan
- löysi
- näytöt
- jaettu
- jakelu
- Jakaumat
- do
- alas
- download
- lataaminen
- lataukset
- dropbox
- aikana
- kukin
- Tehokas
- vaivaa
- myöskään
- Upottaa
- upotettu
- Tekniikka
- merkintä
- ympäristö
- virhe
- erityisesti
- ethereum
- Joka
- teloitettiin
- toteuttaja
- teloitus
- suodatus
- odottaa
- nimenomaisesti
- ulkoinen
- tosiasia
- FAIL
- suosii
- Kuva
- filee
- Asiakirjat
- lopullinen
- Vihdoin
- Yritys
- Etunimi
- viisi
- varten
- muoto
- Entinen
- lomakkeet
- löytyi
- Puitteet
- alkaen
- koko
- toiminto
- varat
- tulevaisuutta
- GitHub
- Go
- kahva
- Vetimet
- Olla
- auttaa
- toivoa
- HTTPS
- if
- kuva
- täytäntöönpano
- täytäntöön
- tuovan
- tuonti
- in
- sisältää
- sisältää
- Mukaan lukien
- pahamaineinen
- tiedot
- Kyselyt
- sisällä
- asentaa
- asennus
- asennetaan
- asentaminen
- sen sijaan
- Älykkyys
- tulee
- kysymys
- IT
- SEN
- itse
- tunnettu
- Kieli
- käynnistää
- kerros
- laillinen
- vähemmän
- kirjastot
- kevyesti
- LINK
- linux
- Lista
- Litecoin
- sijaitsevat
- katso
- mac
- tärkein
- tehdä
- haittaohjelmat
- johto
- johtaja
- Päättäjät
- ottelu
- Saattaa..
- keskikokoinen
- Metadata
- Keskimmäinen
- minuuttia
- Moduulit
- Moduulit
- Monero
- monitori
- lisää
- eniten
- nimi
- nimet
- seuraava
- Nro
- ei mitään
- Ilmoitus..
- huomata
- nyt
- useat
- of
- Tarjoukset
- virallinen
- offline
- on
- ONE
- yhdet
- vain
- avoimen lähdekoodin
- avaaminen
- toiminta
- käyttöjärjestelmän
- operaattorit
- or
- Muut
- muuten
- meidän
- ulostulo
- yli
- paketti
- paketit
- sivulla
- Salasana
- salasanat
- Ohi
- varten
- sitkeys
- kappaletta
- Paikka
- saattamisesta
- Plasma
- Platon
- Platonin tietotieto
- PlatonData
- Ole hyvä
- pistettä
- Suosittu
- mahdollinen
- PowerShell
- esittää
- yksityinen
- todennäköisesti
- prosessi
- Tuotteemme
- Ohjelmoijat
- Ohjelmointi
- projekti
- hankkeet
- protokolla
- julkinen
- julkaistu
- PYPL
- Python
- hinta
- pikemminkin
- reason
- vähentää
- jäljellä oleva
- kaukosäädin
- korvataan
- Raportit
- säilytyspaikka
- tutkimus
- johtua
- paljastaa
- ajaa
- juoksu
- toimii
- suunniteltu
- aikataulutus
- kuvakaappauksia
- käsikirjoitus
- skriptejä
- Toinen
- turvallisuus
- nähdä
- nähneet
- lähettää
- lähettäminen
- erillinen
- palvelin
- palvelu
- setup
- jakaminen
- shouldnt
- Näytä
- samankaltainen
- Yksinkertainen
- koska
- So
- sosiaalinen
- Sosiaalinen insinööri
- Tuotteemme
- jonkin verran
- joskus
- lähde
- lähdekoodi
- erityinen
- Vaihe
- vaiheissa
- käynnistyksen
- varastaa
- varastot
- niin
- järjestelmä
- järjestelmät
- taulukko
- ottaa
- otettava
- ottaen
- kohdistaminen
- tavoitteet
- Tehtävä
- tekniikka
- tekniikat
- tilapäinen
- testi
- kuin
- että
- -
- Lähde
- heidän
- sitten
- Siellä.
- Nämä
- ne
- kolmas
- tätä
- perin pohjin
- uhkaus
- kolmella
- Kautta
- aika
- kertaa
- että
- kauppa
- VUORO
- kaksi
- tyypillisesti
- varten
- ladattu
- päälle
- us
- käyttää
- käytetty
- käyttäjä
- käyttötarkoituksiin
- käyttämällä
- yleensä
- variantti
- lajike
- versio
- VET
- kautta
- Uhri
- uhrit
- Vierailla
- käveli
- Lompakko
- oli
- Tapa..
- we
- verkko
- Web-selaimet
- HYVIN
- olivat
- mikä tahansa
- Pyörä
- kun
- aina kun
- joka
- vaikka
- laajalti
- leveys
- tulee
- ikkuna
- ikkunat
- with
- ilman
- toimii
- arvoinen
- kirjallinen
- vuosi
- Voit
- zephyrnet
- Postinumero