Вот как решить вашу тайну. Цель состоит в том, чтобы научить пользователей «ловить рыбу» с помощью стандартных утилит 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он запрашивает вашу фразу-пароль, ее разработчики просто предпочли ошибиться, когда не смогли схватить клавиатуру, принять наихудший сценарий и сделать сообщение сверхпараноидальным. Но обратите внимание, что ввод вашей парольной фразы или пароля в какое-то случайное диалоговое окно веб-сайта случайно не является хорошей идеей, поэтому в этом смысле 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)'
Обратите внимание, что большинство процессов, удерживающих устройства открытыми в типичной среде рабочего стола, удерживают /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>,

Шаг № 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файловой системе Linux ( man 5 proc).
Почти все, что вы можете знать о процессе, доступно в разделе /proc. Фактически, такие программы, как lsof(список открытых файлов), отладчики, которые проверяют состояние процесса, и утилиты для вывода списка процессов, такие как 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 (и его дочерних процессов) в режиме реального времени:
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, все процессы прозрачны для вас, чтобы вы могли их исследовать и проверять. Вредоносному ПО будет очень трудно действительно скрыться от вас или помешать вам легко найти его с помощью описанных выше методов, убить его процессы и удалить все его файлы.