Perché i SO non rendono le sequenze di tasti disponibili solo per l'app corrente?

59

Sembra un modo abbastanza ovvio per evitare che il keylogging (software) possa forzare solo l'app corrente (in-focus) a ricevere i tasti.

Potrebbe esserci un modo per rendere esplicite le eccezioni per le macro app, ecc. Interrogare l'elenco delle eccezioni renderebbe banale la ricerca di un keylogger.

C'è qualche ragione per cui i sistemi operativi non applicano questa politica per impostazione predefinita?

    
posta user66309 11.10.2015 - 21:15
fonte

10 risposte

83

Perché non sarebbe di aiuto.

La maggior parte dei keylogger sono installati a livello di sistema operativo e il sistema operativo deve avere accesso alle sequenze di tasti. La commutazione del programma Alt-Tab, usando Ctrl-Alt-Canc per terminare i programmi malfunzionanti e rilevando l'attività della tastiera per impedire l'attivazione dello screensaver, richiede al sistema operativo di vedere i tasti.

C'è anche il piccolo problema che se hai eliminato l'accesso al sistema operativo alla tastiera, ogni applicazione avrebbe bisogno di avere un set completo di driver per tastiera incorporati.

    
risposta data 11.10.2015 - 21:22
fonte
31

L'interfaccia della tastiera per l'applicazione passa attraverso diverse fasi, alcune delle quali il sistema operativo ha un controllo limitato, mentre altre forniscono agganci espliciti per funzionalità aggiuntive. Il progetto di base va così: gli eventi hardware vengono ricevuti dalle catene di driver, che quindi passano i messaggi al kernel, che poi li invia a una catena globale di hotkey e infine all'applicazione desiderata (se non annullati da una fase precedente della catena) ).

La catena dei driver consente al kernel di non preoccuparsi di "come" vengono generate le sequenze di tasti, solo che lo sono. Potrebbero essere da una tastiera, da un dispositivo IR o da qualsiasi altra fonte che potrebbe inviare un segnale progettato per essere interpretato come una tastiera. Un registratore di tastiera hardware, ad esempio, è un dongle che ha un ingresso USB o PS / 2 su un'estremità e una porta USB o PS / 2 sull'altro, in modo tale che la tastiera trasmetta i dati attraverso questo dispositivo e sia intercettata. Il sistema operativo non può letteralmente rilevare che tale registrazione è in corso.

L'altro tipo comune di registrazione avviene nel software, cosa che può accadere sia prima che il sistema operativo abbia la possibilità di vedere i messaggi della tastiera, sia dopo. I driver possono fare praticamente tutto quello che vogliono, e il sistema operativo non può rilevare rigorosamente che un driver stia deviando messaggi a scopi nefandi, perché riescono a ispezionare i messaggi prima che il sistema operativo lo faccia. Questa è la natura del livello di astrazione hardware (HAL) a cui i driver fanno parte. Fortunatamente, dal momento che sono in memoria, il software anti-malware può rilevare e disabilitare tale comportamento.

Infine, si ha un "buco" intenzionale nel sistema operativo, generalmente definito "hot key globale", che consente a qualsiasi applicazione di richiedere che i messaggi della tastiera vengano passati a loro prima dell'applicazione in-focus. Ciò consente non solo il funzionamento di Alt-Tab (il gestore di finestre intercetta questi messaggi per cambiare app), ma anche la maggior parte dei programmi multimediali richiede ai gestori di supportare tasti multimediali come riproduzione, riavvolgimento e avanzamento rapido e altre app per l'utente controllo del volume, ecc. Senza tutti questi hot key globali, il sistema operativo sarebbe molto fastidioso da usare e le app risulterebbero molto più complesse. Tuttavia, proprio come questa è una grande caratteristica, può anche essere abusata da un programma.

Tuttavia, si noti che non tutti i programmi ricevono una copia di un messaggio sulla tastiera, solo driver, gestori di tasti di scelta rapida globali e l'applicazione in-focus. Il problema non ha nulla a che fare con il fatto che ogni programma riceve una copia di un evento di tastiera, ma il fatto che l'HAL deve essere in grado di trasformare i messaggi dall'hardware ai messaggi del kernel e gli hot key globali sono necessari per fornire funzionalità al utente senza che ogni programma debba essere creato per fornire le stesse funzionalità.

hanno stato avanzato per bloccare il processo, come richiedere "driver firmati", che riduce la probabilità che i driver dannosi entrino nella catena dei driver e anti-virus in grado di rilevare i cattivi comportamento da parte delle app. Tuttavia, finché non vengono risolte molte delle vulnerabilità della sicurezza, ad esempio la registrazione della tastiera a livello hardware e la registrazione di hot key globale non sicura, i logger avranno comunque l'opportunità di registrare le sequenze di tasti. Anche se i tasti normali sembrano passare semplicemente dall'hardware all'app, sono necessari diversi passaggi intermedi necessari e questi passaggi sono necessari per la compatibilità di base (driver) e la funzionalità (tasti di scelta rapida globali).

    
risposta data 11.10.2015 - 23:56
fonte
24

Il motivo per cui questo non viene fatto di default è perché la progettazione del sistema operativo di generazione precedente non aveva un grande focus sulla sandboxing e simili, quindi in questo momento richiederebbe grandi cambiamenti architettonici per far funzionare queste modifiche. Mark sfiora quelli in una certa misura nella sua risposta, ma si riduce al fatto che non è possibile consentire alle applicazioni di eseguire ciecamente con i privilegi del sistema operativo.

Tuttavia è molto più interessante notare che i sistemi operativi moderni come ad esempio l'Android di Google, l'iOS di Apple e persino il Chrome OS di Google (desktop) limitano le sequenze di tasti solo alle attuali applicazioni 1 . Ora, concentrandosi solo su ChromeOS poiché è l'unico OS desktop nell'elenco, è anche importante notare che le scorciatoie globali non creano problemi in questo caso. Un'applicazione può 'semplicemente' dire al sistema operativo che desiderano collegarsi a un collegamento specifico che può quindi essere configurato nel sistema operativo dall'utente. La specifica pertinente può essere trovata qui per quelli di voi che sono curiosi di sapere come appare.

Allo stesso modo, dando un'occhiata ad Android, possiamo scoprire che il software di accessibilità che richiede l'accesso globale alla tastiera può ancora essere scritto in ambienti così moderni esponendo tali informazioni se e solo se l'applicazione è esplicitamente concesso tali permessi nel pannello delle impostazioni di accessibilità. Ciò rende un po 'difficile l'impostazione di questo software, ma impedisce la distribuzione dei keylogger.

In conclusione, l'unica ragione per cui non è stato fatto è not perché non aiuta o è impossibile, ma perché, a causa delle priorità storiche, ci vuole un po 'più di tempo per arrivarci. Ci arriveremo in tempo e nel frattempo può avere senso utilizzare un sistema operativo più moderno e bloccato in ambienti sicuri.

1 So che Mac OS X ha recentemente ampliato lo sforzo di sandboxing delle applicazioni. Presumo che un'applicazione di sandboxing corretta (che non richiede i privilegi di amministratore) non sarà in grado di agire come un keylogger, tuttavia ho trascorso pochissimo tempo a leggere su come funziona davvero il loro sandboxing. Se qualcuno lo sa per certo, condividilo!

    
risposta data 11.10.2015 - 23:09
fonte
5

Su Windows, c'è pochissima protezione tra le applicazioni eseguite come lo stesso utente. Se tenti di togliere SetWindowsHookEx , i produttori di malware passeranno all'iniezione DLL e a tutta una serie di altre tecniche. Si potrebbe anche solo disegnare una finestra trasparente sopra l'applicazione mirata che avrebbe il focus e ricevere le sequenze di tasti, quindi passare quei tasti digitando i messaggi di Windows. Fondamentalmente, Windows non è stato progettato tenendo presente la possibilità di eseguibili malevoli.

Un sistema progettato per l'esecuzione di applicazioni non affidabili può eseguire il sandboxing l'uno dall'altro. Ma è ancora vulnerabile agli exploit (molto più rari) che perforano la sandbox nel kernel.

C'è anche un'altra tecnica che può essere utilizzata: l'esecuzione di codice arbitrario nel browser dà a un exploit la possibilità di registrare ogni sequenza di tasti che il browser vede, anche se non può sfuggire a una sandbox.

    
risposta data 12.10.2015 - 17:13
fonte
2

Ci sono motivi molto validi per cui le battiture dei tasti sono visibili per le applicazioni esterne al processo in foreground attualmente in esecuzione. A meno che ogni programmatore non applichi taglia / copia / incolla ad esempio, il sistema operativo deve monitorare determinate sequenze di tasti. Diciamo che hai un programma per prendere screenshot e vuoi che venga attivato da un certo tasto, quel programma deve essere in grado di monitorare l'attività della tastiera per rilevare quando i suoi tasti sono attivati. Avrebbe più senso eseguire tutto in una sandbox e se l'input di monitoraggio fosse un requisito per un programma in background è un permesso che deve essere consentito, ma indipendentemente da ciò che viene fatto, c'è sempre un modo per aggirarlo. Se qualcuno vuole sapere che cosa digitano, troveranno un modo. Tutto ciò che possiamo fare è cercare di renderlo più difficile. L'offuscamento potrebbe essere un metodo interessante. Inietti al sistema operativo molti falsi messaggi di input che il programma in esecuzione genera per ingannare qualcosa al di fuori di esso?

    
risposta data 12.10.2015 - 22:29
fonte
2

Diversi hanno osservato che altre applicazioni legittime potrebbero dover trasformare l'input da tastiera originale (che viene fornito sotto forma di keycap X è stato premuto / rilasciato) in una sorta di testo. Persone che hanno perso l'uso di una mano, per esempio.

Esistono anche strumenti di mappatura della tastiera che consentono alle persone di digitare le lingue per le quali il sistema operativo non fornisce una tastiera per quella lingua (o l'utente non vuole usare la mappa della tastiera definita dal sistema operativo), ad esempio, un layout simile a Dvorak per una lingua diversa dall'inglese). Una di queste app è Keyman (keyman.com).

E infine, ci sono persone come me (o forse io sono l'unico) che hanno mappatori di tastiera che mappano cose come -H alla freccia del cursore sinistra, -B a -, e così via. Quindi noi pigri (o solo io) non dobbiamo spostare le mani dalla parte alfabetica della tastiera per spostarci.

    
risposta data 12.10.2015 - 23:33
fonte
1

Esistono infatti alcuni sistemi operativi che consentono questo, ovvero Mac OS X. Le pressioni dei tasti che non sono combinazioni di tasti di sistema 'riservate' o 'modificatori' (alt, ctrl, shift ecc) vengono inviate solo all'applicazione attualmente a fuoco.

Ovviamente, ciò renderebbe molto fastidioso alcune applicazioni progettate per l'accessibilità e i programmi che utilizzano il VoIP che necessitano di tasti push-to-talk. Per questo motivo, c'è una parte delle Preferenze di sistema in cui è possibile abilitare questa funzionalità per applicazioni specifiche.

Per quanto riguarda Windows, immagino che non sia fatto perché il metodo attuale di gestione dei tasti è abbastanza complesso ed è progettato per funzionare con tutti i driver e i programmi correnti.

    
risposta data 13.10.2015 - 16:29
fonte
1

Uno dei motivi è che per alcuni software, essere in grado di leggere le sequenze di tasti mentre sono attive ma non attualmente selezionate è vitale per il funzionamento del software.

  • Ad esempio, i tasti push-to-talk su software VoIP come Teamspeak o Ventrilo consente ai giocatori di chattare nel momento in cui vogliono chattare non avere un rumore torrent.
  • Le persone che realizzano registrazioni su schermo una vita (come Youtuber / Streamers, computer tutorialists e revisori software) si basano su scorciatoie da software come Fraps, OBS, Xsplit, ... per garantire che le loro registrazioni funzionino correttamente.
  • Software gli sviluppatori spesso traggono vantaggio dall'essere in grado di focalizzare il loro progetto mentre passare attraverso il loro codice sul loro altro monitor con la funzione chiavi.
  • Personalmente mi piace poter mettere a fuoco il mio World of Warcraft mentre sto usando la rotellina del mouse per scorrere in Chrome e non è necessario passare da un programma all'altro in modo costante.
risposta data 15.10.2015 - 00:41
fonte
0

Diamo un esempio pratico.

Alcune persone disabili trovano la digitazione difficile e sono molto lente nel digitare. Spesso usano il software " previsione delle parole " che mostra un elenco di parole che corrispondono a ciò che hanno digitato fino ad ora, consentendo di selezionare una parola dall'elenco con un singolo tasto.

Le persone non vedenti utilizzano un software che legge il testo visualizzato sullo schermo (screen reader). Questo software può anche pronunciare ogni lettera mentre viene premuta sulla tastiera. Il software ha alcuni tasti di scelta rapida che leggono la riga corrente, ecc.

Nel Regno Unito, esiste un software che consente di digitare un indirizzo in una lettera digitando il codice postale, quindi premendo un tasto di scelta rapida per ottenere il codice postale esteso in quasi l'indirizzo completo. Questo software viene spesso utilizzato con database clienti, ecc. Che non supportano l'immissione di indirizzi "rapidi" stessi.

I tester desiderano essere in grado di registrare tutte le sequenze di tasti e le mosse del mouse eseguite durante il test del software, in modo che possano quindi riprodurle per ripetere il test.

In tutti i casi di cui sopra, il software DEPENDE per essere in grado di vedere quali tasti vengono inviati ad altri programmi.

Smartphone e tablet limitano il modo in cui le applicazioni possono interagire tra loro, nella misura in cui la maggior parte delle persone si rivolge a un "PC" o Mac quando desiderano eseguire il lavoro che richiede l'uso di più di un'applicazione.

La sicurezza e la libertà di essere produttive non vanno sempre insieme; c'è un compromesso da fare. L'iPhone si trova all'estremità dello spettro e Windows / Max all'altra estremità.

    
risposta data 12.10.2015 - 21:36
fonte
0

Il sistema X Window lo fa già in una certa misura. Permette ai programmi di afferrare mouse e tastiera e nient'altro può intercettare gli input. Nemmeno il gestore di finestre. È piuttosto fastidioso per i giochi a schermo intero poiché non c'è modo di abbandonare il gioco. Prova ad aprire xterm e tenendo premuto il tasto Ctrl e facendo clic con il pulsante destro del mouse (credo) e seleziona la tastiera. Ora ciò che digiti in xterm non può essere visto da nessun altro client che si connette al server X. Modifica: sembra che X abbia ancora una funzione XQueryKeymap in grado di aggirarla e di essere utilizzata da un keylogger.

Modifica: Windows implementa tale funzione facendo in modo che premendo ctrl + alt + del verrà sempre visualizzata una schermata di gestione account di Windows valida, a condizione che la commutazione utente rapida sia disattivata. Quindi non sono possibili schermate di immissione delle password false.

    
risposta data 14.02.2018 - 01:08
fonte

Leggi altre domande sui tag