On me demande souvent quel keylogger choisir, quel est le meilleur, que font-il exactement etc…
En somme, comment trouver un keylogger professionnel.
Il faut savoir une chose, à peu près 0% des keyloggers enregistrerontexactement ce que vous souhaitez à partir du moment où vous souhaitez récupérer quelque chose de plus précis et complet que le mot de passe 123456.
Pourquoi ?
Il y a plusieurs raisons à cela.
95% des keyloggers sont « internationaux »
International semble parfait, car « ça devrait fonctionner partout ». Seulement c’est le contraire, il y a des tonnes de claviers et surtout de touches différentes, aucunkeylogger n’enregistrera fidèlement tous les caractères du monde entier, ça serait un travail titanesque et à mettre à jour très régulièrement.
En mettant ça en rapport avec les claviers français, on observe facilement que parmi ces 95% de keyloggers, il y a déjà une très grande partie que ne prend pas en compte les touches comme « € », « ² », « @ »…etc.
La touche euro nécessite une combinaison AltGr + E, la touche AltGr n’est pas disponible sur le clavier américain non international de référence à certains de ces keyloggers.
On parle également de substitut AltGr = Alt + Ctrl et il y a fort à parier que ces keyloggers ne prennent pas non plus en compte cette égalité de combinaison.
Ainsi, si un utilisateur utilise la touche € dans son mot de passe, ces keyloggers ne sauront afficher quelque chose de meilleur que CTRL ALT e. Certains me diront que ça reste compréhensible, on devine que la touche euro a été tapée, ce n’est pas toujours le cas lorsque les touches ALT et CTRL sont pressées ici et là et noyées dans des logs de plusieurs dizaines de lignes.
Passons à un autre problème, celui de la puissance carrée « ² ». Ce n’est pas la seule du tout, elle ne s’affiche soit pas, soit quelque chose s’affiche à la place.
Ceci est dû à un problème plus complexe de disposition des touches sur les clavier, aussi appelée Keyboard Layout en anglais.
Par exemple, si le keylogger se base sur le modèle américain international :
Vous pouvez comparer avec votre clavier, ce n’est pas partout pareil.
Heureusement, les touches générales sont automatiquement associées de la bonne façon à l’aide des Virtual Key Codes prévus par Microsoft, votre pilote clavier en association avec votre système d’exploitation replace donc directement les touches suivant le layout correspondant à votre langue.
La liste de ces codes, donc des touches que vous pouvez généralement récupérer avec n’importe quel keylogger se situe ici : http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731%28v=vs.85%29.aspx
Vous voyez que AltGr n’y est pas car il équivaut à CTRL + ALT comme on l’a vu, et que les touches VK_OEM_* peuvent « varier selon les claviers », sans compter que certains claviers ont plus de touches que d’autres.
Alors la solution qui semble à première vue valable pour remédier à ce problème est d’utiliser les fonctions de l’API Windows comme ToUnicodeEx.
On récupère le layout actuel, et on convertit les virtual codes en caractères ASCII ou Unicode correspondants. C’est presque bien, sauf pour les dead keys (touches mortes).
Car cette fois un autre problème se pose, on ne récupère pas correctement des mots comme noël, à la place on obtient des mots exotiques du type no^^el.
Microsoft le dit lui-même :
« The parameters supplied to the ToUnicodeEx function might not be sufficient to translate the virtual-key code because a previous dead key is stored in the keyboard layout. »
Et en essayant de gérer cette fonction avec des petits hacks pour avoir quelque chose de fonctionnel on risque de modifier le buffer clavier en mode noyau qu’utilise cette fonction, autrement dit les mots s’afficheront correctement dans les logs du keylogger, mais l’utilisateur ne pourra plus écrire « noël » dans les autres applications…
Les fonctionnalités c’est bien, quand ça marche c’est mieux
Les keyloggers avancés appelés logiciels de surveillance, peuvent enregistrer les conversations reçues et envoyées de certains logiciels de messagerie instantanée comme WLM à l’époque, Skype, Yahoo IM etc.
Il y a 3 façon de le faire :
- Récupérer les fichiers contenant les historiques
- Récupérer les objets avec l’accessibilité
- Récupérer les objets avec l’UI Automation
La première est évidemment bancale, si l’utilisateur supprime l’historique avant qu’il soit récupéré, ou ne l’enregistre simplement pas, on n’ira pas loin.
Les deux suivantes se basent sur le même principe qui est de récupérer lescontrôles qui hébergent le texte dans les programmes concernés.
Sauf qu’on retombe sur le même problème qu’avant, Skype en anglais n’a pas les mêmes noms de contrôles que Skype en français. Résultat, ça marche avec la version anglaise mais pas avec la version française.
La plupart des keyloggers dont les plus populaires ont des interfaces joliment traduites en français mais…seulement l’interface est traduite…
Exemple avec Skype et le nom « Contenu de la discussion » dans lequel est affiché le texte des conversations:
Il manque pas un morceau là ?!
A peu près 96% (ouais j’aime bien les pourcentages :cool:) des keyloggers ont des « trous » dans les logs, des parties qui manquent bizarrement à intervalles réguliers.
Cela est dû à l’envoi des logs par e-mail, un code VB.NET typique que vous trouverez facilement ressemble à ça :
'on envoie les logs par mail
EnvoyerEmail(logs, "mail@blabla.fr", "***")
'on vide la textbox contenant les logs pour ne pas les renvoyer plus tard
TextBox1.Clear()
Ça fonctionnerait bien si la fonction EnvoyerEmail() était rapide. Seulement, l’envoi d’un mail est relativement lent, il se passe quelques secondes entre le moment ou le programme copie les logs et les envoie.
Pendant ces quelques secondes, l’utilisateur surveillé peut très bien taper sur son clavier. Ces caractères tapés pendant ce temps sont effacés juste après avec la méthode Clear() et ne seront plus jamais envoyés.
Conclusion
Je ne vais pas avoir le temps de détailler toutes les solutions à ces problèmes, mais sachez qu’il faut souvent résoudre ces problèmes en codant les fonctions soi-même, en définissant bien quels sont les claviers ou langues acceptées par le keylogger, et tester un minimum le keylogger pour s’assurer qu’il ne manque pas des parties de logs.
Le but de l’article n’est pas (seulement) de dire que ces keyloggers populaires ne sont pas si performants qu’ils en ont l’air, mais d’expliquer plus concrètement ce qu’on nous vous dira jamais.
0 commentaires:
Enregistrer un commentaire