Espionando o uso do teclado no Linux

Para ambientes Windows, keylogger é um temível recurso muito conhecido quando vem como função adicional em um malware, tal como um trojan ou vírus que se instala sem o consentimento do usuário e então captura seus logins e senhas. Na prática um keylogger é simplesmente uma aplicação como qualquer outra cuja única finalidade é registrar as teclas digitadas pelo usuário e que pode ser usado como recurso adicional de segurança também em ambientes Linux. Conheça abaixo como instalar e usar um deles.

O que é um keylogger

como dito, um keylogger não é um vírus, nem mesmo um trojan (vide este meu texto sobre tipos de malware), embora estes tipos de malware possam conter e/ou instalar um keylogger no computador da vítima.

Seu funcionamento é bem simples e consiste apenas em capturar o pressionamento das teclas [todas] no teclado de um computador para que seja então as armazenado em um arquivo, enviado por e-mail etc para que então este conteúdo possa ser lido e analisado futuramente.

Uma mensagem de advertência

Fica então uma palavra de advertência quanto a responsabilidade de uso deste tipo de programa: Tal utilitário deve ser usado com cautela, prudência e responsabilidade visto que o seu uso pode implicar na invasão de privacidade alheia.

Esteja ciente, então, que usá-lo de forma leviana poderá rendê-lo um belo processo criminal sem qualquer possibilidade de responsabilizar o autor deste texto nem mesmo o autor do programa pelos seus atos.

Não vou entrar aqui no mérito de explicar onde, quando, e nem porque usá-los já que o uso deste tipo de aplicação é de inteira responsabilidade do seu usuário, então caso se julgue imaturo o bastante para usar tal tipo de ferramenta é melhor que pare a leitura deste texto aqui.

Keyloggers disponíveis para Linux

Como já disse no começo este tipo de recurso é muito popular como função adicional de vírus e trojans e ambientes Windows. No Linux eles são apenas ferramentas adicionais que podem ser instaladas inclusive via repositório oficial de pacotes da sua distribuição preferida.

Os três utilitários com este fim que encontrei em minhas pesquisas sobre o assunto, após responder um questionamento sobre este assunto em uma das várias listas de discussão que participo:

LKL

O LKL Linux KeyLogger[1] é um keylogger que roda sobre a arquitetura x86, “farejando” tudo o que digitado no teclado, traduzindo os keycodes para códigos ASC e então os registrando em um arquivo.

A sua última versão é a 0.1.1 e foi lançada em out/2005.

Uberkey

O Uberkey[2] também é um keylogger para arquitetura x86 que roda tanto em Linux quando em BSD (talvez no Mac OS também rode).

A sua última versão é a 1.2 está disponível em [3] e foi lançada em Nov/2003. Além de bem antiga os últimos relatos no site projeto registram a existência de um bug que impede o seu correto funcionamento com teclados Ps/2 e USB!

Logkeys

O Logkeys é um keylogger que como o seu autor afirma “não é melhor do que os demais disponíveis para Linux”, entretanto ele tem dois grandes diferenciais em relação aos outros dois que são, estar atualizado e funcionar de verdade.

Existem outros keylogger e o autor do Logkey apresenta alguns deles no site que, embora seja bem simples, é bem organizado e informativo.

Instalando o Logkeys

Sabendo que o Logkeys é mais funcional deles nós partiremos para sua instalação e para felicidade dos usuários do Ubuntu Linux já existe um pacote prontinho para esta distro (logkeys), nos repositórios oficiais, necessitanto apenas que você use o Synaptic (Menu principal > Sistema > Administração > Gerenciador de Pacotes Synaptics), ou mesmo o aptitude (via linha de comandos para instalá-lo).

Qualquer que seja o método lembre-se que você precisará de privilégios administrativos (senha de root) para poder instalar quaisquer coisas no seu sistema.

Pela linha  de comandos o procedimento então seria apenas este:

sudo aptitude install logkeys

Uma vez instalado você pode executá-lo manualmente ou então configurá-lo para iniciar junto com o boot do sistema (em ambos os casos você precisa ter privilégios administrativos).

Executando o Logkeys pela linha de comandos

A forma mais simples de iniciar o Logkeys é digitando:

sudo logkeys -s

Observe que para executar o logkeys você precisa privilégios de root. O parâmetro -s (de start) ordena que ele inicie a gravação no seu arquivo de log padrão que é o “/var/log/logkeys.log” e possui permissão de leitura/escrita apenas para o usuário root.

Se for desejável definir um arquivo de log diferente deste você pode incluir a opção -o (output) seguido do caminho e nome do arquivo que será criado com permissões 600 (rw——-), caso não exista, ou acrescentado caso já exista.

Onde está o meu teclado?

Outro parâmetro importante de se conhecer é o -d (device) ele é quem define o dispositivo de teclado no seu sistema. Se você não souber qual ele é, talvez você não consiga gravar informação nenhuma. Para usá-lo simplesmente acrescente no final da linha de comandos o parâmetro -d /dev/input/eventX, onde “eventX” pode ser descoberto olhando o conteúdo do arquivo /proc/bus/input/devices.

No meu sistema, este arquivo se parece com isso:

$ cat /proc/bus/input/devices
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
U: Uniq=
H: Handlers=kbd event0
B: EV=3
B: KEY=100000 0 0 0

I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=LNXPWRBN/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
U: Uniq=
H: Handlers=kbd event1
B: EV=3
B: KEY=100000 0 0 0

I: Bus=0003 Vendor=093a Product=2510 Version=0110
N: Name="PIXART USB OPTICAL MOUSE"
P: Phys=usb-0000:00:03.1-2.1/input0
S: Sysfs=/devices/pci0000:00/0000:00:03.1/usb3/3-2/3-2.1/3-2.1:1.0/input/input2
U: Uniq=
H: Handlers=mouse0 event2
B: EV=17
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103
B: MSC=10

I: Bus=0003 Vendor=0ac8 Product=305b Version=0100
N: Name="zc3xx"
P: Phys=usb-0000:00:03.1-2.3/input0
S: Sysfs=/devices/pci0000:00/0000:00:03.1/usb3/3-2/3-2.3/input/input6
U: Uniq=
H: Handlers=kbd event5
B: EV=3
B: KEY=100000 0 0 0 0 0 0

I: Bus=0003 Vendor=0a81 Product=0101 Version=0110
N: Name="CHESEN USB Keyboard"
P: Phys=usb-0000:00:03.1-2.4/input0
S: Sysfs=/devices/pci0000:00/0000:00:03.1/usb3/3-2/3-2.4/3-2.4:1.0/input/input7
U: Uniq=
H: Handlers=sysrq kbd event3
B: EV=120013
B: KEY=10000 7 ff9f207a c14057ff febeffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=1f

I: Bus=0003 Vendor=0a81 Product=0101 Version=0110
N: Name="CHESEN USB Keyboard"
P: Phys=usb-0000:00:03.1-2.4/input1
S: Sysfs=/devices/pci0000:00/0000:00:03.1/usb3/3-2/3-2.4/3-2.4:1.1/input/input8
U: Uniq=
H: Handlers=kbd event4
B: EV=13
B: KEY=2020000 3878 d801d001 1e0000 0 0 0
B: MSC=10

Não sei exatamente qual é o processo usado para determinar qual será o dispositivo usado por padrão, mas me parece que ele “chuta” este valor, e diga-se de passagem, chuta muito mal. No meu sistema ele escolheu por padrão o event5 e que se trata na verdade da minha webcam USB.

Conforme se pode ver neste log o correto seria event3 ou event4. Em resumo para rodar o logkeys manualmente em meu sistema eu poderia simplesmente executar o comando a seguir:

sudo logkeys -s -d /dev/input/event3

Com isso o logkeys iniciaria o processo em modo daemon que roda em segundo plano e registraria todas as teclas pressionadas em meu teclado a partir de então.

Parando o Logkeys

Se você iniciou o Logkeys manualmente para encerra-lo simplesmente digite o comando:

sudo logkeys -k

O parâmetro -k (kill) é o responsável por interromper a captura de teclas e encerrar o programa.

Configurando o Logkeys para iniciar no boot

O pacote do Logkeys para o Ubuntu já possui um arquivo de configuração padrão (em /etc/default/logkeys) e o script de inicialização (em /etc/init.d/logkeys).

Para ativarmos o monitoramento desde o boot, nós devemos apenas alterar este arquivo de configuração que se parece com o mostrado abaixo:

$ cat /etc/default/logkeys
ENABLED=0
LOGFILE=/var/log/logkeys

# This should be updated according to your hardware
# Check README.Debian for more info
DEVICE=/dev/input/event5

Observe que temos três variáveis a serem modificadas:

ENABLED=0
Mude para ENABLED=1 para que no próximo boot o logkeys seja iniciado

LOGFILE=/var/log/logkeys
Se desejar que o arquivo de log seja criado em outro caminho altere-o aqui

DEVICE=/dev/input/event5
Altere o caminho para corresponder ao seu dispositivo de teclado, conforme explicado anteriormente.

Após alterar estas variáveis, salve o arquivo e então reinicie o seu computador ou então digite o comando abaixo para iniciar a gravação de teclas.

sudo invoke-rc.d logkeys start

Conclusão

Como visto a configuração e uso da ferramenta é bem simples e não requer muito conhecimento técnico. O único requisito é que se saiba a senha administrativa do sistema para configurá-lo e para ler o arquivo de log.

E por fim, não me cabe o dever de julgar como você irá usar esta ferramenta, mas não custa nada lembrar mais uma vez que é exclusivamente sua a responsabilidade sobre o uso deste programa.

Referências

[1] LKL Linux Keylogger. Disponível em <http://sourceforge.net/projects/lkl/>
[2] Uberkey. disponível em <http://freshmeat.net/projects/uberkey/>
[3] Uberkey Download. Disponível em <http://gnu.ethz.ch/linuks.mine.nu/uberkey/>
[4] Logkeys. Disponível em <http://code.google.com/p/logkeys/>

16 comentários em “Espionando o uso do teclado no Linux”

  1. Olá, em primeiro lugar gostei das dicas. Instalei o Logkeys ,no entanto, não sou muito boa com comandos, terminais essas coisas típicas do linux. Como faço para ver se realmente o meu logkey está funcionando?
    Espero resposta.

  2. Olá @Nadia Frazão ,

    Se ele estiver funcionando corretamente você deverá vê-lo na lista de processos do sistema, o que você pode consultar pela linha de comandos usando os comandos “top”, “htop” ou “ps -aux”;, ou também pelo modo gráfico usando a ferramenta “Monitor de Sistema”.

    Deverá haver um processo com o nome logkeys na listagem de qualquer uma destas ferramentas e caso não encontre é provável que o processo não tenha sido iniciado. Neste caso sugiro dar uma lida nas sessões “Executando o Logkeys pela linha de comandos” e “Configurando o Logkeys para iniciar no boot” nelas eu expliquei como iniciar o Logkeys.

    abç

  3. @wando
    Conforme disse no texto, na época em que fiz os testes apenas o Logkeys era funcional. Para ter uma informação atualizada o ideal seria dar uma olhada nos sites e verificar se houve alguma mudança.

    abç

  4. Olá, tambem sou novo com ubuntu… e eu tentei instalar com essa linha de comando e não encontrou nenhum pacote, tanto com aptitude e apt-get, dai um update nos dois e mesmo assim não funcionou.

  5. @Rodrigo ,
    O pacote logkeys está disponível no canal “universe”, por isso é preciso certificar-se de que este canal esteja habilitado em seu sistema (faltou informar isso no texto – falha minha). Há inúmeras maneiras de fazer isso, mas só vou citar uma delas por acreditar que será a mais simples, então teste ai:

    * Vá até a “Central de Programas” do Ubuntu, no menu “Editar” escolha “Canais de Software”
    * Na aplicação “Canais de software” que se abrirá marque a opção “Software livre e gratuito mantido pela comunidade (universe)”. Particularmente eu sempre deixo marcadas as opções “main”, “universe”, “restricted”, “multiverse”, mas só a opção que indiquei deve ser suficiente para instalar o logkeys.
    * Feche a janela e confirme a opção para atualizar a lista de pacotes. Com isso você encontrará e poderá instalar o logkeys.

  6. Ola Well R Braga

    O logkeys estava funcionando perfeitamente no UBUNTU 12.04.
    Atualizei para o 12.10 e ele nao funciona mais.
    Verifiquei as configuracoes e dev/input está correto
    Logkeys é levantado no boot do sistema corretamente porem

    Ele nao está lendo o teclado … O arquivo de log está sempre ZERADO

    Tem alguma dica

    Obrigado

    1. Salve Gabriel,
      Ainda não me entusiasmei para atualizar o Ubuntu e permaneço com o 12.04 que está me atendendo muito bem. Apenas pela sua descrição não tenho como ajudar, mas o que me vem a mente agora é sugerir que você execute-o a partir da linha de comandos e veja qual é o resultado, assim você terá informações para começar a garimpar uma solução.

      abç

  7. Olá Wellington,

    Não consegui rodar no meu Ubuntu 13.04. Teria como você conferir isso? Olhei até o manual do Logkeys, no entanto, não grava nada no arquivo de log. O arquivo fica sempre em branco, já até tentei uma solução que encontrei na internet de setar o meu padrão do teclado .map, no caso foi “pt_Br.map”, mas não deu certo.

  8. Meu teclado aparece
    I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
    N: Name=”AT Translated Set 2 keyboard”
    P: Phys=isa0060/serio0/input0
    S: Sysfs=/devices/platform/i8042/serio0/input/input3
    U: Uniq=
    H: Handlers=sysrq kbd event3
    B: PROP=0
    B: EV=120013
    B: KEY=20000 200 20 0 0 0 0 500f 2100002 83803078 f900d401 feffffdf ffefffff ffffffff fffffffe
    B: MSC=10
    B: LED=7

    Configuro para o event 3 mas n registra nada… tem mais alguma dica.

  9. Olá, parabéns pelo post.

    Estou usando Linux Mint 14 e instalei o logkeys, tudo de acordo com o que informa neste post. Contudo abri, para testar o Writer, escrevi algumas coisas e depois fechei. Depois abri, como root, o log (var/log/logkeys) e estava vazio. Supondo que eu não errei o arquivo do meu teclado, que é o “event4”, sabe me orientar o que poderia ser?

    Agradeço pela atenção.

  10. Para iniciar automaticamente no boot tenho um método mais fácil:

    $sudo gedit /etc/rc.local

    no final do arquivo, antes de “exit” digito:

    sudo logkeys -s –no-func-keys -o /home/USER/.keys/keys.log

    Inicia automaticamente e não apresenta problemas com layout de teclado. Se o teclado for padrão americano, basta adicionar “-u” após “sudo logkeys”.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.