मुझे त्रुटि को कैसे डीबग करना चाहिए "कीबोर्ड को पकड़ नहीं सका। एक दुर्भावनापूर्ण ग्राहक आपके सत्र में ईगोवार्डिंग कर सकता है। "


14

मैं Ubuntu 14.04 की एक स्थापना चला रहा हूं जिसे मैंने 6 महीने से अधिक समय तक सेटअप किया है। लगभग एक सप्ताह पहले, मुझे एक त्रुटि संदेश मिलना शुरू हुआ:

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

मैंने इसे केवल तभी देखा है जब काफी देर (आमतौर पर रात भर) दूर रहने के बाद अपने कंप्यूटर पर लौटता हूं। कई बार यह सेट टाइमआउट के बाद स्क्रीन को लॉक होने से रोकता है (मैंने जाने से पहले इसे सक्रिय रूप से लॉक करना शुरू कर दिया है)।

मैं मदरबोर्ड पर एक यूएसबी पोर्ट से सीधे जुड़े हुए एक यूएसबी कीबोर्ड (किनेसिस एडवांटेज) का उपयोग कर रहा हूं। मैं एक वायरलेस ELECOM माउस का उपयोग कर रहा हूं ।

मैं छोड़ने से पहले माउस डोंगल को डिस्कनेक्ट करने की कोशिश करने जा रहा हूं। अगर कोई दुर्भावनापूर्ण क्लाइंट मेरे कीस्ट्रोक्स को ट्रैक कर रहा है या यह कनेक्टिविटी समस्या है तो मैं कैसे पहचान सकता हूं?


1
यदि आप अपनी गलतियों को ठीक नहीं कर रहे हैं, तो भी सूडों को कम नहीं करना चाहिए !!! इसके बजाय, एक स्वच्छ लाइव माध्यम बूट करें, और वहां से जाएं।
jhh

जवाबों:


13

यहाँ अपने रहस्य को हल करने का तरीका बताया गया है। लक्ष्य अपने सिस्टम पर किसी भी प्रक्रिया के विवरण में खुदाई करने के लिए मानक Ubuntu उपयोगिताओं का उपयोग करके उपयोगकर्ताओं को "मछली कैसे करें" सिखाने के लिए अधिक है।

चरण # 1 (ज्यादातर जिज्ञासा के लिए): पहचानें कि कौन सा कार्यक्रम आपको यह त्रुटि दे रहा है:

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

मेरे एनवी में एकमात्र प्रोग्राम है जिसमें इस चेतावनी स्ट्रिंग में बाइनरी है gnome-ssh-askpass। मैं खोज सकता हूं कि क्या इस विशेष कार्यक्रम पर कोई बग दर्ज किया गया है, और यहां तक ​​कि इसके स्रोत को भी डाउनलोड करें apt-get source ssh-askpass-gnome(ध्यान दें कि पैकेज का नाम आगे के निरीक्षण के लिए प्रोग्राम के नाम से अलग है)।

हालाँकि, मुझे संदेह है कि मूल कारण कोई समस्या नहीं है gnome-ssh-askpass। चूंकि gnome-ssh-askpassआप अपने पासफ़्रेज़ के लिए पूछ रहे हैं, इसलिए इसके डेवलपर्स ने कीबोर्ड को हड़पने में विफल होने पर सबसे खराब स्थिति का अनुमान लगाते हुए, और संदेश को uber-paranoid बनाते समय सावधानी बरतने के लिए चुना। लेकिन ध्यान दें कि दुर्घटना द्वारा अपने पासफ़्रेज़ या पासवर्ड को कुछ यादृच्छिक वेब-साइट डायलॉग बॉक्स में लिखना शायद एक अच्छा विचार नहीं है, इसलिए उस अर्थ में gnome-ssh-askpassडेवलपर्स ने सही कॉल किया है।

हाल ही में अधिक से अधिक वेब साइटों ने पॉपअप प्रदर्शित करने के अभ्यास में संलग्न करना शुरू कर दिया है, पॉपअप संवाद के बाहर बाकी सब कुछ लुप्त हो रहा है, और आक्रामक रूप से ध्यान आकर्षित कर रहा है। यह gnome-ssh-askpassकीबोर्ड को हथियाने में विफल होने का मूल कारण हो सकता है । यदि आपका ब्राउज़र ऐसी साइट पर खुला है, तो ब्राउज़र को बंद करना या आक्रामक वेब साइट से दूर नेविगेट करने में मदद मिल सकती है। यदि यह कारण है, तो आपको एक डेस्कटॉप सेटिंग में रुचि हो सकती है जो व्यक्तिगत प्रक्रियाओं को पूर्ण (पूर्ण डेस्कटॉप) फोकस को हथियाने से रोकती है। उदाहरण के लिए केडीई में, यह सेटिंग ( सिस्टम-सेटिंग्स -> विंडो-व्यवहार -> फोकस -> फोकस चोरी रोकथाम ) के तहत पाई जा सकती है । क्या तुम सच में पागल लगता है, मैं करने के लिए इसे स्थापित करने की सिफारिश करेंगे Highया Extreme। बेशक, इससे बचाव भी हो सकता हैgnome-ssh-askpassकीबोर्ड को हथियाने से, या उससे अधिक सटीक: Xफोकस हथियाने से ।

चरण # 2: संदिग्ध प्रक्रियाओं को पहचानें:

यह जानते हुए कि यूनिक्स में, डिवाइस फाइल uder की तरह दिखाई देते हैं /dev, अगला सवाल यह है कि फ़ाइल-सिस्टम पदानुक्रम में डिवाइस "कीबोर्ड" का प्रतिनिधित्व करता है। हम इसके लिए lsof(सूची ओपन फाइल्स) उपयोगिता का उपयोग कर सकते हैं ।

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

ध्यान दें कि एक विशिष्ट डेस्कटॉप एनवी में खुले उपकरणों को रखने वाली अधिकांश प्रक्रियाएं /dev/pts/<N>(एक छद्म ट्टी ) खुली रहती हैं। ये ब्याज के "उपकरण" हैं।

यहाँ क्या हो रहा है पर कुछ पृष्ठभूमि:

एक विशिष्ट लिनक्स ग्राफिकल डेस्कटॉप में, प्रक्रियाएं सीधे कीबोर्ड से बात नहीं करती हैं। इसके बजाय Xप्रोग्राम (Xorg) एक डिवाइस के माध्यम से सभी कीबोर्ड घटनाओं को नियंत्रित करता है /dev/input/event<N>Xएक ईवेंट हैंडलर (एवदेव) का उपयोग करता है, जो अन्य चीजों के बीच, कीबोर्ड ईवेंट को संभालता है। आप Xलॉग को देखकर भी यह सत्यापित कर सकते हैं : /var/log/Xorg.0.logजहां keyboardउल्लेख किया गया है।

कीबोर्ड घटनाओं को Xइवेंट हैंडलर से उस प्रक्रिया में भेजा जाता है जिसमें प्रक्रिया मानक-इनपुट के माध्यम से किसी भी समय माउस पॉइंटर फोकस होता है जो कि खुला रहता है /dev/pts/<N>। सख्ती से बोलना: एक प्रक्रिया वास्तव में "कीबोर्ड को पकड़ना" नहीं है, कीबोर्ड द्वारा आयोजित किया जाता है X, इस प्रक्रिया में केवल (या पकड़) "फोकस" है या Xइतने पर ध्यान Xएक खुली स्टड फ़ाइल डिस्क्रिप्टर के माध्यम से इसे कीबोर्ड घटनाओं को अग्रेषित कर सकता है। /dev/pts/<N>

कीबोर्ड की घटनाओं का आरेख एक्स एवदेव के माध्यम से गुणा किया गया

चरण # 3: किस प्रक्रिया में किसी विशेष समय पर Xorg फोकस होता है?

किसी विशेष समय में किस प्रक्रिया पर ध्यान केंद्रित करना है? यहाँ एक उत्तर देने वाला प्रश्न पूछा गया है:

माउस के तहत आवेदन का पता लगाएं

उत्तर का सारांश माउस के साथ नेविगेट करते समय एक स्क्रिप्ट को टर्मिनल में निम्नलिखित की तरह चलाना है:

#!/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: प्रक्रिया गतिविधि में गहरी खुदाई करें

एक बार जब आप एक संदिग्ध प्रक्रिया की पहचान कर लेते हैं, तो अंतिम चरण इस व्यक्तिगत प्रक्रिया की जांच करना है। उसके लिए आप लिनक्स /procफाइल सिस्टम ( man 5 proc) में बदल सकते हैं ।

लगभग किसी भी चीज के बारे में जानना चाह सकते हैं जो एक प्रक्रिया के तहत उपलब्ध है /proc। वास्तव में, प्रोग्राम्स lsof(सूची खुली फाइलें), डिबगर्स जो प्रक्रिया स्थिति की जांच करते हैं, और प्रक्रिया-लिस्टिंग उपयोगिताओं जैसे psया top, सभी भरोसा करते हैं, /procजो डेटा के लिए कर्नेल द्वारा पॉपुलेटेड है।

उपयोग करने से procआप यह जान सकते हैं कि डिस्क पर निष्पादन योग्य प्रोग्राम कहां है (उदाहरण के लिए मानक सिस्टम निर्देशिकाओं के बाहर का कोई प्रोग्राम, विशेषकर यदि यह "मुझ पर ध्यान न दें" नाम के तहत छिपाने की कोशिश कर रहा है, तो इस तरह का नाम संदिग्ध हो सकता है) और उपयोग करना डिबगर या सिस्टम कॉल ट्रेसर आप यह जांच सकते हैं कि वे सिस्टम कॉल स्तर पर क्या कर रहे हैं (भले ही आपके पास उनका स्रोत कोड न हो)।

चरण # 2 और # 3 आपको सभी प्रक्रिया-आईडी ( PIDओं) को देना चाहिए जो संभवतः आपके कीबोर्ड को पढ़ सकते हैं। इन PIDS में से प्रत्येक के लिए ( $pidआप के रूप में हर एक निरूपित ) आप कर सकते हैं:

$ $ इसकी पूरी कमांड लाइन के लिए नक्शा:

cat /proc/$pid/cmdline

डिस्क निष्पादन योग्य पर $ pid का नक्शा:

ls -l /proc/$pid/exe

अपनी वर्तमान कार्यशील निर्देशिका के लिए $ pid का नक्शा:

ls -l /proc/$pid/cwd

अपने मूल वातावरण में $ pid का नक्शा बनाएं

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

वास्तविक समय में $ pid (और उसके बच्चे-समर्थक) सिस्टम-कॉल गतिविधि ट्रेस करें:

strace -f -p $pid

(और भी है: देखें man 5 proc)

यदि आपको कोई अपरिचित प्रक्रिया दिखाई देती है, जो हर की-प्रेस को एक फाइल (स्टोर write) में संग्रहीत करके या नेटवर्क के माध्यम से भेजने पर प्रतिक्रिया करती है sendto, तो आपको एक कीबोर्ड स्निफर मिल सकता है।

आप यह भी देख सकते हैं कि कौन सी प्रक्रियाएँ हैं (tcp + udp) नेटवर्क समापन बिंदु खुले हैं:

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

जमीनी स्तर:

त्रुटि का सबसे संभावित कारण मैलवेयर नहीं है, लेकिन कई प्रक्रियाएं एक ही समय में कीबोर्ड नियंत्रण प्राप्त करने की कोशिश कर रही हैं। दोनों में gnome-ssh-askpassसे एक है (एक मुद्रण त्रुटि)। अन्य साइट पर एक खुला ब्राउज़र हो सकता है जिसमें आक्रामक फ़ोकस-प्राप्त करने वाला डायलॉग बॉक्स हो।

यहां तक ​​कि दूरस्थ अवसर में जो आपने वास्तव में कुछ मैलवेयर स्थापित किए हैं, अच्छी खबर यह है कि चूंकि आप लिनक्स पर हैं, इसलिए आपके लिए अनुसंधान और निरीक्षण करने के लिए सभी प्रक्रियाएं पारदर्शी हैं। मैलवेयर के लिए वास्तव में आपसे छिपाना, या आपको उपरोक्त तकनीकों का उपयोग करके इसे आसानी से पता लगाने से रोकना, इसकी प्रक्रियाओं को मारना और इसकी सभी फ़ाइलों को निकालना बहुत कठिन होगा।


चरण # 2 के दौरान, मुझे कई प्रक्रियाएँ /dev/pts/7(केवल 3 अद्वितीय ख़ुशबू वाले मान) नहीं दिखाई देतीं। परिणामों के माध्यम से स्क्रॉल करते हुए, ऐसा लगता है कि सबसे अधिक सहायक उपकरण है, /dev/pts/15हालांकि कुछ पकड़े हुए हैं 1, 3, 12, 16, 17, 21, 22, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 34। क्या कीबोर्ड हमेशा होता है 7? मैं कैसे पहचानूंगा कि इनमें से कौन सा मेरा कीबोर्ड है?
स्टीवन सी। हॉवेल 19

यह उपरोक्त में से कोई भी हो सकता है। भौतिक कीबोर्ड डिवाइस वास्तव में Xorg ( /usr/bin/X) के रूप में खुला है, /dev/input/eventNजहां आप Nस्ट्रिंग evdevको देखकर अपना पता लगा सकते हैं /var/log/Xorg.0.log। Xorg फिर "फॉरवर्ड" प्रत्येक कीबोर्ड उस विशेष प्रक्रिया में माउस पॉइंटर "फ़ोकस" वाले व्यक्तिगत प्रक्रिया पर क्लिक करता है। जब मैं दौड़ता ssh-askpassहूं तो देखता हूं कि यह /dev/pts/3खुला है लेकिन किसी भी एनवी में यह किसी भी छद्म ट्टी डिवाइस हो सकता है। तो आपका कोई भी /dev/pts/Nयहाँ प्रासंगिक हो सकता है।
arielf

@ stvn66 मैंने आपको एक छोटी सी स्क्रिप्ट जोड़कर बताया कि किस प्रक्रिया में बार-बार "फोकस" होता है (आस्कुबंटु पर संबंधित प्रश्न का संदर्भ)। HTH।
2

माउस को धारण करने की पहचान करने के लिए स्क्रिप्ट चलाने के बाद, मैं किसी संदिग्ध की पहचान कैसे करूंगा? ऐसा लगता है कि मैं जो भी एप्लिकेशन चुनता हूं, उदाहरण के लिए, टर्मिनल के रूप में शुरू करता हूं जिसे मैंने स्क्रिप्ट में चलाया था, {firefox}जब मैं फ़ायरफ़ॉक्स पर क्लिक करता हूं, तब स्विच करता {thunderbird}हूं जब मैं थंडरबर्ड का चयन करता हूं। कुछ भी अप्रत्याशित नहीं है। शायद यह आपकी बॉटम लाइन में जाता है : इश्यू में कीबोर्ड को हथियाने वाली किसी चीज से नहीं। काश, यह निश्चित था कि यह नोटिस निरर्थक है या इसे समाप्त कर सकता है।
स्टीवन सी। हॉवेल

@ stvn66 मैं आपको सुनता हूं :) आप समय पर वापस नहीं जा सकते हैं और उस प्रक्रिया का पता लगा सकते हैं जिसमें मूल रूप से फोकस था। तब से यह प्रक्रिया समाप्त हो सकती है। होना करने के लिए वास्तव में यह सुनिश्चित करें, आप पुन: पेश करने में सक्षम होना चाहिए। मेरा सबसे अच्छा अनुमान यह है कि firefoxवेब-साइट पर ध्यान केंद्रित करने वाली पॉप-अप के साथ यात्रा करते समय यह आपका ब्राउज़र ( ) था । जब तक आप नियमित रूप से संदिग्ध (गैर-विहित) स्रोतों से सॉफ़्टवेयर डाउनलोड और इंस्टॉल नहीं करते हैं, मुझे अत्यधिक संदेह है कि आपने गलती से उबंटू पर एक कीबोर्ड स्निफर स्थापित किया है। थोडा लकवाग्रस्त होना अच्छा है, लेकिन इसे ज़्यादा पसीना बहाने की ज़रूरत नहीं है।
अरीफ्ल

1

मेरा मुद्दा दो समवर्ती gnome-ssh-askpassखिड़कियों के कारण था । मेरे पास SSH के माध्यम से एक ही सर्वर पर दो rsync नौकरियां थीं, और दोनों ने SSH प्रमाणपत्र का पासवर्ड पूछने की कोशिश की। समूहीकरण (और जंजीर) उन्हें एक साथ मेरे लिए हल किया!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.