Einstellung zum Schutz des Gnome-Terminals vor Schlüsselprotokollierung

15

Sieht so aus, als wäre es einfach, Tastatureingaben aller Prozesse desselben Benutzers zu protokollieren. Ein grundlegender Keylogger ist 'xinput'.

xinput test-xi2

Der Befehl generiert ein Protokoll aller Tastendrücke. Leider beinhaltet dies Passwörter in gnome-terminal. Googeln schlug vor, dass das Greifen der Tastatur andere Fenster daran hindern könnte, Tastenanschläge zu erfassen.

Gibt es eine Möglichkeit, die XI2-Protokollierung im Gnome-Terminal zu verhindern? Oder gibt es ein X-Terminal mit dieser Funktion?

yanychar
quelle
Ist das eine Lösung?
Radu Rădeanu

Antworten:

13

Es ist nicht möglich , da alle Tastenanschläge an den X - Server weitergeleitet, für XInput / jedes beliebiges Programm zur Verfügung. (Tatsächlich ist es Teil des Designs). Neue Anzeigeserver wie Wayland und Mir beheben solche Sicherheitsprobleme in X. Die einzige echte Lösung wäre die Verwendung von Wayland oder Mir anstelle von X. In diesem Blogbeitrag wird dieses Problem beschrieben.

Ramchandra Apte
quelle
Also geht die Eingabe in gksu für das Passwort auch an xinput?
Yanychar
1
@yanychar yup, tatsächlich habe ich über diese Methode der Schlüsselprotokollierung in diesem Blog-Beitrag erfahren : theinvisiblethings.blogspot.in/2011/04/… (selbst ich war überrascht, als ich den Blog-Beitrag zum ersten Mal las)
Ramchandra Apte
2
X11 verfügt über einen nicht vertrauenswürdigen Modus, mit dem Sie verhindern können, dass Programme auf "schlechte" Erweiterungen zugreifen.
Michał Zieliński
-1

Nicht wirklich. Selbst wenn es Ihnen irgendwie gelingt, die Tastatur in X zu greifen (ich weiß nicht, ob dies überhaupt möglich ist, ich bezweifle dies), hat ein Keylogger-Dienstprogramm, das als Root ausgeführt wird, immer Zugriff auf die Tastatur.

Januar
quelle
4
Der obige Befehl erfasst die Tastatur in X ohne Root-Berechtigung. Es ist also ganz einfach, einen Keylogger auf einem Ubuntu-Desktop zu installieren. Die Frage ist, wie dies vermieden werden kann.
Yanychar
-3

Wie andere hier sagten, ist es nicht möglich, nur ein Programm wie das Gnome-Terminal oder ein anderes Terminal vor der Schlüsselprotokollierung zu schützen, nur wenn Sie Standardbenutzer auf die Ausführung eines Schlüsselprotokolliervorgangs beschränken oder wenn Sie einen Schlüsselprotokolliervorgang anhalten.

Als nächstes werde ich Ihnen zeigen, wie Sie dies im Falle eines xinputBefehls tun können , aber die gleichen Methoden können für jeden anderen Key Logger verwendet werden. Wenn ein Key Logger einen xinputBefehl verwendet, ist es nicht erforderlich, die Methode darauf anzuwenden, solange Sie sie anwenden xinput.

1. Beschränken Sie Standardbenutzer auf die Verwendung von xinputBefehlen

Mit dem folgenden Befehl können Sie Standardbenutzern die Verwendung von xinputBefehlen einschränken :

sudo chmod go-x /usr/bin/xinput

2. Beschränken Sie Standardbenutzer auf die Verwendung von xinputBefehlen mit test-xi2Argumenten

Sie können Standardbenutzer auf die Verwendung von xinputBefehlen mit test-xi2Argumenten beschränken, indem Sie einen Wrapper für diesen Befehl schreiben. Gehen Sie dazu in das Terminal und folgen Sie den Anweisungen unten:

  • Holen Sie sich root-Rechte:

    sudo -i
    
  • Verschieben Sie die xinputDatei in ein anderes Verzeichnis, das sich nicht im PATH eines Benutzers befindet (zum Beispiel /opt):

    mv /usr/bin/xinput /new/path/to/xinput
    
  • Erstellen Sie Ihren Wrapper für den xinputBefehl in /usr/bin:

    gedit /usr/bin/xinput
    

    Fügen Sie das folgende Skript hinzu:

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

    Speichern Sie die Datei und schließen Sie sie.

  • Machen Sie den neuen Wrapper ausführbar:

    chmod +x /usr/bin/xinput
    

Während die erste Methode die Sicherheit ist, kann der Benutzer mit der zweiten Methode sie dennoch umgehen, indem er das Original xinputdirekt aufruft, wenn er den neuen Standort kennt.

3. Stoppen / pausieren Sie einen xinputProzess

Sie können jeden xinputVorgang anhalten oder anhalten , bevor Sie ein Kennwort oder etwas anderes eingeben, das Sie nicht protokollieren möchten. Fügen Sie dazu die folgende Bash-Funktion am Ende Ihrer ~/.bashrcDatei hinzu:

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
}

Jetzt, nachdem Sie Ihr Terminal wieder geöffnet haben, können Sie jederzeit mit dieser Funktion:

  • alle xinputProzesse stoppen / beenden :

    processof xinput stop
    
  • alle xinputProzesse anhalten:

    processof xinput pause
    
  • alle xinputProzesse wieder aufnehmen :

    processof xinput continue
    

Tatsächlich können Sie mit dieser Funktion jeden Vorgang anhalten / anhalten, den Sie vor einer Aktion ausführen möchten (z. B. die Eingabe des Passworts):

processof [process_name] [stop|pause|continue]

Wenn Sie nicht wissen, wie Sie einen aktiven Keylogger auf Ihrem System erkennen können, lesen Sie:

Diese Methoden sind vielleicht nicht die besten Lösungen, aber ich hoffe, Ihnen eine Vorstellung davon zu geben, was Sie tun können ...

Radu Rădeanu
quelle
5
xinput ist nur ein Beispiel für einen Keylogger. Die Frage ist, ob Eingaben von jedem möglichen Keylogger geschützt werden sollen.
Yanychar
5
Jedes Programm kann über Sockets und Keylog eine Verbindung zum X-Server herstellen. Es ist nicht einmal erforderlich, dass der Key Logger ein externes Programm verwendet.
Ramchandra Apte
3
@ RaduRădeanu Deine Lösung ist ineffektiv und unbrauchbar. xinputist nicht einmal SUID (-rwxr-xr-x 1 root root 48504 15. August 2012 / usr / bin / xinput)
Ramchandra Apte
1
@ RaduRădeanu Weil du keinen xinput zum Keylog brauchst. (Es ist weder ein externer Befehl noch ein SUID für das Schadprogramm erforderlich.) Mit Ihrer Lösung kann nur die Ausführung von xinput
Ramchandra Apte
3
Das grundlegendste Beispiel für die Ineffektivität: Kopieren Sie eine Standardversion von (ubuntu) xinput von einem USB-Stick, laden Sie sie vom Internet herunter oder senden Sie sie per E-Mail an sich selbst und führen Sie sie in Ihrem privaten Ordner aus. Gleicher Effekt wie bei Verwendung des uneingeschränkten Befehls / usr / bin / xinput.
Allo