it-swarm.com.de

Warum stellen Betriebssysteme Tastenanschläge nicht nur für die aktuelle App zur Verfügung?

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 diese Richtlinie nicht standardmäßig durchsetzen?

59
user66309

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 des Alt-Tab-Programms, 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, dass in jede Anwendung ein vollständiger Satz von Tastaturtreibern integriert sein muss, wenn Sie den Betriebssystemzugriff auf die Tastatur eliminieren.

82
Mark

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 geschehen, bevor das Betriebssystem die Tastaturmeldungen sehen kann, oder danach. 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 In-Focus-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 auch 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. Genauso 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 gab Fortschritte , um den Prozess zu sperren, z. B. das Erfordernis "signierter Treiber", wodurch die Wahrscheinlichkeit verringert wird, 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, 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.

31
phyrfox

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 wie beispielsweise Googles Android, Apples iOS und sogar Googles (Desktop-) ChromeOS Tastenanschläge nur auf aktuelle Anwendungen beschränken1. 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 entsprechende 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 feststellen, dass Eingabehilfen-Software, die einen globalen Tastaturzugriff erfordert, in solchen modernen Umgebungen weiterhin geschrieben werden kann, indem solche Informationen verfügbar gemacht werden genau dann, wenn die Anwendung explizit gewährt wird solche Berechtigungen im Bereich Einstellungen für Eingabehilfen. Dies macht das Einrichten einer solchen Software etwas mühsam, verhindert jedoch, dass Keylogger verteilt werden.

Zusammenfassend ist der einzige Grund, warum es nicht getan wird, nicht , weil es nicht hilft oder unmöglich ist, sondern weil es aufgrund historischer Prioritäten nur ein bisschen dauert 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 Ich weiß, dass Mac OS X kürzlich seine Sandboxing-Bemühungen um 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!

24
David Mulder

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-Autoren zu DLL Injection und eine ganze Reihe anderer Techniken. Sie können sogar einfach ein transparentes Fenster zeichnen ) over die Zielanwendung, die den Fokus hat und Tastenanschläge empfängt und diese dann durch Senden von Windows-Nachrichten weiterleitet. Grundsätzlich wurde Windows nicht für die 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 bietet einem Exploit die Möglichkeit, jeden Tastendruck aufzuzeichnen, den der Browser sieht, auch wenn er einer Sandbox nicht entkommen kann.

5
pjc50

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 Überwachungseingabe für ein Hintergrundprogramm erforderlich wäre, muss diese 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?

2
David-

Einige 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, z. B. eine Dvorak-). wie 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 auf den linken Cursorpfeil, -B auf - usw. abbilden. Wir Faulen (oder nur ich) müssen also nicht unsere Hände vom alphabetischen Teil der Tastatur bewegen, um uns zu bewegen.

2
Mike Maxwell

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 das Funktionieren der Software von entscheidender Bedeutung ist.

  • Mit Push-to-Talk-Tasten in VoIP-Software wie Teamspeak oder Ventrilo können Spieler beispielsweise zu dem Zeitpunkt chatten, zu dem sie chatten möchten, damit Sie keinen Strom von Geräuschen hören.
  • Menschen, die ihren Lebensunterhalt mit Bildschirmaufnahmen verdienen (wie Youtubers/Streamer, Computer-Tutorialisten und Software-Rezensenten), verlassen sich auf Verknüpfungen von Software wie Fraps, OBS, Xsplit, ..., um sicherzustellen, dass ihre Aufnahmen ordnungsgemäß funktionieren.
  • Softwareentwickler profitieren häufig davon, dass sie ihr Projekt fokussieren können, während sie mit den Funktionstasten ihren Code auf ihrem anderen Monitor durchgehen.
  • 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.
1
Nzall

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 aktuell fokussierte Anwendung gesendet .

Dies 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.

Was Windows betrifft, würde ich mir vorstellen, dass dies nicht erfolgt, da die derzeitige Methode zum Umgang mit Tastendrücken recht komplex ist und für alle aktuellen Treiber und Programme ausgelegt ist.

1
JamEngulfer

Das X Window-System macht dies bereits teilweise. 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 so, dass durch Drücken von Strg + Alt + Entf immer ein gültiger Windows-Kontoverwaltungsbildschirm angezeigt wird, solange die schnelle Benutzerumschaltung deaktiviert ist. Daher sind keine falschen Passworteingabebildschirme möglich.

0
Alex Cannon

Geben wir ein praktisches Beispiel.

Einige behinderte Menschen finden das Tippen schwierig und tippen sehr langsam. Sie verwenden häufig die Software „ Word Prediction “, die eine Liste der Wörter anzeigt, die mit den 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 Brief eingeben können, indem Sie die Postleitzahl eingeben und dann einen Hotkey drücken, um die Postleitzahl auf nahezu die vollständige Adresse zu erweitern. 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, damit sie sie dann wiedergeben können, 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 und Tablets schränken die Interaktion von Anwendungen untereinander ein, so dass sich die meisten Menschen 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.

0
Ian Ringrose