“Klavyeyi yakalayamadım. Kötü niyetli bir istemci oturumunuzu dinliyor olabilir. ”


14

6 aydan uzun süredir kurduğum bir Ubuntu 14.04 yüklemesi yapıyorum. Yaklaşık bir hafta önce bir hata mesajı almaya başladım:

Could not grab keyboard. A malicious client may be eavesdropping on your session.

Ben sadece uzun bir süre (genellikle gece) uzakta olduktan sonra bilgisayarıma dönerken gördüm. Birkaç kez ayarlanan zaman aşımından sonra ekranın kilitlenmesini engelledi (ayrılmadan önce aktif olarak kilitlemeye başladım).

Doğrudan anakarttaki bir usb bağlantı noktasına bağlı bir usb klavye (Kinesis Advantage) kullanıyorum. Kablosuz ELECOM fare kullanıyorum.

Ayrılmadan önce fare kilidinin bağlantısını kesmeyi deneyeceğim. Tuş vuruşlarımı izleyen kötü niyetli bir istemci olup olmadığını veya bunun bir bağlantı sorunu olup olmadığını nasıl belirleyebilirim?


1
KEYSTROKLARINIZIN GÜNLÜĞÜ AÇILDIĞINI SORUYORSA SUDO KOMUTLARI SORUNUZ! bunun yerine, temiz bir canlı ortam önyükleyin ve oradan gidin.
j0h

Yanıtlar:


13

Gizeminizi nasıl çözeceğiniz aşağıda açıklanmıştır. Amaç, sistemlerindeki herhangi bir işlemin ayrıntılarını incelemek için standart Ubuntu yardımcı programlarını kullanarak kullanıcılara "balık tutmayı" öğretmektir.

Adım # 1 (çoğunlukla merak için): hangi programın size bu hatayı verdiğini belirleyin:

# -- 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

Benim env bu ikili uyarı dizesini içeren tek programdır gnome-ssh-askpass. Bu belirli programda dosyalanmış bir hata olup olmadığını arayabilir ve hatta apt-get source ssh-askpass-gnomedaha fazla inceleme için kaynağını (paket adının program adından farklı olduğunu unutmayın) indirebilirsiniz .

Ancak, kök nedeninin bir sorun olmadığından şüpheleniyorum gnome-ssh-askpass. Yana gnome-ssh-askpassparolanızı istiyor, onun geliştiriciler basitçe klavyeyi kapmak en kötü durum senaryosu varsayalım ve mesaj ses uber paranoyak getirmemek yaparken dikkatli dikkate almayı tercih etti. Ancak, parolanızı veya parolanızı yanlışlıkla rastgele bir web sitesi iletişim kutusuna yazmanın muhtemelen iyi bir fikir olmadığını unutmayın, bu nedenle gnome-ssh-askpassgeliştiriciler doğru çağrıyı yapmıştır.

Son zamanlarda giderek daha fazla web sitesi, bir pop-up görüntüleme, pop-up iletişim kutusunun dışındaki her şeyi solma ve agresif bir şekilde odaklanma pratiği ile uğraşmaya başladı. Bu gnome-ssh-askpass, klavyeyi yakalamamanın temel nedeni olabilir . Tarayıcınız bu tür bir sitede açıksa, tarayıcıyı kapatmak veya agresif web sitesinden uzaklaşmak yardımcı olabilir. Nedeni bu ise, tek tek işlemlerin tam (tam masaüstü) odağı yakalamasını önleyen bir masaüstü ayarıyla ilgilenebilirsiniz. Örneğin KDE'de, bu ayar ( Sistem Ayarları -> Pencere davranışı -> Odak -> Odak çalma önleme ) altında bulunabilir. Gerçekten paranoyak hissediyorsanız, Highya da ayarlamanız önerilir Extreme. Tabii ki, bu da önleyebilirgnome-ssh-askpassklavyeyi kapmaktan veya daha doğrusu: Xodağı kapmaktan .

2. Adım: Şüpheli işlemleri belirleyin:

Unix'te, cihazların dosyalar uder gibi göründüğünü bilerek /dev, bir sonraki soru, dosya sistemi hiyerarşisinde hangi cihazın "klavyeyi" temsil ettiği. Bunun için lsof(açık dosyaları listele) yardımcı programını kullanabiliriz .

# look for processes holding devices open, filter out some common ones:
$ sudo lsof | grep /dev | grep -vE '/(null|urandom|zero)'

Tipik bir masaüstü env'de aygıtları açık tutan işlemlerin çoğunun /dev/pts/<N>( sözde tty ) açık tuttuğuna dikkat edin . Bunlar ilgilenilen "cihazlar" dır.

Burada neler olduğuna dair bazı bilgiler:

Tipik bir Linux grafik masaüstünde, işlemler doğrudan klavyeyle konuşmaz. Bunun yerine Xprogram (Xorg) tüm klavye olaylarını bir cihaz üzerinden kontrol eder /dev/input/event<N>. Xklavye olaylarını işleyen bir olay işleyici (evdev) kullanır. Bunu Xgünlüğe bakarak da doğrulayabilirsiniz : /var/log/Xorg.0.lognerede keyboardbelirtilir.

Klavye olayları, Xolay işleyicisinden açık olan işlem standart girdisi aracılığıyla herhangi bir zamanda fare işaretçisi odağı olan işleme iletilir /dev/pts/<N>. Kesin anlamda: Bir süreç aslında "klavyeyi yakala" değil, klavye ile düzenlenen X, işlem sadece (veya kıskaçlar) "odak" veya dikkatine Xöylesine Xaçık Stdin dosya tanımlayıcı üzerinde aracılığıyla kendisine klavye olayları iletebilir /dev/pts/<N>.

X evdev ile çoklanmış klavye olaylarının şeması

Adım # 3: Xorg herhangi bir zamanda hangi sürece odaklanır?

Herhangi bir zamanda hangi sürecin odağı olduğunu nasıl anlayabilirim? İşte buna cevap veren bir askubuntu sorusu:

farenin altındaki uygulamayı bul

Cevabın özeti, bir terminalde fare ile gezinirken aşağıdakine benzer bir komut dosyası çalıştırmaktır:

#!/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

4.Adım: Süreç etkinliğini daha ayrıntılı inceleyin

Şüpheli bir süreç belirledikten sonra, son adım bu bireysel süreci araştırmaktır. Bunun için Linux /procdosya sistemine ( man 5 proc) dönebilirsiniz .

Bir işlem hakkında bilmek isteyebileceğiniz hemen hemen her şey altında mevcuttur /proc. Aslında, lsof(açık dosyaları listeleme), işlem durumunu inceleyen hata ayıklayıcılar ve psveya veri çekirdeği tarafından doldurulmuş veya toptümü /procçekirdek tarafından doldurulmuş olan işlem listeleme yardımcı programları gibi programlar .

Kullanarak procişlem yürütülebilir programın diskte nerede olduğunu bulabilirsiniz (örneğin standart sistem dizinlerinin dışındaki herhangi bir program, özellikle "bana dikkat etme" adı altında gizlemeye çalışıyorsa ve şüpheli olabilir) bir hata ayıklayıcı veya sistem çağrısı izleyicisi, sistem çağrı seviyesinde tam olarak ne yaptıklarını inceleyebilirsiniz (kaynak kodunuz olmasa bile).

2 ve 3 numaralı adımlar PID, klavyenizi okuyabilecek tüm işlem kimliklerini vermelidir . Bu PIDS'in her biri için (her birini şu şekilde gösterelim $pid):

$ Pid komutunu tam komut satırıyla eşleştir:

cat /proc/$pid/cmdline

$ Pid dosyasını diskteki yürütülebilir dosyayla eşle:

ls -l /proc/$pid/exe

$ Pid dosyasını mevcut çalışma diziniyle eşleştir:

ls -l /proc/$pid/cwd

$ Pid'yi orijinal ortamına eşle

cat /proc/$pid/environ | tr '\000' '\012'

$ Pid (ve çocuk süreçleri) sistem çağrısı etkinliğini gerçek zamanlı olarak izleyin:

strace -f -p $pid

(Dahası da var: bkz. man 5 proc)

Her tuşa basıldığında bir dosyaya (yoluyla write) veya ağ üzerinden yoluyla göndererek yanıt veren, tanımadığınız bir işlem sendtogörürseniz, bir klavye dinleyicisi bulmuş olabilirsiniz.

Ayrıca hangi işlemlerin (tcp + udp) ağ uç noktalarının açık olduğunu da kontrol edebilirsiniz:

# See 'man netstat' for details on all options used below
$ sudo netstat -tunapee

Sonuç olarak:

Hatanın en olası nedeni kötü amaçlı yazılım değil, aynı anda klavye kontrolünü almaya çalışan birden fazla işlemdir. İkisinden biri ( gnome-ssh-askpasshatayı basan). Diğeri, agresif bir odak alma iletişim kutusu bulunan bir sitede açık bir tarayıcı olabilir.

Aslında bazı kötü amaçlı yazılımların yüklü olduğu uzak şansta bile, iyi haber şu ki, Linux'ta olduğunuzdan, araştırmanız ve incelemeniz için tüm süreçler şeffaftır. Kötü amaçlı yazılımların sizden gerçekten gizlenmesi veya yukarıdaki teknikleri kullanarak kolayca bulmanızı, işlemlerini öldürmesini ve tüm dosyalarını kaldırmanızı çok zor olurdu.


Adım # 2 sırasında pek çok işlem görmüyorum /dev/pts/7(yalnızca 3 benzersiz pid değeri). Sonuçlar arasında ilerlerken, en sarmal cihaz /dev/pts/15bazılarının beklemesine rağmen görünüyor 1, 3, 12, 16, 17, 21, 22, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 34. Klavye her zaman 7mı? Bunlardan hangisinin klavyem olduğunu nasıl belirleyebilirim?
Steven C. Howell

Yukarıdakilerden herhangi biri olabilir. Fiziksel klavye cihazı (Xorg tarafından aslında açıktır /usr/bin/Xgibi) /dev/input/eventNEğer bulduğunda nerede Ndize bakarak evdeviçinde /var/log/Xorg.0.log. Xorg daha sonra her bir klavye tıklamasını, o anda fare işaretçisi "odak" olan tek bir işleme "iletir". Çalıştığımda açık ssh-askpassolduğunu görüyorum /dev/pts/3ama herhangi bir env'de herhangi bir sözde tty cihazı olabilir. Yani herhangi /dev/pts/Nbiriniz burada alakalı olabilir.
arielf

@ stvn66 Hangi işlemin tekrar tekrar "odak" olduğunu söyleyen küçük bir komut dosyası ekledim (askubuntu ile ilgili bir soruya referans). HTH.
arielf

hangi işlemlerin fareyi tuttuğunu belirlemek için komut dosyasını çalıştırdıktan sonra, şüpheli olanı nasıl tanımlayabilirim? Görünüşe göre seçtiğim herhangi bir uygulama, örneğin, senaryoyu çalıştırdığım terminal olarak başlar {firefox}, firefox'a tıkladığımda geçer, {thunderbird}yıldırım kuşunu seçtiğimde tekrar değişir. Hiçbir şey beklenmedik olarak göze çarpmaz. Belki de bu sizin Alt satırınıza gider : klavyeyi tutan bir şeyden gelmeme sorunu. Keşke bu bildirimin anlamsız olduğundan ya da ortadan kaldırabileceğinden emindim.
Steven C. Howell

@ stvn66 Seni duyuyorum :) zamanda geriye gidemez ve odakta olan süreci çözemezsin. O süreç o zamandan beri terk edilmiş olabilir. Olmak gerçekten emin, size üretmek mümkün olması gerekmektedir. En iyi tahminim, firefoxodaklayıcı bir pop-up içeren bir web sitesini ziyaret ederken tarayıcınız ( ) idi . Şüpheli (kanonik olmayan) kaynaklardan düzenli olarak yazılım indirip kurmazsanız, yanlışlıkla Ubuntu'ya bir klavye dinleyicisi yüklediğinizden şüpheliyim. Biraz paranoyak olmak iyidir, ancak aşırı terlemeye gerek yoktur.
arielf

1

Benim sorunum iki eşzamanlı gnome-ssh-askpasspencereden kaynaklanıyordu. SSH aracılığıyla aynı sunucuya iki rsync işim vardı ve her ikisi de SSH sertifikasının şifresini sormaya çalıştı. Onları gruplandırmak (ve zincirlemek) benim için çözüldü!

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.