Inilah cara mengatasi misteri Anda. Tujuannya lebih untuk mengajari pengguna "cara memancing" dengan menggunakan utilitas standar Ubuntu untuk menggali rincian setiap proses pada sistem mereka.
Langkah # 1 (untuk rasa ingin tahu kebanyakan): mengidentifikasi program mana yang memberi Anda kesalahan ini:
# -- You may need to search under more dirs, YMMV
# List files (incl. binaries) which contain the warning string
$ sudo grep -ral 'malicious client may be eavesdropping' /usr /bin /lib
/usr/lib/openssh/gnome-ssh-askpass
Dalam env saya satu-satunya program yang berisi string peringatan ini dalam binernya adalah gnome-ssh-askpass
. Saya dapat mencari jika ada bug yang diajukan pada program khusus ini, dan bahkan mengunduh sumbernya apt-get source ssh-askpass-gnome
(perhatikan bahwa nama paket berbeda dari nama program) untuk pemeriksaan lebih lanjut.
Namun, saya menduga penyebab utama tidak menjadi masalah di gnome-ssh-askpass
. Karena gnome-ssh-askpass
meminta frasa sandi Anda, pengembangnya hanya memilih untuk berhati-hati ketika gagal mengambil keyboard, menganggap skenario terburuk, dan membuat pesan tersebut terdengar uber-paranoid. Tetapi perhatikan bahwa mengetik frasa sandi atau kata sandi Anda ke dalam kotak dialog situs web acak secara kebetulan mungkin bukan ide yang baik, jadi dalam hal ini gnome-ssh-askpass
pengembang telah melakukan panggilan yang benar.
Baru-baru ini semakin banyak situs web yang mulai terlibat dalam praktik menampilkan sembulan, memudar segala hal lain di luar dialog sembulan, dan secara agresif meraih fokus. Ini mungkin penyebab utama gnome-ssh-askpass
gagal mengambil keyboard. Jika browser Anda terbuka di situs tersebut, menutup browser atau menavigasi dari situs web yang agresif dapat membantu. Jika ini penyebabnya, Anda mungkin tertarik pada pengaturan desktop yang mencegah proses individual dari meraih fokus (desktop penuh) lengkap. Dalam KDE misalnya, pengaturan ini dapat ditemukan di bawah ( Pengaturan Sistem -> Perilaku-jendela -> Fokus -> Fokus mencuri pencegahan ). Jika Anda merasa sangat paranoid, saya sarankan untuk mengatur High
atau Extreme
. Tentu saja, ini juga dapat mencegahgnome-ssh-askpass
sendiri dari menyambar keyboard, atau lebih tepatnya: meraih X
fokus.
Langkah # 2: Identifikasi proses mencurigakan:
Mengetahui bahwa di Unix, perangkat muncul seperti file uder /dev
, pertanyaan berikutnya adalah perangkat apa yang mewakili "keyboard" dalam hierarki sistem file. Kita dapat menggunakan lsof
utilitas (daftar file yang terbuka) untuk ini.
# look for processes holding devices open, filter out some common ones:
$ sudo lsof | grep /dev | grep -vE '/(null|urandom|zero)'
Perhatikan bahwa sebagian besar proses memegang perangkat terbuka di desktop khas sedang menahan /dev/pts/<N>
( pseudo tty ) terbuka. Ini adalah "perangkat" yang menarik.
Beberapa latar belakang tentang apa yang terjadi di sini:
Pada desktop grafis khas Linux, proses tidak berbicara langsung dengan keyboard. Sebaliknya X
program (Xorg) mengontrol semua acara keyboard melalui perangkat /dev/input/event<N>
. X
menggunakan event handler (evdev) yang antara lain menangani acara keyboard. Anda juga dapat memverifikasi ini dengan melihat X
log: di /var/log/Xorg.0.log
mana keyboard
disebutkan.
Acara keyboard diteruskan dari X
pengendali acara ke proses yang memiliki fokus penunjuk tetikus kapan saja melalui input-standar proses yang terbuka /dev/pts/<N>
. Tegasnya: suatu proses tidak benar-benar "ambil keyboard", keyboard dipegang oleh X
, proses hanya memiliki (atau meraih) "fokus" atau perhatian X
sehingga X
dapat meneruskan acara keyboard ke sana melalui deskriptor file stdin terbuka di /dev/pts/<N>
.
Langkah # 3: proses mana yang memiliki fokus Xorg pada waktu tertentu?
Bagaimana mengetahui proses mana yang memiliki fokus pada waktu tertentu? Inilah pertanyaan askubuntu yang menjawab ini:
cari tahu aplikasi di bawah mouse
Ringkasan jawabannya adalah menjalankan skrip seperti yang berikut di terminal saat menavigasi berkeliling dengan mouse:
#!/bin/bash
# Print the process tree of the window currently in focus.
# prereqs:
# sudo apt-get install xdotool psmisc
while true; do
pstree -spaul $(xdotool getwindowpid "$(xdotool getwindowfocus)")
sleep 2
done
Langkah # 4: gali lebih dalam ke dalam aktivitas proses
Setelah Anda mengidentifikasi proses yang dicurigai, langkah terakhir adalah menyelidiki proses individu ini. Untuk itu Anda dapat beralih ke sistem /proc
file Linux ( man 5 proc
).
Hampir semua yang ingin Anda ketahui tentang suatu proses tersedia di bawah /proc
. Bahkan, program-program seperti lsof
(daftar file terbuka), debugger yang memeriksa keadaan proses, dan utilitas proses daftar suka ps
atau top
, semua bergantung pada /proc
yang diisi oleh kernel, untuk data.
Menggunakan proc
Anda dapat menemukan di mana program proses yang dapat dijalankan pada disk (mis. Program apa pun di luar direktori sistem standar, terutama jika ia mencoba bersembunyi di bawah jenis nama "jangan perhatikan saya" , mungkin dicurigai) dan menggunakan debugger atau pelacak panggilan sistem Anda dapat memeriksa apa yang sebenarnya mereka lakukan pada tingkat panggilan sistem (bahkan jika Anda tidak memiliki kode sumbernya).
Langkah # 2 dan # 3 akan memberi Anda semua ID proses PID
yang berpotensi membaca papan ketik Anda. Untuk masing-masing PID ini (mari kita tunjukkan masing-masing sebagai $pid
) Anda dapat:
Petakan $ pid ke baris perintah lengkapnya:
cat /proc/$pid/cmdline
Map $ pid ke disk yang dapat dieksekusi:
ls -l /proc/$pid/exe
Map $ pid ke direktori kerjanya saat ini:
ls -l /proc/$pid/cwd
Petakan $ pid ke lingkungan aslinya
cat /proc/$pid/environ | tr '\000' '\012'
Lacak aktivitas panggilan sistem $ pid (dan anak-anaknya) secara langsung:
strace -f -p $pid
(Masih ada lagi: lihat man 5 proc
)
Jika Anda melihat proses asing yang bereaksi terhadap setiap penekanan tombol dengan menyimpannya ke dalam file (via write
) atau mengirimkannya melalui jaringan sendto
, Anda mungkin menemukan sniffer keyboard.
Anda juga dapat memeriksa proses mana yang memiliki titik akhir jaringan (tcp + udp) terbuka:
# See 'man netstat' for details on all options used below
$ sudo netstat -tunapee
Intinya:
Penyebab kesalahan yang paling mungkin bukan malware, tetapi banyak proses yang mencoba untuk mendapatkan kontrol keyboard secara bersamaan. Salah satunya adalah gnome-ssh-askpass
(yang mencetak kesalahan). Yang lain mungkin browser terbuka di situs dengan kotak dialog memperoleh fokus yang agresif.
Bahkan jika Anda memiliki beberapa malware yang terinstal, kabar baiknya adalah karena Anda menggunakan Linux, semua proses bersifat transparan untuk Anda teliti dan periksa. Akan sangat sulit bagi malware untuk benar-benar bersembunyi dari Anda, atau untuk mencegah Anda dengan mudah menemukan itu menggunakan teknik di atas, mematikan prosesnya, dan menghapus semua file-nya.