Estou executando uma instalação do Ubuntu 14.04 que eu configuro há mais de 6 meses. Cerca de uma semana atrás, comecei a receber uma mensagem de erro:
Could not grab keyboard. A malicious client may be eavesdropping on your session.
Eu só o vi quando retornei ao meu computador depois de um tempo ausente (geralmente durante a noite). Várias vezes impediu que a tela bloqueie após o tempo limite definido (comecei a bloqueá-lo ativamente antes de sair).
Estou usando um teclado USB (Kinesis Advantage) diretamente conectado a uma porta USB na placa-mãe. Estou usando um mouse sem fio ELECOM .
Vou tentar desconectar o dongle do mouse antes de sair. De que outra forma eu poderia identificar se há um cliente mal-intencionado rastreando minhas teclas ou se este é um problema de conectividade?
Respostas:
Veja como resolver seu mistério. O objetivo é ensinar aos usuários "como pescar" usando os utilitários padrão do Ubuntu para investigar os detalhes de qualquer processo em seu sistema.
Etapa 1 (principalmente por curiosidade): identifique qual programa está causando esse erro:
No meu ambiente, o único programa que contém essa string de aviso no seu binário é
gnome-ssh-askpass
. Eu poderia procurar se há um bug registrado nesse programa em particular e até baixar sua fonteapt-get source ssh-askpass-gnome
(observe que o nome do pacote é diferente do nome do programa) para uma inspeção mais aprofundada.No entanto, suspeito que a causa raiz não seja um problema
gnome-ssh-askpass
. Comognome-ssh-askpass
está solicitando sua senha, seus desenvolvedores simplesmente optaram por agir com cautela ao não agarrar o teclado, assumir o pior cenário possível e fazer a mensagem parecer super-paranóica. Mas observe que digitar sua senha ou senha em alguma caixa de diálogo aleatória do site por acidente provavelmente não é uma boa ideia; portanto, nesse sentido, osgnome-ssh-askpass
desenvolvedores fizeram a ligação certa.Recentemente, mais e mais sites começaram a se engajar na prática de exibir um pop-up, esmaecendo tudo o resto fora da caixa de diálogo pop-up e agarrando agressivamente o foco. Essa pode ser a causa principal da
gnome-ssh-askpass
falha ao agarrar o teclado. Se o seu navegador estiver aberto nesse site, fechar o navegador ou navegar para fora do site agressivo pode ajudar. Se essa for a causa, você pode estar interessado em uma configuração da área de trabalho, impedindo que processos individuais obtenham o foco completo (área de trabalho completa). No KDE, por exemplo, esta configuração pode ser encontrada em ( Configurações do sistema -> Comportamento da janela -> Foco -> Prevenção de roubo de foco ). Se você se sentir realmente paranóico, eu recomendaria configurá-lo paraHigh
ouExtreme
. Obviamente, isso também pode impedirgnome-ssh-askpass
agarrar o teclado ou, mais precisamente: agarrar oX
foco.Etapa 2: identificar processos suspeitos:
Sabendo que no Unix, os dispositivos aparecem como arquivos
/dev
, a próxima pergunta é qual dispositivo representa "o teclado" na hierarquia do sistema de arquivos. Podemos usar olsof
utilitário (listar arquivos abertos) para isso.Observe que a maioria dos processos que mantêm os dispositivos abertos em um ambiente típico da área de trabalho está mantendo
Alguns antecedentes sobre o que está acontecendo aqui:/dev/pts/<N>
(uma pseudo-tty ) aberta. Estes são os "dispositivos" de interesse.Em uma área de trabalho gráfica típica do Linux, os processos não falam diretamente com o teclado. Em vez disso, o
X
programa (Xorg) controla todos os eventos do teclado através de um dispositivo/dev/input/event<N>
.X
usa um manipulador de eventos (evdev) que, entre outras coisas, manipula eventos do teclado. Você também pode verificar isso consultando oX
log:/var/log/Xorg.0.log
wherekeyboard
é mencionado.Os eventos do teclado são encaminhados do
X
manipulador de eventos para o processo que tem o foco do ponteiro do mouse a qualquer momento, através da entrada padrão do processo que está aberta/dev/pts/<N>
. Estritamente falando: um processo realmente não "agarra o teclado", o teclado é mantido porX
, o processo só tem (ou agarra) "foco" ou a atenção deX
modo queX
pode encaminhar eventos do teclado para ele por meio de um descritor de arquivo stdin aberto em/dev/pts/<N>
.Etapa 3: qual processo o Xorg focaliza em um determinado momento?
Como descobrir qual processo tem o foco em um determinado momento? Aqui está uma pergunta do askubuntu, respondendo a isso:
O resumo da resposta é executar um script como o seguinte em um terminal enquanto navega pelo mouse:
Etapa 4: aprofundar a atividade do processo
Depois de identificar um processo suspeito, a última etapa é investigar esse processo individual. Para isso, você pode recorrer ao sistema de
/proc
arquivos Linux (man 5 proc
).Quase tudo o que você pode querer saber sobre um processo está disponível em
/proc
. De fato, programas comolsof
(listar arquivos abertos), depuradores que examinam o estado do processo e utilitários de listagem de processos comops
outop
, todos contam com o/proc
que é preenchido pelo kernel, para dados.O uso de
proc
você pode descobrir onde o programa executável do processo está no disco (por exemplo, qualquer programa fora dos diretórios padrão do sistema, especialmente se estiver tentando se esconder sob um tipo de nome "não preste atenção em mim" , pode ser suspeito) e usar um depurador ou rastreador de chamadas do sistema, você pode examinar o que exatamente eles estão fazendo no nível de chamada do sistema (mesmo se você não tiver o código fonte).As etapas 2 e 3 devem fornecer todos os IDs de processo
PID
que podem estar potencialmente lendo seu teclado. Para cada um desses PIDS (vamos denotar cada um como$pid
), você pode:Mapeie $ pid para sua linha de comando completa:
Mapeie $ pid para o executável em disco:
Mapeie $ pid para seu diretório de trabalho atual:
Mapeie $ pid para seu ambiente original
Rastreie a atividade de chamada do sistema $ pid (e seus filhos-procs) em tempo real:
(Há mais: veja
man 5 proc
)Se você vir um processo desconhecido que reage a cada pressionamento de tecla, armazenando-o em um arquivo (via
write
) ou enviando-o pela rede para viasendto
, você pode ter encontrado um sniffer de teclado.Você também pode verificar quais processos têm pontos de extremidade de rede (tcp + udp) abertos:
Bottom line:
A causa mais provável do erro não é malware, mas vários processos que tentam obter o controle do teclado ao mesmo tempo. Um dos dois é
gnome-ssh-askpass
(aquele que imprime o erro). O outro pode ser um navegador aberto em um site com uma caixa de diálogo agressiva para aquisição de foco.Mesmo com a chance remota de você realmente ter algum malware instalado, a boa notícia é que, como você está no Linux, todos os processos são transparentes para você pesquisar e inspecionar. Seria muito difícil para o malware realmente se esconder de você ou impedi-lo de localizá-lo facilmente usando as técnicas acima, matando seus processos e removendo todos os seus arquivos.
fonte
/dev/pts/7
(apenas 3 valores únicos de pid). Percorrendo os resultados, parece que o dispositivo mais útil é/dev/pts/15
que alguns estão em espera1, 3, 12, 16, 17, 21, 22, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 34
. O teclado é sempre7
? Como identificaria qual desses é o meu teclado?/usr/bin/X
) como/dev/input/eventN
onde você pode encontrar o seuN
olhando para a stringevdev
em/var/log/Xorg.0.log
. O Xorg então "encaminha" cada clique do teclado para o processo individual que tem o ponteiro do mouse "focalizado" naquele instante em particular. Quando corrossh-askpass
, vejo que ele está/dev/pts/3
aberto, mas em qualquer ambiente pode ser qualquer dispositivo pseudo-tty. Portanto, qualquer um de vocês/dev/pts/N
pode ser relevante aqui.{firefox}
quando clico no firefox, alterna novamente para{thunderbird}
quando seleciono thunderbird. Nada se destaca como inesperado. Talvez isso vá para o seu ponto principal : a questão não vem de algo agarrando o teclado. Eu gostaria que este aviso não tivesse sentido ou pudesse eliminá-lo.firefox
) enquanto visitava um site com um pop-up que chamava a atenção. A menos que você baixe e instale regularmente software de fontes duvidosas (não canônicas), duvido muito que você tenha instalado acidentalmente um sniffer de teclado no Ubuntu. É bom ser um pouco paranóico, mas não há necessidade de exagerar.Meu problema ocorreu devido a duas
gnome-ssh-askpass
janelas simultâneas . Eu tive dois trabalhos de rsync no mesmo servidor através do SSH e ambos tentaram solicitar a senha do certificado SSH. Agrupar (e encadear) eles resolvidos para mim!fonte