Configuração para proteger o gnome-terminal do registro de chaves

14

Parece fácil registrar as teclas digitadas de todos os processos do mesmo usuário. Um keylogger básico é 'xinput'.

xinput test-xi2

O comando gera o registro de todas as teclas pressionadas. Infelizmente, isso inclui senhas no gnome-terminal. Pesquisando no Google sugeriu que o uso de teclado pode impedir que outras janelas capturem toques de tecla.

Existe uma maneira de impedir o registro em log do XI2 no gnome-terminal? Ou há um terminal X que tenha esse recurso?

    
por yanychar 24.03.2012 / 18:08

3 respostas

12

Não é possível que qualquer pressionamento de teclas passado ao servidor X, esteja disponível para xinput / qualquer programa arbitrário. (Na verdade, faz parte do design). Novos servidores de exibição como o Wayland e o Mir estão consertando esses problemas de segurança no X. A única solução real seria usar Wayland ou Mir em vez do X. Esta postagem no blog detalha esse problema.

    
por Ramchandra Apte 23.09.2013 / 17:40
-1

Não realmente. Mesmo que, de alguma forma, você consiga pegar o teclado dentro do X (não sei se isso é possível, duvido), um utilitário keylogger rodando como root sempre terá acesso ao teclado.

    
por January 18.09.2012 / 10:27
-3

Como outros disseram aqui, não é possível proteger apenas um programa como o terminal gnome ou outro terminal do registro de chaves, somente se você restringir os usuários padrão a executarem qualquer registrador de chaves ou se você parar / pausar qualquer processo de registro de chaves. / p>

Em seguida, mostrarei como você pode fazer isso no caso do comando xinput , mas os mesmos métodos podem ser usados para qualquer outro keylogger. Se um registrador de chaves usar o comando xinput , não será necessário aplicar o método a ele, contanto que você o aplique em xinput .

1. Restringir usuários padrão a usar o comando xinput

Você pode impedir que usuários padrão usem o comando xinput usando o seguinte comando:

sudo chmod go-x /usr/bin/xinput

2. Restringir usuários padrão a usar o comando xinput com test-xi2 argumento

Você pode impedir que usuários padrão usem o comando xinput com test-xi2 argumento escrevendo um wrapper para este comando. Para fazer isso, vá no terminal e siga as instruções abaixo:

  • Obtenha privilégios de root:

    sudo -i
    
  • Mova o arquivo xinput em outro diretório que não esteja no PATH de nenhum usuário (por exemplo /opt ):

    mv /usr/bin/xinput /new/path/to/xinput
    
  • Crie seu wrapper para o comando xinput em /usr/bin :

    gedit /usr/bin/xinput
    

    Adicione o seguinte script dentro:

    #!/bin/bash
    if [ "$@" != "${@/test-xi2/}" -a "$(whoami)" != "root" ]; then
        echo "'basename $0' $@: Permission denied"
    else
        /new/path/to/xinput $@
    fi
    

    Salve o arquivo e feche-o.

  • Crie o novo executável do wrapper:

    chmod +x /usr/bin/xinput
    

Enquanto o primeiro método é segurança, usando o segundo método, o usuário ainda pode contorná-lo chamando o original xinput diretamente se ele souber sua nova localização.

3. Parar / pausar qualquer xinput process

Você pode interromper ou pausar qualquer processo xinput antes de inserir uma senha ou qualquer outra coisa que não deseja registrar. Para fazer isso, adicione a seguinte função bash no final do seu arquivo ~/.bashrc :

processof () {
    xinput_pids=" $(pidof $1) "
    if [ "$xinput_pids" = "  " ]; then
        echo "Nothing to stop/pause/continue. $1: no such process!"
        return
    fi
    for pid in $xinput_pids; do
        case $2 in
        "stop") 
            kill $pid
            echo "$1: stopped"
            ;;
        "pause")
            kill -stop $pid
            echo "$1: paused"   
            ;;
        "continue")
            kill -cont $pid
            echo "$1: continue"
            ;;
        *)
            echo "$1 is runnig"
            ;;
        esac
    done
}

Agora, depois de reabrir seu terminal, sempre que desejar, usando essa função, você poderá:

  • interrompe / elimina todos os processos xinput :

    processof xinput stop
    
  • pause todos os processos xinput :

    processof xinput pause
    
  • retomar todos os processos xinput :

    processof xinput continue
    

Na verdade, com esta função você pode parar / pausar qualquer processo que você deseja fazer antes (como digitar a senha):

processof [process_name] [stop|pause|continue]

Se você não souber como detectar um keylogger ativo em seu sistema, consulte:

Esses métodos talvez não sejam as melhores soluções, mas espero que você tenha uma ideia sobre o que você pode fazer ...

    
por Radu Rădeanu 24.09.2013 / 08:27

Tags