Vous êtes sur la page 1sur 17

Virtualisation

3 dcembre 2007 e

Gagnaire Laure

&

Lahoudere Fabien

Table des mati`res e


Prsentation e Historique . . . . Utilisations . . . Dnitions utiles e Syst`me de base . e 1 Les 1.1 1.2 1.3 1.4 2 2 4 4 4 6 6 7 7 8 9 9 10 12 12 13 13 13 14 15 15

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

dirents types de virtualisation e Lmulation . . . . . . . . . . . . . . e La virtualisation totale . . . . . . . . La paravirtualisation . . . . . . . . . La virtualisation matrielle . . . . . . e

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

2 Virtualisation matrielle e 2.1 Cas dIntel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Cas dAMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Virtualisation et scurit e e 3.1 Notion de conteneur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Cas du rootkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Rootkit bas sur le virtualisation totale : lexemple de Subvirt . . . e 3.2.2 Rootkit bas sur le virtualisation matrielle : lexemple de Blue Pill e e 3.3 Dtection dun environnement virtualis . . . . . . . . . . . . . . . . . . . e e Conclusion Bibliographie

. . . . .

. . . . .

. . . . .

. . . . .

Prsentation e
Historique
Juin 1959 : Christopher Strachey publie un papier intitul Time Sharing in Large Fast e Computer ` la confrence internationale sur le traitement de linformation ` lUNESCO. a e a En 1974, Christopher clarie son ide prsent en 1959 dans un email adress ` Donald Knuth. e e e ea Il y explique que son papier prcdent porte principalement sur la multiprogrammation. Cette e e ide de multiprogrammation se rapporte ` lide de ne plus attendre le chargement dun priphe a e e e rique, et de pouvoir travailler sur une autre tche sur son ordinateur. Cest en ce terme quil parle a de Time Sharing . 1960 : La premi`re utilisation de la multiprogrammation peut tre attribuer ` lordinateur e e a Atlas. Le projet Atlas est dvelopp conjointement par lUniversit de Manchester et Ferrandi e e e Ltd. En 1961, les SER (Supervisor extracode routine) forment les branches principales du superviseur (terme employ pour dcrire un hyperviseur). Ils sont activs aussi bien par des roue e e 1 tines dinterruption que par des instructions d extracode . Le superviseur dAtlas utilise alors une machine virtuelle. Une autre machine virtuelle est alors employe pour faire tourner les proe grammes des utilisateurs. Dans la mme anne, au MIT (Massachusetts Institute of Technology), le CTSS (Compatible e e Time Sharing System) est dvelopp sur des machines IBM 704. e e Le programme de supervision du CTSS repose sur une console I/O : organisation via des jobs fg et bg stockage temporaire etc... Le superviseur a le contrle direct de toutes les interruptions collectes. o e En 1963, le projet MAC du MIT a pour but le design et limplmentation du meilleur temps e partag ( Time Sharing ) dun syst`me bas sur le CTSS. e e e Vers 1965, le centre de recherche dIBM est en charge du projet M44/44X. Son but tant e dvaluer les concepts naissant sur le partage du temps. e

partie dun code informatique destine ` tre utilis plus dune fois e ae e

Larchitecture est la suivante : une machine principale : IBM 7044 (M44) et dautres machines o` chacune est une image exprimentale de la machine principale (M44) u e Lespace dadressage de 44X rside alors dans la hirarchie de la mmoire de M44, implment e e e e e via de la mmoire virtuelle et de la multiprogrammation. e En 1967, lide de virtualisation matrielle est dveloppe via le mod`le 67 (System/360T M ) e e e e e (cf. la gure 1) dIBM. Ce mod`le virtualise toutes les interfaces matrielles via la VMM (Virtual e e Machine Monitor). Le syst`me dexploitation est le TSS (Time-Sharing System) aussi appell le e e superviseur. LIBM 360/67 est quip dun hyperviseur appel CP/67 capable de supporter e e e plusieurs machines virtuelles 360/65 tournant sous des versions de syst`me direntes. CP/67 e e a engendr VM/CMS (CMS correspond ` la notion de syst`me de temps partag), quIBM a e a e e commercialis pendant les annes 1970-1980. e e

Fig. 1 pupitre dun mod`le 360/67 e La VMM tourne directement sur le vrai matriel, ceci permet lexistence de plusieurs mae chines virtuelles :VMs. O` chaque machine virtuelle tourne sur son propre syst`me dexploitation. u e Les machines virtuelles dIBM de nos jours sont des ores tr`s respectes et des plateformes de e e calcul robustes. Durant les annes 90, la notion de processeur simul voit le jour. Cest la machine P-code e e (ou pseudo-code). Cest un langage machine qui est excut dans une machine virtuelle. Le langage e e TM Java a suivi le mod`le de P-code pour sa machine virtuelle. Ceci a permis la distribution large e des programmes de Java au-dessus des architectures innombrables en mettant en communication simplement la JVM (Java Virtual Machine). A la n des annes 90 et au dbut des annes 2000, la socit VMware dveloppe et poe e e ee e pularise un syst`me propritaire de virtualisation logicielle des architectures du type x86 pour les e e architectures de type x86. Larchitecture IA-32 (X86) fournit alors quelques instructions pour la virtualisation. Il faut savoir que les instructions lies au mode privilgi peuvent renvoyer dirents rsultats en fonction e e e e e du mode. Par exemple, linstruction x86 STR soccupe de rapporter ltat de scurit. e e e 3

Mais, la valeur quelle renvoie dpend du niveau de privil`ge .Ainsi, cest pour cela que d`s e e e 2006 les fabricants de processeur x86 que sont AMD et Intel ont propos dans leurs gammes de e la virtualisation matrielle. e

Utilisations
La virtualisation sduit autant les programmeurs que les enseignants pour de multiples raisons. e 1. Dveloppement e tracer les programmes : faire du debuggage tester la portabilit : plusieurs syst`mes dexploitation sur un ordinateur e e dploiement et migration de machines virtuelles e possibilit de crer des points de restauration de machines virtuelles par le biais de snape e shot : image dune machine virtuelle ` un instant donn a e 2. Enseignement isoler des machines entre elles : empcher des tudiants de communiquer entre eux lors e e de devoirs, ou de casser des machines 3. Scurit par lisolation e e semprisonner dans un rpertoire dun syst`me hte, o` lacc`s ` ce dernier est impossible e e o u e a depuis le rpertoire e restreindre lacc`s ` une partie de la mmoire e a e jail : enfermement dans une machine virtuelle avec un acc`s restreint ` la mmoire e a e

Dnitions utiles e
Dnition 1. Virtualisation (dnition gnrale) : elle a pour but de donner un environnement e e e e syst`me au programme an de le faire croire tre dans un environnement matriel. e e e Dnition 2. Machine virtuelle (VM - Virtual Machine) : le sens originel de machine virtuelle e est la cration de plusieurs environnements dexcution sur un seul ordinateur, dont chacun mule e e e lordinateur hte. Cela fournit ` chaque utilisateur lillusion de disposer dun ordinateur complet o a alors que chaque machine virtuelle est isole des autres. Le logiciel hte qui fournit cette fonce o tionnalit est souvent dnomm superviseur ou hyperviseur. Ce concept va plus loin que celui e e e des simples temps partags o` chaque utilisateur dispose seulement dun espace de dveloppement e u e personnel, et non dune machine simule enti`re. e e Dnition 3. Hyperviseur (ou VMM - Virtual Machine Monitor) : cest le logiciel hte qui foure o nit la fonctionnalit dexcuter une machine virtuelle sur un syst`me. Le syst`me dexploitation e e e e communique directement avec le matriel. e

Syst`me de base e
Un tel syst`me est bas sur un syst`me dexploitation prvu pour fonctionner avec le matriel e e e e e utilis. e Tout dabord, lapplication envoie des instructions au syst`me dexploitation qui permet au e matriel de lexcuter. La gure 2 dcrit ce syst`me. e e e e 4

Fig. 2 syst`me de base e

Chapitre 1 Les dirents types de virtualisation e


1.1 Lmulation e

Dans ce cas, un environnement est cr o` lon simule les priphriques hardware. Chaque ee u e e application donne des instructions via des pilotes ` lhyperviseur qui doit passer par le syst`me a e dexploitation pour excuter celles-ci (cf. la gure 1.1). e Avantage : ce type de virtualisation permet de travailler avec des syst`mes prvus pour un e e matriel totalement dirent que celui sur lequel il tourne grce a lmulation du matriel. e e a e e Inconvnient : il y a une grosse perte de performance du fait du nombre de couches traverses e e et de la conversion ncessaire pour passer dun langage correspondant ` un matriel ` lautre. e a e a Utilisations : en premier lieu, il est possible alors de tester des applications multiplateformes sans avoir besoin dacqurir le matriel ncessaire. Ou alors de lancer une application prvue pour e e e e un autre matriel (jouer ` des jeux danciennes consoles sur un ordinateur personnel). Des logiciels e a tels que Bochs ou QEMU lutilisent.

Fig. 1.1 lmulation e

1.2

La virtualisation totale

Il sagit dune mulation plus performante mais plus restrictive car le processeur de la machine e virtuelle doit tre du mme type que celui de la machine hte. Ainsi on peut placer lhyperviseur e e o au niveau du syst`me dexploitation pour avoir un acc`s plus rapide au matriel (via les pilotes e e e du syst`me dexploitation hte). Les applications du syst`me dexploitation invit ont une couche e o e e de moins ` traverser pour atteindre le matriel (cf. la gure 1.2). a e Avantages : meilleures performances que lmulation du fait de lacc`s plus rapide au matriel. e e e Inconvnients : les performances ne sont pas optimales dans lusage de certains priphe e e riques : type carte acclratrice 3D. De plus, il y a rduction des syst`mes dexploitation virtuaee e e lisables. Utilisations : faire tourner des syst`mes dexploitation virtuellement en les laissant accder e e aux dirents priphriques au travers des pilotes installs sur le syst`me hte. Des logiciels tels e e e e e o que VMWare Workstation ou VirtualPC de Microsoft lutilisent.

Fig. 1.2 la virtualisation totale

1.3

La paravirtualisation

On fait tourner lhyperviseur sur le matriel et les syst`mes dexploitation invits au dessus e e e de ce dernier (cf. la gure 1.3). Avantages : meilleures performances que la virtualisation totale. Inconvnients : les syst`mes dexploitation invits doivent tre modis an de tourner avec e e e e e lhyperviseur. La machine virtuelle doit pouvoir tourner sur le processeur (physique) de la machine hte. o Utilisations : Des logiciels comme Xen ou UML lutilisent.

Fig. 1.3 la paravirtualisation

1.4

La virtualisation matrielle e

Des instructions sont ajoutes au processeur pour quil serve dhyperviseur ` laide du HAL e a (Hardware Abstraction Layer). Les syst`mes dexploitation invits sont au mme niveau que ceux e e e htes (cf. la gure 1.4). o Avantages : certains processeurs permettent un acc`s direct ` la mmoire des invits. Les e a e e performances sont optimales. Les processeurs ne sont pas emuls et les syst`mes dexploitation e e inchangs. e Inconvnient : il faut un processeur spcique. Ainsi, si notre machine ne comporte pas e e ce type de processeur, alors il est ncessaire de squiper dune machine rcente qui comportera e e e celui-ci.

Fig. 1.4 la virtualisation matrielle e Ce type de virtualisation sera plus dtaill dans le prochain chapitre. e e

Chapitre 2 Virtualisation matrielle e


Ces technologies peuvent tre aussi bien utilises par Xen, VMWare ou encore User-mode e e Linux.

2.1

Cas dIntel

La technologie de virtualisation dveloppe par Intel (Intel-VT - anciennement Vanderpool) e e supporte aussi bien larchitecture x86 (VT-x) que celle ItaniumR (VT-i). Un nouveau mode dexcution apparait alors : VMX. Ce mode comporte un niveau racine (root) pour lhyperviseur, e correspondant ` des ring infrieurs ` 0, et un niveau normal pour les syst`mes dexploitation a e a e invits (machine virtuelle) (non-root), correspondant aux anciens rings de 0 ` 3. Le niveau root e a est enti`rement privilgi, alors que lautre ne poss`de aucun privil`ge, mme au ring 0 . e e e e e e a Linstruction VMX entry permet de passer de VMX root ` VMX non-root, tandis que linstruction VMX exit permet linverse. Cette technologie permet une certaine exibilit dans la e dnition des instructions permettant ` la machine virtuelle (syst`me dexploitation invit) de e a e e a sortir de lemprise de la VMM (VM exit). La gure 2.1 montre le passage dun niveau ` lautre via les deux instructions expliques prcdemment. e e e

Fig. 2.1 la technologie INTEL-VT En mode root lhyperviseur stocke dans une structure de donnes les informations relatives e au matriel associ ` un syst`me invit (processeur(s), blocks mmoire(s), entres/sorties). Sous e ea e e e e la technologie VT-x, celle-ci se nomme Virtual Machine Control Structure (VMCS).

Depuis 2007, une 2`me gnration de cette technologie est apparue. Elle inclut en plus un e e e support matriel pour la gestion de la mmoire virtuelle : Nested Page Tables (NPT). Deux sortes e e de table de page existent : Virtual Memory -> Physical Memory et Physical Memory -> Virtual Memory. Cette nouveaut permet des gains signicatifs de performance pour les applications e faisant un usage intensif de la mmoire ou gnrant un grand nombre de processus syst`me. La e e e e gure 2.2 dcrit ce nouveau support. e

Fig. 2.2 gestion de la mmoire virtuelle e

2.2

Cas dAMD

La technologie de virtualisation dveloppe par AMD se nomme AMD-V (anciennement Pae e cica). Il faut savoir que lors du boot un processeur AMD64 dmarre en mode x86 32 an de maintenir e la compatibilit avec les syst`mes dexploitation 32 bits. Le boot-loader dun syst`me dexploie e e tation 64 bits excute une instruction qui bascule le processeur en mode x86 64. De mani`re e e similaire, un processeur fonctionnant avec la nouvelle technologie dmarre en mode invit (toutes e e les fonctions de virtualisation sont alors inactives) jusqu` ce quun hyperviseur compatible ne a soit dmarr. e e La structure Virtual Machine Control Block (VMCB) a la mme fonction que celle de VT-x. e

10

Une fois la structure VMCB dnie, lhyperviseur bascule le processeur en mode invit, puis e e passe la main ` lOS invit associ qui dmarre (se considrant seul au monde sur le matriel) a e e e e e excutant son code privilgi en ring 0 et son code applicatif en ring 3. Lhyperviseur soccupe e e e alors de lexcution et intercepte les instructions privilgies. Quand une instruction demande un e e e acc`s ` une ressource dnie dans la VMCB le processeur bascule en mode root. Lhyperviseur e a e g`re alors la requte. e e Linstruction VMMCALL est une instruction qui permet aux syst`mes dexploitation invits e e de ngocier des ressources avec lhyperviseur. e La Translation Look-aside Buer (TLB) est une table qui contient les rfrences entre adresses ee relles et virtuelles des pages mmoire rcemment accdes. Le Device Exclusion Vector (DEV), e e e e e quant ` lui, permet ` lhyperviseur de savoir immdiatement si un acc`s ` une page mmoire est a a e e a e lgitime ou non. e Sous AMD-V, le support matriel pour la gestion de la mmoire se nomme : Nested Pages ou e e Nested Page Tables (NPT).

11

Chapitre 3 Virtualisation et scurit e e


3.1 Notion de conteneur

On parle aussi de virtualisation au niveau du syst`me dexploitation . Le but est disoler e des environnements de lespace utilisateur entre eux mais en les faisant fonctionner sur le mme e noyau. Ces syst`mes de conteneur permettent alors dutiliser dirents ensembles dapplications e e dans un mme contexte (on peut alors envisager plusieurs distributions Linux avec un unique e noyau). Avantages : un conteneur permet disoler le syst`me hte lors dun crash . Mais aussi de e o servir de honeypot (pot de miel). Le but de cette mthode est de fragiliser le syst`me invit e e e pour attirer les personnes malveillantes. Ainsi, depuis le syst`me hte, on peut alors observer e o les moyens de compromission des pirates informatiques, et alors se prmunir contre de nouvelles e attaques. An quun honeypot soit ecace, il est ncessaire que le pirate ne dtecte pas que e e le syst`me invit est virtualis. Lutilisation dune telle conguration se droule en trois tapes : e e e e e la surveillance, la collecte dinformation, lanalyse dinformation. Inconvnient : Les syst`mes de conteneur ne permettent pas lutilisation de dirents syse e e t`mes dexploitation. e

Fig. 3.1 notion de conteneur

12

3.2

Cas du rootkit

Concept : mettre un syst`me dexploitation cible dans une machine virtuelle en contrlant le e o syst`me hte. e o

3.2.1

Rootkit bas sur le virtualisation totale : lexemple de Subvirt e

Pour ce faire on installe une solution logicielle de virtualisation sur le disque de la machine. Puis, on change la squence de dmarrage pour quelle lance en premier lieu le syst`me malveillant e e e puis la solution de virtualisation dans lequel sera lanc le syst`me cible. Ensuite, Subvirt repose e e seulement sur le logiciel de virtualisation une fois install (cf. 3.2). e Il est ncessaire que quelques changements soient eectus : e e dune part, certains antivirus empche la modication de dmarrage. SubVirt utilise donc e e des pilotes bas niveau pour pouvoir contourner ses protections en se plaant au dessous des c ventuelles protections, e le syst`me doit tre modier pour empcher la dtection du changement denvironnement e e e e par la cible. La technique nest pas dtectable depuis un live cd du fait de la conception de ce rootkit. e

Fig. 3.2 Rootkit virtualis sous virtualisation totale e

3.2.2

Rootkit bas sur le virtualisation matrielle : lexemple de Blue e e Pill

Ce type de rootkit utilise les nouvelles technologies de virtualisation des processeurs. Blue Pill utilise lui un AMD-V. Pour commencer le rootkit met le bit SVME du registre MSR EFER ` 1 a pour activer la virtualisation. Ensuite on utilise linstruction VMRUN pour excuter le code de e la machine virtuelle. Il y a plusieurs param`tres ` VMRUN contenus dans la VMCB : e a liste des instructions ` intercepter, a bits de contrle pour lenvironnement virtuel, o ltat du processeur virtuel. e 13

On passe ladresse de cette VMCB en param`tre de VMRUN pour lancer la machine virtuelle. e Pour lancer Blue Pill il faudra donc que la VCMB soit correctement rempli pour lancer lhyperviseur puis la nouvelle machine virtuelle. On remarque ainsi quil nest pas ncessaire de redmarrer e e lordinateur pour lancer ce rootkit. La squence de dmarrage et le syst`me cible nont pas besoin e e e dtre modier pour que ce rootkit sexcute ce qui le rend beaucoup plus dicile ` dtecter que e e a e SubVirt. Les seules changements interviennent au niveau du processeur. Il y a un inconvnient ` e a cette furtivit : Blue Pill ne survit pas au redmarrage. e e Il existe un rookit dvelopp sous la technologie Intel-VT sous le nom de Vitriol. e e

3.3

Dtection dun environnement virtualis e e

La notion de dtection est tr`s importante. Comme nous lavons vu prcdemment, le concepe e e e teur dun honeypot doit faire en sorte que le pirate qui attaque le syst`me invit ne voit e e pas quil est dans un environnement virtualis. Dun autre ct, dans le cas dun rootkit utilisant e oe la virtualisation, le pirate lance le syst`me hte dans une machine virtuelle. Lexistence de cette e o derni`re est alors rendue transparente aux yeux de lutilisateur de la machine. e Dirents indices permettent de dtecter la prsence dans un environnement virtualis : e e e e Anomalies matrielles : prsence de priphriques utiliss exclusivement pour lenvironnement e e e e e virtualis. e Exemple : dans le cas de lutilisation dun environnement UML, la commande cat /proc/cpuinfo nous donne les informations suivantes : vendo id : User Mode Linux, model name : UML. On constate alors que lon se trouve dans un environnement UML. Etrangets dans la mmoire : prsence du nom de lenvironnement virtualis dans celle-ci. e e e e Exemple : dans le cas de lutilisation du logiciel VMWare, on remarque la prsence du mot e vmware dans la rponse ` la commande ls /proc/kcore. e a Originalit ` lexcution : en utilisant gdb, on peut alors remarquer que certaines adresses ea e mmoires ont des valeurs plus hautes ou plus basses que dhabitude. e Timing attacks : on regarde le temps dune requte. Si le temps est anormalement lev e e e par rapport ` un autre syst`me quivalent, alors il y a des chances pour que le syst`me soit a e e e virtualis. e Exemple : la commande time ls nous renverrait une valeur anormale dans un environnement virtualis. e Il est ncessaire de noter que certains indices ne sont pas ecaces selon loutil de virtualisation e utilis. Par exemple, dans le cas dune virtualisation matrielle, ltude des adresses mmoires ne e e e e fonctionne alors plus. Des timing attacks peuvent tre utilises pour dtecter la prsence de rootkits virtuae e e e liss matriellement. Dans le cas de Vitriol, sous Intel-VT beaucoup dinstructions assembleur e e entra nent une instruction VM exit. Ainsi, si on se trouve dans un monde virtuel, ces appels mettront beaucoup de temps. 14

Conclusion
Il ny a pas un type de virtualisation ` utiliser plus quun autre. Il sagit plutt de slectionner a o e la virtualisation correspondante ` nos besoins. a La virtualisation matrielle est une technologie en constante volution. Le support permettant e e la gestion de la mmoire virtuelle ne datant que de 2007. e En ce qui concerne les rootkits derni`re gnration utilisant la virtualisation eux aussi voluent. e e e e Des rootkits comme Blue Pill ou encore Vitriol ont t dvelopps sous virtualisation matrielle ee e e e presque d`s larrive des processeurs permettant la virtualisation matrielle. e e e Il est ncessaire de noter quen ce qui concerne les rootkits virtualiss il nexiste pas actuellee e ment de techniques gnriques pour les dtecter. e e e

15

Bibliographie
[1] Thomas Ptacek. Detecting Virtualized Rootkits. http ://www.matasano.com/log/680/detecting-virtualized-rootkits/. 24 Janvier 2007 [2] Amit Singh. An Introduction to Virtualization. http ://www.kernelthread.com/publications/virtualization/. 2003 [3] David Delavennat, Stphane Aicardi. Technologies informatiques rcentes et Supports mate e e riels. 2007. www.mathrice.org/rencontres/mars.2007/presentations/evolutions materielles recentes.pdf. [4] Virtualisation. http ://fr.wikipedia.org/wiki/Virtualisation. [5] Julien Bachmann, Sbastien Bombal. Rootkits et Virtualisation. Magazine Misc. e Septembre/Octobre 2007. [6] Rootkits et antirootkits. http ://infomars.fr/forum/index.php ?showtopic=377. 2007 [7] Christophe Bardy. Virtualisation : VT-x et AMD-V ne servent ` a http ://idg3.typepad.com/infrastructure/2006/11/vtx et amdv ne .html. 2006. rien... .

16