Trovare il keylogger nascosto attraverso forzando un errore di calcolo

2

Deve essere possibile rilevare il keylogging esaminando attentamente i tempi tra l'esecuzione fisica del tasto e l'eventuale comparsa del personaggio sullo schermo.

Ho avuto un amico mostramelo con la sua macchina fotografica. La videocamera può registrare a 16.000 fotogrammi al secondo. Si è registrato digitando la lettera 'a' nel programma 1, quindi - nella riproduzione al rallentatore - la quantità di tempo trascorso tra l'occorrenza del personaggio sullo schermo era diversa nel programma 2 o nel programma 3 e così via.

Questo mi ha fatto pensare. Forse un keylogger potrebbe essere rilevato rapidamente senza dover gestire il design malevolo di un keylogger intelligente in grado di rilevare quando viene rilevato se questi tipi di dati sono stati analizzati. Se si conoscono le aspettative e c'è una leggera differenza di tempo su questo tipo di scala senza altri processi in esecuzione forse qualcosa può essere ricavato da tali dati.

Non sono sicuro che questa domanda sia chiara, ma mi piacerebbe sapere se c'è qualche merito a essere in grado di rilevare i keylogger attraverso l'analisi off-device; cioè, come se una sofisticata telecamera di questo calibro fosse usata per cronometrare l'occorrenza del personaggio.

Forse si potrebbe fare un dispositivo fisico per premere i tasti sulla tastiera più velocemente di quello che una mano umana può eseguire per generare un errore che potrebbe essere analizzato. Forse questo errore potrebbe essere utile.

È difficile valutare che ti concedo perché probabilmente non sei mai entrato in contatto con una macchina fotografica come questa, e hai visto i risultati come sono io. Ad ogni modo, forse qualcuno ha qualcosa da offrire.

    
posta Aard-Wolf 15.03.2014 - 08:48
fonte

8 risposte

7

Il grande problema che stai per incontrare se stai cercando di trovare un keylogger analizzando la latenza dei tasti è la frequenza di aggiornamento del monitor: la maggior parte dei monitor si aggiorna solo 60 volte al secondo. Un buon keylogger aggiungerà solo pochi microsecondi di latenza, quindi, anche prima di prendere in considerazione altre fonti di rumore (come la casualità dello scheduler), sarete handicappati da ciò che è essenzialmente un rapporto segnale-rumore 1: 10000 . Sì, è possibile trovare un segnale molto al di sotto del livello del rumore (vedi Limite di Shannon ), ma non è facile.

    
risposta data 18.03.2014 - 06:04
fonte
5

In pratica, questo non funzionerà. Ci sono troppe cose in corso in un computer. Quando si preme un tasto, il sistema operativo interpreta la pressione del tasto e quindi invia notifiche a qualsiasi applicazione che presta attenzione alla pressione dei tasti. Il problema è che in qualsiasi momento, il tuo computer sta svolgendo numerose attività in background. Non esiste un modo particolare per giudicare quanto tempo occorrerà per la stampa dei tasti per essere registrato, poiché il sistema operativo potrebbe impiegare diverse quantità di tempo per elaborare e inviare l'evento per la stampa dei tasti perché sta lavorando su cose non correlate. / p>

Allo stesso modo, la quantità di sforzo che richiederà un keylogger per essere notificata e registrare l'evento è minuscola e può essere eseguita su un thread diverso dal sistema operativo. Una tattica più efficace sarebbe quella di monitorare quanti servizi vengono notificati degli eventi chiave e cercare una discrepanza tra il numero previsto e il numero effettivamente in atto, ma ciò non consentirebbe semplicemente di raccontare dai tempi. Il tempo sta per essere intrinsecamente troppo variabile con un ritardo troppo piccolo causato dal logger. Non è nemmeno possibile utilizzare un programma che misuri semplicemente il tempo di CPU del processo che si sta trattando dal momento che il ritardo indotto dal keylogger sarà sul lato OS delle cose mentre il processo è in uno stato di attesa.

(Anche come è stato menzionato in un'altra risposta, provare a farlo visivamente non farà il trucco dato che l'aggiornamento del monitor è troppo lento.)

    
risposta data 19.03.2014 - 04:09
fonte
4

Maybe this is something a bit higher than what most people on this site are able to answer because they have a weak background...

Questo sta succedendo ...

It must be possible to detect keylogging by close scrutiny of timing between physical keystroke execution and the character's eventual occurrence on the screen.

No, questa affermazione non è valida. I keylogger non devono introdurre un ritardo, e anche per quelli che lo fanno, il ritardo è probabilmente così piccolo che rientra nei molti ritardi introdotti in altre parti del sistema, che sarà impossibile isolare.

Quindi, no. Questo tipo di dispositivo non è in grado di rilevare tutti i (tutti?) Keylogger; per i keylogger fisici di sfondo può essere fatto solo leggere parassiticamente i segnali che vanno direttamente dalla tastiera al computer senza dover introdurre alcun ritardo. Cosa ti aspetti dal tuo dispositivo in questo scenario?

In ogni caso, il ritardo introdotto da un dispositivo in linea sarà terribilmente difficile da rilevare in modo affidabile: la fotocamera a 16 kps non è il problema, ed è relativamente ridondante dato che una gopro sarà abbastanza veloce da tenere il passo la frequenza di aggiornamento degli schermi.

I keylogger del software saranno ugualmente impossibili da provare e misurare poiché ci sono così tanti processi avviati come parte di un moderno sistema operativo che può introdurre ritardi temporali che è impossibile isolare e incolpare un presunto software keylogger: Keylogger e benchmark delle prestazioni

    
risposta data 19.03.2014 - 03:33
fonte
3

A seconda della tecnologia del keylogger, sì, c'è una situazione particolare in cui le informazioni sul tempo potrebbero essere in grado di cedere che qualcosa è cambiato. Un keylogger USB implementato come dispositivo composito o hub aggiungerà un ritardo se confrontato con lo stesso sistema senza keylogger. È necessario misurare i tempi nel computer host, tuttavia: il tempo di pressione su schermo è così inaffidabile da essere privo di significato.

Come un'altra risposta ha detto, non è possibile rilevare un keylogger parassita utilizzando le informazioni di temporizzazione. E un keylogger del software sarebbe meglio esposto attraverso una scansione del sistema e una traccia dello stack.

La migliore risposta è "non affidabile"

    
risposta data 19.03.2014 - 06:24
fonte
2

In teoria, sei corretto, puoi confrontare il tempo di attacco e il tempo di comparsa e determinare se è legittimo o meno.

In realtà comunque, dovrai affrontare così tante ragioni per cui questa tempistica può fluttuare che sarà impossibile ottenere un discreto rapporto di rilevamento.

    
risposta data 18.03.2014 - 04:03
fonte
1

Perhaps a physical device could be made to press keys on the keyboard faster than what a human hand can perform to generate an error which could be analyzed. Perhaps this error could be useful.

No. In effetti puoi creare un dispositivo del genere per circa $ 2. Collega un ATTiny45 e alcuni passivi alla tua porta USB e puoi eseguire il bit-bang USB su i pin GPIO. Da lì, l'implementazione di una tastiera HID è piuttosto banale. Il codice esiste.

Ma non otterrai nulla di significativo da questo. L'errore che si ottiene quando le battute arrivano più velocemente di quanto la macchina può elaborare - probabilmente lo hai visto quando il tuo computer era eccessivamente occupato - è un singolo bip per tasto. Questo è il ciclo degli eventi di Windows che ignora l'evento della pressione del tasto e si sposta.

Perhaps a keylogger could be detected ... if one knows the expectations, and there is a slight time difference on this kind of scale without other processes running perhaps something can be gleaned from such data.

È un'idea interessante e può essere praticabile in un'ambientazione di laboratorio attentamente controllata, magari in una configurazione unica. Ma è fondamentalmente un problema segnale-rumore. C'è un lotto che succede tra una pressione di un tasto e quando viene visualizzato un carattere, e la velocità di quel processo dipende da tutti i tipi di fattori. Non sarà coerente tra le macchine o anche su una singola macchina da minuto a minuto.

Rilevare un ritardo causato da un keylogger potrebbe essere possibile se è possibile mantenere il resto della costante di ritardo, ma su un computer reale non è possibile. E anche se fosse possibile, un keylogger potrebbe essere modificato in modo banale per semplicemente accodare gli eventi di un tasto in un buffer e elaborarli in batch, eliminando in modo efficace il ritardo per tasto. Quello che ho scritto 15 anni fa ha fatto proprio questo.

    
risposta data 21.03.2014 - 02:47
fonte
1

Un'altra risposta da aggiungere al coro di "Non funzionerà:"

È possibile creare un keylogger che viene eseguito come utente di sistema che agisce semplicemente come un demone separato: un programma separato che ascolta tutti i tasti premuti. Poiché il sistema operativo è apparentemente il primo attore a "sentire" un keypress e inoltra quel segnale a qualsiasi programma di ascolto, qualsiasi keylogger che non si pone tra il sistema operativo e il processo eviterà accuratamente colpi di prestazione.

AGGIORNAMENTO

Ho iniziato a cercare un modo per mantenere il malware su una GPU ... e poi ho avuto l'idea "E se avessimo installato un keylogger nello spazio di memoria della GPU >" Le GPU usano driver hardware, quindi corrono nello spazio del kernel ... quindi elevato. Sembra un buon strumento per i rootkit!

E poi ho trovato questa carta. Dannazione. Qualcuno ci ha pensato un anno fa!

Ecco come funziona il programma: il processo esegue la scansione della memoria per individuare il codice del driver della tastiera USB, quindi passa quell'indirizzo al malware richiamato sulla GPU e quindi utilizza Direct Memory Access (DMA) per semplicemente inspect la memoria in cui il driver della tastiera memorizza il suo buffer per i tasti premuti ... Odio dirti questo, ma a causa del multithreading, non puoi mai essere sicuro che un processo del kernel non possa guardare quei buffer di memoria dove stanno arrivando le sequenze di tasti in, e ignora completamente l'API del sistema operativo standard che controlla le sequenze di tasti ... questo attacco si rimuove efficacemente da qualsiasi tipo di rilevamento del tempo. Si discute anche direttamente sul motivo per cui è una cattiva idea che il nostro computer sia limitato a una macchina a due stati, ma questo è un problema diverso per un altro giorno ...

    
risposta data 19.03.2014 - 12:05
fonte
0

L'analisi dei ritardi nella sequenza dei tasti non è il modo corretto per identificare un keylogger.

Usa Process Explorer e rivedi i processi esistenti.

link

seleziona colonne - process timeline

identifica quale processo sta iniziando con il computer che potrebbe essere rouge. Spesso si evidenziano in vari colori il processo di sospetto.

Puoi anche controllare con Total virus.

seleziona colonne - posizione di avvio automatico - se questo non è normale, anche questo può dare informazioni.

puoi utilizzare questo tipo di anlysis malware per cercare questo processo rouge keylogger che viene eseguito in background e più successivamente collegato a Svchost.

se questo è al di là del tuo livello di abilità, puoi eseguire byte di malware e altri scanner simili per identificare questo tipo di software che è stato installato e ha backdoored il tuo PC.

    
risposta data 20.03.2014 - 18:15
fonte

Leggi altre domande sui tag