Pengaturan untuk melindungi terminal gnome dari pencatatan kunci

15

Sepertinya mudah untuk mencatat semua proses dari pengguna yang sama. Keylogger dasar adalah 'xinput'.

xinput test-xi2

Perintah menghasilkan log dari semua penekanan tombol. Sayangnya, ini termasuk kata sandi di terminal gnome. Googling menyarankan agar mengambil keyboard dapat mencegah jendela lain menangkap pukulan tombol.

Apakah ada cara untuk mencegah XI2 masuk ke gnome-terminal? Atau ada terminal X yang memiliki fitur ini?

yanychar
sumber
Apakah ini solusi?
Radu Rădeanu

Jawaban:

13

Itu tidak mungkin karena penekanan tombol apa pun yang diteruskan ke server X, akan tersedia untuk xinput / program sewenang-wenang. (Sebenarnya, itu bagian dari desain). Display server baru seperti Wayland dan Mir yang memperbaiki masalah keamanan seperti di X. Satu-satunya solusi nyata akan menggunakan Wayland atau Mir bukan X. Ini Rincian posting blog masalah ini.

Ramchandra Apte
sumber
Jadi input ke gksu untuk kata sandi juga masuk ke xinput?
yanychar
1
@yanychar yup, sebenarnya saya mengetahui tentang metode kunci logging ini melalui posting blog ini: theinvisiblethings.blogspot.in/2011/04/… (bahkan saya terkejut ketika pertama kali saya membaca posting blog)
Ramchandra Apte
2
X11 sebenarnya memiliki mode tidak tepercaya yang dapat Anda gunakan untuk mencegah program mengakses ekstensi "buruk" - x.org/wiki/Development/Documentation/Security
Michał Zieliński
-1

Tidak juga. Bahkan jika Anda entah bagaimana berhasil mengambil keyboard dalam X (saya tidak tahu apakah ini bahkan mungkin, saya ragu itu), utilitas keylogger berjalan sebagai root akan selalu memiliki akses ke keyboard.

Januari
sumber
4
Perintah di atas mengambil keyboard dalam X tanpa hak akses root. Jadi sepele untuk menginstal keylogger ke desktop ubuntu. Pertanyaannya adalah bagaimana menghindari ini.
yanychar
-3

Seperti yang dikatakan orang lain di sini, tidak mungkin hanya melindungi program seperti terminal gnome atau terminal lain dari pencatatan kunci, hanya jika Anda membatasi pengguna standar untuk menjalankan logger kunci apa pun atau jika Anda menghentikan / menghentikan sementara proses logger kunci.

Selanjutnya saya akan menunjukkan kepada Anda bagaimana Anda bisa melakukan ini dalam kasus xinputperintah, tetapi metode yang sama dapat digunakan untuk logger kunci lainnya. Jika pencatat kunci menggunakan xinputperintah, Anda tidak perlu menerapkan metode ini selama Anda menerapkannya xinput.

1. Batasi pengguna standar untuk menggunakan xinputperintah

Anda dapat membatasi pengguna standar untuk menggunakan xinputperintah menggunakan perintah berikut:

sudo chmod go-x /usr/bin/xinput

2. Batasi pengguna standar untuk menggunakan xinputperintah dengan test-xi2argumen

Anda dapat membatasi pengguna standar untuk menggunakan xinputperintah dengan test-xi2argumen dengan menulis pembungkus untuk perintah ini. Untuk melakukan ini, masuk terminal dan ikuti instruksi di bawah ini:

  • Dapatkan hak istimewa root:

    sudo -i
    
  • Pindahkan xinputfile di direktori lain yang tidak ada dalam PATH pengguna mana pun (misalnya /opt):

    mv /usr/bin/xinput /new/path/to/xinput
    
  • Buat pembungkus Anda untuk xinputperintah di /usr/bin:

    gedit /usr/bin/xinput
    

    Tambahkan skrip berikut di dalam:

    #!/bin/bash
    if [ "$@" != "${@/test-xi2/}" -a "$(whoami)" != "root" ]; then
        echo "`basename $0` $@: Permission denied"
    else
        /new/path/to/xinput $@
    fi
    

    Simpan file dan tutup.

  • Jadikan bungkus baru dapat dieksekusi:

    chmod +x /usr/bin/xinput
    

Sementara metode pertama adalah keselamatan, menggunakan metode kedua, pengguna masih dapat mengelak dengan memanggil aslinya xinputsecara langsung jika dia tahu lokasi barunya.

3. Hentikan / jeda xinputproses apa pun

Anda dapat menghentikan atau menghentikan xinputproses apa pun sebelum memasukkan kata sandi atau hal lain yang tidak ingin Anda login. Untuk melakukan ini, tambahkan fungsi bash berikut di akhir ~/.bashrcfile Anda :

processof () {
    xinput_pids=" $(pidof $1) "
    if [ "$xinput_pids" = "  " ]; then
        echo "Nothing to stop/pause/continue. $1: no such process!"
        return
    fi
    for pid in $xinput_pids; do
        case $2 in
        "stop") 
            kill $pid
            echo "$1: stopped"
            ;;
        "pause")
            kill -stop $pid
            echo "$1: paused"   
            ;;
        "continue")
            kill -cont $pid
            echo "$1: continue"
            ;;
        *)
            echo "$1 is runnig"
            ;;
        esac
    done
}

Sekarang, setelah Anda membuka kembali terminal Anda, kapan pun Anda mau, menggunakan fungsi ini Anda dapat:

  • hentikan / bunuh semua xinputproses:

    processof xinput stop
    
  • jeda semua xinputproses:

    processof xinput pause
    
  • melanjutkan semua xinputproses:

    processof xinput continue
    

Bahkan, dengan fungsi ini Anda dapat menghentikan / menghentikan sementara proses yang Anda inginkan sebelum melakukan sesuatu (seperti memasukkan kata sandi):

processof [process_name] [stop|pause|continue]

Jika Anda tidak tahu cara mendeteksi cara mendeteksi keylogger aktif di sistem Anda, lihat:

Metode-metode ini mungkin bukan solusi terbaik, tapi saya harap memberi Anda gambaran tentang apa yang dapat Anda lakukan ...

Radu Rădeanu
sumber
5
xinput hanyalah contoh dari keylogger. Pertanyaannya adalah tentang melindungi input dari setiap keylogger yang mungkin.
yanychar
5
Setiap program dapat terhubung ke server X melalui soket dan keylog, bahkan tidak diperlukan bahwa pencatat kunci menggunakan program eksternal.
Ramchandra Apte
3
@ RaduRădeanu solusi Anda tidak efektif dan tidak berguna. xinputbahkan tidak SUID (-rwxr-xr-x 1 root root 48504 15 Agustus 2012 / usr / bin / xinput)
Ramchandra Apte
1
@ RaduRădeanu Karena Anda tidak perlu xinput untuk keylog. (tidak perlu perintah eksternal atau program jahat tidak perlu SUID) solusi Anda hanya akan memungkinkan seseorang untuk mengontrol pelaksanaan xinput
Ramchandra Apte
3
Contoh paling mendasar untuk membuktikannya tidak efektif: Salin versi stok (ubuntu) xinput dari USB stick, unduh dari web atau kirim surel ke diri Anda sendiri dan jalankan di folder rumah Anda. Efek yang sama seperti menggunakan / usr / bin / xinput yang tidak dibatasi.
allo