Pour leur fonctionnement, les logiciels applicatifs ont besoin d'utiliser les fonctions du système d'exploitation qui dépendent en partie de l'architecture des processeurs. Cet ensemble complexe se situe à différents échelons dont chacun correspond à un mode de fonctionnement et un 'anneau de protection' ('ring').
Les processeurs les plus courants à ce jour, de type x86, permettent quatre modes dont deux seulement sont utilisés par les systèmes Linux et Windows.
- Les programmes des utilisateurs et les outils communs ('processus') fonctionnent en « mode utilisateur » (user mode), au niveau 'ring3', dans un espace mémoire particulier qui est géré par le système d’exploitation.
- Les fonctions fondamentales du système (gestion du processeur, de la mémoire, des entrées-sorties, des communications ...), s'exécutent en « mode superviseur » (supervisor mode) aussi appelé « mode noyau » ('kernel' mode), au niveau 'ring0', un échelon privilégié où toutes les ressources matérielles et logicielles sont accessibles.
- Les autres modes ou niveaux de protection ne sont pas utilisés.
C'est par l’intermédiaire d'appels systèmes ('system calls') que les logiciels communs peuvent solliciter les fonctions du noyau. Les relations entre les différents éléments se font grâce aux interfaces de programmation ('API') et à une série de tables en mémoire qui permettent de situer chaque composant ou de lister les opérations à effectuer ('SSDT', 'IAT'/''EAT', 'GDT'/'IDT' ...) ou encore aux flux alternatifs ('ADS').
Les processeurs les plus récents (technologies Intel Vanderpool (VT) et AMD Pacifica) permettent la « virtualisation » qui correspond à un nouveau « mode hyperviseur » (hypervisor mode) au niveau 'ring -1'. Il est utilisé par Microsoft pour son architecture très critiquée NGSCB. Le plus haut degré de privilèges est accordé à ce niveau où il est possible d'exercer un contrôle complet tant des applications que du(des) système(s) d'exploitation qui fonctionne(nt) sur le PC.
Note ... Certains considèrent que l'anneau de protection de niveau le plus privilégié devrait être le 'ring0' qui dans ce cas de processeur, deviendrait celui du mode hyperviseur. Celui du noyau serait alors le 'ring1' et celui des logiciels applicatifs le 'ring4'.
Les programmes ou 'codes' qui modifient à leur profit ces bases de fonctionnement sont de plus en plus nombreux.
A rootkit is a tool that is designed to hide itself and other processes, data, and/or activity on a system.
- s'octroyer des privilèges (droits) qu'ils n'ont pas,
- se dissimuler et masquer des activités malveillantes,
- parfois, au contraire, assurer une meilleure protection contre les intrus ou cacher des travaux ou des données « sensibles ».
Une grande partie des informations ci-dessous provient de « Wikipedia » et d'autres sites anglophones comme delui de « kareldjag » (Michel) ou de sites francophones comme ceux de «3psilon» (Alban) ou de « VirusLab » (A. Monastyrsky, K. Sapronov et Y. Mashevsky).
La méthode pour émettre un appel ou le réceptionner peut varier. Néanmoins un rootkit consiste à se positionner entre l'appelant et l'appelé. Ainsi il sera possible de modifier le contenu de la réponse.
Maintenant le positionnement du rootkit et la méthode de crochetage peuvent varier, d'ou la difficulté des anti-rootkits à détecter la totalité des altérations. Ring 3 ou Ring 0 ... SSDT, IAT, IRP, ... hook address, hook inline ... Les tables de correspondance sont utilisées à plusieurs niveaux dans l'OS , et peuvent être modifiées différemment.
- >> Grandes catégories de rootkits
- >> Composants généraux des rootkits classiques
- >> Isoler ou détecter les rootkits.
- >> ARKs - antirootkits - IDS & IPS
- >> Annexe
Les mots entre " " ou entre ' ' ont une définition dans le lexique du Windows furtif.