Impostazione per proteggere gnome-terminal dalla registrazione delle chiavi


15

Sembra che sia facile registrare le sequenze di tasti di tutti i processi dello stesso utente. Un keylogger di base è 'xinput'.

xinput test-xi2

Il comando genera il registro di tutti i tasti premuti. Sfortunatamente, questo include le password in gnome-terminal. Google ha suggerito che afferrare la tastiera potrebbe impedire ad altre finestre di catturare i tasti premuti.

C'è un modo per impedire la registrazione XI2 in gnome-terminal? O c'è un terminale X che ha questa funzione?


E ' questa una soluzione?
Radu Rădeanu,

Risposte:


13

Non è possibile poiché qualsiasi sequenza di tasti trasmessa al server X, sarà disponibile per xinput / qualsiasi programma arbitrario. (In realtà, fa parte del design). Nuovi server di visualizzazione come Wayland e Mir stanno risolvendo tali problemi di sicurezza in X. L'unica vera soluzione sarebbe quella di utilizzare Wayland o Mir invece di X. Questo post sul blog illustra in dettaglio questo problema.


Quindi l'input a gksu per la password va anche su xinput?
yanychar,

1
@yanychar yup, in realtà ho scoperto questo metodo di registrazione delle chiavi attraverso questo post del blog: theinvisiblethings.blogspot.in/2011/04/… (anche io sono stato sorpreso la prima volta che ho letto il post del blog)
Ramchandra Apte

2
X11 in realtà ha una modalità non attendibile che puoi usare per impedire ai programmi di accedere a estensioni "cattive" - x.org/wiki/Development/Documentation/Security
Michał Zieliński

-1

Non proprio. Anche se in qualche modo riesci ad afferrare la tastiera all'interno di X (non so se sia possibile, ne dubito), un'utilità keylogger in esecuzione come root avrà sempre accesso alla tastiera.


4
Il comando sopra prende la tastiera all'interno di X senza il privilegio di root. Quindi è banale installare un keylogger su un desktop Ubuntu. La domanda è: come evitarlo.
yanychar,

-3

Come altri hanno detto qui, non è possibile proteggere solo un programma come gnome-terminal o altri terminali dalla registrazione delle chiavi, solo se si limita agli utenti standard di eseguire qualsiasi registratore di chiavi o se si interrompe / mette in pausa qualsiasi processo di registrazione dei tasti.

Successivamente ti mostrerò come è possibile eseguire queste operazioni in caso di xinputcomando, ma gli stessi metodi possono essere utilizzati per qualsiasi altro registratore di chiavi. Se un registratore di chiavi utilizza il xinputcomando, non è necessario applicare il metodo su di esso finché lo si applica xinput.

1. Limitare gli utenti standard all'uso del xinputcomando

È possibile limitare gli utenti standard all'uso del xinputcomando utilizzando il comando seguente:

sudo chmod go-x /usr/bin/xinput

2. Limitare gli utenti standard all'uso del xinputcomando con test-xi2argomento

È possibile limitare gli utenti standard all'uso del xinputcomando con test-xi2argomento scrivendo un wrapper per questo comando. Per fare ciò, vai nel terminale e segui le istruzioni seguenti:

  • Ottieni i privilegi di root:

    sudo -i
    
  • Sposta il xinputfile in un'altra directory che non si trova nel PERCORSO di un utente (ad esempio /opt):

    mv /usr/bin/xinput /new/path/to/xinput
    
  • Crea il tuo wrapper per il xinputcomando in /usr/bin:

    gedit /usr/bin/xinput
    

    Aggiungi il seguente script all'interno:

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

    Salva il file e chiudilo.

  • Rendi eseguibile il nuovo wrapper:

    chmod +x /usr/bin/xinput
    

Mentre il primo metodo è la sicurezza, utilizzando il secondo metodo, l'utente può comunque aggirarlo chiamando xinputdirettamente l'originale se conosce la sua nuova posizione.

3. Arresta / metti in pausa qualsiasi xinputprocesso

È possibile interrompere o mettere in pausa qualsiasi xinputprocesso prima di inserire una password o qualsiasi altra cosa che non si desidera registrare. Per fare ciò, aggiungi la seguente funzione bash alla fine del tuo ~/.bashrcfile:

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
}

Ora, dopo aver riaperto il terminale, ogni volta che vuoi, usando questa funzione puoi:

  • interrompere / uccidere tutti i xinputprocessi:

    processof xinput stop
    
  • mettere in pausa tutti i xinputprocessi:

    processof xinput pause
    
  • riprendere tutti i xinputprocessi:

    processof xinput continue
    

In effetti, con questa funzione è possibile interrompere / mettere in pausa qualsiasi processo prima di fare qualcosa (come inserire la password):

processof [process_name] [stop|pause|continue]

Se non sai come rilevare come rilevare un keylogger attivo sul tuo sistema, vedi:

Questi metodi forse non sono le migliori soluzioni, ma spero di darti un'idea di cosa puoi fare ...


5
xinput è solo un esempio di keylogger. La domanda riguarda la protezione degli input da ogni possibile keylogger.
yanychar,

5
Qualsiasi programma può connettersi al server X tramite socket e keylog, non è nemmeno necessario che il key logger utilizzi un programma esterno.
Ramchandra Apte,

3
@ RaduRădeanu la tua soluzione è inefficace e inutile. xinputnon è nemmeno SUID (-rwxr-xr-x 1 root root 48504 15 agosto 2012 / usr / bin / xinput)
Ramchandra Apte

1
@ RaduRădeanu Perché non è necessario xinput per keylog. (non ha bisogno di un comando esterno né il programma dannoso deve essere SUID) la tua soluzione consentirà semplicemente di controllare l'esecuzione di xinput
Ramchandra Apte

3
L'esempio più semplice per dimostrarlo inefficace: copia una versione stock di (ubuntu) xinput da una chiavetta USB, scaricala dal web o inviala per e-mail a te stesso ed eseguila nella tua cartella home. Stesso effetto dell'utilizzo di / usr / bin / xinput senza restrizioni.
allo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.