GNOME terminalini tuş kaydından koruma ayarı


15

Aynı kullanıcının tüm işlemlerinin tuş vuruşlarını kaydetmenin kolay olduğu anlaşılıyor. Temel bir keylogger 'xinput'tur.

xinput test-xi2

Komut, tüm tuşlara basmanın günlüğünü oluşturur. Ne yazık ki, bu gnome terminalindeki parolaları içerir. Google, klavyenin yakalamanın diğer pencerelerin tuş vuruşlarını yakalamasını engelleyebileceğini önerdi.

GNOME terminalinde XI2 kaydını önlemenin bir yolu var mı? Yoksa bu özelliğe sahip bir X terminali var mı?


bu çözüm?
Radu Rădeanu

Yanıtlar:


13

X sunucusuna iletilen herhangi bir tuş vuruşu mümkün değildir , xinput / herhangi bir keyfi program için kullanılabilir olacaktır. (Aslında, tasarımın bir parçası). Wayland ve Mir gibi yeni ekran sunucuları bu tür güvenlik sorunlarını X'te düzeltiyor. Tek gerçek çözüm X yerine Wayland veya Mir kullanmak olacaktır. Bu blog yazısı bu sorunu ayrıntılarıyla anlatıyor.


Yani şifre için gksu'ya giriş de xinput'a mı gidiyor?
yanychar

1
@yanychar yup, aslında bu blog yazısı aracılığıyla bu anahtar kayıt yöntemini öğrendim : theinvisiblethings.blogspot.in/2011/04/… (hatta blog yazısını ilk kez okuduğumda şaşırdım)
Ramchandra Apte

2
X11 aslında programların "kötü" uzantılara erişmesini önlemek için kullanabileceğiniz güvenilir olmayan bir moda sahiptir - x.org/wiki/Development/Documentation/Security
Michał Zieliński

-1

Pek sayılmaz. Bir şekilde X içinde klavyeyi yakalamayı başarsanız bile (bunun mümkün olup olmadığını bilmiyorum, bundan şüpheliyim), root olarak çalışan bir keylogger yardımcı programı her zaman klavyeye erişebilir.


4
Yukarıdaki komut, klavyeyi X içinde kök ayrıcalığı olmadan yakalar. Bu yüzden ubuntu masaüstüne bir keylogger yüklemek önemsizdir. Soru bunun nasıl önleneceği.
yanychar

-3

Diğerlerinin burada söylediği gibi, yalnızca gnome terminali veya başka bir terminal gibi bir programı anahtar günlüğünden korumak mümkün değildir, yalnızca standart kullanıcıların herhangi bir tuş kaydediciyi yürütmesini kısıtlarsanız veya herhangi bir tuş kaydedici işlemini durdurur / duraklatırsanız.

Daha sonra xinputkomut durumunda bunları nasıl yapabileceğinizi göstereceğim , ancak aynı yöntemler diğer herhangi bir tuş kaydedici için kullanılabilir. Bir tuş kaydedici xinputkomut kullanıyorsa , yöntemi uyguladığınız sürece uygulamanız gerekmez xinput.

1. Standart kullanıcıları xinputkomut kullanacak şekilde kısıtlayın

Aşağıdaki komutları kullanarak standart kullanıcıları xinputkomut kullanacak şekilde kısıtlayabilirsiniz :

sudo chmod go-x /usr/bin/xinput

2. Standart kullanıcıları argümanla xinputkomut kullanacak şekilde kısıtlayıntest-xi2

Bu kullanıcı içinxinputtest-xi2 bir sarmalayıcı yazarak standart kullanıcıların komutu bağımsız değişkenle kullanmalarını kısıtlayabilirsiniz . Bunu yapmak için terminale gidin ve aşağıdaki talimatları izleyin:

  • Kök ayrıcalıklarına sahip olun:

    sudo -i
    
  • xinputHerhangi bir kullanıcının PATH'sinde olmayan başka bir dizindeki dosyayı taşı (örneğin /opt):

    mv /usr/bin/xinput /new/path/to/xinput
    
  • xinputKomut için sarmalayıcıyı oluşturun /usr/bin:

    gedit /usr/bin/xinput
    

    İçine aşağıdaki komut dosyasını ekleyin:

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

    Dosyayı kaydedin ve kapatın.

  • Yeni sarmalayıcıyı yürütülebilir yapın:

    chmod +x /usr/bin/xinput
    

İlk yöntem güvenlik olmakla birlikte ikinci yöntemi kullanarak, kullanıcı xinputyeni konumunu biliyorsanız orijinali doğrudan çağırarak yine de atlatabilir .

3. Herhangi bir xinputişlemi durdurun / duraklatın

xinputParola girilmesini veya günlüğe kaydedilmesini istemediğiniz herhangi bir şeyi girmeden önce herhangi bir işlemi durdurabilir veya duraklatabilirsiniz . Bunu yapmak için, ~/.bashrcdosyanızın sonuna aşağıdaki bash işlevini ekleyin :

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
}

Şimdi, terminalinizi yeniden açtıktan sonra, istediğiniz zaman bu işlevi kullanarak şunları yapabilirsiniz:

  • tüm xinputsüreçleri durdur / öldür :

    processof xinput stop
    
  • tüm xinputişlemleri duraklat :

    processof xinput pause
    
  • tüm xinputsüreçlere devam et :

    processof xinput continue
    

Aslında, bu işlevle bir şey yapmadan önce istediğiniz herhangi bir işlemi durdurabilir / duraklatabilirsiniz (şifre girme gibi):

processof [process_name] [stop|pause|continue]

Sisteminizde etkin bir keylogger'ı nasıl algılayacağınızı nasıl bileceğinizi bilmiyorsanız, bkz:

Bu yöntemler belki de en iyi çözümler değildir, ancak size neler yapabileceğiniz hakkında bir fikir vermeyi umuyoruz ...


5
xinput sadece bir keylogger örneğidir. Soru, girdiyi olası tüm keylogger'lardan korumakla ilgilidir.
yanychar

5
Herhangi bir program X sunucusuna soketler ve keylog yoluyla bağlanabilir, tuş kaydedicinin harici bir program kullanması bile gerekmez.
Ramchandra Apte

3
@ RaduRădeanu çözümünüz etkisiz ve işe yaramaz. xinputbile SUID değil (-rwxr-xr-x 1 kök kökü 48504 15 Ağu 2012 / usr / bin / xinput)
Ramchandra

1
@ RaduRădeanu Çünkü keylog için xinput'a ihtiyacınız yok. (harici bir komuta ihtiyaç duymaz veya kötü amaçlı programın SUID olması gerekmez) çözümünüz, xinput'un yürütülmesini kontrol etmeye izin verir
Ramchandra

3
Etkisiz olduğunu kanıtlamak için en temel örnek: (ubuntu) xinput'un stok sürümünü bir usb çubuğundan kopyalayın, web'den indirin veya kendinize e-posta ile gönderin ve ana klasörünüzde çalıştırın. Sınırsız / usr / bin / xinput kullanımı ile aynı etki.
allo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.