TL; DR
Sebuah paket PyPI bernama gcli-control mengirimkan alat akses jarak jauh Windows yang lengkap: pencatatan penekanan tombol, perekaman webcam dan mikrofon, pemantauan clipboard, akses kredensial browser, kontrol layar, persistensi, peningkatan hak akses, dan yang diiklankan sendiri sebagai "140+ perintah." Mereka tidak menyembunyikan apa adanya: ringkasan PyPI paket itu sendiri menggambarkannya sebagai "Alat akses jarak jauh melalui npoint.io".
Detail yang patut diperhatikan adalah frasa itu. "melalui npoint.io." Alih-alih terhubung ke server khusus, implan tersebut menggunakan... npoint[.]io (layanan gratis dan sah untuk hosting dokumen JSON kecil) sebagai relay perintah dan kontrolnya. Operator menulis perintah ke dalam bin JSON; implant melakukan polling bin tersebut, mengeksekusi, dan menulis kembali hasilnya. Tidak ada domain milik penyerang yang perlu diblokir, tidak ada IP baru yang perlu ditandai: lalu lintas menuju layanan yang digunakan pengembang setiap hari.
Enam versi diterbitkan dalam waktu sekitar tiga belas setengah jam, masing-masing lebih mumpuni dari sebelumnya. Setiap versi tersebut diberi skor musik. ml_predicted_safe Sebelum ditinjau secara manual, keluarga data tersebut diklasifikasikan ulang sebagai berbahaya oleh pengklasifikasi otomatis.
Anatomi serangan
gcli-control menginstal paket impor gcli, sebuah basis kode Python yang terdiri dari 35 modul. Tidak ada instalasi saat waktu instalasi. hooks — tidak ada yang berjalan selama pemasangan pipKemampuan tersebut terdapat di dalam modul itu sendiri, diaktifkan setelah alat dijalankan, dan tata letak modulnya seperti lembar spesifikasi produk:
| Area kemampuan | Modul |
|---|---|
| Pengawasan tuan rumah | keylog, webcam, audio, clipboard, desktop, monitoring |
| Akses kredensial & data | browser, forensics, fileops, transfer, users |
| Pijakan & eskalasi | persistence, elevator, registry, security |
| Pengintaian host & jaringan | system, processes, network_config, wifi, bluetooth, netutils |
| Komando & kontrol | client, host, session, protocol, npoint, crypto, encrypt |
Saluran perintah adalah bagian yang menarik. Sebagian besar perangkat akses jarak jauh mencapai server yang dikendalikan oleh operator — sebuah IP, domain, penyedia hosting yang dapat dilaporkan dan dinonaktifkan. gcli-control malah memperlakukan Layanan JSON-bin gratis sebagai tempat penyimpanan rahasia.. itu npoint Modul ini membaca dan menulis dokumen JSON kecil pada npoint[.]io melalui HTTPS biasa; kripto/mengenkripsi Modul membungkus muatan yang dipertukarkan sehingga isi bin bukan berupa perintah teks biasa. Efeknya adalah relay terenkripsi yang dimediasi:
- Operator tersebut memasukkan instruksi (terenkripsi) ke dalam bin JSON.
- Implan tersebut, yang berjalan di host korban, melakukan polling pada bin tersebut, mendekripsi, menjalankan salah satu penangan perintahnya, dan menulis kembali hasilnya (yang telah dienkripsi).
- Bagi seorang pemantau jaringan, korban hanya sedang berbicara dengan npoint[.]io — sebuah layanan yang memiliki alasan sah untuk muncul dalam lalu lintas pengembang.
Tidak ada unduhan tahap kedua dan tidak ada loader yang disamarkan di sini: kemampuan ini dikirimkan secara utuh, dalam Python yang mudah dibaca, dan satu-satunya "penyembunyian" adalah pilihan relay dan enkripsi muatan yang diteruskan.
Alasan mengapa penyimpanan data rahasia di JSON-bin menarik secara operasional perlu dijelaskan, karena hal ini menjelaskan mengapa kita memperkirakan pola ini akan terulang kembali:
- Tidak ada titik akhir yang dimiliki operator. Tidak ada domain C2 yang perlu didaftarkan, tidak ada VPS yang perlu disewa, dan tidak ada yang dapat disita oleh pihak pembela atau registrar. Penghapusan paket tidak menyentuh saluran tersebut; penghapusan saluran artinya meminta perangkat lunak sebagai layanan (SaaS) serbaguna untuk mengawasi satu dokumen di antara jutaan dokumen lainnya.
- Pencucian reputasi. HTTPS keluar ke layanan pengembang ternama tidak menimbulkan penalti reputasi seperti yang akan terjadi pada domain baru atau IP mentah. Banyak pengaturan penyaringan keluar (egress filtering) mengizinkannya secara implisit.
- Ketidak sinkronan dan penyangkalan. Model polling — implan mengambil dokumen secara berkala daripada mempertahankan soket terbuka — menghasilkan lalu lintas yang tampak seperti polling API periodik, bukan sesi interaktif. Mengenkripsi isi dokumen berarti bahkan analis yang menemukan tempat sampah tersebut hanya melihat teks terenkripsi, bukan daftar perintah.
- Rotasi sepeleMemindahkan ke bin yang berbeda, atau layanan catatan/tempel yang berbeda sama sekali, hanya memerlukan perubahan konfigurasi satu baris untuk operator. Daftar blokir apa pun yang dikaitkan dengan relay tertentu akan kedaluwarsa begitu dikirim.
Kompromi yang diterima operator adalah throughput dan latensi: relay dead-drop lebih lambat dan memiliki bandwidth lebih rendah daripada koneksi langsung. Untuk perangkat pengawasan dan kontrol yang sebagian besar mengeluarkan perintah singkat dan mengumpulkan hasil dari waktu ke waktu, kompromi tersebut mudah dilakukan.
Perusahaan
Kasus ini berkembang dengan cepat. Cap waktu pembuatan tiket untuk versi yang ditandai menempatkan seluruh alur pengamatan dalam waktu sekitar tiga belas setengah jam, dan jumlah bukti pemindai sendiri bertambah seiring dengan kode tersebut — dari beberapa situs yang ditandai di versi pertama menjadi empat belas di versi terbaru.
| Versi | Pertama kali terlihat (UTC) | Note |
|---|---|---|
0.1.0 | 2026-07-21 12:59 | Unggahan awal; permukaan yang ditandai minimal. |
0.5.0 | 2026-07-21 18:01 | Kemampuan berkembang |
0.2.0 | 2026-07-21 18:03 | (penomoran versi tidak monoton sesuai dengan urutan unggahan) |
0.6.0 | 2026-07-22 00:44 | Set modul yang lebih luas |
0.7.0 | 2026-07-22 01:58 | Perlengkapan yang hampir lengkap |
0.7.1 | 2026-07-22 02:28 | Terbaru; 35 modul, kemampuan penuh |
Nomor versi tidak dipublikasikan dalam urutan yang ketat, tetapi arahnya jelas: versi awal yang kecil, kemudian iterasi cepat menuju versi 0.7.1 yang lengkap. Ini adalah bentuk proyek yang sedang dalam pengembangan aktif yang didorong ke registri publik seiring pertumbuhannya, bukan rilis sekali jadi.
Indikator Kompromi
Semua indikator di bawah ini telah dikonfirmasi terhadap isi paket pada disk dan pemindaian indikator deterministik versi 0.7.1; tidak ada yang bersifat spekulatif.
| Tipe | Indikator |
|---|---|
| Paket (PyPI) | gcli-control, versi 0.1.0, 0.2.0, 0.5.0, 0.6.0, 0.7.0, 0.7.1 |
| Impor paket | gcli |
| Relai C2 | npoint[.]io (JSON-bin dead-drop; payload terenkripsi) |
| Repositori yang dinyatakan | github[.]com/gcli-control/gcli |
| Sidik jari perilaku | Modul pengawasan yang ditempatkan berdampingan: keylog, webcam, audio, clipboard, browser, ditambah dengan persistensi, elevator, dan lapisan perintah klien/host/protokol dalam satu paket |
| Install hooks | Tidak ada: kemampuan ini berjalan saat alat dijalankan, bukan selama instalasi. |
Catatan pembela: Sinyal terkuat dan tahan lama bukanlah domain (host relai berputar dengan mudah) tetapi bentuk: sebuah paket tunggal yang menggabungkan tiga atau lebih primitif pengawasan host yang berbeda ke Mengarahkan perulangan perintah/respons melalui layanan hosting konten publik. Memblokir npoint[.]io Menerapkan sistem secara langsung tidak praktis untuk sebagian besar toko; memberikan peringatan pada proses yang tidak terduga yang sekaligus menangkap perangkat input dan berkomunikasi dengan layanan JSON-bin jauh lebih andal.
Perilaku yang diamati & pembingkaian
Ada dua hal yang membuat sampel ini tidak biasa, dan keduanya merupakan fakta yang dapat diamati, bukan kesimpulan tentang motif.
Ia mempromosikan dirinya sendiri. Ringkasan paket yang didistribusikan di PyPI menjabarkan kemampuannya dalam bahasa yang mudah dipahami — akses jarak jauh, kontrol desktop, manajemen pengguna, webcam, audio, keylogger, persistensi, data browser, WiFi, registri, “140+ perintah.” Tidak ada upaya untuk menyamarkan kode tersebut sebagai alat bantu pembuatan, pembungkus CLI, atau utilitas agen AI, yang merupakan penyamaran yang lebih umum kita lihat di registri publik. Apakah keterbukaan itu mencerminkan alat tim merah yang diterbitkan tanpa kontrol akses atau sesuatu yang lain adalah pertanyaan yang tidak dapat dijawab hanya oleh isi paket; yang pasti adalah bahwa perangkat lunak akses jarak jauh dan pengawasan serbaguna yang berfungsi dapat diinstal oleh siapa pun yang memiliki biji.
Hal itu bertumpu pada kepercayaan terhadap layanan yang baik. Menggunakan npoint[.]io Karena relay adalah teknik yang menentukan. Ini adalah contoh dari pola yang lebih luas — mengarahkan C2 melalui SaaS yang sah (situs tempel, bin JSON, web obrolan).hooks(dokumen cloud) sehingga lalu lintas berbahaya menyatu dengan aktivitas pengembang normal dan tidak ada titik akhir milik operator yang dapat disita. Muatan pada relay dienkripsi, sehingga isi bin tidak akan terbaca sebagai perintah bagi pengamat biasa.
Sinyal yang diberikan penerbit sangat lemah dan umum. Paket tersebut menyatakan sebuah Pengarang dari “kontributor gcli” dan lisensi MIT, dan mengarahkan halaman beranda dan bidang repositorinya ke github[.]com/gcli-control/gcliTidak satu pun dari itu merupakan verifikasi: string penulis adalah teks bebas, header lisensi MIT tidak memerlukan biaya, dan URL repositori dalam metadata paket adalah klaim, bukan bukti asal usul. Polanya — nama baru, penulis kolektif generik, dan organisasi/repositori yang merujuk diri sendiri yang dibuat di sekitar paket — adalah gambaran sebuah proyek ketika proyek tersebut dibuat khusus untuk membawa kode tersebut, bukan alat yang sudah mapan yang kebetulan memiliki fitur kendali jarak jauh. Kami mencatat ini sebagai pengamatan; hal ini konsisten dengan, tetapi tidak dengan sendirinya membuktikan, distribusi yang dibuat untuk tujuan tertentu.
Kami mendeskripsikan penyebarannya sebagai tindakan jahat berdasarkan kemampuan dan cara penyebarannya: sebuah perangkat lunak akses jarak jauh dan pengawasan yang lengkap dan dapat dijalankan, didistribusikan melalui indeks paket publik dengan perantara tersembunyi. Kami tidak menyebutkan target atau motifnya.
Dampak, tren, dan apa yang dapat dilakukan para pemain bertahan.
Titik buta untuk triase yang berorientasi pada penyamaran. Banyak kunci penyortiran paket otomatis pada menyamarkan sinyal-sinyal malware registri tipikal — gumpalan yang dikaburkan, saat instalasi hooks, kalimat singkat untuk mengumpulkan kredensial. Sebuah paket yang sederhana terang-terangan seekor TIKUSDengan kode yang bersih dan mudah dibaca serta tanpa kait instalasi, kelas ini tidak menunjukkan tanda-tanda tersebut dan dapat lolos dari heuristik yang mengharapkan penyembunyian. Sinyal yang secara andal menangkap kelas ini bersifat struktural, bukan berbasis penyamaran: sensus kemampuan (berapa banyak primitif pengawasan host yang berbeda yang ada dalam satu paket) dan analisis bentuk C2 (loop perintah/respons yang dialihkan melalui layanan hosting konten tujuan umum). Pemeriksaan tersebut akan aktif terlepas dari seberapa jujur atau tidaknya kelas ini. dikaburkan kemasannya adalah.
Tren SaaS sebagai C2. Menyalahgunakan layanan hosting yang sah sebagai tempat penyimpanan rahasia bukanlah hal baru, tetapi cara ini terus berhasil karena biaya pertahanan untuk memblokir layanan tersebut tinggi dan biaya ofensif untuk beralih layanan hampir nol. Kita dapat mengharapkan lebih banyak hal seperti ini. Pertahanan jaringan yang ditujukan untuk domain buruk tertentu akan segera usang; aturan perilaku ("proses ini membaca clipboard dan webcam lalu berkomunikasi dengan API hosting catatan") tidak.
Sketsa deteksi konkret. Aturan yang berlaku tidak menyebutkan npoint[.]io sama sekali tidak. Ini menggabungkan dua pengamatan yang secara individual umum tetapi secara bersamaan jarang terjadi pada pengembang atau host CI normal:
beri peringatan ketika satu proses, dalam satu sesi, keduanya:
(A) mengakses primitif pengawasan host — perangkat input (keyboard/mouse hook), kamera, mikrofon, tangkapan layar, loop baca clipboard, atau penyimpanan kredensial browser ("Login Data" / "Negara Bagian Lokal" / DPAPI); DAN
(B) membuat permintaan keluar ke layanan hosting konten publik / paste / JSON-bin / chat-webhook lalu mengajukan permintaan untuk ditinjau, terlepas dari layanan spesifik dalam (B).
Tidak ada satu pun bagian yang mencurigakan jika berdiri sendiri: banyak alat yang sah mengambil tangkapan layar, dan banyak yang mengirimkan JSON ke API hosting. Gabungan di dalam satu proses berumur pendek adalah sinyalnya, dan sinyal tersebut tetap ada meskipun terjadi rotasi relay.
Langkah-langkah praktis untuk tim:
- Perlakukan instalasi paket publik pada host pengembang dan CI sebagai batasan eksekusi, bukan kemudahan — RAT pada agen build adalah RAT yang membawa rahasia Anda.
- Lebih baik menggunakan mirror internal yang diizinkan; sebuah paket yang secara harfiah dinamai untuk kendali jarak jauh dan menggambarkan keylogger seharusnya tidak pernah terdeteksi pada indeks perusahaan.
- Peringatan pada kombinasi — perangkat input atau tangkapan layar ditambah lalu lintas keluar ke layanan konten/tempel/JSON-bin — daripada pada satu primitif tunggal, yang memiliki kegunaan yang tidak berbahaya jika berdiri sendiri.
- Jangan mengandalkan skor "aman" otomatis sebagai keputusan akhir untuk paket dengan kemampuan akses host yang luas; arahkan paket tersebut untuk ditinjau oleh manusia.
Keluarga paket tersebut telah diklasifikasikan sebagai berbahaya dan dirujuk untuk penghapusan dari registri. Karena C2 berbasis relay tidak meninggalkan host milik operator untuk dijadikan sasaran sinkhole, nilai pertahanan yang tahan lama terletak pada sidik jari perilaku di atas, bukan pada entri daftar blokir tunggal mana pun.





