Estoy ejecutando una instalación de Ubuntu 14.04 que configuré más de 6 meses. Hace aproximadamente una semana, comencé a recibir un mensaje de error:
Could not grab keyboard. A malicious client may be eavesdropping on your session.
Solo lo he visto cuando vuelvo a mi computadora después de estar ausente durante bastante tiempo (generalmente de la noche a la mañana). Varias veces ha evitado que la pantalla se bloquee después del tiempo de espera establecido (he comenzado a bloquearla activamente antes de salir).
Estoy usando un teclado usb (Kinesis Advantage) conectado directamente a un puerto usb en la placa base. Estoy usando un mouse inalámbrico ELECOM .
Voy a intentar desconectar la llave del mouse antes de irme. ¿De qué otra forma podría identificar si hay un cliente malintencionado que rastrea mis pulsaciones de teclas o si se trata de un problema de conectividad?
Respuestas:
Aquí te explicamos cómo resolver tu misterio. El objetivo es más enseñar a los usuarios "cómo pescar" mediante el uso de utilidades estándar de Ubuntu para profundizar en los detalles de cualquier proceso en su sistema.
Paso # 1 (principalmente por curiosidad): identifica qué programa te está dando este error:
En mi entorno, el único programa que contiene esta cadena de advertencia en su binario es
gnome-ssh-askpass
. Podría buscar si hay un error archivado en este programa en particular e incluso descargar su fuenteapt-get source ssh-askpass-gnome
(tenga en cuenta que el nombre del paquete es diferente al nombre del programa) para una inspección adicional.Sin embargo, sospecho que la causa raíz no es un problema
gnome-ssh-askpass
. Comognome-ssh-askpass
está solicitando su frase de contraseña, sus desarrolladores simplemente eligieron errar por precaución cuando no agarran el teclado, asumen el peor de los casos y hacen que el mensaje suene súper paranoico. Pero tenga en cuenta que escribir su frase de contraseña o contraseña en un cuadro de diálogo aleatorio de un sitio web por accidente probablemente no sea una buena idea, por lo que, en ese sentido, losgnome-ssh-askpass
desarrolladores han tomado la decisión correcta.Recientemente, cada vez más sitios web han comenzado a participar en la práctica de mostrar una ventana emergente, desvanecer todo lo demás fuera del cuadro de diálogo emergente y enfocarse agresivamente. Esta podría ser la causa principal de
gnome-ssh-askpass
no poder agarrar el teclado. Si su navegador está abierto en dicho sitio, puede ser útil cerrar el navegador o navegar fuera del sitio web agresivo. Si esta es la causa, es posible que le interese una configuración de escritorio que evite que los procesos individuales capten el enfoque completo (escritorio completo). En KDE, por ejemplo, esta configuración se puede encontrar en ( Configuración del sistema -> Comportamiento de la ventana -> Enfoque -> Prevención de robo de foco ). Si te sientes realmente paranoico, te recomendaría configurarlo enHigh
oExtreme
. Por supuesto, esto también puede prevenirgnome-ssh-askpass
de agarrar el teclado, o más exactamente: agarrar elX
foco.Paso # 2: Identificar procesos sospechosos:
Sabiendo que en Unix, los dispositivos aparecen como archivos uder
/dev
, la siguiente pregunta es qué dispositivo representa "el teclado" en la jerarquía del sistema de archivos. Podemos usar la utilidadlsof
(lista de archivos abiertos) para esto.Tenga en cuenta que la mayoría de los procesos que contienen dispositivos abiertos en un entorno de escritorio típico mantienen
Algunos antecedentes sobre lo que está sucediendo aquí:/dev/pts/<N>
(un pseudo tty ) abierto. Estos son los "dispositivos" de interés.En un escritorio gráfico típico de Linux, los procesos no hablan directamente con el teclado. En cambio, el
X
programa (Xorg) controla todos los eventos del teclado a través de un dispositivo/dev/input/event<N>
.X
utiliza un controlador de eventos (evdev) que, entre otras cosas, maneja eventos de teclado. También puede verificar esto mirando elX
registro:/var/log/Xorg.0.log
dondekeyboard
se menciona.Los eventos del teclado se reenvían desde el
X
controlador de eventos al proceso que tiene el foco del puntero del mouse en cualquier momento a través de la entrada estándar del proceso que está abierta/dev/pts/<N>
. En sentido estricto: un proceso en realidad no "agarrar el teclado", el teclado está en manos deX
, el proceso sólo tiene (o juego) "enfoque" o la atención deX
lo queX
puede reenviar los eventos de teclado para que a través de un descriptor de archivo abierto sobre la entrada estándar/dev/pts/<N>
.Paso # 3: ¿qué proceso tiene el foco Xorg en un momento particular?
¿Cómo calcular qué proceso tiene el foco en un momento particular? Aquí hay una pregunta de askubuntu que responde a esto:
El resumen de la respuesta es ejecutar un script como el siguiente en una terminal mientras navega con el mouse:
Paso # 4: profundiza en la actividad del proceso
Una vez que haya identificado un proceso sospechoso, el último paso es investigar este proceso individual. Para eso, puede recurrir al sistema de
/proc
archivos Linux (man 5 proc
).Casi todo lo que desee saber sobre un proceso está disponible en
/proc
. De hecho, los programas comolsof
(listar archivos abiertos), depuradores que examinan el estado del proceso y utilidades de listado de procesos comops
otop
, todos dependen de los/proc
que se encuentran en el núcleo para obtener datos.Usando
proc
puede encontrar dónde está el programa ejecutable del proceso en el disco (por ejemplo, cualquier programa fuera de los directorios estándar del sistema, especialmente si está tratando de esconderse bajo un tipo de nombre "no me preste atención" , puede ser sospechoso) y usar un depurador o rastreador de llamadas del sistema puede examinar qué están haciendo exactamente en el nivel de llamadas del sistema (incluso si no tiene su código fuente).Los pasos 2 y 3 deberían proporcionarle todas las ID de proceso
PID
que pueden estar leyendo su teclado. Para cada uno de estos PIDS (denotémoslos como$pid
) puede:Asigne $ pid a su línea de comando completa:
Asigne $ pid a su ejecutable en el disco:
Asigne $ pid a su directorio de trabajo actual:
Mapa $ pid a su entorno original
Rastree la actividad de llamada al sistema $ pid (y sus hijos-procs) en tiempo real:
(Hay más: ver
man 5 proc
)Si ve un proceso desconocido que reacciona a cada pulsación de tecla almacenándolo en un archivo (vía
write
) o enviándolo a través de la red a través desendto
, es posible que haya encontrado un rastreador de teclado.También puede verificar qué procesos tienen abiertos los puntos finales de red (tcp + udp):
Línea de fondo:
La causa más probable del error no es el malware, sino múltiples procesos que intentan obtener el control del teclado al mismo tiempo. Uno de los dos es
gnome-ssh-askpass
(el que imprime el error). El otro puede ser un navegador abierto en un sitio con un cuadro de diálogo de enfoque agresivo.Incluso en la remota posibilidad de que tengas algún malware instalado, la buena noticia es que, dado que estás en Linux, todos los procesos son transparentes para que puedas investigarlos e inspeccionarlos. Sería muy difícil para el malware realmente esconderse de usted o evitar que lo localice fácilmente utilizando las técnicas anteriores, eliminando sus procesos y eliminando todos sus archivos.
fuente
/dev/pts/7
(solo 3 valores pid únicos). Desplazándose a través de los resultados, parece que el dispositivo más útil es/dev/pts/15
que algunos están aguantando1, 3, 12, 16, 17, 21, 22, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 34
. ¿El teclado siempre7
? ¿Cómo identificaría cuál de estos es mi teclado?/usr/bin/X
) como/dev/input/eventN
donde se puede encontrar suN
mirando a la cadenaevdev
en/var/log/Xorg.0.log
. Luego, Xorg "reenvía" cada clic del teclado al proceso individual que tiene el "foco" del puntero del mouse en ese instante en particular. Cuando ejecutossh-askpass
veo que se ha/dev/pts/3
abierto, pero en cualquier entorno puede ser cualquier dispositivo pseudo tty. Entonces cualquiera de ustedes/dev/pts/N
puede ser relevante aquí.{firefox}
cuando hago clic en Firefox, cambia nuevamente{thunderbird}
cuando selecciono Thunderbird. Nada destaca como inesperado. Quizás esto va a su línea de fondo: el problema no viene de algo que agarra el teclado. Desearía estar seguro de que este aviso no tiene sentido o podría eliminarlo.firefox
) mientras visitaba un sitio web con una ventana emergente que llamaba la atención. A menos que descargue e instale regularmente software de fuentes dudosas (no canónicas), dudo mucho que haya instalado accidentalmente un sniffer de teclado en Ubuntu. Es bueno ser un poco paranoico, pero no hay necesidad de sudar demasiado.Mi problema se debió a dos
gnome-ssh-askpass
ventanas simultáneas . Tuve dos trabajos rsync en el mismo servidor a través de SSH, y ambos intentaron pedir la contraseña del certificado SSH. ¡Agruparlos (y encadenarlos) juntos me resolvió!fuente