Linux Keylogger ohne root oder sudo! Ist es echt?

29

Jemand auf Youtube behauptet, einen Keylogger auf Ubuntu zu haben, der weder als root ausgeführt noch installiert wurde. Der Link unten zeigt eine Demo davon funktioniert.

http://www.youtube.com/watch?v=Y1fZAZTwyPQ

Trotz gegenteiliger Behauptungen hätte diese Person es als root installieren können, bevor sie für das Video demonstrierte. Gibt es einen anderen halb-glaubwürdigen Beweis dafür, dass dies ohne root für die Installation oder Ausführung wirklich möglich ist?

UPDATE: Die in der Antwort vom 24. Juni genannte Software lässt sich ohne sudo / root nicht installieren. Ich habe eine Prämie für jeden hinzugefügt, der einen Link zu einer funktionierenden Linux-Keylogger-Software erstellt, die mit normalen Benutzerrechten installiert und ausgeführt werden kann.

Mike Rowave
quelle
Ich glaube, dass dies auf der X-Ebene problemlos möglich ist. Denken Sie nur an die Programme mit globalen Verknüpfungen.
Denis Nikolaenko
Um Keylogger für X-Window-Systeme zu verhindern, müssen Sie SELinux für X implementieren. Meines Wissens ist dies bei keiner weit verbreiteten Linux-Distribution sofort möglich. nsa.gov/research/_files/selinux/papers/x11/t1.shtml
Denis Nikolaenko
Kennen Sie konkrete Arbeitsbeispiele? Ohne zu sehen, dass es aus erster Hand funktioniert, bleibe ich skeptisch. Und ohne zu wissen, dass ein Keylogger wirklich ohne sudo / root-Berechtigungen installiert werden kann, lohnt es sich nicht, sich mit der Komplexität der Einrichtung von AppArmor oder SELinux zu befassen, um sich dagegen zu verteidigen.
Mike Rowave
3
Bitte fasse die wichtigen Punkte des Videos in deiner Antwort zusammen. Es könnte gelöscht werden oder der Server könnte nicht mehr verfügbar sein. (Ja, während ich etwas poste, ist Youtube ausgefallen.) Es ist auch ziemlich unhöflich zu verlangen, dass Besucher sich ein Video ansehen, um herauszufinden, worum es bei Ihrer Frage geht.
Gilles 'SO - hör auf böse zu sein'

Antworten:

29

Ja, es ist echt. Wenn Sie über einen Browser ausgenutzt wurden und ein Angreifer Code mit Ihren Benutzerrechten ausführen kann, kann er ein Programm über GNOME- oder KDE-Autostart-Funktionen registrieren, mit denen Programme beim Anmelden ausgeführt werden. Jedes Programm kann Scan-Codes von gedrückten Tasten in X Window System erhalten. Mit dem Befehl xinput kann dies leicht demonstriert werden. Weitere Informationen finden Sie im Blog-Beitrag zur GUI-Isolierung .

Denis Nikolaenko
quelle
12

Das Konzept in diesem Video ist 100% real und der Code ist sehr einfach.

Identifizieren Sie Ihre Tastatur-ID mit: xinput --list

Tastatureingaben protokollieren mit: xinput --test $id

Ordnen Sie die Zahlen den Tasten zu mit: xmodmap -pke

Yardena
quelle
11

Ja, es ist möglich.
Sie können es auf Ihrem eigenen Computer mit ähnlicher Software lkl versuchen .

bbaja42
quelle
Es ist beängstigend, wenn es echt ist. Ich werde eine virtuelle Maschine einrichten, in der ich sie testen kann. Das nächste Rätsel ist jedoch, wie man es sofort erkennt, wenn es sich durch einen Browser-Exploit oder Ähnliches selbst installiert, oder es zumindest proaktiv daran hindert, etwas ins Internet zu übertragen, wenn es ausgeführt wird.
Mike Rowave
Ich habe wenig Wissen in diesem Bereich, aber wiki.ubuntu.com/SELinux könnte helfen. Fühlen Sie sich frei, die ursprüngliche Frage mit Ihren Ergebnissen zu aktualisieren. : D
bbaja42
1
Schwer zu sagen, Scherz, real oder weniger als es scheint, von einem Video allein. Ich kann mir schon Orte vorstellen, an denen ich anfangen könnte, wenn ich ein Video machen wollte, das eine große Sicherheitslücke aufzeigen soll (Suid-Tricks, Sudo-Timeouts, verfälschte Systemtools usw. ad nauseum). Linux ist keinesfalls unverwundbar für Angriffe, um etwas anderes zu behaupten ist dumm. Aus Youtube-Videos kann man jedoch keine Schlussfolgerungen ziehen.
Andrew Lambert
@Amazed gültiger Punkt, aber fühlen Sie sich frei, lkl zu installieren und es auf Ihrem eigenen Computer zu testen.
bbaja42
1
Es hat nicht funktioniert. Laufen verursachte make installden Fehler cannot create regular file '/usr/local/bin/lkl': Permission denied. Running sudo make installhat den Fehler nicht angezeigt, aber der Versuch, lkl tatsächlich auszuführen, ergab einen weiteren Fehler Have to be root to perform a iopl()!.
Mike Rowave
9

Ich habe das Video nicht gesehen, also reagiere ich auf den Eindruck, dass ich mehr über die Behauptungen im SU-Thread als über das von Ihnen zitierte Video informiert wurde.

Wenn ein Angreifer als Benutzer Code auf Ihrem Computer ausführen kann, kann er Ihre Tastendrücke protokollieren.

Na duh. Alle Anwendungen, die Sie ausführen, haben Zugriff auf Ihre Tastendrücke. Wenn Sie etwas in Ihren Webbrowser eingeben, hat Ihr Webbrowser Zugriff auf Ihre Tastendrücke.

Ah, sagst du, aber was ist mit dem Protokollieren von Tastendrücken in einer anderen Anwendung? Solange die andere Anwendung auf demselben X-Server ausgeführt wird, können sie weiterhin protokolliert werden. X11 versucht nicht, Anwendungen zu isolieren - das ist nicht seine Aufgabe. Mit X11 können Programme globale Verknüpfungen definieren, was für Eingabemethoden, zum Definieren von Makros usw. nützlich ist.

Wenn der Angreifer Code als Benutzer ausführen kann, kann er auch Ihre Dateien lesen und ändern und alle möglichen anderen Schäden verursachen.

Dies ist keine Bedrohung. Das gehört zu den normalen Erwartungen an ein funktionierendes System. Wenn Sie einem Angreifer erlauben, Code auf Ihrem Computer auszuführen, ist Ihr Computer nicht mehr sicher. Es ist, als ob Sie Ihre Haustür öffnen und einen Axtmörder hereinlassen: Wenn Sie dann in zwei Teile gespalten werden, liegt das nicht daran, dass Ihre Haustür unsicher ist.

Der Keylogger kann nur vom infizierten Benutzer gedrückte Tasten protokollieren. (Zumindest solange der infizierte Benutzer das sudo-Passwort nicht eingibt.)

Gilles 'SO - hör auf böse zu sein'
quelle
Siehe Gesetz Nr. 1 .
Iszi
"Nicht zulassen, dass ein Angreifer Code auf Ihrem Computer ausführt" ist ein großartiges Sicherheitsmodell ... Ich denke, Windows wird vollkommen sicher, wenn es dann von einem Linux-Benutzer verwendet wird (der sicher nicht "zulässt, dass ein Angreifer Code ausführt"). ...
14.
3

Es ist zu 100% möglich. Für ttys / ptys (Textmodus) ist es am einfachsten, ein Shim zu / bin / {ba, da, a} sh hinzuzufügen (z. B. ein zweites .code-Segment, RX) und den Einstiegspunkt zu ändern (ähnlich wie bei einem ELF) Virus würde). In diesem Fall kann man ~ / .profile oder ~ / .bashrc (usw.) ändern, um ein sehr einfaches hypothetisches Modell zu erhalten:

exec ~ / .malicious_programme

Dieser lädt möglicherweise dynamischen Code für freigegebene Objekte, um das betreffende Schadprogramm auszublenden (Beispiel: Zulassen des Lesens und Änderns von Profilen, Ausblenden der Zeile und / oder Ausblenden des Programms).

Man kann dann das UNIX98 pty (7) -System oder sogar einfach pipe (2) verwenden, um alle Eingaben in einer gegabelten Shell aufzuzeichnen, vorausgesetzt, die fd ist nicht mit FD_CLOEXEC markiert, und sogar Benutzereingaben in die Shell ändern.

In X11 werden die Dinge natürlich komplizierter, obwohl kdm / gdm / xdm als setuid-root ausgeführt wird (oder das Äquivalent zu den Fähigkeiten [siehe setcap (8)] oder welches Sicherheitsmodell auch immer Sie verwenden, wenn es nicht standardmäßig verwendet wird). Kann man Privilegien erhöhen? iopl (2) oder ioperm (2) machen das Leben mit direktem Zugriff auf die x86-Tastaturanschlüsse 0x60 / 0x64 ziemlich einfach. Da wir davon ausgehen, dass Sie dies nicht können, müssen wir nach einer alternativen Route suchen. Ich kenne einige, aber ich bin mir nicht ganz sicher, ob Sie eine Dissertation darüber wünschen, wie dies möglich ist und welche Schnittstellen betroffen sind.

Es genügt zu sagen, dass Ring 3-Trojaner, die keine Superuser sind, trotz Prozessisolation auf * nix durchaus möglich sind. Dies ist auf verschiedene Probleme zurückzuführen (insbesondere bei X), die Funktionen für Daemons im Benutzermodus hinzugefügt haben, die z. B. Text bereitstellen -to-Speech-Unterstützung für alle Apps, ohne die Sicherheit des Systems zu gefährden. Ich habe bereits eine skizziert, die analog zu ttysnoops (die längst über das Ablaufdatum hinausgeht) funktioniert und keine Wurzel benötigt. Ich habe Beispielcode für diesen Fall (der interne Terminals in X enthalten würde), aber ich habe ihn noch nicht veröffentlicht. Wenn Sie weitere Informationen wünschen, können Sie mich gerne kontaktieren.

David McIlwraith
quelle
Die Frage lautet "ohne root oder sudo". Wie würde ein Angreifer ein Programm /binohne Berechtigungen ändern ?
G-Man sagt, dass Monica am
0

Ja, es ist möglich, Software ohne su- oder sudo-Berechtigungen zu installieren. Dies geschieht jedoch in der Regel durch eine Ausnutzung der Rechteerweiterung. In diesem Video werden die Funktionen dieses Keyloggers ziemlich gut dargestellt, es werden jedoch ein paar Details zur Installation des Keyloggers ausgelassen. Es mag hier ein bisschen trickreich sein, aber es ist schwer, es allein aus dem Video zu erkennen.

Xenoaktiv
quelle
Du verdrehst Worte. Es kann möglich sein , Software in ein System - Verzeichnis zu installieren , ohne Laufen su oder sudo, sondern ein Privileg Eskalation ausnutzen würde die Angreifer Root - Rechte geben - auch bekannt als „Super - User“ oder „su“ Privileg.
G-Man sagt, dass Monica am
0

Zu Testzwecken habe ich einen TTY-Keylogger erstellt, der dynamisch an die tty eines Benutzers angehängt werden kann. Das Programm muss nicht von root installiert werden und kann von jedem Konto verwendet werden. Nach dem Anhängen werden Eingaben protokolliert, die mit dem Muster übereinstimmen, das beim Start des Programms in der Befehlszeile angegeben wurde.

wzis
quelle
-3

Dies ist mit Systemen wie Crunchbang (Debian-basierte Distribution) möglich. Fügen Sie einfach Berechtigungen zur sudoers-Datei hinzu, indem Sie nano visudo im Terminal verwenden, und fügen Sie Keylogger hinzu, um einen automatischen Start durchzuführen, wie z. B. logkeys für Linux, logkeys --start --output /home/user/.secret /Log

Viel Glück

GodOfWarWebMew
quelle
5
Zum Bearbeiten der sudoers-Datei ist das Root- oder sudo-Privileg erforderlich.
Mike Rowave