У меня установлена Ubuntu 14.04, которую я установил более 6 месяцев. Около недели назад я начал получать сообщение об ошибке:
Could not grab keyboard. A malicious client may be eavesdropping on your session.
Я видел его только когда возвращался к своему компьютеру после долгого отсутствия (обычно в течение ночи). Несколько раз это препятствовало блокировке экрана после установленного времени ожидания (я начал активно блокировать его перед уходом).
Я использую USB-клавиатуру (Kinesis Advantage), напрямую подключенную к USB-порту на материнской плате. Я использую беспроводную мышь ELECOM .
Я собираюсь попробовать отключить ключ мыши перед уходом. Как еще я могу определить, существует ли вредоносный клиент, отслеживающий мои нажатия клавиш, или это проблема с подключением?
Ответы:
Вот как решить вашу тайну. Цель состоит в том, чтобы научить пользователей «ловить рыбу» с помощью стандартных утилит Ubuntu, чтобы углубиться в детали любого процесса в их системе.
Шаг № 1 (в основном для любопытства): определите, какая программа выдаёт вам эту ошибку:
В моем 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
утилиту (список открытых файлов).Обратите внимание, что большинство процессов, удерживающих устройства открытыми в типичной среде рабочего стола, удерживают
Немного предыстории того, что здесь происходит:/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 в любое конкретное время?
Как определить, какой процесс находится в центре внимания в конкретный момент времени? Вот вопрос аскубунту, отвечающий на это:
Суть ответа заключается в запуске сценария, подобного следующему, в терминале при навигации по мыши:
Шаг № 4: углубиться в процесс деятельности
Как только вы определили подозрительный процесс, последний шаг - исследовать этот отдельный процесс. Для этого вы можете обратиться к
/proc
файловой системе Linux (man 5 proc
).Почти все, что вы можете знать о процессе, доступно в разделе
/proc
. Фактически, такие программы, какlsof
(список открытых файлов), отладчики, которые проверяют состояние процесса, и утилиты для вывода списка процессов, такие какps
илиtop
, все полагаются на то,/proc
что заполняется ядром, для данных.Используя его,
proc
вы можете найти, где исполняемая программа процесса находится на диске (например, любая программа вне стандартных системных каталогов, особенно если она пытается скрыться под именем «не обращайте внимания на меня» , может быть подозрительно) и с помощью с помощью отладчика или трассировщика системных вызовов вы можете проверить, что именно они делают на уровне системных вызовов (даже если у вас нет их исходного кода).Шаги № 2 и № 3 должны дать вам все идентификаторы процессов,
PID
которые потенциально могут считывать вашу клавиатуру. Для каждого из этих PIDS (давайте обозначим каждый как$pid
) вы можете:Сопоставьте $ pid с его полной командной строкой:
Сопоставьте $ pid с исполняемым файлом на диске:
Отобразите $ pid в его текущий рабочий каталог:
Сопоставить $ pid с исходной средой
Отслеживание активности системного вызова $ pid (и его дочерних процессов) в режиме реального времени:
(Есть еще: см.
man 5 proc
)Если вы видите незнакомый процесс, который реагирует на каждое нажатие клавиши, сохраняя его в файл (через
write
) или отправляя его по сети черезsendto
, возможно, вы обнаружили перехватчик клавиатуры.Вы также можете проверить, какие процессы открывают (tcp + udp) конечные точки сети:
Нижняя линия:
Наиболее вероятной причиной ошибки является не вредоносное ПО, а несколько процессов, пытающихся получить управление с клавиатуры одновременно. Один из двух
gnome-ssh-askpass
(тот, который печатает ошибку). Другой может быть открытым браузером на сайте с агрессивным диалоговым окном получения фокуса.Даже при малой вероятности того, что у вас действительно установлено какое-либо вредоносное ПО, хорошие новости заключаются в том, что, поскольку вы работаете в Linux, все процессы прозрачны для вас, чтобы вы могли их исследовать и проверять. Вредоносному ПО будет очень трудно действительно скрыться от вас или помешать вам легко найти его с помощью описанных выше методов, убить его процессы и удалить все его файлы.
источник
/dev/pts/7
(только 3 уникальных значения pid). Прокручивая результаты, кажется, что самое полезное устройство,/dev/pts/15
хотя некоторые держат1, 3, 12, 16, 17, 21, 22, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 34
. Клавиатура всегда7
? Как мне определить, какая из них моя клавиатура?/usr/bin/X
),/dev/input/eventN
где вы можете найти свое устройствоN
, посмотрев на строкуevdev
в/var/log/Xorg.0.log
. Затем Xorg «перенаправляет» каждый щелчок клавиатуры на отдельный процесс, на котором указатель мыши «фокусируется» в данный момент. Когда я бегу,ssh-askpass
я вижу, что он/dev/pts/3
открыт, но в любом env это может быть любое псевдо-устройство. Так что любой из ваших/dev/pts/N
может быть актуальным здесь.{firefox}
когда я нажимаю на firefox, снова переключается на,{thunderbird}
когда я выбираю thunderbird. Ничто не выделяется как неожиданное. Возможно, это относится к вашей сути: проблема не в том, что что-то захватывает клавиатуру. Я хотел бы быть уверен, что это уведомление не имеет смысла или может устранить его.firefox
) при посещении веб-сайта с всплывающим контекстным меню. Если вы регулярно не загружаете и не устанавливаете программное обеспечение из сомнительных (неканонических) источников, я сильно сомневаюсь, что вы случайно установили анализатор клавиатуры в Ubuntu. Хорошо быть немного параноиком, но нет нужды чрезмерно потеть.Моя проблема возникла из-за двух одновременных
gnome-ssh-askpass
окон. У меня было два задания rsync для одного сервера через SSH, и оба пытались запросить пароль сертификата SSH. Группировка (и сцепление) их вместе решена для меня!источник