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-gnome
daha 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-askpass
parolanı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-askpass
geliş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, High
ya da ayarlamanız önerilir Extreme
. Tabii ki, bu da önleyebilirgnome-ssh-askpass
klavyeyi kapmaktan veya daha doğrusu: X
odağı 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 X
program (Xorg) tüm klavye olaylarını bir cihaz üzerinden kontrol eder /dev/input/event<N>
. X
klavye olaylarını işleyen bir olay işleyici (evdev) kullanır. Bunu X
günlüğe bakarak da doğrulayabilirsiniz : /var/log/Xorg.0.log
nerede keyboard
belirtilir.
Klavye olayları, X
olay 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 X
açık Stdin dosya tanımlayıcı üzerinde aracılığıyla kendisine klavye olayları iletebilir /dev/pts/<N>
.
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 /proc
dosya 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 ps
veya veri çekirdeği tarafından doldurulmuş veya top
tümü /proc
çekirdek tarafından doldurulmuş olan işlem listeleme yardımcı programları gibi programlar .
Kullanarak proc
iş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 sendto
gö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-askpass
hatayı 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.