LinkPro Linux Rootkit
Kompromi baru-baru ini terhadap persekitaran Perkhidmatan Web Amazon (AWS) mendedahkan rootkit GNU/Linux yang tidak didokumenkan sebelum ini, dijejaki sebagai LinkPro. Pintu belakang ini terkenal kerana penggunaan dwi modul eBPF: satu set untuk menyembunyikan artifak, dan satu set lagi bertindak sebagai pencetus senyap — 'ketukan' yang membangkitkan fungsi perintah jauh hanya selepas paket TCP yang dibuat khas dilihat. Rantaian serangan dan mekanisme rootkit menggambarkan pengendali canggih yang menggabungkan penyalahgunaan kontena, penyembunyian peringkat kernel dan pengaktifan rangkaian yang fleksibel untuk menggagalkan pengesanan dan korelasi forensik.
Isi kandungan
Vektor Jangkitan Dan Penyebaran Awal
Pencerobohan bermula dengan eksploitasi contoh Jenkins terdedah yang terdedah kepada CVE‑2024‑23897 (CVSS 9.8). Dari pijakan itu, penyerang menolak imej Docker yang berniat jahat (kvlnt/vv, sejak dialih keluar daripada Docker Hub) ke dalam berbilang kelompok Kubernetes. Imej itu menggunakan pangkalan Kali Linux dan membawa folder aplikasi kecil yang bertujuan untuk mewujudkan kegigihan, akses jauh dan muat turun pintu belakang berperingkat.
Di Dalam Imej Docker Berniat jahat
Folder aplikasi imej mengandungi tiga fail utama dengan peranan yang berbeza:
start.sh — skrip shell yang melancarkan perkhidmatan SSH dan melaksanakan dua komponen lain.
pautan — program sumber terbuka (vnt) disusun/dibungkus untuk bertindak sebagai klien VPN/proksi, menyambung keluar ke vnt.wherewego[.]top:29872. Ini membolehkan penyerang mencapai hos yang terjejas dari mana-mana sahaja dan berputar ke sasaran lain melaluinya.
app — pemuat turun berasaskan Rust (dirujuk sebagai vGet) yang mengambil muatan vShell yang disulitkan daripada baldi S3, kemudian mewujudkan pautan WebSocket ke pelayan arahan dan kawalannya (C2) di 56.155.98[.]37.
Muatan Tambahan Dihantar Kepada Nod Kubernetes
Di samping imej berniat jahat itu, pengendali juga menjatuhkan dua komponen lain ke nod: penitis yang memasang pintu belakang vShell lain dan LinkPro, rootkit tulisan Golang. LinkPro direka untuk berjalan dalam satu daripada dua mod — pasif (terbalik) atau aktif (maju) — bergantung pada konfigurasinya. Dalam mod pasif, ia menunggu untuk diaktifkan oleh paket rangkaian khas; dalam mod aktif, ia memulakan hubungan dengan C2 itu sendiri. Mod ke hadapan menyokong lima protokol pengangkutan (HTTP, WebSocket, UDP, TCP, DNS), manakala mod songsang mengehadkan komunikasi kepada HTTP.
Bagaimana LinkPro Berkekalan
Pelaksanaan keseluruhan perisian hasad dan tingkah laku kegigihan mengikut urutan yang jelas:
- Pasang modul Sembunyikan eBPF. Modul ini termasuk program Tracepoint dan Kretprobe eBPF yang digunakan untuk menyembunyikan proses dan aktiviti rangkaian LinkPro.
- Jika pemasangan modul Hide eBPF gagal — atau jika ia telah dilumpuhkan — pasang pustaka kongsi di /etc/libld.so dan tambahkan laluan itu ke /etc/ld.so.preload sebagai mekanisme penyembunyian sandaran.
- Untuk operasi terbalik (pasif), pasang modul Knock eBPF. Knock mengandungi program XDP dan program TC, jadi saluran C2 hanya menjadi aktif selepas menerima 'paket ajaib' tertentu.
- Wujudkan kegigihan dengan mencipta perkhidmatan systemd.
- Laksanakan arahan yang diterima daripada C2.
- Semasa penutupan atau apabila diberi isyarat (SIGHUP, SIGINT, SIGTERM), nyahpasang modul eBPF dan alih keluar/pulihkan pengubahsuaian pramuat /etc/libld.so supaya sistem kembali kepada keadaan sebelumnya.
Paket Ajaib Dan Mekanisme Pengaktifan Ketukan
Pengaktifan pasif LinkPro bergantung pada paket TCP yang tepat: mana-mana paket TCP yang saiz tetingkapnya sama dengan 54321 dianggap sebagai 'paket ajaib.' Apabila Knock mengesan paket itu, ia menyimpan IP sumber dan menandainya dengan tamat tempoh satu jam. Paket TCP berikutnya daripada sumber itu dipantau dan, apabila sesuai, Knock menulis semula pengepala supaya trafik pengendali dialihkan ke port pendengaran LinkPro (2333). Paket keluar dilaraskan untuk membentangkan port asal kembali ke rangkaian (port sumber ditulis semula kepada 2233). Niatnya adalah mudah tetapi berkesan: benarkan penyerang mencapai LinkPro melalui mana-mana port yang dibenarkan oleh tembok api bahagian hadapan, sambil menyukarkan untuk mengaitkan log dinding api luaran dengan aktiviti rangkaian dalaman hos.
Bagaimana LinkPro Menyembunyikan Dirinya
LinkPro menggunakan strategi penyembunyian dua peringkat:
Penyembunyian kernel/eBPF : Modul Hide eBPF memasang program Tracepoint dan Kretprobe yang memintas panggilan sistem seperti getdents (untuk menyembunyikan fail/direktori) dan sys_bpf (untuk menyembunyikan program BPFnya sendiri). Pendekatan ini memerlukan kernel yang dibina dengan CONFIG_BPF_KPROBE_OVERRIDE didayakan.
Ruang pengguna LD_PRELOAD sandaran : Jika keupayaan kernel tidak ada, LinkPro menulis perpustakaan kongsi (libld.so) dan meletakkan laluannya dalam /etc/ld.so.preload. Oleh kerana /etc/ld.so.preload menyebabkan pustaka yang ditentukan dimuatkan ke dalam setiap proses yang dipautkan secara dinamik (yang menggunakan /lib/ld-linux.so dan glibc), libld.so yang diimplan mengaitkan fungsi libc lebih awal (sebelum tingkah laku glibc sendiri) dan mengubah pulangan daripada panggilan libc untuk menyembunyikan artifak yang sebaliknya akan mendedahkan kehadirannya.
Keupayaan Rootkit Dan Set Perintah
LinkPro menyokong kedua-dua tindakan jauh interaktif dan automatik. Ciri yang dilaksanakan termasuk:
- Memulakan /bin/bash pseudo-terminal dan menjalankan sesi shell interaktif.
- Melaksanakan arahan shell sewenang-wenangnya.
- Menghitung fail dan direktori dan melaksanakan operasi fail.
- Memuat turun dan menulis fail ke cakera.
- Menubuhkan terowong proksi SOCKS5 untuk proksi berputar dan hidup di luar darat.
Sokongan Protokol Rangkaian Dan Gelagat C2
Dalam mod aktif (ke hadapan) LinkPro adalah fleksibel: ia boleh berkomunikasi menggunakan pengangkutan HTTP, WebSocket, UDP, TCP atau DNS. Dalam mod pasif (terbalik) komunikasinya terhad kepada HTTP tetapi mendapat manfaat daripada senyap kerana ia hanya mendengar selepas paket sihir Knock membuka tetingkap arahan sementara satu jam.
Kelakuan Pembersihan Dan Nyahpasang
Jika proses menerima isyarat penamatan, LinkPro bertujuan untuk mengalih keluar jejak: ia menyahpasang modul eBPF yang dipasang dan memadam atau memulihkan /etc/libld, mengumpulkannya kepada keadaan sebelumnya supaya sistem kelihatan tidak berubah. Rutin pembersihan yang disengajakan ini menunjukkan pengendali bimbang tentang pengelakan dan meminimumkan jejak kaki forensik jangka panjang.
Konteks Operasi Dan Atribusi
Kempen ini menggunakan eksploitasi Jenkins yang tinggi keterukannya, imej kontena berniat jahat, berbilang varian pintu belakang dan siluman peringkat kernel — gabungan yang menunjuk kepada pengendali yang bermotivasi dan berkebolehan. Tiada atribusi muktamad telah didedahkan kepada umum; walau bagaimanapun, set alat dan penggunaan jelas kompromi untuk proksi dan capaian jauh yang berterusan amat mencadangkan aktiviti bermotivasi kewangan (mengundur, proksi untuk pencerobohan tambahan atau penjualan semula akses).
Kebergantungan Kernel Dan Gelagat Saling Belakang
Oleh kerana LinkPro bergantung pada ciri override BPF kprobe untuk pemintasan inti yang tersembunyi, ia hanya menggunakan teknik penyembunyian peringkat kernel apabila kernel hos mendedahkan CONFIG_BPF_KPROBE_OVERRIDE. Apabila keupayaan kernel itu tiada, LinkPro sengaja kembali kepada kaedah perpustakaan kongsi LD_PRELOAD untuk menyembunyikan dirinya dalam ruang pengguna, memastikan penyembunyian merentasi pelbagai persekitaran.
Nota Penutup
LinkPro menunjukkan cara pencerobohan moden boleh menggabungkan kompromi kontena, pemuat berperingkat, instrumentasi kernel (eBPF) dan helah rangkaian yang bijak (pengaktifan paket ajaib dan penulisan semula port) untuk mengekalkan stealth dan fleksibiliti. Pengesanan dan pemulihan memerlukan pemeriksaan yang teliti untuk program eBPF yang tidak dibenarkan, entri yang tidak dijangka dalam /etc/ld.so.preload, perkhidmatan sistem yang luar biasa dan sambungan rangkaian ke infrastruktur yang ditunjukkan (penunjuk forensik termasuk IP 56.155.98[.]37, port 29872, 223333, imej yang dialih keluar, dan nama Docker 2233 kvlnt/vv).