Keylogger pour X server

Saviez-vous que n’importe quelle application graphique lancée sur votre bureau peut écouter toutes les frappes au clavier alors même qu’elle n’a pas le focus ? C’est un travers du design du serveur X qui est la brique de base pour afficher un bureau depuis 20 ans sous Linux.

J’ai fait un petit keylogger en C++ pour tester à partir de vieux exemples de code trouvés sur le net. Avec quelques ko, vous pouvez écouter quelqu’un taper son mot de passe root quelque soit l’application graphique (popup de Gnome qui assombrit l’écran, Gnome terminal, etc…) et quelque soit l’utilisateur qui ait lancé l’application (sandbox fails).

Mieux, le design du serveur X permet à une application d’envoyer des frappes clavier dans une autre ainsi que de prendre des captures d’écran du bureau entier.

La seule solution à ce problème est d’utiliser Wayland en remplacement de X. Avec Wayland les applications sont cloisonnées et n’ont plus accès directement à tout le bureau ni au clavier. Vous pouvez facilement comparer la différence en utilisant mon programme puisque toutes les distributions modernes fournissent Wayland et X (même Debian 8). Il suffit de choisir l’option sur l’écran de connexion de votre utilisateur dans GDM.

Malheureusement, sous Debian 8, je rencontre encore quelques bugs avec Wayland (reprise d’écran de veille cahotique, le drag & drop entre applications ne fonctionne pas)

Dans l’attente, je vous conseille de lancer vos programmes non-sûr (steam, skype, etc…) dans un autre serveur X (ouvrer une session graphique sous un autre utilisateur). Cela permettra également d’isoler l’accès à vos données personnelles du même coup.

6 réactions sur “ Keylogger pour X server ”

  1. Pierre

    Pour info, bien que Wayland cloisonne les applications, le système d’exploitation ne permet pas le même niveau d’isolation. Il suffit donc d’abuser certaines fonctionnalités de l’OS pour passer outre les restrictions du protocole de Wayland.

    Ici on peut trouver un proof of concept de keylogger pour Wayland:
    https://github.com/MaartenBaert/wayland-keylogger

  2. sebsauvage

    Accessoirement, pour les applications en lesquelles vous avez une confiance moyenne, vous pouvez aussi utiliser Firejail qui propose différentes isolation (disque, réseau…) et – il me semble – désormais aussi une isolation X.

    https://firejail.wordpress.com/

    C’est assez léger et ça tourne en espace utilisateur.

  3. Tuxicoman

    @Pierre: LD_PRELOAD, c’est très puissant :p
    C’est pour cela que le modèle de sécurité basé sur l’utilisateur se tient. Si c’est l’utilisateur qui le lance, il doit avoir confiance dans le logiciel. Wayland va un peu plus loin que X mais ne change pas le paradigme pour autant (les données utilisateurs sont toujours accessibles au logiciel « fouineur », il peut lancer LD_PRELOAD, etc…)
    Si maintenant, on veut un modèle de sandbox pour chaque application, alors on rentre dans un autre paradigme où tu crains à chaque fois que tu donnes l’accès à ton carnet de contact à une application…

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.