ESET Research telah menemukan sekelompok proyek Python berbahaya yang didistribusikan PyPI, repositori paket Python resmi. Ancaman ini menargetkan sistem Windows dan Linux dan biasanya mengirimkan pintu belakang khusus. Dalam beberapa kasus, muatan terakhir adalah varian dari yang terkenal Pencuri W4SP, atau monitor clipboard sederhana untuk mencuri mata uang kripto, atau keduanya. Pada bulan Mei 2023, kami melaporkan pada kelompok paket lain yang kami temukan di PyPI yang mengirimkan malware pencuri kata sandi dan mata uang kripto, namun kedua kelompok tersebut tampaknya merupakan kampanye yang berbeda.
Poin-poin penting dari blogpost ini:
- ESET Research menemukan 116 paket berbahaya di PyPI, gudang resmi perangkat lunak untuk bahasa pemrograman Python, yang diunggah dalam 53 proyek.
- Korban telah mengunduh paket ini lebih dari 10,000 kali.
- Sejak Mei 2023, kecepatan unduhnya kurang lebih 80 per hari.
- Malware ini memberikan pintu belakang yang mampu mengeksekusi perintah jarak jauh, eksfiltrasi, dan mengambil tangkapan layar.
- Komponen pintu belakang diimplementasikan untuk Windows, dengan Python, dan Linux, di Go.
- Dalam beberapa kasus, W4SP Stealer atau monitor clipboard yang mencuri mata uang kripto, atau keduanya, dikirimkan sebagai gantinya.
PyPI populer di kalangan pemrogram Python untuk berbagi dan mengunduh kode. Karena siapa pun dapat berkontribusi pada repositori, malware – terkadang menyamar sebagai pustaka kode yang populer dan sah – dapat muncul di sana. Kami menemukan 116 file (distribusi sumber dan roda) dari 53 proyek yang mengandung malware. Beberapa nama paket memang terlihat mirip dengan paket lain yang sah, namun kami yakin cara utama mereka diinstal oleh calon korban bukanlah melalui kesalahan ketik, namun rekayasa sosial, di mana korban berjalan sambil berlari. pip install {nama paket} untuk dapat menggunakan paket “menarik” untuk alasan apapun.
Selama setahun terakhir, para korban mengunduh file-file ini lebih dari 10,000 kali; lihat Gambar 1.
Menginfestasi PyPI
Paket PyPI dapat memiliki dua bentuk: paket sumber, yang berisi semua kode sumber proyek dan dibuat setelah instalasi, dan paket siap pakai (disebut roda), yang mungkin berisi modul terkompilasi untuk sistem operasi tertentu atau versi Python. Menariknya, dalam beberapa kasus, kode Python di distribusi sumber berbeda dengan distribusi yang dibangun. Yang pertama bersih, sedangkan yang kedua berisi kode berbahaya. Manajer paket Python, biji, lebih menyukai roda jika tersedia daripada distribusi sumber. Akibatnya, yang berbahaya akan terinstal kecuali secara eksplisit diminta sebaliknya.
Kami telah mengamati operator di balik kampanye ini menggunakan tiga teknik untuk menggabungkan kode berbahaya ke dalam paket Python.
Modul test.py berbahaya
Teknik pertama adalah dengan menempatkan modul “test” dengan kode yang sedikit dikaburkan di dalam paket. Gambar 2 menunjukkan a tes.py file dengan fungsi yang disebut menarik didefinisikan dan kemudian dipanggil. Perhatikan bahwa fungsi tersebut menangani sistem Windows dan Linux.
Modul pengujian ini diimpor di tengah kode sumber modul utama paket (__init__.py), sehingga kode berbahaya dijalankan setiap kali paket diimpor. Gambar 3 menunjukkan modul yang menyamar sebagai tangkapan layar dan mengimpor malware tes.py.
PowerShell di setup.py
Teknik kedua adalah dengan menyematkan kode PowerShell di setup.py file, yang biasanya dijalankan secara otomatis oleh manajer paket seperti biji untuk membantu menginstal proyek Python.
Gambar 4 menunjukkan skrip PowerShell yang mengunduh dan menjalankan tahap berikutnya.
Skrip PowerShell ini diunduh transfer[.]sh/eyRyPT/Updater.zip ke dalam direktori sementara sebagai update.zip. Script kemudian mendekompresi file ZIP menjadi C: ProgramData dan menghapusnya dari direktori sementara. Selanjutnya, skrip menjalankan biji program untuk menginstal dependensi. Terakhir, ia menjalankan kode Python C:ProgramDataUpdaterserver.pyw.
Teknik ini hanya bekerja pada Windows dan akan gagal untuk menyerang sistem Linux.
Dalam metadata paket dari Gambar 4, Anda mungkin telah memperhatikan bahwa pembuat paket tersebut adalah billythegoat356. Ada banyak laporan yang mengaitkan julukan ini dengan aktivitas jahat, termasuk artikel dari Filum, di mana mereka mengungkapkan potensi tautan Billy ke W4SP Stealer.
Hanya malware…
Dalam teknik ketiga, operator tidak berusaha untuk memasukkan kode yang sah ke dalam paket, sehingga hanya kode berbahaya yang ada, dalam bentuk yang sedikit dikaburkan. Gambar 5 menunjukkan dua potong kode berbahaya untuk Windows yang ditulis ke dalam file sementara dan kemudian dijalankan pythonw.exe, yang digunakan sebagai pengganti python.exe sehingga kode dijalankan tanpa membuka jendela konsol.
Tahap selanjutnya adalah paket Python, skrip, atau file biner yang diunduh dari Dropbox atau transfer.sh.
Ketekunan
Di Windows, persistensi sering kali dicapai melalui a Dikodekan VBScript (VBE), yang merupakan file VBScript yang disandikan, ditulis ke %APPDATA%/Pythonenv/pythenenv.vbe. Gambar 6 menunjukkan cmd.exe menyembunyikan direktori %APPDATA%/Pythonenvberlari pythenenv.vbe, lalu menjadwalkan file VBE untuk dijalankan setiap lima menit berdasarkan tugas MicrosoftWinRaRUtilityTaskB.
Di Linux, persistensi dicapai dengan menempatkan malware entri desktop, sobat-pengguna-berbagi.desktop, Dalam ~ / .config / autostart / direktori, seperti terlihat pada Gambar 7. File yang terletak di autostart direktori dijalankan pada setiap startup sistem. Entri desktop menggunakan nama a MATE subproyek untuk nama filenya, tapi itu hanya untuk mengurangi kecurigaan karena tidak ada hubungannya dengan lingkungan desktop.
Gambar 7 juga menunjukkan download modul dl.dropbox[.]com/s/u3yn2g7rewly4nc/proclean untuk ~/.config/.kde/.kdepath. Ini mungkin merupakan upaya untuk meniru direktori konfigurasi untuk KDE GUI plasma untuk Linux.
Peluncuran sobat-pengguna-berbagi.desktop file pada gilirannya mengeksekusi file yang diunduh .kdepath file, yang merupakan file executable Linux yang berisi komponen pintu belakang.
Muatan terakhir
Biasanya, muatan terakhir adalah pintu belakang khusus yang memungkinkan eksekusi perintah jarak jauh, eksfiltrasi file, dan terkadang menyertakan kemampuan untuk mengambil tangkapan layar. Di Windows, pintu belakang diimplementasikan dengan Python.
Gambar 8 menunjukkan pintu belakang yang membuat koneksi soket TCP blazywound.ignorelist[.]com pada port 6001. Setelah mengirimkan nama host, alamat MAC, dan nama pengguna ke server C&C, pintu belakang akan langsung menangani beberapa perintah atau menjalankan perintah lain dalam proses terpisah dan mengirimkan kembali keluaran perintah dan informasi kesalahan apa pun ke server.
Di Linux, pintu belakang diimplementasikan di Go; lihat Gambar 9.
Dalam beberapa kasus, alih-alih pintu belakang, payload adalah varian dari yang terkenal Pencuri W4SP, atau monitor clipboard sederhana yang mencuri mata uang kripto, atau keduanya. Gambar 10 menunjukkan monitor clipboard yang menargetkan cryptocurrency Bitcoin, Ethereum, Monero, dan Litecoin. Malware menggunakan yang sah penjepit pipa paket untuk memeriksa konten clipboard untuk alamat dompet. Jika ditemukan, malware akan menyalin alamat yang dikontrol penyerang ke clipboard dengan harapan korban akan menempelkan alamat ini pada transaksi mata uang kripto di masa mendatang.
Produk ESET mendeteksi paket Python berbahaya sebagai varian dari Python/Agent dan Python/TrojanDownloader, dan pintu belakang sebagai Python/Agent.AOY atau Linux/Spy.Agent.BB.
Sebagian besar paket telah dihapus oleh PyPI pada saat penelitian ini dilakukan. ESET berkomunikasi dengan PyPI untuk mengambil tindakan terhadap paket lainnya dan semua paket berbahaya yang diketahui kini offline. Daftar lengkap 116 paket dapat ditemukan di kami Repositori GitHub.
Perlu diperhatikan bahwa malware di repositori proyek PyPI bukanlah masalah keamanan pada PyPI itu sendiri. Faktanya, perangkat lunak yang menjalankan PyPI adalah baru saja diaudit oleh perusahaan eksternal yang menilai bahwa PyPl “sesuai dengan praktik terbaik yang diterima secara luas”.
Kesimpulan
PyPI terus disalahgunakan oleh penyerang dunia maya untuk menyusupi perangkat pemrogram Python. Kampanye ini menampilkan berbagai teknik yang digunakan untuk memasukkan malware ke dalam paket Python. Pengembang Python harus memeriksa secara menyeluruh kode yang mereka unduh, terutama memeriksa teknik-teknik ini, sebelum menginstalnya di sistem mereka. Selain terus menyalahgunakan W4SP Stealer sumber terbuka, operator juga menerapkan pintu belakang yang sederhana namun efektif. Kami memperkirakan penyalahgunaan PyPI akan terus berlanjut dan kami menyarankan agar berhati-hati saat memasang kode dari repositori perangkat lunak publik mana pun.
Untuk pertanyaan apa pun tentang penelitian kami yang dipublikasikan di WeLiveSecurity, silakan hubungi kami di ancamanintel@eset.com.
ESET Research menawarkan laporan intelijen APT pribadi dan umpan data. Untuk setiap pertanyaan tentang layanan ini, kunjungi Intelijen Ancaman ESET .
IoC
File
SHA-1 |
Filename |
Deteksi |
Deskripsi Produk |
439A5F553E4EE15EDCA1CFB77B96B02C77C5C388 |
cache.py |
Python/Agen.AGL |
Pengunduh pintu belakang Linux.. |
B94E493579CC1B7864C70FAFB43E15D2ED14A16B |
coloramma-0.5.4-py3-none-any.whl |
Python/Agen.AGU |
Paket dengan penginstal pintu belakang Linux. |
AE3072A72F8C54596DCBCDE9CFE74A4146A4EF52 |
coloramma-4.5-py3-none-any.zip |
Python/Agen.AOY |
Paket dengan pintu belakang Windows. |
70C271F79837B8CC42BD456A22EC51D1261ED0CA |
sampah.py |
Python/Agen.RUPS |
Penginstal persistensi Windows. |
B0C8D6BEEE80813C8181F3038E42ADACC3848E68 |
bersih |
Linux/Spy.Agent.BB |
Pintu belakang Linux. |
07204BA8D39B20F5FCDB9C0242B112FADFFA1BB4 |
provinsi.py |
Python/Agen.AGL |
Pengunduh pintu belakang Linux. |
EF59C159D3FD668C3963E5ADE3C726B8771E6F54 |
tmp |
Linux/Spy.Agent.BB |
Pintu belakang Linux. |
Untuk daftar lengkap paket berbahaya, lihat GitHub kami repositori malware-ioc.
jaringan
Nama domain |
Alamat IP |
Pertama kali melihat |
Deskripsi Produk |
blazywound.ignorelist[.]com |
204.152.203[.]78 |
2022-11-21 |
Server C&C untuk komponen pintu belakang. |
Teknik ATT&CK MITER
Tabel ini dibuat menggunakan versi 14 dari kerangka MITRE ATT&CK.
Taktik |
ID |
Nama |
Deskripsi Produk |
Akses Awal |
Kompromi Rantai Pasokan: Kompromi Ketergantungan Perangkat Lunak dan Alat Pengembangan |
Malware didistribusikan menggunakan layanan manajemen paket PyPl Python. |
|
Ketekunan |
Tugas/Pekerjaan Terjadwal: Tugas Terjadwal |
Di Windows, kegigihan dicapai dengan menggunakan tugas terjadwal. |
|
Eksekusi Autostart Boot atau Logon: Entri Autostart XDG |
Di Linux, entri autostart dibuat untuk meluncurkan pintu belakang ketika pengguna login. |
||
Penghindaran Pertahanan |
Menyamar: Cocokkan Nama atau Lokasi yang Sah |
Di Linux, file persisten memiliki nama yang mirip dengan perangkat lunak yang sah |
|
Akses Kredensial |
Kredensial dari Penyimpanan Kata Sandi: Kredensial dari Peramban Web |
W4SP mencuri kata sandi dari browser web yang diinstal. |
|
Koleksi |
Data Papan Klip |
Untuk mencuri dana selama transaksi mata uang kripto, data clipboard diganti. |
|
Komando dan Pengendalian |
Protokol Lapisan Non-Aplikasi |
Pintu belakang menggunakan protokol biner tidak terenkripsi melalui TCP. |
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- PlatoData.Jaringan Vertikal Generatif Ai. Berdayakan Diri Anda. Akses Di Sini.
- PlatoAiStream. Intelijen Web3. Pengetahuan Diperkuat. Akses Di Sini.
- PlatoESG. Karbon, teknologi bersih, energi, Lingkungan Hidup, Tenaga surya, Penanganan limbah. Akses Di Sini.
- PlatoHealth. Kecerdasan Uji Coba Biotek dan Klinis. Akses Di Sini.
- Sumber: https://www.welivesecurity.com/en/eset-research/pernicious-potpourri-python-packages-pypi/
- :memiliki
- :adalah
- :Di mana
- 000
- 1
- 10
- 116
- 14
- 152
- 2023
- 7
- 8
- 80
- 9
- a
- kemampuan
- Sanggup
- Tentang Kami
- penyalahgunaan
- diterima
- dicapai
- Tindakan
- kegiatan
- alamat
- alamat
- menasihati
- Setelah
- terhadap
- Agen
- Semua
- memungkinkan
- sudah
- juga
- antara
- an
- dan
- Lain
- Apa pun
- siapapun
- muncul
- APT
- ADALAH
- AS
- dinilai
- At
- penulis
- secara otomatis
- tersedia
- kembali
- pintu belakang
- BE
- karena
- menjadi
- di belakang
- makhluk
- Percaya
- TERBAIK
- Bitcoin
- kedua
- browser
- dibangun di
- Bundel
- tapi
- by
- bernama
- Kampanye
- Kampanye
- CAN
- mampu
- kasus
- hati-hati
- rantai
- memeriksa
- memeriksa
- membersihkan
- Kelompok
- kode
- COM
- dikomunikasikan
- dikompilasi
- komponen
- kompromi
- konfigurasi
- koneksi
- konsul
- kontak
- mengandung
- mengandung
- Konten
- terus
- terus
- terus-menerus
- menyumbang
- dibuat
- membuat
- Surat kepercayaan
- cryptocurrencies
- cryptocurrency
- adat
- data
- hari
- didefinisikan
- disampaikan
- memberikan
- ketergantungan
- dikerahkan
- Desktop
- menemukan
- pengembang
- Pengembangan
- Devices
- berbeda
- langsung
- ditemukan
- menampilkan
- didistribusikan
- distribusi
- distribusi
- do
- turun
- Download
- download
- download
- dropbox
- selama
- setiap
- Efektif
- usaha
- antara
- menanamkan
- tertanam
- Teknik
- masuk
- Lingkungan Hidup
- kesalahan
- terutama
- ethereum
- Setiap
- dieksekusi
- Laksanakan
- eksekusi
- pengelupasan kulit
- mengharapkan
- secara eksplisit
- luar
- fakta
- GAGAL
- nikmat
- Angka
- File
- File
- terakhir
- Akhirnya
- Perusahaan
- Pertama
- lima
- Untuk
- bentuk
- Bekas
- bentuk
- ditemukan
- Kerangka
- dari
- penuh
- fungsi
- dana-dana
- masa depan
- GitHub
- Go
- menangani
- Menangani
- Memiliki
- membantu
- berharap
- HTTPS
- if
- gambar
- implementasi
- diimplementasikan
- pengimporan
- impor
- in
- memasukkan
- termasuk
- Termasuk
- hina
- informasi
- Pertanyaan
- dalam
- install
- instalasi
- diinstal
- Instalasi
- sebagai gantinya
- Intelijen
- ke
- isu
- IT
- NYA
- Diri
- dikenal
- bahasa
- jalankan
- lapisan
- sah
- kurang
- perpustakaan
- enteng
- LINK
- linux
- Daftar
- Litecoin
- terletak
- melihat
- mac
- Utama
- membuat
- malware
- pengelolaan
- manajer
- Manajer
- Cocok
- Mungkin..
- medium
- Metadata
- Tengah
- menit
- Modul
- Modul
- Monero
- Memantau
- lebih
- paling
- nama
- nama
- berikutnya
- tidak
- tidak ada
- Melihat..
- mencatat
- sekarang
- banyak sekali
- of
- Penawaran
- resmi
- Pengunjung
- on
- ONE
- yang
- hanya
- open source
- pembukaan
- operasi
- sistem operasi
- operator
- or
- Lainnya
- jika tidak
- kami
- keluaran
- lebih
- paket
- paket
- halaman
- Kata Sandi
- password
- lalu
- untuk
- ketekunan
- potongan-potongan
- Tempat
- penempatan
- Plasma
- plato
- Kecerdasan Data Plato
- Data Plato
- silahkan
- poin
- Populer
- potensi
- PowerShell
- menyajikan
- swasta
- mungkin
- proses
- Produk
- Programmer
- Pemrograman
- proyek
- memprojeksikan
- protokol
- publik
- diterbitkan
- PYPL
- Ular sanca
- Penilaian
- agak
- alasan
- menurunkan
- yang tersisa
- terpencil
- diganti
- laporan
- gudang
- penelitian
- mengakibatkan
- mengungkapkan
- Run
- berjalan
- berjalan
- dijadwalkan
- penjadwalan
- screenshot
- naskah
- script
- Kedua
- keamanan
- melihat
- terlihat
- mengirim
- mengirim
- terpisah
- Server
- layanan
- penyiapan
- berbagi
- harus
- Pertunjukkan
- mirip
- Sederhana
- sejak
- So
- Sosial
- Rekayasa Sosial
- Perangkat lunak
- beberapa
- kadang-kadang
- sumber
- kode sumber
- tertentu
- Tahap
- magang
- startup
- mencuri
- toko
- seperti itu
- sistem
- sistem
- tabel
- Mengambil
- diambil
- pengambilan
- penargetan
- target
- tugas
- teknik
- teknik
- sementara
- uji
- dari
- bahwa
- Grafik
- Sumber
- mereka
- kemudian
- Sana.
- Ini
- mereka
- Ketiga
- ini
- sepenuhnya
- ancaman
- tiga
- Melalui
- waktu
- kali
- untuk
- .
- MENGHIDUPKAN
- dua
- khas
- bawah
- upload
- atas
- us
- menggunakan
- bekas
- Pengguna
- kegunaan
- menggunakan
- biasanya
- Varian
- variasi
- versi
- VET
- melalui
- Korban
- korban
- Mengunjungi
- berjalan
- dompet
- adalah
- Cara..
- we
- jaringan
- Browser web
- BAIK
- adalah
- apa pun
- Roda
- ketika
- kapan saja
- yang
- sementara
- sangat
- lebar
- akan
- jendela
- Windows
- dengan
- tanpa
- bekerja
- bernilai
- tertulis
- tahun
- Kamu
- zephyrnet.dll
- Zip