ฉันจะแก้ไขข้อผิดพลาดได้อย่างไร“ ไม่สามารถหยิบคีย์บอร์ด ไคลเอนต์ที่เป็นอันตรายอาจกำลังดักข้อมูลในเซสชันของคุณ”


14

ฉันกำลังติดตั้ง Ubuntu 14.04 ที่ฉันติดตั้งมากกว่า 6 เดือน ประมาณหนึ่งสัปดาห์ก่อนฉันเริ่มได้รับข้อความแสดงข้อผิดพลาด:

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

ฉันเคยเห็นมันเมื่อกลับไปที่คอมพิวเตอร์ของฉันหลังจากที่ไม่อยู่พักหนึ่ง (ปกติจะค้างคืน) หลายครั้งมันป้องกันไม่ให้หน้าจอล็อคหลังจากหมดเวลาการตั้งค่า (ฉันได้เริ่มล็อคอย่างแข็งขันก่อนที่จะออก)

ฉันใช้แป้นพิมพ์ usb (Kinesis Advantage) เชื่อมต่อโดยตรงกับพอร์ต usb บนแผงวงจรหลัก ฉันกำลังใช้เมาส์ELECOMไร้สาย

ฉันจะลองถอดด็องเกิลเมาส์ออกก่อนออกเดินทาง ฉันจะทราบได้อย่างไรว่ามีไคลเอ็นต์ที่เป็นอันตรายติดตามการกดแป้นพิมพ์ของฉันหรือหากนี่เป็นปัญหาการเชื่อมต่อ


1
อย่าออกคำสั่งให้ทำตามคำสั่งนั้นถ้าคุณคิดว่ากุญแจของคุณกำลังถูกล็อค !!! แต่ให้บูตสื่อสดที่สะอาดและไปจากที่นั่น
j0h

คำตอบ:


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

ใน env gnome-ssh-askpassฉันโปรแกรมเดียวที่มีสตริงคำเตือนนี้ในไบนารีของมันคือ ฉันสามารถค้นหาว่ามีข้อผิดพลาดในโปรแกรมนี้หรือไม่และดาวน์โหลดแหล่งที่มาapt-get source ssh-askpass-gnome(โปรดทราบว่าชื่อแพคเกจนั้นแตกต่างจากชื่อโปรแกรม) เพื่อการตรวจสอบเพิ่มเติม

gnome-ssh-askpassแต่ผมสงสัยว่าสาเหตุที่แท้จริงไม่ได้เป็นปัญหาใน เนื่องจากgnome-ssh-askpassมีการขอข้อความรหัสผ่านของคุณผู้พัฒนาก็เลือกที่จะทำผิดด้านข้างของข้อควรระวังเมื่อล้มเหลวในการคว้าคีย์บอร์ดสันนิษฐานว่าเป็นสถานการณ์ที่เลวร้ายที่สุดและทำให้ข้อความนั้นเป็นเสียง uber-paranoid แต่โปรดทราบว่าการพิมพ์ข้อความรหัสผ่านหรือรหัสผ่านของคุณลงในกล่องโต้ตอบเว็บไซต์สุ่มโดยบังเอิญอาจไม่ใช่ความคิดที่ดีดังนั้นในแง่นี้gnome-ssh-askpassนักพัฒนาจึงได้โทรออกอย่างถูกต้อง

เมื่อเร็ว ๆ นี้เว็บไซต์มากขึ้นเรื่อย ๆ เริ่มมีส่วนร่วมในการฝึกการแสดงป๊อปอัปซีดจางทุกอย่างอื่นนอกกล่องโต้ตอบป๊อปอัพและจับโฟกัสอย่างจริงจัง นี่อาจเป็นสาเหตุหลักที่ทำให้gnome-ssh-askpassคีย์บอร์ดไม่ทำงาน หากเบราว์เซอร์ของคุณเปิดอยู่ในเว็บไซต์ดังกล่าวการปิดเบราว์เซอร์หรือการนำทางจากเว็บไซต์ที่ก้าวร้าวอาจช่วยได้ หากนี่คือสาเหตุคุณอาจสนใจการตั้งค่าเดสก์ท็อปเพื่อป้องกันไม่ให้แต่ละกระบวนการจับโฟกัสที่สมบูรณ์ (เต็มเดสก์ท็อป) ใน KDE ตัวอย่างการตั้งค่านี้สามารถพบได้ใน ( การตั้งค่าระบบ -> พฤติกรรมของหน้าต่าง -> โฟกัส -> การป้องกันการขโมยโฟกัส ) ถ้าคุณรู้สึกหวาดระแวงจริงๆผมจะแนะนำการตั้งค่าให้หรือHigh Extremeแน่นอนว่าสิ่งนี้อาจป้องกันได้gnome-ssh-askpassตัวเองจากการคว้าคีย์บอร์ดหรือแม่นยำกว่า: การจับXโฟกัส

ขั้นตอนที่ 2: ระบุกระบวนการที่น่าสงสัย:

เมื่อรู้ว่าในระบบปฏิบัติการ Unix อุปกรณ์จะดูเหมือนไฟล์ uder /devคำถามต่อไปคืออุปกรณ์ใดที่ใช้แทน "คีย์บอร์ด" ในลำดับชั้นของระบบไฟล์ เราสามารถใช้lsofยูทิลิตี้ (เปิดรายการไฟล์) สำหรับสิ่งนี้

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

โปรดสังเกตว่ากระบวนการส่วนใหญ่ที่ถืออุปกรณ์ที่เปิดอยู่ในเดสก์ท็อปทั่วไป env กำลังถือ/dev/pts/<N>(แบบหลอก ) ที่เปิดอยู่ นี่คือ "อุปกรณ์" ที่น่าสนใจ

พื้นหลังบางอย่างเกี่ยวกับสิ่งที่เกิดขึ้นที่นี่:

ในเดสก์ท็อปกราฟิก Linux ทั่วไปกระบวนการจะไม่พูดกับแป้นพิมพ์โดยตรง แต่Xโปรแกรม (Xorg) จะควบคุมเหตุการณ์แป้นพิมพ์ทั้งหมดผ่านอุปกรณ์/dev/input/event<N>แทน Xใช้ตัวจัดการเหตุการณ์ (evdev) ซึ่งเหนือสิ่งอื่นใดจัดการกับเหตุการณ์แป้นพิมพ์ นอกจากนี้คุณยังสามารถตรวจสอบได้โดยดูที่Xบันทึก: /var/log/Xorg.0.logที่keyboardถูกกล่าวถึง

เหตุการณ์ที่เกิดขึ้นแป้นพิมพ์จะถูกส่งต่อจากตัวจัดการเหตุการณ์ในการประมวลผลที่มีการมุ่งเน้นตัวชี้เมาส์ได้ตลอดเวลาผ่านกระบวนการมาตรฐานการป้อนข้อมูลที่เปิดให้บริการในX /dev/pts/<N>พูดอย่างเคร่งครัด: กระบวนการไม่ได้ "คว้าแป้นพิมพ์" แป้นพิมพ์ถูกยึดโดยXกระบวนการมีเพียง (หรือจับ) "โฟกัส" หรือความสนใจXจึงXสามารถส่งต่อเหตุการณ์แป้นพิมพ์ผ่านทางตัวอธิบายไฟล์ stdin ที่เปิดอยู่/dev/pts/<N>.

แผนผังของเหตุการณ์แป้นพิมพ์มัลติเพล็กผ่าน X evdev

ขั้นตอนที่ # 3: กระบวนการใดที่ Xorg ให้ความสำคัญในเวลาใดเวลาหนึ่ง

วิธีการคิดกระบวนการที่มีความสำคัญในเวลาใดเวลาหนึ่ง? นี่คือคำถาม Askubuntu ตอบคำถามนี้:

ค้นหาแอปพลิเคชั่นภายใต้เม้าส์

บทสรุปของคำตอบคือการเรียกใช้สคริปต์เช่นต่อไปนี้ในเทอร์มินัลในขณะที่นำทางไปรอบ ๆ ด้วยเมาส์:

#!/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ระบบไฟล์Linux ( man 5 proc)

/procเกือบทุกอย่างที่คุณอาจต้องการที่จะรู้เกี่ยวกับกระบวนการที่อยู่ภายใต้ ในความเป็นจริงโปรแกรมเช่นlsof(แสดงรายการไฟล์ที่เปิด) debuggers ที่ตรวจสอบสถานะกระบวนการและยูทิลิตี้รายการกระบวนการเช่นpsหรือtopทั้งหมดขึ้นอยู่กับ/procที่มีประชากรโดยเคอร์เนลสำหรับข้อมูล

การใช้procคุณสามารถค้นหาตำแหน่งที่โปรแกรมปฏิบัติการของกระบวนการอยู่บนดิสก์ (เช่นโปรแกรมใด ๆ ที่อยู่นอกไดเรกทอรีระบบมาตรฐานโดยเฉพาะอย่างยิ่งหากพยายามซ่อนอยู่ภายใต้ชื่อ"ไม่ต้องสนใจฉัน"อาจเป็นที่สงสัย) และการใช้ ตัวดีบักหรือระบบติดตามการโทรคุณสามารถตรวจสอบสิ่งที่พวกเขากำลังทำอยู่ในระดับการโทรของระบบ (แม้ว่าคุณจะไม่มีซอร์สโค้ด)

ขั้นตอนที่ 2 และ # 3 ควรให้รหัสกระบวนการทั้งหมดPIDที่สามารถอ่านคีย์บอร์ดของคุณได้ สำหรับ PIDS เหล่านี้แต่ละอัน (เรามาแทนแต่ละอัน$pid) คุณอาจ:

แม็พ $ 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 (และ children-procs) แบบเรียลไทม์:

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(หนึ่งที่พิมพ์ข้อผิดพลาด) อีกอันอาจเป็นเบราว์เซอร์ที่เปิดอยู่บนไซต์ที่มีกล่องโต้ตอบการรับโฟกัสที่ก้าวร้าว

แม้ในโอกาสที่คุณติดตั้งมัลแวร์ระยะไกล แต่ข่าวดีก็คือว่าเนื่องจากคุณใช้งานบน Linux กระบวนการทั้งหมดจึงโปร่งใสสำหรับคุณในการวิจัยและตรวจสอบ มันจะยากมากสำหรับมัลแวร์ที่จะซ่อนตัวจากคุณหรือเพื่อป้องกันไม่ให้คุณหาได้ง่ายโดยใช้เทคนิคด้านบนการฆ่ากระบวนการและการลบไฟล์ทั้งหมด


ระหว่างขั้นตอนที่ # 2 ฉันไม่เห็นกระบวนการจำนวนมากที่ถือ/dev/pts/7(เฉพาะค่า pid ที่ไม่ซ้ำกัน 3 ค่า) การเลื่อนดูผลลัพธ์ดูเหมือนว่าอุปกรณ์ช่วยเหลือส่วนใหญ่จะมี/dev/pts/15บางอย่างที่ถือ1, 3, 12, 16, 17, 21, 22, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 34อยู่ คีย์บอร์ดอยู่เสมอ7หรือไม่? ฉันจะระบุว่าคีย์บอร์ดเหล่านี้คืออะไร
Steven C. Howell

มันสามารถเป็นใด ๆ ข้างต้น อุปกรณ์แป้นพิมพ์กายภาพเป็นจริงเปิด Xorg ( /usr/bin/X) ในฐานะ/dev/input/eventNที่คุณสามารถหาคุณNโดยดูที่สตริงในevdev /var/log/Xorg.0.logXorg จากนั้น "ส่งต่อ" แต่ละแป้นพิมพ์คลิกไปที่แต่ละกระบวนการที่มีตัวชี้เมาส์ "โฟกัส" ในทันทีนั้น เมื่อฉันเรียกใช้ssh-askpassฉันเห็นว่ามัน/dev/pts/3เปิดอยู่ แต่ใน env ใด ๆ มันสามารถเป็นอุปกรณ์หลอก tty ได้ ดังนั้นคนใดคนหนึ่งของคุณ/dev/pts/Nอาจมีความเกี่ยวข้องที่นี่
arielf

@ stvn66 ฉันได้เพิ่มสคริปต์เล็ก ๆ น้อย ๆ ที่บอกคุณว่ากระบวนการใดมี "การโฟกัส" ซ้ำ ๆ (อ้างอิงถึงคำถามที่เกี่ยวข้องใน askubuntu) HTH
arielf

หลังจากรันสคริปต์เพื่อระบุกระบวนการที่กำลังถือเมาส์ฉันจะระบุผู้ต้องสงสัยได้อย่างไร ดูเหมือนว่าจะเป็นแอพพลิเคชั่นที่ฉันเลือกเช่นเริ่มจากเทอร์มินัลที่ฉันรันสคริปต์เปลี่ยนเป็น{firefox}เมื่อฉันคลิกที่ firefox สลับไปอีกครั้ง{thunderbird}เมื่อฉันเลือก Thunderbird ไม่มีอะไรโดดเด่นอย่างที่คาดไม่ถึง บางทีนี่อาจเป็นสาเหตุของปัญหา:ปัญหาที่ไม่ได้มาจากสิ่งที่จับแป้นพิมพ์ ฉันหวังว่าจะแน่ใจว่าการแจ้งเตือนนี้ไม่มีความหมายหรือสามารถกำจัดได้
สตีเวนซีโฮเวล

@ stvn66 ฉันได้ยินคุณ :) คุณไม่สามารถย้อนเวลากลับไปและคิดหากระบวนการที่มีจุดสนใจในตอนแรก กระบวนการนั้นอาจมีการออกตั้งแต่นั้นมา เพื่อให้แน่ใจจริงๆคุณต้องสามารถทำซ้ำ สิ่งที่ดีที่สุดที่ฉันคาดเดาคือเบราว์เซอร์ของคุณ ( firefox) ในขณะที่เยี่ยมชมเว็บไซต์ที่มีป๊อปอัพโฟกัสที่น่าสนใจ ถ้าคุณไม่ดาวน์โหลดและติดตั้งซอฟต์แวร์จากแหล่งที่น่าสงสัย (ไม่ใช่บัญญัติ) เป็นประจำฉันสงสัยอย่างยิ่งว่าคุณได้ติดตั้งแป้นพิมพ์ดมกลิ่นลงบน Ubuntu โดยไม่ตั้งใจ มันเป็นการดีที่จะหวาดระแวงเล็กน้อย แต่ไม่จำเป็นต้องเหงื่อออกมากเกินไป
arielf

1

ปัญหาของฉันเกิดจากสองgnome-ssh-askpassหน้าต่างพร้อมกัน ฉันมีงาน rsync สองงานไปยังเซิร์ฟเวอร์เดียวกันผ่าน SSH และทั้งคู่พยายามขอรหัสผ่านของใบรับรอง SSH การรวมกลุ่ม (และการผูกมัด) เข้าด้วยกันแก้ไขให้ฉัน!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.