Đây là cách giải quyết bí ẩn của bạn. Mục tiêu là để dạy người dùng "cách câu cá" bằng cách sử dụng các tiện ích Ubuntu tiêu chuẩn để tìm hiểu chi tiết về bất kỳ quy trình nào trên hệ thống của họ.
Bước # 1 (vì tò mò là chủ yếu): xác định chương trình nào gây ra lỗi này cho bạn:
# -- 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
Trong env của tôi, chương trình duy nhất chứa chuỗi cảnh báo này trong tệp nhị phân của nó là gnome-ssh-askpass
. Tôi có thể tìm kiếm nếu có lỗi được gửi trên chương trình cụ thể này và thậm chí tải xuống nguồn của nó apt-get source ssh-askpass-gnome
(lưu ý rằng tên gói khác với tên chương trình) để kiểm tra thêm.
Tuy nhiên, tôi nghi ngờ nguyên nhân gốc rễ không phải là một vấn đề trong gnome-ssh-askpass
. Vì gnome-ssh-askpass
đang yêu cầu mật khẩu của bạn, các nhà phát triển của nó chỉ đơn giản chọn cách thận trọng khi không lấy bàn phím, giả sử trường hợp xấu nhất và làm cho thông điệp nghe có vẻ hoang tưởng. Nhưng lưu ý rằng việc nhập cụm mật khẩu hoặc mật khẩu của bạn vào một hộp thoại ngẫu nhiên của trang web ngẫu nhiên có thể không phải là một ý tưởng hay, vì vậy theo nghĩa đó, các gnome-ssh-askpass
nhà phát triển đã thực hiện cuộc gọi đúng.
Gần đây, ngày càng có nhiều trang web bắt đầu tham gia vào việc thực hiện hiển thị cửa sổ bật lên, làm mờ mọi thứ khác bên ngoài hộp thoại bật lên và tích cực lấy tiêu điểm. Đây có thể là nguyên nhân gốc rễ cho gnome-ssh-askpass
việc không lấy bàn phím. Nếu trình duyệt của bạn đang mở trên trang web đó, việc đóng trình duyệt hoặc điều hướng khỏi trang web tích cực có thể giúp ích. Nếu đây là nguyên nhân, bạn có thể quan tâm đến cài đặt máy tính để bàn ngăn các quy trình riêng lẻ lấy toàn bộ tiêu điểm (máy tính để bàn đầy đủ). Ví dụ, trong KDE, có thể tìm thấy cài đặt này trong ( Cài đặt hệ thống -> Hành vi cửa sổ -> Tập trung -> Ngăn chặn ăn cắp tiêu điểm ). Nếu bạn cảm thấy thực sự hoang tưởng, tôi khuyên bạn nên đặt nó thành High
hoặc Extreme
. Tất nhiên, điều này cũng có thể ngăn chặngnome-ssh-askpass
chính nó từ việc nắm lấy bàn phím, hay chính xác hơn là: lấy X
nét.
Bước # 2: Xác định các quy trình đáng ngờ:
Biết rằng trong Unix, các thiết bị xuất hiện giống như trình phát tệp /dev
, câu hỏi tiếp theo là thiết bị nào đại diện cho "bàn phím" trong hệ thống phân cấp hệ thống tệp. Chúng ta có thể sử dụng lsof
tiện ích (liệt kê các tệp đang mở) cho việc này.
# look for processes holding devices open, filter out some common ones:
$ sudo lsof | grep /dev | grep -vE '/(null|urandom|zero)'
Lưu ý rằng hầu hết các quá trình giữ các thiết bị mở trong một máy tính để bàn điển hình đang giữ /dev/pts/<N>
(một giả giả ) mở. Đây là những "thiết bị" quan tâm.
Một số nền tảng về những gì đang xảy ra ở đây:
Trong máy tính để bàn đồ họa Linux điển hình, các quy trình không nói chuyện trực tiếp với bàn phím. Thay vào đó, X
chương trình (Xorg) điều khiển tất cả các sự kiện bàn phím thông qua một thiết bị /dev/input/event<N>
. X
sử dụng một trình xử lý sự kiện (evdev) trong số những thứ khác, xử lý các sự kiện bàn phím. Bạn cũng có thể xác minh điều này bằng cách xem X
nhật ký: /var/log/Xorg.0.log
nơi keyboard
được đề cập.
Các sự kiện bàn phím được chuyển tiếp từ bộ X
xử lý sự kiện đến quy trình có tiêu điểm con trỏ chuột bất cứ lúc nào thông qua đầu vào tiêu chuẩn quy trình được mở /dev/pts/<N>
. Nói một cách chính xác: một quá trình không thực sự "lấy bàn phím", bàn phím được giữ bởi X
, quá trình chỉ có (hoặc lấy) "tập trung" hoặc sự chú ý của X
vì vậy X
có thể chuyển tiếp các sự kiện bàn phím đến nó thông qua một mô tả tệp stdin mở /dev/pts/<N>
.
Bước # 3: quá trình nào có trọng tâm Xorg tại bất kỳ thời điểm cụ thể nào?
Làm thế nào để tìm ra quá trình nào có trọng tâm tại bất kỳ thời điểm cụ thể? Đây là một câu hỏi Askubfox trả lời điều này:
tìm ra ứng dụng dưới chuột
Tóm tắt câu trả lời là chạy một đoạn script như sau trong một thiết bị đầu cuối trong khi điều hướng xung quanh bằng chuột:
#!/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
Bước # 4: đào sâu hơn vào hoạt động của quy trình
Khi bạn đã xác định được quy trình nghi ngờ, bước cuối cùng là điều tra quy trình cá nhân này. Cho rằng bạn có thể chuyển sang /proc
hệ thống tập tin Linux ( man 5 proc
).
Hầu như bất cứ điều gì bạn có thể muốn biết về một quá trình có sẵn theo /proc
. Trong thực tế, các chương trình như lsof
(liệt kê các tệp đang mở), các trình gỡ lỗi kiểm tra trạng thái quy trình và các tiện ích liệt kê quy trình như ps
hoặc top
, tất cả đều dựa vào /proc
đó được nhân bởi dữ liệu.
Sử dụng proc
bạn có thể tìm thấy nơi chương trình thực thi quy trình nằm trên đĩa (ví dụ: bất kỳ chương trình nào bên ngoài các thư mục hệ thống tiêu chuẩn, đặc biệt nếu nó đang cố ẩn dưới loại tên "không chú ý đến tôi" , có thể bị nghi ngờ) và sử dụng trình gỡ lỗi hoặc trình theo dõi cuộc gọi hệ thống, bạn có thể kiểm tra chính xác họ đang làm gì ở cấp độ gọi hệ thống (ngay cả khi bạn không có mã nguồn của họ).
Bước # 2 và # 3 sẽ cung cấp cho bạn tất cả ( PID
các) ID quy trình có khả năng đọc bàn phím của bạn. Đối với mỗi PIDS này (hãy biểu thị từng người như $pid
bạn): bạn có thể:
Ánh xạ $ pid vào dòng lệnh đầy đủ của nó:
cat /proc/$pid/cmdline
Ánh xạ $ pid vào đĩa thực thi của nó:
ls -l /proc/$pid/exe
Ánh xạ $ pid vào thư mục làm việc hiện tại của nó:
ls -l /proc/$pid/cwd
Ánh xạ $ pid vào môi trường ban đầu của nó
cat /proc/$pid/environ | tr '\000' '\012'
Theo dõi hoạt động gọi hệ thống $ pid (và con-procs) trong thời gian thực:
strace -f -p $pid
(Còn nữa: xem man 5 proc
)
Nếu bạn thấy một quy trình không quen thuộc phản ứng với mọi lần bấm phím bằng cách lưu nó vào một tệp (thông qua write
) hoặc gửi qua mạng để qua sendto
, bạn có thể đã tìm thấy một bàn phím sniffer.
Bạn cũng có thể kiểm tra các tiến trình nào có (tcp + udp) điểm cuối mạng mở:
# See 'man netstat' for details on all options used below
$ sudo netstat -tunapee
Dòng dưới cùng:
Nguyên nhân rất có thể gây ra lỗi không phải là phần mềm độc hại, mà là nhiều quá trình cố gắng kiểm soát bàn phím cùng một lúc. Một trong hai là gnome-ssh-askpass
(một in lỗi). Cái còn lại có thể là một trình duyệt mở trên một trang web với hộp thoại lấy nét tập trung.
Ngay cả trong trường hợp từ xa mà bạn thực sự đã cài đặt một số phần mềm độc hại, thì tin tốt là vì bạn đang sử dụng Linux, nên tất cả các quy trình đều minh bạch để bạn nghiên cứu và kiểm tra. Sẽ rất khó để phần mềm độc hại thực sự ẩn khỏi bạn hoặc để ngăn bạn dễ dàng xác định vị trí của nó bằng các kỹ thuật trên, giết chết các quy trình của nó và xóa tất cả các tệp của nó.