Wie soll ich den Fehler beheben? “Tastatur konnte nicht erfasst werden. Möglicherweise belauscht ein böswilliger Client Ihre Sitzung. “

14

Ich verwende eine Installation von Ubuntu 14.04, die ich über 6 Monate eingerichtet habe. Vor ungefähr einer Woche bekam ich eine Fehlermeldung:

Could not grab keyboard. A malicious client may be eavesdropping on your session.

Ich habe es erst gesehen, als ich nach längerer Abwesenheit (normalerweise über Nacht) zu meinem Computer zurückgekehrt bin. Es hat mehrmals verhindert, dass der Bildschirm nach dem eingestellten Timeout gesperrt wird (ich habe damit begonnen, ihn vor dem Verlassen aktiv zu sperren).

Ich verwende eine USB-Tastatur (Kinesis Advantage), die direkt mit einem USB-Anschluss auf dem Motherboard verbunden ist. Ich benutze eine drahtlose ELECOM- Maus.

Ich werde versuchen, den Maus-Dongle zu entfernen, bevor ich gehe. Wie kann ich sonst feststellen, ob ein böswilliger Client meine Tastatureingaben verfolgt oder ob dies ein Konnektivitätsproblem ist?

Steven C. Howell
quelle
1
VERGEBEN SIE KEINE SUDO-BEFEHLE, WENN SIE DENKEN, DASS IHRE TASTATUREN AUFGEZEICHNET WERDEN !!! Starten Sie stattdessen ein sauberes Live-Medium und gehen Sie von dort aus.
07.04.16 Uhr

Antworten:

13

So lösen Sie Ihr Rätsel. Das Ziel ist es, den Benutzern das "Fischen" beizubringen, indem sie Standard-Ubuntu-Dienstprogramme verwenden, um die Details aller Prozesse auf ihrem System zu untersuchen.

Schritt 1 (hauptsächlich aus Neugier): Identifizieren Sie, welches Programm Ihnen diesen Fehler liefert:

# -- You may need to search under more dirs, YMMV
#    List files (incl. binaries) which contain the warning string

$ sudo grep -ral 'malicious client may be eavesdropping' /usr /bin /lib
/usr/lib/openssh/gnome-ssh-askpass

In meinem env ist das einzige Programm, das diese Warnzeichenfolge in seiner Binärdatei enthält gnome-ssh-askpass. Ich könnte suchen, ob ein Fehler in diesem bestimmten Programm vorliegt, und sogar dessen Quelle herunterladen apt-get source ssh-askpass-gnome(beachten Sie, dass sich der Paketname vom Programmnamen unterscheidet), um ihn weiter zu untersuchen.

Ich vermute jedoch, dass die Grundursache kein Problem ist gnome-ssh-askpass. Da gnome-ssh-askpassnach Ihrer Passphrase gefragt wird, haben sich die Entwickler einfach dazu entschlossen, auf Nummer sicher zu gehen, wenn sie die Tastatur nicht greifen, das Worst-Case-Szenario annehmen und die Nachricht überparanoid klingen lassen. Beachten Sie jedoch, dass es wahrscheinlich keine gute Idee ist, Ihr Passwort oder Ihre Passphrase versehentlich in ein zufälliges Dialogfeld auf einer Website einzugeben. In diesem Sinne haben die gnome-ssh-askpassEntwickler den richtigen Anruf getätigt.

In letzter Zeit beschäftigen sich immer mehr Websites mit dem Anzeigen eines Popups, dem Ausblenden aller anderen Elemente außerhalb des Popup-Dialogfelds und dem aggressiven Fokussieren. Dies könnte die Hauptursache dafür sein gnome-ssh-askpass, dass die Tastatur nicht erfasst werden kann. Wenn Ihr Browser auf einer solchen Website geöffnet ist, kann das Schließen des Browsers oder das Verlassen der aggressiven Website hilfreich sein. Wenn dies die Ursache ist, sind Sie möglicherweise an einer Desktop-Einstellung interessiert, die verhindert, dass einzelne Prozesse den vollständigen (vollständigen Desktop-) Fokus erhalten. In KDE finden Sie diese Einstellung beispielsweise unter ( Systemeinstellungen -> Fensterverhalten -> Fokus -> Fokusdiebstahlschutz ). Wenn Sie sich wirklich paranoid fühlen, würde ich empfehlen, es auf Highoder zu setzen Extreme. Dies kann natürlich auch verhinderngnome-ssh-askpassselbst aus der Tastatur greifen, oder genauer: den XFokus greifen .

Schritt 2: Identifizieren Sie verdächtige Prozesse:

Da Geräte unter Unix wie Dateien aussehen /dev, lautet die nächste Frage, welches Gerät "die Tastatur" in der Dateisystemhierarchie darstellt. Wir können dafür das lsofDienstprogramm (Liste geöffneter Dateien) verwenden.

# look for processes holding devices open, filter out some common ones:
$ sudo lsof | grep /dev | grep -vE '/(null|urandom|zero)'

Beachten Sie, dass die meisten Prozesse, die Geräte in einer typischen Desktop-Umgebung offen halten, offen halten /dev/pts/<N>(eine Pseudotty ). Dies sind die "Geräte" von Interesse.

Einige Hintergrundinformationen zu den Vorgängen hier:

In einem typischen grafischen Linux-Desktop kommunizieren Prozesse nicht direkt mit der Tastatur. Stattdessen Xsteuert das Programm (Xorg) alle Tastaturereignisse über ein Gerät /dev/input/event<N>. Xverwendet einen Event-Handler (evdev), der unter anderem Tastaturereignisse behandelt. Sie können dies auch überprüfen, indem Sie sich das XProtokoll ansehen: /var/log/Xorg.0.logWo keyboardwird es erwähnt ?

Die Tastaturereignisse werden vom XEreignishandler über die am geöffnete Prozess-Standardeingabe jederzeit an den Prozess weitergeleitet, der den Mauszeigerfokus hat /dev/pts/<N>. Streng genommen: Ein Prozess "greift nicht wirklich nach der Tastatur", die Tastatur wird von gehalten X, der Prozess hat nur (oder greift) "Fokus" oder die Aufmerksamkeit von Xso Xkann Tastaturereignisse über einen offenen stdin-Dateideskriptor an ihn weiterleiten /dev/pts/<N>.

Diagramm der über X evdev gemultiplexten Tastaturereignisse

Schritt 3: Welchen Prozess hat der Xorg-Fokus zu einem bestimmten Zeitpunkt?

Wie kann man herausfinden, welcher Prozess zu einem bestimmten Zeitpunkt im Mittelpunkt steht? Hier ist eine Askubuntu-Frage, die dies beantwortet:

Finden Sie die Anwendung unter der Maus heraus

In der Zusammenfassung der Antwort wird ein Skript wie das folgende in einem Terminal ausgeführt, während Sie mit der Maus navigieren:

#!/bin/bash
# Print the process tree of the window currently in focus.
# prereqs:
#   sudo apt-get install xdotool psmisc

while true; do
   pstree -spaul $(xdotool getwindowpid "$(xdotool getwindowfocus)")
   sleep 2
done

Schritt 4: Vertiefen Sie sich in die Prozessaktivität

Sobald Sie einen verdächtigen Prozess identifiziert haben, müssen Sie diesen einzelnen Prozess untersuchen. Dazu können Sie sich an das Linux- /procDateisystem ( man 5 proc) wenden .

Fast alles, was Sie über einen Prozess wissen möchten, finden Sie unter /proc. Programme wie lsof(offene Dateien auflisten), Debugger, die den Prozessstatus prüfen, und Dienstprogramme für die Prozessauflistung wie psoder topsind alle darauf angewiesen, /procwelche Daten vom Kernel ausgefüllt werden.

Wenn procSie feststellen, wo sich das ausführbare Prozessprogramm auf der Festplatte befindet (z. B. ein Programm außerhalb der Standardsystemverzeichnisse, insbesondere, wenn es versucht, sich unter einem Namen zu verstecken, bei dem ich nicht aufpasse), kann dies verdächtig sein und verwendet werden Mit einem Debugger oder Systemaufruf-Tracer können Sie überprüfen, was genau sie auf der Ebene des Systemaufrufs tun (auch wenn Sie keinen Quellcode haben).

Die Schritte 2 und 3 sollten Ihnen alle Prozess-IDs geben PID, die möglicherweise Ihre Tastatur lesen können. Für jede dieser PIDS (bezeichnen wir jede als $pid) können Sie:

Ordnen Sie $ pid der vollständigen Befehlszeile zu:

cat /proc/$pid/cmdline

Ordnen Sie $ pid der ausführbaren Datei auf der Festplatte zu:

ls -l /proc/$pid/exe

Ordne $ pid seinem aktuellen Arbeitsverzeichnis zu:

ls -l /proc/$pid/cwd

Ordnen Sie $ pid seiner ursprünglichen Umgebung zu

cat /proc/$pid/environ | tr '\000' '\012'

Verfolgen Sie die Systemaufrufaktivität von $ pid (und seinen untergeordneten Prozessen) in Echtzeit:

strace -f -p $pid

(Es gibt noch mehr: siehe man 5 proc)

Wenn Sie einen unbekannten Vorgang sehen, der auf jeden Tastendruck reagiert, indem er in einer Datei (Via write) gespeichert oder über das Netzwerk an Via gesendet wird sendto, haben Sie möglicherweise einen Tastaturschnüffler gefunden.

Sie können auch überprüfen, auf welchen Prozessen (tcp + udp) Netzwerkendpunkte geöffnet sind:

# See 'man netstat' for details on all options used below
$ sudo netstat -tunapee

Endeffekt:

Die wahrscheinlichste Ursache für den Fehler ist nicht Malware, sondern mehrere Prozesse, die gleichzeitig versuchen, die Tastatur zu steuern. Einer der beiden ist gnome-ssh-askpass(derjenige, der den Fehler druckt). Der andere ist möglicherweise ein offener Browser auf einer Website mit einem aggressiven Dialogfeld zum Erfassen des Fokus.

Selbst wenn aus der Ferne Malware installiert ist, ist die gute Nachricht, dass alle Prozesse für Sie transparent sind, da Sie unter Linux arbeiten. Es ist sehr schwierig für Malware, sich wirklich vor Ihnen zu verstecken oder zu verhindern, dass Sie sie mithilfe der oben genannten Techniken leicht finden, ihre Prozesse beenden und alle ihre Dateien entfernen.

Arielf
quelle
Während Schritt 2 sehe ich nicht viele Prozesse /dev/pts/7(nur 3 eindeutige PID-Werte). Durch die Ergebnisse zu scrollen scheint das hilfreichste Gerät zu sein, /dev/pts/15obwohl einige es halten 1, 3, 12, 16, 17, 21, 22, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 34. Ist die Tastatur immer 7? Wie erkenne ich, welche davon meine Tastatur ist?
Steven C. Howell
Es kann eine der oben genannten sein. Das physische Tastaturgerät ist tatsächlich von Xorg ( /usr/bin/X) geöffnet, da /dev/input/eventNSie es finden können, Nindem Sie sich die Zeichenfolge evdevin ansehen /var/log/Xorg.0.log. Xorg "leitet" dann jeden Tastaturklick an den einzelnen Prozess weiter, bei dem der Mauszeiger zu diesem bestimmten Zeitpunkt "fokussiert" ist. Wenn ich laufe, ssh-askpasssehe ich, dass es /dev/pts/3offen ist, aber in jeder Umgebung kann es ein beliebiges Pseudo-Gerät sein. Jeder von Ihnen /dev/pts/Nkönnte hier relevant sein.
Arielf
@ stvn66 Ich habe ein kleines Skript hinzugefügt, das dir sagt, welcher Prozess wiederholt "den Fokus" hat (Verweis auf eine verwandte Frage auf askubuntu). HTH.
Arielf
Wie kann ich einen Verdächtigen identifizieren, nachdem ich das Skript ausgeführt habe, um zu identifizieren, welche Prozesse die Maus halten? Es scheint sich um eine beliebige Anwendung zu handeln, die ich auswähle, z. B. wenn das Terminal gestartet wird, in dem ich das Skript ausgeführt habe, {firefox}wenn ich auf Firefox klicke, und {thunderbird}wenn ich Thunderbird auswähle. Nichts ist so unerwartet. Vielleicht liegt das an Ihrem Fazit: Das Problem kommt nicht von etwas, das die Tastatur greift. Ich wünschte, ich wäre sicher, dass dieser Hinweis bedeutungslos ist oder ihn beseitigen könnte.
Steven C. Howell
@ stvn66 Ich höre dich :) du kannst nicht in der Zeit zurückgehen und den Prozess herausfinden, der ursprünglich den Fokus hatte. Möglicherweise ist dieser Prozess seitdem abgeschlossen. Um wirklich sicher zu sein, müssen Sie reproduzieren können. Ich vermute, es war Ihr Browser ( firefox), als Sie eine Website mit einem Popup-Fenster besucht haben, das den Fokus auf sich zieht. Sofern Sie nicht regelmäßig Software von zweifelhaften (nicht-kanonischen) Quellen herunterladen und installieren, bezweifle ich, dass Sie versehentlich einen Tastatur-Sniffer auf Ubuntu installiert haben. Es ist gut, ein bisschen paranoid zu sein, aber es besteht kein Grund, darüber zu schwitzen.
Arielf
1

Mein Problem war wegen zwei gleichzeitigen gnome-ssh-askpassFenstern. Ich hatte zwei rsync-Jobs über SSH auf demselben Server und beide haben versucht, das Kennwort des SSH-Zertifikats anzufordern. Sie zu gruppieren (und zu verketten) löste sich für mich!

Ste_95
quelle