Paket-paket itu bukan sekadar umpan kosong atau paket rusak. Menurut Kaspersky, wheel tersebut memang menjalankan fitur yang dijanjikan di halaman PyPI masing-masing, tetapi tujuan sebenarnya adalah mengirimkan file berbahaya secara tersembunyi. The Hacker News juga melaporkan temuan yang sama dari Kaspersky: paket-paket itu tampak fungsional, tetapi dirancang untuk menyelundupkan ZiChatBot ke sistem Windows dan Linux.
uuid32-utilscolorinaltermncolorAtribusi ke OceanLotus perlu dibaca dengan nuansa. Tulisan Securelist menyebut sampel dikirim ke Kaspersky Threat Attribution Engine dan paket-paket tersebut “mungkin” terkait dengan malware yang dibahas dalam laporan intelijen ancaman tentang OceanLotus. Namun, indeks riset ancaman Kaspersky memakai formulasi yang lebih langsung: Kaspersky mengatribusikan aktivitas PyPI ZiChatBot ini kepada OceanLotus APT.
Ringkasan publik lain menggambarkan atribusi tersebut berada pada tingkat keyakinan sedang.
Gambaran publik yang tersedia menunjukkan rantai dropper lintas platform. Indeks riset ancaman Kaspersky menyebut paket wheel PyPI berbahaya itu menargetkan Windows dan Linux serta berisi dropper yang mengirimkan malware bernama ZiChatBot.
Satu ringkasan publik menjelaskan tahap berikutnya sebagai ekstraksi dropper DLL atau .SO dari paket wheel, pembuatan persistence lewat Windows Registry atau crontab Linux, lalu deployment ZiChatBot. Ini penting karena risiko kampanye semacam ini tidak hanya menyasar server aplikasi. Mesin kerja developer, virtual environment, runner CI, dan image container yang sempat memasang paket terdampak juga perlu diperiksa.
Kampanye ini juga mengingatkan bahwa paket yang “berfungsi” tidak otomatis aman. Dalam kasus ini, paket berbahaya dilaporkan tetap memberikan fitur yang dijanjikan di halaman PyPI, sambil menjalankan peran tersembunyi sebagai pengirim file berbahaya.
Zulip adalah aplikasi chat tim, dan API-nya secara normal dipakai untuk integrasi, bot, dan otomasi percakapan. Dalam kampanye ini, sudut yang tidak biasa adalah penyalahgunaan platform kolaborasi yang sah sebagai lapisan C2. Pelaporan atas temuan Kaspersky menyebut ZiChatBot tidak berkomunikasi dengan server C2 khusus; sebaliknya, ia memakai serangkaian API REST dari Zulip sebagai infrastruktur command-and-control.
Dokumentasi API Zulip memang mendukung operasi yang dibutuhkan dalam pola C2 berbasis chat, termasuk mengirim pesan, mengambil pesan, mengunggah file, mengedit atau menghapus pesan, membuat message narrow atau penyaringan pesan, serta bekerja dengan topik kanal. Dokumentasi bot Zulip juga menjelaskan bahwa bot dapat mencegat, melihat, dan memproses pesan yang dikirim pengguna, lalu mengirim pesan baru sebagai balasan.
Secara garis besar, instruksi operator dapat direpresentasikan sebagai pesan chat atau pesan dalam topik tertentu, sementara malware mengambil pesan yang relevan dan mengirimkan hasilnya kembali melalui layanan yang sama. Sumber publik yang tersedia di sini tidak mengungkap workspace Zulip tertentu, kredensial bot, urutan endpoint, atau daftar perintah yang dipakai ZiChatBot. Karena itu, deskripsi yang paling aman adalah: ZiChatBot menyalahgunakan fungsi API REST Zulip yang sah untuk C2, bukan bergantung pada infrastruktur C2 khusus milik penyerang.
Detail tentang Zulip bukan berarti Zulip sendiri berhasil dibobol. Laporan yang dikutip menjelaskan penyalahgunaan fungsi REST API dan pola pesan bergaya bot yang normal, bukan kompromi terhadap layanan chat tersebut.
Hal yang sama berlaku untuk PyPI. Temuan Kaspersky menjelaskan adanya paket wheel berbahaya yang diunggah ke PyPI, lalu malware tersebut dihapus dari repositori; ini bukan laporan bahwa infrastruktur PyPI diretas.
Bagi tim pertahanan, pelajarannya praktis: trafik ke layanan kolaborasi yang sah tetap bisa mencurigakan bila berasal dari host, proses, job CI, atau akun layanan yang tidak punya alasan bisnis untuk mengakses layanan itu. Daftar blokir yang hanya berfokus pada domain milik penyerang bisa luput dari pola seperti ini. Investigasi perlu melihat konteks proses dan penggunaan yang wajar, bukan hanya reputasi tujuan koneksi.
Mulai dari inventaris paket. Cari uuid32-utils, colorinal, dan termncolor di mesin developer, runner build, virtual environment, lockfile dependensi, serta image container.
Tinjau linimasa instalasi sejak Juli 2025, periode yang disebut Kaspersky sebagai awal unggahan wheel berbahaya tersebut. Jika salah satu paket itu muncul dalam log atau artefak, sebaiknya pertahankan environment untuk investigasi forensik ringan, bukan sekadar menghapus paket lalu menganggap masalah selesai.
Pada sistem Windows, cari persistence yang tidak wajar di Registry. Pada sistem Linux, periksa entri crontab yang mencurigakan. Ini sesuai dengan ringkasan publik tentang rantai infeksi kampanye tersebut.
Periksa telemetri jaringan dan proses untuk aktivitas API Zulip dari interpreter Python, proses instalasi paket, worker CI, server, atau akun layanan yang biasanya tidak memakai Zulip. Pertanyaan kuncinya bukan “apakah Zulip layanan sah?”, melainkan “apakah host dan proses ini punya alasan sah untuk memanggil API Zulip?”
Terakhir, jangan menjadikan fungsi normal paket sebagai bukti kepercayaan. Dalam kampanye ini, paket dilaporkan tetap menjalankan fitur yang diiklankan, tetapi sekaligus bertindak sebagai dropper untuk file berbahaya.
Kampanye PyPI yang dikaitkan dengan OceanLotus melibatkan paket wheel berbahaya yang diunggah mulai Juli 2025, dengan nama paket publik termasuk uuid32-utils, colorinal, dan termncolor. Paket-paket tersebut mengirimkan ZiChatBot ke sistem Windows dan Linux, sementara pilihan operasional paling khas dari ZiChatBot adalah memakai API REST Zulip untuk command-and-control, alih-alih server C2 khusus yang dijalankan penyerang.
Comments
0 comments