Frage:
Warum stellen Betriebssysteme Tastenanschläge nicht nur für die aktuelle App zur Verfügung?
user66309
2015-10-12 00:15:13 UTC
view on stackexchange narkive permalink

Ein relativ offensichtlicher Weg, um (Software-) Keylogging zu verhindern, besteht darin, nur die aktuelle (fokussierte) App zu zwingen, Tastenanschläge empfangen zu können.

Es könnte eine Möglichkeit geben, explizite Ausnahmen für Makro-Apps usw. zu machen. Das Abfragen der Ausnahmeliste würde das Auffinden eines Keyloggers trivial machen.

Gibt es einen Grund, warum Betriebssysteme dies nicht erzwingen Richtlinie standardmäßig?

Die Fähigkeit, Strg-Alt-Entf zu drücken? Strg-C? Alt-Tab?
Der Betriebssystemkern muss die Schlüsseleingabe abfangen. Setzen Sie einen Keylogger auf Kernel-Ebene und Sie haben alles.
Die meisten mobilen Betriebssysteme erzwingen dies. Mit Desktop-Betriebssystem ist es eine Frage der Geschichte. Sie wurden nie mit Blick auf Malware entwickelt - Apps werden mit den vollen Berechtigungen des Benutzers ausgeführt, der sie ausführt.
Schlüsselprotokollierer werden im Allgemeinen mit Root-Rechten installiert. Per Definition kann root alles. Key Logger, für die kein Root erforderlich ist, sind in ihrer Funktionalität wesentlich eingeschränkter.
@schroeder: Strg + C? Warum sollte das nicht nur vom aktuellen Programm erledigt werden?
@schroeder In Betriebssystemen, die von Grund auf auf Sicherheit ausgelegt sind (dh derzeit iOS und Android), ist dies nicht möglich.
Um zu sehen, was durch Sandbox-Anwendungen verloren geht, schauen Sie sich alle Möglichkeiten an, die unter Windows oder GNU / Linux möglich sind, jedoch nicht unter Android oder iOS. Classic Shell und f.lux sind die ersten Dinge, die mir in den Sinn kommen. Sie können sich auch eine App vorstellen, die StickyKeys hinzufügt.
@immibis - Mit Sandboxing können Sie eine spezielle Berechtigung wie "permanenter Tastaturzugriff" haben. Dies ist effektiv das, was Apps wie Tastaturen von Drittanbietern tun. Es ist immer noch viel sicherer, als jeder App diese Berechtigung zu erteilen
@Thomas, In Bezug auf STRG + C ist es nicht sinnvoll zu erwarten, dass jede einzelne Anwendung das Kopieren implementiert, wenn es für jede Anwendung einmal implementiert werden kann. Mehrere Implementierungen führen auch zu einer Fragmentierung der Funktionen und einer inkonsistenten Benutzeroberfläche.
@Thomas Was passiert, wenn sich das aktuelle Programm in einer Schleife befindet oder abgestürzt ist?
Es wurde an Malware erinnert, die genau das gleiche Fenster über dem tatsächlichen Fenster öffnet, wenn eine bestimmte Anwendung (die zufällig in der Taskleiste versteckt ist) gerade ausgeführt wird. Vielleicht können sie etwas noch einfacher machen: Ersetzen Sie einfach die ursprüngliche Anwendung.
@paj28 Aktuelle Systeme scheinen solche umfassenden Berechtigungen zu vermeiden, vielleicht weil sie wissen, wie einfach es wäre, in eine Situation zu geraten, in der jede App die volle Kontrolle anfordert, und Benutzer dies immer akzeptieren, weil sie sonst keine Apps verwenden können.
Ähnlich, aber anders: Ich finde es ärgerlich, wenn ich tippe, und eine andere App kommt und "stiehlt" die Tastatur weg. ** Wenn ich aktiv tippe, sollte dies nicht passieren dürfen! ** (Dies tritt auf, wenn mein PC langsam ist und ich versuche, mehrere Dinge zu öffnen und mich beispielsweise an mehr als einem Ort gleichzeitig anzumelden.)
Der Betriebssystemkernel muss nicht nur die Schlüsseleingabe abfangen, sondern auch die E / A, die sich auf die eingehende Schlüsseleingabe bezieht. Es gibt auch keine Möglichkeit, das Betriebssystem daran zu hindern, die Eingabe zu sehen, ohne dass die Eingabe überhaupt erfolgt. Ich glaube nicht, dass du das willst.
Ich habe einige schlechte Designprogramme gesehen, die irgendwie verhindern, dass Strg + C funktioniert, und die einzige Möglichkeit, Text zu kopieren, ist Rechtsklick> Kopieren
Ich denke, hier wurde nicht über die Abkürzung zum Kopieren von Texten gesprochen. Es wurde über die Linux-Terminal-Verknüpfung zum Stoppen der Ausführung des aktuellen Programms gesprochen.
@schroeder, Sie wechseln / öffnen ein anderes Programm entweder mit der Maus oder einer globalen Kombination (z. B. Alt + Tab oder Strg + Alt + Supr) und stoppen damit das sich schlecht benehmende Programm, wie den Task-Manager oder den klassischen [kill (1) ] (http://manpages.ubuntu.com/manpages/vivid/en/man1/kill.1.html). Für ein Konsolenprogramm ist es sinnvoll, dass der Emulator oder Terminal einige Tastenanschläge oder Ihr DE abfangen kann, andere Programme jedoch nicht.
@LưuVĩnhPhúc: Haben Sie Strg + Ins (Kopieren) und Umschalt + Ins (Einfügen) ausprobiert? Dies sind die CUA-Schlüssel (Common User Access), wie sie in OS / 2 und anderen CUA-kompatiblen Betriebssystemen wie Windows ...
Zehn antworten:
Mark
2015-10-12 00:22:56 UTC
view on stackexchange narkive permalink

Weil es nicht helfen würde.

Die meisten Keylogger werden auf Betriebssystemebene installiert, und das Betriebssystem muss Zugriff auf die Tastenanschläge haben. Das Umschalten von Alt-Tab-Programmen, das Beenden von fehlerhaften Programmen mit Strg-Alt-Entf und das Erkennen von Tastaturaktivitäten, um zu verhindern, dass Ihr Bildschirmschoner alle aktiviert, erfordert, dass das Betriebssystem Tastenanschläge sieht.

Es gibt auch die Kleinigkeit, wenn Sie Wenn das Betriebssystem nicht auf die Tastatur zugreifen kann, muss in jede Anwendung ein vollständiger Satz von Tastaturtreibern integriert sein.

Was meinst du mit "auf Betriebssystemebene installiert"? Wie Fahrer?
In der Regel fahrerähnlich, ja.
Tatsächlich gibt es [spezielle Behandlung für Strg + Alt + Löschen] (https://en.wikipedia.org/wiki/Secure_attention_key), die es schwieriger macht, mit einem Keylogger zu fangen.
@Philipp, true, Strg + Alt + Entf kann * nur * von einem Keylogger auf Betriebssystemebene (oder Hardware) abgefangen werden.
Mark, haben Sie Links oder lesen Sie weiter, dass die meisten Key Logger Treiber sind?
Woher bekommen Sie Ihre Informationen über "die meisten" Keylogger? Wörtlich genommen wäre es sehr nützlich, 49% auszuschneiden, wenn sich 51% auf Kernelebene und 49% auf Benutzerebene befinden. Zur Hölle, selbst wenn 10% Userland-Logger sind, wäre es ein Fortschritt, 10% zu eliminieren. Ich kenne keine Daten darüber, welche Keylogger auf Kernel-Ebene sind, aber Ihre Antwort wirft die Frage auf, ob diese Zahl wirklich ist.
@SteveSether Ich habe nicht die Nummer zur Hand, aber "Die überwiegende Mehrheit" befindet sich auf Betriebssystemebene (abgesehen von allem anderen ist alles, was darüber liegt, für den Benutzer offensichtlich und wird sehr schnell erkannt).
@JonStory Hallo Jon. Woher stammen Ihre Informationen?
Die Sicherheitsmodule meines Informatikstudiums - leider habe ich, wie bereits erwähnt, keine Zahlen zur Hand (es war vor ein paar Jahren und ich habe damals keine Quellen notiert!), Aber ich hatte keinen Grund, daran zu zweifeln Informationen und wurde von einem Akademiker mit guter Vertrautheit mit dem Gebiet vorgestellt.
Wenn Sie auf führende Desktop-Betriebssysteme abzielen, müssen Sie nicht zur Kernel-Ebene wechseln. Die Implementierung ist im Benutzerbereich trivial, wie Sie aus vielen Beispielprogrammen ersehen können, die Tastenanschläge protokollieren. Ich kann einfach nicht verstehen, warum die meisten Keylogger jemals als Kernelmodule geschrieben wurden, selbst wenn es wahr ist.
@SampoSarrala,-Kernelmodule sind einfacher auszublenden.
Ich bezweifle die Richtigkeit. Ich bin damit einverstanden, dass die meisten Keylogger die Betriebssystemfunktionen verwenden (andernfalls müssten sie sich bei jedem Prozess selbst einschleusen - was einige tun), aber ich denke nicht, dass es sich um Kernelmodule handelt. Es ist schwieriger, sie zu codieren, und wenn Sie kein Administrator sind, sind Sie sicher.
phyrfox
2015-10-12 02:56:28 UTC
view on stackexchange narkive permalink

Die Schnittstelle zwischen Tastatur und Anwendung durchläuft mehrere Phasen, von denen einige nur wenig Kontrolle über das Betriebssystem haben und andere explizite Verbindungen für zusätzliche Funktionen bieten. Das grundlegende Design sieht folgendermaßen aus: Hardware-Ereignisse werden von Treiberketten empfangen, die dann Nachrichten an den Kernel weiterleiten, diese dann an eine globale Hotkey-Kette und schließlich an die beabsichtigte Anwendung senden (sofern sie nicht durch einen vorherigen Schritt in der Kette abgebrochen wurden ).

Die Treiberkette ermöglicht es dem Kernel, sich nicht darum zu kümmern, wie die Tastenanschläge generiert werden, sondern nur darum, wie sie sind. Sie können von einer Tastatur, einem IR-Gerät oder einer anderen Quelle stammen, die ein Signal senden kann, das als Tastatur interpretiert werden soll. Ein Hardware-Tastaturlogger ist beispielsweise ein Dongle mit einem USB- oder PS / 2-Eingang an einem Ende und einem USB-Anschluss oder PS / 2 am anderen Ende, sodass die Tastatur Daten durch dieses Gerät überträgt und abgefangen wird. Das Betriebssystem kann buchstäblich nicht erkennen, dass eine solche Protokollierung stattfindet.

Die andere übliche Art der Protokollierung findet in der Software statt. Dies kann entweder vor oder nach dem Anzeigen der Tastaturmeldungen durch das Betriebssystem geschehen. Treiber können so ziemlich alles tun, was sie wollen, und das Betriebssystem kann nicht genau erkennen, dass ein Treiber Nachrichten für schändliche Zwecke umleitet, da sie Nachrichten überprüfen können, bevor das Betriebssystem dies tut. Dies ist die Art der Hardware-Abstraktionsschicht (HAL), zu der die Treiber gehören. Glücklicherweise kann Anti-Malware-Software ein solches Verhalten erkennen und deaktivieren, da sie sich im Speicher befinden.

Schließlich haben Sie eine absichtliche "Lücke" im Betriebssystem, die normalerweise als "globale Hotkeys" bezeichnet wird und es jeder Anwendung ermöglicht, anzufordern, dass die Tastaturmeldungen vor der fokussierten Anwendung an sie übergeben werden. Auf diese Weise kann nicht nur Alt-Tab funktionieren (der Fenstermanager fängt diese Nachrichten ab, um Apps zu wechseln), sondern die meisten Medienprogramme fordern Handler auf, Multimedia-Tasten wie Wiedergabe, Rücklauf und Schnellvorlauf sowie andere Benutzerland-Apps für zu unterstützen Lautstärkeregelung usw. Ohne all diese globalen Hotkeys wäre die Verwendung des Betriebssystems sehr ärgerlich, und Apps wären daher weitaus komplexer. Genau wie dies eine großartige Funktion ist, kann sie auch von einem Programm missbraucht werden.

Beachten Sie jedoch, dass nicht "alle" Programme eine Kopie einer Tastaturmeldung erhalten, sondern nur Treiber. globale Hotkey-Handler und die In-Focus-Anwendung. Das Problem hat nichts mit der Tatsache zu tun, dass jedes Programm eine Kopie eines Tastaturereignisses erhält, sondern mit der Tatsache, dass die HAL in der Lage sein muss, Nachrichten von Hardware- in Kernel-Nachrichten umzuwandeln, und dass globale Hotkeys erforderlich sind, um Funktionen für das bereitzustellen Benutzer, ohne dass jedes Programm erstellt werden muss, um die gleichen Funktionen bereitzustellen.

Es wurden Fortschritte erzielt, um den Prozess zu sperren, z. B. das Erfordernis "signierter Treiber", wodurch sich die Anzahl verringert Wahrscheinlichkeit, dass böswillige Treiber in die Treiberkette gelangen, und Antivirenprogramme, die schlechtes Verhalten von Apps erkennen können. Bis jedoch viele der Sicherheitslücken behoben sind, wie z. B. Tastaturprotokollierung auf Hardwareebene und unsichere globale Hotkey-Registrierung, haben Protokollierer weiterhin die Möglichkeit, Tastenanschläge zu protokollieren. Obwohl normale Tastenanschläge scheinbar einfach von der Hardware zu einer App wechseln, sind tatsächlich mehrere Zwischenschritte erforderlich, die für die grundlegende Kompatibilität (Treiber) und Funktionalität (globale Hotkeys) erforderlich sind.

Außerdem muss die IME-Software irgendwo in die Kette passen, damit bestimmte Sprachen, hauptsächlich Chinesisch, Japanisch und Koreanisch, eingegeben werden können.
Treiber können gesperrt werden, um eine Netzwerkverbindung zu verhindern (außer wenn sie sich als Netzwerktreiber registrieren. In diesem Fall sollten sie nicht auf Geräte zugreifen können, die sich als Tastatur registrieren). Es ist zwar schwierig, ein solches System einzurichten, aber Ihre Geschichte lässt es so klingen, als wäre das unmöglich. Und natürlich kann die Installation beliebiger Treiber in erster Linie deaktiviert werden, insbesondere auf Geräten wie Laptops (z. B. auf Chromebooks). Darüber hinaus sind Hardware-Key-Logger äußerst selten. Sie sind sich also nicht sicher, warum Sie diesen so viel Aufmerksamkeit schenken.
@DavidMulder Ein Treiber-Framework, bei dem alle Treiber im Wesentlichen nicht vertrauenswürdige Benutzeranwendungen sind, wäre bestenfalls komplex, aber nicht unbedingt unmöglich. Das Problem besteht darin, Sicherheit mit Benutzerfreundlichkeit in Einklang zu bringen. Natürlich sagt niemand, dass wir beliebige Treiber installieren möchten (daher sind "signierte" Treiber mittlerweile alltäglich), aber wir möchten, dass Benutzer den Computer tatsächlich verwenden können. Der einzige Punkt, den ich über Hardware-Logger ansprechen wollte, ist, dass das Betriebssystem seiner eigenen Hardware nicht vertrauen kann - Geräte können so tun, als wären sie das, was sie wollen. Es gibt keine Möglichkeit sicherzustellen, dass eine Tastatur nur eine Tastatur ist.
* Treiber könnten gesperrt werden, um zu verhindern, dass sie eine Netzwerkverbindung herstellen. * Sie könnten leicht umgangen werden, z. Schreiben der protokollierten Schlüssel auf die Festplatte oder einfaches Erstellen einer neuen System-API zum Übergeben der Tastenanschläge an eine Benutzermoduskomponente.
"Glücklicherweise kann Anti-Malware-Software ein solches Verhalten erkennen und deaktivieren, da sie sich im Speicher befinden." Was meinst du? Treiber befinden sich im Kernelbereich, auf den Antivirus wie bei keinem anderen Benutzerbereichsprozess zugreifen kann.
@black: Es ist ein schlechtes Antivirenprogramm, das (nur) im Benutzerbereich ausgeführt wird.
Ein Keylogger-Treiber würde nicht einmal eine Hintertür benötigen, um die Schlüssel über das Netzwerk oder ähnliche versteckte Methoden zu senden. Es kann nur die Tastenanschläge speichern, und wenn die Begleitanwendung gestartet wird (z. B. ein Bildschirmschoner), fordert dieser Begleiter die Tastenanschläge an und der Treiber spielt sie einfach über die Standard-Betriebssystemschnittstelle wieder. Denken Sie daran, dass Sie für die Installation dieses Treibers bereits Root-Zugriff benötigt haben. Das Hinzufügen eines weiteren Bildschirmschoners ist zu diesem Zeitpunkt trivial.
Es ist wichtig zu beachten, dass dies meistens ein gelöstes Problem auf mobilen und browserbasierten Betriebssystemen ist. Nur ältere Betriebssysteme wie OS X, Linux und Windows, die ältere Software unterstützen müssen, haben dieses Problem noch.
Lesen Sie verschiedene Elemente Ihrer Antwort durch (insbesondere "Die Treiberkette ermöglicht es dem Kernel, sich nicht darum zu kümmern," wie "die Tastenanschläge generiert werden ... Sie können von ... einem Signal stammen, das als Tastatur interpretiert werden soll"). Ich habe die Theorie aufgestellt, dass einige Keylogger möglicherweise keine Probleme haben, Tastenanschläge abzufangen, die mit der Eingabehilfenfunktion ** On-Screen Keyboard ** von Windows eingegeben wurden. Ist das richtig?
@DanHenderson Ja, aufgrund ihrer Funktionsweise (Simulation von Tastendrücken über die Ereignis-API) können sie ebenfalls verfolgt werden. Es gibt einige sichere Websites, z. B. die vom Militär verwendeten, die keine Schlüsselereignisse mithilfe einer zufälligen Tastatur und von JavaScript auslösen. Die meisten nativen Apps, die, wie bereits erwähnt, keine eigene Faux-Tastatur verwenden, sind jedoch anfällig dafür Schlüssellogger. Andere Eingabeformen wie Dash können trotz Verwendung der mausbasierten Eingabe auch von Schlüsselprotokollierern protokolliert werden.
@MSalters Offensichtlich ist korrektes Sandboxing ein Teil eines solchen Setups, bei dem Anwendungen nicht blind miteinander sprechen können (oder speziell ein Treiber sollte keine Schreibrechte an denselben Stellen haben wie normale Anwendungen). Die Berücksichtigung des Sandboxing von Anwendungen ist ein zunehmend wichtiges Anliegen. Dies ist nicht unmöglich (nur schwierig, da es viele Möglichkeiten für Anwendungen gibt, miteinander zu kommunizieren, aber genau darum geht es beim Sandboxing).
David Mulder
2015-10-12 02:09:54 UTC
view on stackexchange narkive permalink

Der Grund, warum dies nicht standardmäßig erfolgt, ist, dass das Betriebssystemdesign der vorherigen Generation keinen großen Fokus auf Sandboxing und dergleichen hatte. Daher wären derzeit große architektonische Änderungen erforderlich, damit solche Änderungen funktionieren. Mark geht in seiner Antwort in gewissem Maße auf diese ein, aber es läuft darauf hinaus, dass Sie nicht zulassen können, dass Anwendungen blind mit Betriebssystemberechtigungen ausgeführt werden.

Es ist jedoch weitaus interessanter festzustellen, dass moderne Betriebssysteme dies mögen Beispiel: Googles Android, Apples iOS und sogar Googles (Desktop-) ChromeOS beschränken Tastatureingaben nur auf aktuelle Anwendungen 1 sup>. Wenn Sie sich nur auf ChromeOS konzentrieren, da es das einzige Desktop-Betriebssystem in der Liste ist, ist es auch wichtig zu beachten, dass globale Verknüpfungen in einem solchen Fall keine Probleme verursachen. Eine Anwendung kann dem Betriebssystem "einfach" mitteilen, dass sie an eine bestimmte Verknüpfung binden möchte, die dann vom Benutzer im Betriebssystem konfiguriert werden kann. Die relevante Spezifikation finden Sie hier für diejenigen unter Ihnen, die neugierig sind, wie dies aussieht.

In ähnlicher Weise können wir bei einem Blick auf Android die erforderliche Eingabehilfesoftware finden Der globale Tastaturzugriff kann in solchen modernen Umgebungen weiterhin geschrieben werden, indem solche Informationen genau dann angezeigt werden, wenn der Anwendung solche Berechtigungen im Bereich für Eingabehilfen ausdrücklich gewährt werden. Dies macht das Einrichten einer solchen Software etwas mühsam, verhindert jedoch die Verteilung von Keyloggern.

Zusammenfassend ist der einzige Grund, warum dies nicht getan wird, nicht , weil dies nicht der Fall ist. Es hilft nicht oder ist unmöglich, aber aufgrund historischer Prioritäten dauert es nur ein bisschen länger, um dorthin zu gelangen. Wir werden rechtzeitig dort sein und in der Zwischenzeit kann es sinnvoll sein, ein moderneres, gesperrtes Betriebssystem in sicheren Umgebungen zu verwenden.


1 sup> Ich weiß, dass Mac OS X kürzlich seine Sandboxing-Bemühungen für Anwendungen erweitert hat. Ich gehe davon aus, dass eine ordnungsgemäß sandboxierte Anwendung (für die keine Administratorrechte erforderlich sind) auch nicht als Keylogger fungieren kann. Ich habe jedoch nur sehr wenig Zeit damit verbracht, zu lesen, wie das Sandboxing wirklich funktioniert. Wenn jemand sicher weiß, teilen Sie!

* "Eine Anwendung kann dem Betriebssystem 'einfach' mitteilen, dass sie an eine bestimmte Verknüpfung binden möchte, die dann vom Benutzer im Betriebssystem konfiguriert werden kann." * Und das Betriebssystem verhindert, dass Anwendungen eine solche Bindung 'selbst registrieren' ... Wie? Es ist eine Software, die die Bindung registriert. Was hält eine andere Software im Prinzip davon ab, dasselbe zu tun? (Und ich bin mir nicht sicher, ob ich Alt + Tab, Strg + Esc, Windows + L, Windows + R, Windows + Umschalt + 2 usw. auf jedem neuen System von Grund auf neu einrichten muss ... )
@MichaelKjörling Sie sind sich nicht sicher, was Sie sagen möchten. Sie hätten Bindungen auf Betriebssystemebene, die überschrieben werden könnten oder nicht, aber es gibt keine Möglichkeit, beispielsweise nur 'a' zu binden, sodass keine Gefahr für Key Logger besteht.
@MichaelKjörling Gefällt mir: http://i.imgur.com/Y9EHvJs.png
pjc50
2015-10-12 20:13:18 UTC
view on stackexchange narkive permalink

Unter Windows gibt es nur einen sehr geringen Schutz zwischen Anwendungen, die als derselbe Benutzer ausgeführt werden. Wenn Sie versuchen, SetWindowsHookEx zu entfernen, wechseln Malware-Writer zur DLL-Injection und zu einer ganzen Reihe anderer Techniken. Sie können sogar einfach ein transparentes Fenster über der Zielanwendung zeichnen, das den Fokus hat und Tastenanschläge empfängt, und diese Tastenanschläge dann weiterleiten, indem Sie Windows-Nachrichten senden. Grundsätzlich wurde Windows nicht unter Berücksichtigung der Möglichkeit bösartiger ausführbarer Dateien entwickelt.

Ein System zum Ausführen nicht vertrauenswürdiger Anwendungen kann sie voneinander sandboxen. Aber es ist immer noch anfällig für (viel seltenere) Exploits, die aus der Sandbox in den Kernel gelangen.

Es gibt auch eine andere Technik, die verwendet werden könnte: Die Ausführung von Arbitary Code im Browser gibt einem Exploit die Möglichkeit, jeden aufzuzeichnen Tastendruck, den der Browser sieht, auch wenn er einer Sandbox nicht entkommen kann.

Dies ist nicht mehr der Fall. Windows Vista hat "Isolation von Benutzeroberflächenberechtigungen" hinzugefügt und die meisten Browser verwenden diese (Ausführen von Webseiten mit geringen Benutzeroberflächenberechtigungen). Sie haben Recht, dass dies nicht vor dem Erfassen von Tastenanschlägen schützt, die in den Webbrowser in einem anderen Fenster / Tab eingegeben wurden.
Diese Diskussion https://security.stackexchange.com/questions/3759/how-does-the-windows-secure-desktop-mode-work behauptet, dass die DLL-Injection immer noch ein praktikabler Angriff ist.
Sie haben eine Antwort verlinkt, die zugibt, dass der Autor nicht weiß, wie die DLL-Injection funktioniert. [Diese Dokumentation] (https://msdn.microsoft.com/en-us/library/bb625963.aspx) besagt, dass UIPI die DLL-Injection blockiert (zumindest mit herkömmlichen Mitteln wie "CreateRemoteThread" ... wenn Code ausgeführt wird) Wenn Sie ein vom Benutzer beschreibbares Verzeichnis verwenden, besteht immer noch die Gefahr, dass ein unsicherer DLL-Suchpfad entführt wird.
X unter Linux ist in dieser Hinsicht nicht besser. http://unix.stackexchange.com/questions/129159/record-every-keystroke-and-store-in-a-file
David-
2015-10-13 01:29:15 UTC
view on stackexchange narkive permalink

Es gibt sehr gute Gründe, warum Tastenanschläge für Anwendungen außerhalb des aktuell ausgeführten Vordergrundprozesses sichtbar sein sollen. Sofern nicht jeder Programmierer beispielsweise Ausschneiden / Kopieren / Einfügen implementiert, muss das Betriebssystem auf bestimmte Tastenanschläge achten. Nehmen wir an, Sie haben ein Programm zum Aufnehmen von Screenshots und möchten, dass es durch einen bestimmten Tastendruck aktiviert wird. Dieses Programm muss in der Lage sein, die Tastaturaktivität zu überwachen, um zu erkennen, wann die Tastenanschläge aktiviert sind. Es wäre sinnvoller, alles in einer Sandbox auszuführen, und wenn die Überwachung der Eingabe eine Voraussetzung für ein Hintergrundprogramm wäre, muss eine Berechtigung erteilt werden, aber egal was getan wird, es gibt immer einen Weg, dies zu umgehen. Wenn jemand wissen möchte, was Sie tippen, wird er einen Weg finden. Wir können nur versuchen, es schwieriger zu machen. Die Verschleierung könnte eine interessante Methode sein. Injizieren Sie viele falsche Eingabenachrichten in das Betriebssystem, die das laufende Programm generiert, um etwas außerhalb davon zu täuschen?

Dies ist nicht falsch, aber tatsächlich sind Windows-Anwendungen * verpflichtet *, das Ausschneiden / Kopieren / Einfügen selbst zu implementieren (und Strg-Z / X / C / V / B sind nur eine Konvention).
Selbst unter Windows funktioniert das Ausschneiden, Kopieren und Einfügen in den meisten Anwendungen immer. Sollten wir es ja selbst implementieren, aber auch nicht, ist es immer noch über Windows verfügbar. Erstellen Sie ein einfaches Fenster mit einem Textfeld, und Windows kümmert sich um den Rest.
Das Textfeld ist eine vom Betriebssystem bereitgestellte Bibliothek, aber was die globale Ereigniswarteschlange betrifft, ist es Teil Ihrer Anwendung. Was ich damit sagen will ist, dass sich die Standard-Bearbeitungs-Tastenanschläge von Dingen wie Alt-Tab (vom Fenstermanager verwaltet, Anwendung sieht es nie) und Strg-Alt-Entf (die nicht einmal aus dem Kernel IIUC herauskommen) unterscheiden. .
Mike Maxwell
2015-10-13 02:33:41 UTC
view on stackexchange narkive permalink

Mehrere haben festgestellt, dass andere legitime Anwendungen möglicherweise die ursprüngliche Tastatureingabe (die in Form von Tastendruck X erfolgt, der gedrückt / freigegeben wurde) in eine Art Text umwandeln müssen. Zum Beispiel Menschen, die den Gebrauch einer Hand verloren haben.

Es gibt auch Tastaturzuordnungstools, mit denen Benutzer Sprachen eingeben können, für die das Betriebssystem keine Tastaturzuordnung für diese Sprache bereitstellt (oder der Benutzer die vom Betriebssystem definierte Tastaturzuordnung nicht verwenden möchte). - Zum Beispiel ein Dvorak-ähnliches Layout für eine andere Sprache als Englisch). Eine solche App ist Keyman (keyman.com).

Und schließlich gibt es Leute wie mich (oder vielleicht bin ich der einzige), die Tastaturzuordnungen haben, die Dinge wie -H dem linken Cursor zuordnen Pfeil, -B bis - und so weiter. Wir Faulen (oder nur ich) müssen also nicht unsere Hände vom alphabetischen Teil der Tastatur bewegen, um uns zu bewegen.

JamEngulfer
2015-10-13 19:29:22 UTC
view on stackexchange narkive permalink

Es gibt tatsächlich einige Betriebssysteme, die dies zulassen, nämlich Mac OS X. Tastendrücke, die keine "reservierten" Systemtastenkombinationen oder "Modifikatortasten" (Alt, Strg, Umschalt usw.) sind, werden nur an die Anwendung gesendet Derzeit im Fokus.

Das würde es natürlich für einige Anwendungen, die für Barrierefreiheit ausgelegt sind, und für Programme, die VoIP verwenden und Push-to-Talk-Tasten benötigen, sehr ärgerlich machen. Aus diesem Grund gibt es einen Teil der Systemeinstellungen, in dem Sie diese Funktionalität für bestimmte Anwendungen aktivieren können.

Wie bei Windows würde ich mir vorstellen, dass dies nicht erfolgt, da die derzeitige Methode zum Behandeln von Tastendrücken recht komplex ist und ist Entwickelt, um mit allen aktuellen Treibern und Programmen zu arbeiten.

Nzall
2015-10-15 03:41:14 UTC
view on stackexchange narkive permalink

Einer der Gründe ist, dass für einige Software das Lesen von Tastenanschlägen, während sie aktiv, aber derzeit nicht ausgewählt sind, für die Funktionsweise der Software von entscheidender Bedeutung ist.

  • Zum Beispiel Push-to -talk-Tasten in VoIP-Software wie Teamspeak oder Ventrilo ermöglichen es Spielern, zu der Zeit zu chatten, zu der sie chatten möchten, damit Sie keinen Strom von Rauschen haben.
  • Personen, die Bildschirmaufnahmen für ihren Lebensunterhalt machen (wie Youtubers / Streamers, Computer-Tutorialisten und Software-Rezensenten) verlassen sich auf Verknüpfungen von Software wie Fraps, OBS, Xsplit usw., um sicherzustellen, dass ihre Aufzeichnungen ordnungsgemäß funktionieren.
  • Softwareentwickler profitieren häufig davon, dass sie ihr Projekt konzentrieren können, während sie ihren Code durchlaufen ihr anderer Monitor mit den Funktionstasten.
  • Ich persönlich mag es, dass ich mein World of Warcraft fokussieren kann, während ich mit meinem Mausrad in Chrome scrolle und nicht ständig zwischen beiden Programmen wechseln muss.
Ian Ringrose
2015-10-13 00:36:28 UTC
view on stackexchange narkive permalink

Geben wir ein praktisches Beispiel.

Einige behinderte Menschen finden das Tippen schwierig und tippen nur sehr langsam. Sie verwenden häufig die Software „ Wortvorhersage“, die eine Liste der Wörter anzeigt, die mit der bisher eingegebenen übereinstimmen, sodass ein Wort aus der Liste mit einem einzigen Tastendruck ausgewählt werden kann.

Blinde verwenden eine Software, die den auf dem Bildschirm angezeigten Text liest (Bildschirmleser). Diese Software kann auch jeden Buchstaben aussprechen, wenn er auf der Tastatur gedrückt wird. Die Software verfügt über einige Tastenkombinationen, die die aktuelle Zeile usw. lesen.

In Großbritannien gibt es eine Software, mit der Sie eine Adresse in einen Buchstaben eingeben können, indem Sie die Postleitzahl eingeben und dann einen Hotkey drücken, um sie abzurufen Die Postleitzahl wurde fast zur vollständigen Adresse. Diese Software wird häufig mit Kundendatenbanken usw. verwendet, die selbst keine „schnelle“ Adresseneingabe unterstützen.

Tester möchten in der Lage sein, alle Tastenanschläge und Mausbewegungen aufzuzeichnen, die sie beim Testen der Software ausführen Sie können sie dann wiedergeben, um den Test zu wiederholen.

In allen oben genannten Fällen hängt die Software davon ab, ob Sie sehen können, welche Tastenanschläge an andere Programme gesendet werden.


Smartphones Tablets schränken die Interaktion von Anwendungen untereinander ein, sodass sich die meisten Benutzer immer noch an einen „PC“ oder Mac wenden, wenn sie Arbeiten erledigen möchten, für die mehr als eine Anwendung erforderlich ist.

Sicherheit und Freiheit, produktiv zu sein, gehören nicht immer zusammen. Es muss ein Kompromiss geschlossen werden. Das iPhone befindet sich an einem Ende des Spektrums und Windows / Max am anderen Ende.

Dies ist kaum der Grund, warum dies in herkömmlichen Desktop-Betriebssystemen nicht verfügbar ist. Wenn Sie sich beispielsweise Android ansehen, werden solche Informationen nur angezeigt, wenn eine Anwendung in der Barrierefreiheit ausgewählt ist, die explizit auf solche Informationen zugreifen darf.
Alex Cannon
2018-02-14 06:08:32 UTC
view on stackexchange narkive permalink

Das X Window-System macht dies bereits zu einem gewissen Grad. Es ermöglicht Programmen, die Maus und die Tastatur zu greifen, und nichts anderes kann die Eingaben abfangen. Nicht einmal der Fenstermanager. Es ist ziemlich ärgerlich für Vollbildspiele, da es keine Möglichkeit gibt, vom Spiel abzuweichen. Versuchen Sie, xterm zu öffnen, die Strg-Taste gedrückt zu halten, mit der rechten Maustaste zu klicken (glaube ich) und wählen Sie die Tastatur greifen. Was Sie jetzt in xterm eingeben, kann kein anderer Client sehen, der eine Verbindung zum X-Server herstellt. Bearbeiten: Es sieht so aus, als ob X immer noch eine XQueryKeymap-Funktion hat, die dies umgehen und von einem Keylogger verwendet werden kann.

Bearbeiten: Windows implementiert eine solche Funktion, indem es so eingestellt wird, dass das Drücken von Strg + Alt + Entf immer bringt einen gültigen Windows-Kontoverwaltungsbildschirm öffnen, solange die schnelle Benutzerumschaltung deaktiviert ist. Daher sind keine falschen Passworteingabebildschirme möglich.

Ich glaube, dies ist die XGrabKeyboard-Funktion.Leider ist es für die Sicherheit nicht nützlich, da es ziemlich trivial umgangen werden kann (was albern ist, weil einige Programme versuchen, es für die Sicherheit zu verwenden, wie xterm, wie Sie erwähnt haben).
Beziehen Sie sich auf die Tastenkombination Strg + Alt + *, um Tastaturgriffe freizugeben?Moderne Distributionen haben diese Funktion deaktiviert.Es kann ohnehin nur von den Benutzern des X-Servers verwendet werden, nicht von anderen Clients, die eine Verbindung zum X-Server herstellen.
Nein, ich beziehe mich auf einen X11-Protokollbefehl.Die "XQueryKeymap" kann das Tastaturgreifen auf Xorg umgehen.
Re.Ihre Bearbeitung, Linux und viele Unices haben etwas Ähnliches namens SAK (Secure Attention Key).Wenn Linux aktiviert ist, ist es Strg + Alt + SysRq + K.Alle Prozesse im aktuellen TTY werden abgebrochen, wodurch agetty / logind erneut angezeigt wird und sichergestellt wird, dass Sie eine nicht entführte, nicht gefälschte Anmeldeaufforderung erhalten.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...