Saya sering mendengar orang mengutip sudo
sebagai salah satu hambatan utama malware menginfeksi komputer Linux.
Argumen yang paling umum sepertinya sejalan: Hak akses root diperlukan untuk mengubah konfigurasi sistem, dan kata sandi diperlukan untuk mendapatkan hak akses root, sehingga malware tidak dapat mengubah konfigurasi sistem tanpa meminta kata sandi.
Tetapi bagi saya tampaknya secara default pada sebagian besar sistem, begitu malware telah menginfeksi akun admin, eskalasi hak istimewa itu sepele - malware hanya harus menunggu pengguna untuk menjalankannya sudo
.
Metode apa yang ada untuk malware untuk mendapatkan hak akses root ketika pengguna berjalan sudo
, dan bagaimana kita bisa melindunginya?
Sunting: Saya secara khusus tertarik untuk melindungi terhadap akun admin yang disusupi; artinya, sebuah akun yang memiliki hak root penuh sudo
(misalnya akun pengguna pada sistem desktop yang khas).
startx
berfungsi dengan baik sebagai pengguna normal. Sebenarnya, saya menjalankan X sebagai pengguna normal saat ini.Jawaban:
Setelah sepotong malware memperoleh akses ke akun pengguna, ia dapat:
1. Buat alias bash (di shell saat ini, dan di
~/.bashrc
) ke perintah yang memalsukan[sudo] password for $USER:
prompt, dan mencuri kata sandi pengguna.2. Demikian pula, dapat menempatkan eksekusi bernama
sudo
di~/.bin
, dan memodifikasiPATH
variabel untuk mencapai efek yang sama:PATH="$HOME/.bin:$PATH"
3. Menangkap penekanan tombol melalui server X, perhatikan kata
sudo
, lalu coba teks di antara dua Enterpenekanan tombol berikutnya sebagai kata sandi.4. Hal serupa dapat dilakukan di lingkungan apa pun (konsol, Wayland , X) menggunakan mis
$LD_PRELOAD
.5. Jika malware menginfeksi shell yang menggunakan
sudo
, dansudo
cache kredensial, malware tersebut dapat terus memeriksa apakah mungkin untuk melakukannyasudo
tanpa kata sandi:Pencegahan:
1 & 2. Gunakan
\/bin/sudo
. The\
mengabaikan alias, dan/bin/…
abaikan$PATH
. Atau, tambahkan alias seperti:,ssudo="\/bin/sudo"
dan selalu gunakanssudo
sebagai gantisudo
. Sepertinya tidak mungkin virus akan cukup pintar untuk memetakan ulang alias ini.3. Hindari mengetik kata sandi Anda saat menggunakan X11. Sebagai gantinya, gunakan konsol virtual, atau Weston .
5. Set
timestamp_timeout=0
in/etc/sudoers
.Satu-satunya cara untuk benar-benar menghilangkan kemungkinan
sudo
kata sandi dihirup, adalah dengan menghindarinya sama sekali. Sebagai gantinya, masuk sebagai root ke konsol virtual.Menurut Alexander Peslyak : "satu-satunya penggunaan aman untuk su [dan sudo] adalah beralih dari akun yang lebih istimewa ke yang kurang istimewa ..."
Sebagai tambahan, sudo memang memiliki beberapa tindakan pencegahan:
sudo
membaca daritty
alih-alihstdin
, jadialias sudo='tee -a /tmp/sudo-password | sudo'
rusaksudo
(tetapi tidak menangkap kata sandi).sumber
sudo
mengonfigurasi, tetapi bagaimanapun, malware sekarang memiliki kata sandi yang diperlukansudo
, jadi jika pengguna memiliki akses root, begitu juga malware.Tidak ada perlindungan nyata.
Akses yang dilindungi kata sandi ke sudo mengingatkan kembali ke era sebelum lingkungan shell yang kompleks dengan perintah yang dijalankan oleh shims. Setelah kata sandi dikirimkan, ada jendela peluang di mana shim dapat menjalankan perintah melalui sudo, tanpa pemberitahuan apa pun, dan dengan kontrol sistem penuh.
Jika saya berniat untuk mengakses, saya akan membuat shim berguna untuk bash dan zsh dan fish, dll. Saya akan memonitor perintah yang dieksekusi. Segera setelah sudo kembali dengan status nol, saya akan mulai mengeluarkan "sudo chmod + s / bin / sh" atau nastiness lainnya.
Saat sudo diberikan kata sandi yang memuaskan, dan Anda memiliki shell yang menjalankan perintah untuk mendapatkan prompt, Anda berpotensi dalam masalah. Tidak ada perlindungan, selain optimisme.
Jawaban lain berfokus pada perlindungan kata sandi. Sebagai agresor, saya tidak akan khawatir tentang itu. Saya akan fokus pada durasi setelah kata sandi diberikan, ketika kata sandi tidak diperlukan. Itu waktu yang paling berisiko, ketika penyerang perlu melakukan paling tidak untuk kompromi sistem sepenuhnya.
Melindungi dari itu? Anda harus melindungi file RC Anda. Periksa shims atau perintah lain yang digunakan dalam perintah baris perintah. Cari co-proses yang terhubung ke shell dan alat yang digunakan untuk menjaga lingkungan shell. Pertahanan utama akan menjadi alat intrusi tuan rumah, tapi itu setelah fakta. Mencegah serangan? Hanya menggunakan kerang sederhana tanpa konfigurasi otomatis yang rumit dan konfirmasi aktif - itulah lingkungan tempat sudo dikembangkan.
Saya biasa bermain game dengan pengembang lain (1980-an) di mana kami akan mencoba menulis hal-hal yang akan mendapatkan terminal yang digunakan pengembang lain, untuk memasukkan perintah - ini pada dasarnya masalah yang sama. Dan kami telah membuatnya lebih mudah untuk menyematkan alat yang akan melakukan penyisipan perintah tanpa jejak yang terlihat. :)
sumber
Tidak yakin tentang apa metode untuk pengguna yang tidak sah untuk hak gain root, tapi aku tahu sesuatu yang dapat Anda lakukan untuk membuat
sudo
sebuah sedikit kurang berbahaya , jika Anda ingin mengatakan bahwa.sudo
memungkinkan Anda untuk mengonfigurasi izin granular, untuk menentukan grup pengguna dengan hak khusus, dan perintah khusus yang dapat dijalankan pengguna tertentu.SUDO - PENGENDALIAN GRANULAR
Keraskan
sudo
kebijakan Anda sebanyak Anda tidak mempercayai pengguna Anda :)sumber
sudo
. Secara khusus, saya berpikir tentang sistem desktop normal.Jika Anda tertarik pada sistem yang Anda yakini dapat dikompromikan, jalankan "Rootkit" dan gunakan "Tripwire" untuk memeriksa integritas sistem file.
Juga akan menyarankan Anda untuk memperkeras hak istimewa sudo, seperti Anda tidak perlu semua pengguna untuk mengakses semua perintah root daripada memberikan akses ke perintah tertentu melalui SUDO.
sumber
Pertama-tama lihat
/etc/sudoers
file.Sintaks akan menjadi
user MACHINE=COMMANDS
format.Misalnya pengguna root akan memiliki
root ALL=(ALL) ALL
Ini berarti bahwa pengguna root dapat menjalankan perintah (semua) di mana saja.Jika entri Anda juga memiliki
ALL=(ALL)
maka Anda hampir sama dengan pengguna root. Jika ini bukan masalahnya dan Anda hanya memiliki hak istimewa terbatas, maka penyerang / malware hanya dapat melakukan sebanyak yang dapat dilakukan oleh hak sudo Anda.Kiat yang dapat membantu Anda:
/etc/sudoers
berkas.visudo
perintah untuk mengedit dan memodifikasi hak istimewa file sudoers Anda.Referensi: Halaman manual Linux sudoers dan sudo man sudoers
sumber