Un ou simplement « kit » (aussi appelé « outil de dissimulation d'activité »., « maliciel furtif »., « trousse administrateur pirate ».), est un ensemble de techniques mises en œuvre par un ou plusieurs logiciels, dont le but est d'obtenir et de pérenniser un accès (généralement non autorisé) à un ordinateur le plus furtivement possible .Lacombe (2007), Définition d’un rootkit et comparaison avec les autres codes malicieux, 8., à la différence d'autres logiciels malveillants. Le terme peut désigner la technique de dissimulation ou plus généralement un ensemble particulier d'objets informatiques mettant en œuvre cette technique.

Leur furtivité est assurée par plusieurs mécanismes de dissimulation : effacement de traces, masquage de l'activité et des communications, etc. Un rootkit peut s'installer dans un autre logiciel, une bibliothèque ou dans le noyau d'un système d'exploitation. Certains peuvent modifier l'hyperviseur fonctionnant en dessous des systèmes ou le micrologiciel intégré dans un matériel. La plupart des rootkits servent à installer des logiciels malveillants sur les machines où l'accès est obtenu. Certains fournisseurs de matériels informatiques, tel Sony, les utilisent pour s'assurer du respect des conditions d'utilisation de leurs produits par leurs clients. Certains kits ne jouent pas sur la discrétion mais sur le fait qu'enlever le kit serait une opération ardue.

Pour l'« attaquant », l'utilité d'un rootkit est soit de mettre à disposition des ressources système (temps processeur, connexions réseaux, etc.) sur une, voire plusieurs machines , parfois en utilisant la « cible » comme intermédiaire pour une autre attaque ; soit d'espionner, d'accéder aux données stockées ou en transit sur la machine cibleLacombe (2007), Vers l’évaluation d’un rootkit, 14.

Ils sont généralement classés parmi les logiciels malveillants, mais pas toujours ; ils peuvent utiliser des « techniques virales » pour se transmettre (par exemple, en utilisant un virus ou un cheval de Troie)Un rootkit falsifie le noyau du système d'exploitation, mais il n'est pas un vecteur de diffusion. Voir à ce sujet la section Mode opératoire.. Il existe des outils de détection et des méthodes de protection pour les contrer mais elles ne sont pas totalement efficaces.

Historique

En 1989 sont apparus des programmes manipulant les logs système (un log est un « journal des opérations », sorte de livre de bord où sont enregistrées les informations concernant l'état et l'activité d'un ordinateur) pour cacher leur présence. D'autres programmes permettaient de se dissimuler en manipulant les outils servant à vérifier les informations sur les utilisateurs, telles que les commandes who, w, ou last , et ainsi être invisibles pour les administrateurs des machines.

Les premiers rootkits sont apparus en 1994 sur Linux et SunOSChuvakin (2003), 3 : Executive Summary ; en 1998, sous Windows, avec le célèbre Back Orifice ; et en 2004 apparaissait le premier rootkit sous Mac OS X, WeaponX .

Les analyses et les recherches sur les rootkits ont commencé à partir de 1997, avec la publication par le webzine Phrack d'un cheval de Troie détournant une partie du noyau Linux (le LKM, qui permet d'ajouter des modules au noyau pendant son fonctionnement) et ouvrant la porte aux techniques des rootkits actuels. Depuis, de nombreuses recherches et analyses ont été conduites : Phrack et plusieurs autres sites Web publient régulièrement des travaux sur les rootkits. Certains projets se sont spécialisés dans ce domaine, comme chkrootkit débuté en 1997, dédié au développement d’un outil de détection de rootkits pour les plates-formes Linux, * BSD (FreeBSD, OpenBSD…), Solaris et HP-UX.

La mise au jour de rootkits passe par leur publication ou se fait grâce aux honeypots, des machines sciemment vulnérables utilisées par les professionnels de la sécurité pour analyser le mode opératoire d'un attaquant. Les résultats obtenus sont régulièrement évoqués lors de conférences sur la sécurité, comme la conférence Black Hat.

Certains rootkits peuvent être légitimes, pour permettre aux administrateurs de reprendre le contrôle d'une machine défaillante, pour suivre un ordinateur volé , ou dans certains outils comme des émulateurs de disque (DAEMON Tools, Alcohol 120%). Mais le terme a perdu ce sens historique et évoque essentiellement des outils à finalité malveillante.

Mode opératoire

Contamination

La première phase d'action d'un sert généralement à trouver un hôte vulnérable par balayage d'un ensemble d'adresses IP ou grâce à une base de données d'IP vulnérablesChuvakin (2003), 14 : Usage.

L'étape suivante consiste à chercher à obtenir un accès au système, sans forcément que celui-ci soit un accès privilégié (ou en mode administrateur). Il existe trois manières de contaminer un système, en suivant les techniques habituelles des programmes malveillants.

Il est possible de mettre en œuvre un exploit, c'est-à-dire profiter d'une vulnérabilité de sécurité connue ou non, à n'importe quel niveau du système (application, système d'exploitation, BIOS, etc.).

Cette mise en œuvre peut être le fait d'un virus, mais elle résulte aussi, souvent, de botnets qui réalisent des scans de machines afin d'identifier et d'exploiter les failles utiles à l'attaque.

Même s'il n'est pas un virus à proprement parler, un rootkit peut utiliser des techniques virales pour se transmettre, notamment via un cheval de Troie. Un virus peut avoir pour objet de répandre des rootkits sur les machines infectées. A contrario, un virus peut aussi utiliser les techniques utilisées par des rootkits pour parfaire sa dissimulation.

Enfin, l’attaque par force brute permet d'accéder au système, en profitant de la faiblesse des mots de passe mis en œuvre par certains utilisateurs. À ces fins, il suffit de tester les mots de passe les plus courants.

Des outils, nommés « autorooters », réunissent ces opérations de scan et d'exploit en une seule opération, ce qui peut faciliter la tâche de script kiddiesChuvakin (2003), 25 : End Notes en laissant toutefois bon nombre de traces sur le réseau.

Modification du système et dissimulation

Une fois la contamination effectuée et l'accès obtenu, la phase suivante consiste à installer, au moyen de son script d'installation, les objets et outils nécessaires au rootkit ; c'est-à-dire les objets (programmes, bibliothèques) permettant la mise en place de la charge utile du rootkit, s'ils n'ont pas pu être installés durant la phase de contamination, ainsi que les outils et les modifications nécessaires à la dissimulationLacombe (2007), L’architecture fonctionnelle d’un rootkit, 9.

L'opération consiste en l'ouverture de portes dérobées, afin de permettre le contrôle des machines (pc, serveurs, etc.), et, d'y installer la charge utile. Le tout, afin de pérenniser l'accès au système , ceci constitue une technique très fréquemment utilisée.

Dissimulation

Le rootkit cherche à dissimuler son activité pour minimiser le risque qu'on le découvre, afin de profiter le plus longtemps possible de l'accès frauduleux, mais aussi pour rendre sa désinstallation difficile. Il va notamment dissimuler ses propres fichiers, les autres fichiers utilisés par l'attaquant, les processus qu'il exécute et les connexions qu'il va ouvrirChuvakin (2003), 8-9 : Concealing Evidence. Cette faculté de dissimulation le différencie des virus, qui cherchent principalement à se répandre, bien que ces deux fonctions soient parfois jumelées pour une efficacité supérieure. Plusieurs méthodes de dissimulation peuvent être combinées.

La dissimulation de processus informatiques ou de fichiers permet de cacher l'activité du rootkit. Sous Windows, cela peut être réalisé en modifiant certaines clés de la base de registre ; sous systèmes Unix l'attaquant peut remplacer la commande ls pour qu'elle n'affiche pas certains dossiers. Une fois en place, le rootkit peut supprimer ses propres fichiers d'installation pour éviter qu'il ne soit reconnu par une recherche de fichiers.

Certains objets exécutables ou certaines bibliothèques sont remplacés par des programmes malveillants contrôlables à distance (chevaux de Troie), tout en conservant leur horodatage. Il est également possible de détourner certains appels aux tables de travail utilisées par le systèmeLacombe (2007) par hooking, de manière que des programmes d'apparence légitime exécutent les fonctions voulues par l'attaquant.

L'obtention des droits supérieurs par élévation des privilèges est également fréquemment rencontrée : cela permet notamment de désactiver les mécanismes de défense (comme un anti-virus) ou d'agir sur des objets de haut niveau de privilèges (pilotes de périphériques, noyau du système, etc.) Un rootkit va ainsi pouvoir écouter les transactions sur le réseau pour trouver des mots de passe non chiffrés (comme des connexions ftp) ou détourner une connexion ssh en interceptant l'appel système où le mot de passe n'est pas encore chiffré.

Le rootkit tente de ne pas apparaître dans les fichiers log. Pour cela, il efface certaines entrées des logs ou, de manière beaucoup plus sophistiquée, utilisera des techniques de type « » (« furtif par conception »), à savoir implémenter à l'intérieur du rootkit des fonctions système afin de ne pas avoir à appeler les fonctions standards du système d'exploitation et ainsi éviter l'enregistrement d'événements système suspects. Il peut ainsi désactiver certains daemons et l'historique des shells.

Enfin, certains rootkits peuvent se charger intégralement en mémoire, ne laissant ainsi aucune trace sur les périphériques de stockage de la machineLacombe (2007), La communication avec le rootkit, 11.

En revanche, certaines activités ne pourront pas facilement être camouflées, notamment ce qui concerne la charge utile qui engendre de la charge réseau ou processeur ; l'effort de dissimulation se portera alors sur les communications entre le rootkit et l'attaquant pour protéger et maintenir l'accès frauduleux.

Maintien de l'accès

Un doit pouvoir être manipulé à distance par un attaquant. Celui-ci cherche donc souvent à maintenir un shell (ou « interpréteur de commandes ») disponible idéalement à n'importe quel moment (ou au moins durant l'installation du rootkit), en remplaçant des commandes comme ping ou xterm. Généralement, l'attaquant installe plusieurs de ces portes dérobées au cas où l'une viendrait à être découverte et suppriméeChuvakin (2003), 4-7 : Maintain Access.

L'accès distant au kit peut se faire par l'intermédiaire d'une connexion TCP, comme telnet ou ssh (qui peut être renversée, c'est-à-dire que c'est la machine infectée qui va chercher à rentrer en contact avec l'attaquant), UDP ou ICMP. Il existe aussi des méthodes plus complexes mais plus discrètes : port knocking, faux paquet TCP contenant une commande cachée, se faire passer pour une autre machine, canaux cachés, etc. Au besoin, les scripts de démarrage seront modifiés pour que les services nécessaires au rootkit soient disponibles après chaque redémarrage de la machine.

Pour que l'accès à la machine ne soit pas détourné par un autre attaquant, celui-ci peut corriger les failles du système infecté : celles qui lui ont permis de rentrer, voire l'ensemble des failles connues.

Mise en place de la charge utile

thumb|Un botnet permet d'avoir un accès sur des centaines de machines. La charge utile est la partie active du rootkit (et de tout programme malveillant en général), dont le rôle est d'accomplir la (ou les) tâche(s) assignée(s).