Is there any way to (partially) defeat keylogger attacks against system-level password entry on OS X?
Sì. Il keylogger tradizionale è un dispositivo hardware che intercetta i dati tra la tastiera e l'immissione di dati di carattere sul controller della tastiera (principalmente dispositivo USB, tastiera HID). I componenti fisici sono pochi e vari sigilli antimanomissione possono essere usati per assicurare l'integrità del sistema fisico. Avresti bisogno di un controllo iniziale per assicurare che nessun keylogger fisico esista, quindi allegare o installare i sigilli. È quindi necessario eseguire controlli periodici o periodici dei sigilli per verificare che l'integrità dell'hardware sia intatta.
Tuttavia i keylogger più moderni sono basati su software o firmware e quindi possono essere difesi solo dai metodi di sicurezza del software. Ciò include la catena dal firmware IC del controller della tastiera, il driver del controller della tastiera, il sottosistema USB del livello OS, il buffer della tastiera e il software della shell.
Ciò richiederebbe di trovare il firmware o il software per ciascun componente della catena e verificare che non sia stato manomesso. Ciò viene solitamente ottenuto ottenendo dal produttore un hash crittografico del firmware o del software per il componente e calcolando l'hash crittografico del software attualmente in uso sul sistema in questione. Se i valori hash crittografici corrispondono, il firmware o il software non sono modificati.
Più software nella catena, più difficile è proteggere e verificare solo per la natura della crescente complessità e più permutazioni delle sequenze di istruzioni.
There's several places in my ‘personal security infrastructure’ (is there a better phrase for that?) where I find myself typing very important passwords into text-fields on OS X (for instance, dis-encrypting and mounting thumbdrives containing very sensitive data.)
I'm (perhaps unreasonably) afraid of keyloggers
Nei keylogger hardware sì, nel software keylogger no.
as these [Keyloggers] are the only method I can think of short of a system-level vulnerability or physically watching (or recording) my activities when entering the password.
No, ci sono molti altri modi per determinare la tua password. Il più comune è trovare una password o una frase esposta da un altro sistema e tentare di usarla sul sistema in questione. Questo di solito ha successo poiché molte persone riutilizzano le password.
Un altro esempio banale è il tentativo di trovare tasti usati frequentemente sulla tastiera sia da sporcizia che da ware e provare le combinazioni con limiti di quei tasti usati frequentemente per trovare la password;
Inoltre ci sono varie forme di ingegneria sociale e phishing che sono piuttosto efficaci.
In other secure systems I use, there's an option to enter a final part of the password using the mouse or similar, to help avoid keyloggers making an attacker's job too difficult.
Ci sono due posibiliti qui. Le chiavi sono divise, ovvero quella parte della chiave è memorizzata in un contenitore sul sistema e una parte della chiave è memorizzata nella tua mente. Oppure la chiave completa è memorizzata in un contenitore e il sistema ha bisogno solo di pochi caratteri per determinare quale chiave è necessaria.
Esistono anche due tipi generali di suddivisioni di chiavi: una che chiamo in sezione e una che chiamo la suddivisione in lunghezza della chiave intera. Il sezionato prende una chiave con n bit e la divide in due o più parti.
Ad esempio: prendere una chiave 0xA55AC33C e dividerla in 0xA55A e 0xC33C.
L'intera lunghezza della chiave divisa prende una chiave di n bit e la divide in due o più parti di lunghezza n.
Ad esempio: prendere una chiave 0xA55AC33C e dividerla in 0x42244224 e 0xE77E8118.
La suddivisione in sezione è una scelta sbagliata per diversi motivi, tra cui l'esposizione a attacchi di forza bruta e problemi che ricombinano la chiave nella corretta endianità e ordine.
Una divisione sezionata potrebbe sventare un keylogger, ma non se l'inserimento della stessa divisione consente a un utente malintenzionato di accedere ai dati sensibili. Ad esempio: se hai solo bisogno di inserire 0xC33C e il keylogger registra questo, un utente malintenzionato può inserire 0xC33C e ottenere lo stesso accesso.
Generalmente, i comandi a livello di shell che non generano i dati sensibili dei caratteri sullo schermo o sul buffer di registro della shell sono più sicuri dei componenti grafici.