Les attaques pre-boot : Kon-Boot et les autres bootkits
Date : 08 Juin 2009
Ce mois-ci, un des membres du Cert-IST a attiré notre attention sur un outil de hacking, nommé "Kon-Boot", qui permet de se connecter en tant qu’administrateur sur un poste sans connaître le mot de passe associé. Rien de nouveau jusque-là, puisqu’il existe depuis des années des CD-ROM de démarrage permettant d’aller écraser le mot de passe administrateur d’un système pour en choisir un autre. Oui mais l’outil Kon-Boot que nous allons entre autres présenter ici permet de prendre le contrôle d’un système sans modifier la moindre donnée sur le disque dur de la machine compromise. De plus, c’est bien le véritable système d’exploitation installé sur la machine qui démarre et non un système spécifiquement conçu stocké sur le CD de boot.
Avant d’entrer dans le vif du sujet, nous souhaitons attirer votre attention sur le fait qu’il peut être dangereux d’essayer ce genre d’outils. En effet, rien ne dit qu’il ne contient pas des fonctionnalités malveillantes cachées, et en particulier dans le cas d’un outil comme Kon-Boot dont le code source n’est pas publié. Nous vous recommandons donc la plus grande prudence lors de la réalisation de tels tests, et en particulier l’usage d’une machine dédiée isolée du reste du réseau.
En gros, comment ça marche ?
L’outil Kon-Boot, qui est d’ailleurs gratuit, se présente sous la forme d’un CD-ROM amorçable. L’auteur signale qu’il est compatible avec la plupart des versions de Windows (2003 et 2008 Server, XP, Vista et même les premières pré-versions de Windows 7) ainsi qu’avec un certain nombre de distributions Linux.
L’attaque se déroule comme suit :
- On insère le CD de Kon-Boot dans le lecteur de la machine cible.
- On démarre ou on redémarre la machine en s’assurant que le CD-ROM est bien le premier périphérique d’amorçage.
- Juste après les vérifications du BIOS, un écran apparaît indiquant qu’on a bien démarré sur le CD de Kon-Boot.
- Il suffit simplement d’appuyer sur ‘ENTER’ pour que Kon-Boot passe la main au système d’exploitation installé sur la machine, celui-ci démarrant exactement comme d’habitude.
- L’écran de connexion du système d’exploitation apparaît.
Pour un système Windows, il suffit de choisir le compte utilisateur que l’on veut « attaquer » et de saisir n’importe quel mot de passe (un mot de passe vide fait aussi l’affaire).
Sous Linux, il suffit simplement de saisir « Kon-usr » en guise de login pour se voir connecter avec les privilèges « root ».
On peut en conclure que, juste avant de passer la main au système d’exploitation, Kon-Boot a effectué des modifications de bas niveau lui permettant de conserver une ou plusieurs portes dérobées tout au long de l’exécution du système.
Nous devons reconnaître ici qu’une telle attaque peut représenter une véritable inquiétude pour les administrateurs systèmes. En effet, les anciennes méthodes que l’on connaissait avaient un certain nombre d’inconvénients et pouvaient laisser des traces :
- L’utilisation d’outils de cassage de mots de passe tels que Ophcrack ou L0phtCrack demande souvent un certain temps, surtout si les mots de passe sont complexes et les algorithmes de hachage robustes.
- L’utilisation d’un CD de démarrage qui écrase les mots de passe laisse une preuve évidente pour l’utilisateur final qui ne pourra plus se connecter par la suite.
- Retirer le disque dur ou utiliser un live-CD afin d’accéder aux données peut prendre du temps et être difficile selon le matériel que l’on rencontre.
L’avantage de Kon-Boot du point de vue du hacker, c’est qu’il permet à une personne malveillante de démarrer directement sous le système qui est installé sur une machine, de se connecter en tant qu’administrateur et de réaliser les tâches de son choix. De plus, il ne sera pas forcément facile, même avec une investigation sur incident approfondie, de savoir si un utilisateur non légitime s’est connecté sur un système à un moment donné, puisqu’en particulier l’empreinte du mot de passe n’a pas été modifiée.
D’un autre côté, du point de vue de l’administrateur système ou de l’expert sécurité, il peut s’agir d’un outil très pratique pour dépanner ou pour investiguer sur des machines dont l’utilisateur a oublié ou refusé de donner son mot de passe : on serait ici dans une situation légitime et autorisée (investigation sur incident, Forensic etc.).
Kon-Boot n’est pas le seul outil dans le genre
Kon-Boot peut être classé dans une catégorie d’outils de hacking appelés les "bootkits". Les bootkits sont en fait connus depuis longtemps : rappelons-nous avec nostalgie les infections du MBR (Master Boot Record ou secteur d’amorçage). Ces bootkits sont en particulier revenus sur le devant de la scène ces 4 dernières années avec l’apparition de quelques programmes de démonstration et même de malwares :
- eEye bootroot : Ce projet, présenté à la conférence Black Hat USA 2005 par les chercheurs Derek Soeder et Ryan Permeh, illustrait une technologie permettant de corrompre directement en mémoire le noyau du système Windows pendant son chargement.
- eEye SysRQ2 : Ce CD-ROM de démarrage permet de lancer, à n’importe quel moment, une invite de commande avec les privilèges administrateur au moyen d’une combinaison de touches. Il a également été présenté à la même conférence Black Hat de 2005 comme une application de la technologie « Bootroot ».
- Le cheval de Troie MBRoot ou StealthMBR : Apparu début 2008, ce cheval de Troie modifie le MBR puis utilise des techniques spécifiques aux rootkits pour cacher son activité. Il redirige par exemple toute tentative de lecture/écriture du MBR (secteur 0 du disque dur) vers une copie du MBR original ce qui rend sa détection et son élimination très difficile par les antivirus.
- NVlabes Vbootkit 2.0 : Publié il y a quelques semaines sous licence GPL, ce bootkit offre diverses fonctionnalités incluant la possibilité d’obtenir les privilèges administrateur, l’ouverture d’un mini serveur Telnet ainsi que la possibilité de manipuler les mots de passe des utilisateurs.
Les bootkits modernes sont très similaires aux rootkits mais opèrent différemment. Alors que les rootkits ont besoin de privilèges élevés pour être installés, les bootkits profitent de la séquence de démarrage pour injecter leur propre code directement dans le code en mémoire du système d’exploitation.
Certains bootkits sont persistants c'est-à-dire qu’ils restent présents sur le système même après l’arrêt et le redémarrage de la machine : c’est le cas du cheval de Troie MBRoot dont nous avons parlé. D’autres comme Kon-Boot sont simplement persistants en mémoire et n’affectent un système que lorsque celui-ci est démarré à partir d’un média amorçable spécifique et ne laissent aucune trace par ailleurs.
Kon-Boot est donc le dernier né de ces outils et a l’avantage d’être non-persistant et extrêmement simple à utiliser, comme nous l’avons expliqué au paragraphe précédent.
Détails techniques
Les sources de Kon-Boot ne sont pas disponibles et nous ne pouvons que faire des suppositions basées sur des techniques déjà connues pour déterminer son mode de fonctionnement. En général, les bootkits détournent la routine d’interruption 0x13 qui est normalement mise à disposition par le BIOS. Cette routine est chargée de lire des secteurs à partir du disque dur et de les charger à un emplacement donné en mémoire. En détournant cette routine, les bootkits comme Kon-Boot ou Vbootkit modifient directement le code du système d’exploitation lors de son chargement en mémoire et donc juste avant son exécution.
Dans le but d’évaluer le fonctionnement de Kon-Boot, nous l’avons testé sur une machine équipée de Windows XP. Nous avons effectivement pu constater qu’il était très facile de se connecter avec un compte administrateur sur le poste en question. Heureusement pour nous, et malheureusement pour les hackers, il nous a été impossible de réaliser certaines tâches par la suite. Voici une liste non exhaustive de choses que Kon-Boot ne permet pas de faire :
- Tout d’abord, il n’est pas possible de changer le mot de passe associé au compte auquel on s’est connecté. Cependant, il reste apparemment possible de changer le mot de passe des autres comptes locaux déclarés sur la machine.
- Les fichiers chiffrés avec la fonctionnalité EFS (Encrypted File System) de Windows ne peuvent pas être ouverts (un message de type « Accès refusé » apparaît).
- De manière générale, il est impossible d’utiliser des clés privées stockées dans le magasin de certificats de Windows (accès à des sites web sécurisés, déchiffrage d’e-mails chiffrés etc.).
- Kon-Boot ne permet pas de contourner l’authentification sur un domaine Active Directory.
Recommandations et conclusion
Cela étant dit, on peut aisément relativiser le risque induit par ce type d’attaque, notamment parce qu’elles demandent un accès physique à la machine que l’on veut compromettre.
Les recommandations suivantes permettront en plus de limiter grandement le risque lié à ces attaques. Elles consistent essentiellement à verrouiller l’accès physique à la machine pour empêcher l’utilisation d’un bootkit :
- Mettre un mot de passe de verrouillage au niveau du disque dur (mot de passe ATA) : cette opération se fait dans le BIOS et empêchera toute personne malveillante de lancer le système d’exploitation installé sur ce disque. La plupart des disques durs modernes semblent supporter cette fonctionnalité.
- Désactiver le démarrage d’une machine à partir d’un disque externe (USB ou FireWire).
- Changer l’ordre des périphériques de démarrage dans le BIOS pour empêcher la machine de démarrer à partir d’un CD ou d’un DVD.
- Désactiver le démarrage de la machine par le réseau (boot PXE).
Une solution plus robuste peut également consister à installer une solution de chiffrement intégral de disque dur, notamment parce que ce type de solutions met en place une authentification pre-boot sans laquelle le contenu du disque ne peut être déchiffré.
Pour en savoir plus :
- Kon-Boot: Bypass Windows Login Security (and some helpful blocking solutions) (grandstreamdreams.blogspot.com)
- Vbootkit: Compromising Windows Vista Security