SRS DAY: Problématique liée à la virtualisation Anthony GUDUSZEIT Franck CURO gudusz_a curo_f
Introduction
Sommaire Définition Contexte Avantages / inconvénients Fonctionnement et problématique Techniques de virtualisation Rootkits utilisant la virtualisation o SubVirt o Blue Pill Détection de machine virtuelle
Définition
Définition Ensemble des techniques matérielles et/ou logicielles qui permettent de faire fonctionner sur une seule machine plusieurs systèmes d exploitation et/ou plusieurs applications, séparément les uns des autres, comme s ils fonctionnaient sur des machines physiques distinctes
Contexte
Contexte (1/3) Avant : Mainframes Coûteux à l achat Coûteux à la maintenance 1ère solution de virtualisation introduite par IBM en 1967 avec les servers 370 series
Contexte (2/3) Ensuite : Décentralisation Isolation des applications critiques Coûteux en terme de matériel, espace, électricité Inactivité moyenne de 85% Virtualisation peu utilisée
Contexte (3/3) Maintenant : Virtualisation Isolation des applications critiques Optimisation de l utilisation des ressources Gestion dynamique et sécurité accrue Début années 1990, émulation des consoles de jeu Fort développement depuis fin années 1990 o Test de malware dans un milieu confiné o Test de développement multi-architecture
Avantages / Inconvénients
Avantages Pourquoi virtualiser? Réduction des coûts Optimisation des ressources PRA et Haute disponibilité Évolutivité Sécurité
Réduction des coûts Différents types de coûts: Achat du matériel Consomation électrique et climatisation Coûts liés à l espace / hébergement Coûts de la maintenance
Optimisation des ressources Les serveurs ne sont exploités qu à 10 à 15% de leur capacité D après une étude de l International Data Corporation (IDC) Possibilités: Mutualisation des composants Allocation dynamique des ressources Support du multiprocessoring Répartition de charge
PRA et haute disponibilité Applications: Restauration temps record Restauration n importe où Migration temps réel entre serveurs physiques après déclenchement d une alarme
Évolutivité Gestion dynamique des ressources: Redimentionnement des disques à la volée Réallocation de la mémoire et autres ressources
Sécurité La première application, dans un but de sécurité est l isolation d applications La virtualisation des applications évite: Gaspillage des ressources Crash du système à cause de l instabilité d une application Escalade des privilèges locaux à travers un piratage d une application
Inconvénients Les freins à la virtualisation: License Expertise Criticité du serveur hôte Migration serveur physiques / virtuels
Fonctionnement et problématique
Fonctionnement Rôle du système d exploitation: Gérer les ressources matérielles de l ordinateur (CPU, RAM, périphériques) Faire l intermédiaire entre les applications et le matériel Etre le seul à avoir accès avec le matériel
Problématique But du logiciel de virtualisation: Faire croire aux systèmes d exploitations invitées qu ils sont les seuls à communiquer avec le matériel Enfermer les OS invitées dans une machine virtuelle Intercepter les requêtes vers les VM Traduire les requêtes pour les éxécuter sur la machine hôte
Processeur x86 (1/3) 4 niveaux de privilèges en mode protégé: Niveau 0 o Peut tout faire o Réservé au noyau Niveau 1 et 2 : rarement utilisés en pratique Niveau 3: o Certaines instructions critiques sont interdites : modification état de la machine, instructions d e/s o Niveau d éxécution des applications
Processeur x86 (2/3) Instruction non critique: Éxécution autorisée à partir du niveau 3 Instruction critique privilégiée: Nécessite le niveau 0 Lève une exception si éxécuté en niveau 3 Instruction critique non privilégiée: Ne lève pas d exception si éxécuté en niveau 3
Processeur x86 (3/3) Les instructions non critiques sont directement éxécutées sur le processeur de la machine hôte Le MMV exploitent les exceptions des instructions critiques privilégiées Il doit aussi prendre en compte les 17 instructions critiques non privilégiées Plusieurs solutions: o Réécriture des instuctions à la volée (virtualisation native) o Remplacement par des hypercall vers l hyperviseur (para-virtualisation)
Techniques de virtualisation
Émulation (1/3) OS invité n a pas conscience d être virtualisé Simulation de la totalité du matériel Non dépendant de l architecture de la machine hôte
Émulation (2/3) Traduction à la volée de la totalité des instructions Performances très médiocres Très gourmand en ressources
Émulation (3/3) Exemples: Qemu, Boch, PearPC
Virtualisation complète (1/2) OS invité n a pas conscience d être virtualisé Simulation partiel du matériel (même CPU) VMM fait l intermédiaire entre l os invité et le hardware Dépendant de l architecture de la machine hôte
Virtualisation complète (2/2) Instructions non critiques éxécutées par le processeur Traduction des instructions critiques Performances moyennes Exemple: Parallels Desktop, Vmware workstation
Paravirtualisation (1/3) OS invité a conscience d être virtualisé Mise en place d «hypercall» Dépendant de l architecture de la machine hôte
Paravirtualisation (2/3) Bonnes performances OS invité doit être modifié => complexité Problème de license
Paravirtualisation (3/3) Exemple: Vmware ESX Server, XEN
Virtualisation matérielle (1/2) Délègue la traduction des instructions au processeur Nouveau mode d exécution définit au niveau du processeur : mode VM
Virtualisation matérielle (2/2) Performances excellentes Implémenté par Intel (Vanderpool) et AMD (Pacifica)
Cloisonnement Isolation des applications Un seul OS Ex: jail, chroot, Linux Vserver
Rootkit Utilisant la virtualisation
SubVirt
SubVirt Université Michigan & Microsoft Research SubVirt est un proof of concept Utilise la full virtualisation Son but: virtualiser l OS original et lancer un autre OS, qui sera l hôte
Installation 1. Nécessite un accès root sur la cible 1. Modifie le boot loader pour lancer la machine virtuelle au démarage 1. Il faut ensuite redémarrer la machine
Avantage Ce rootkit reste présent lors du redémarrage de la machine
Inconvénients Ne fonctionne qu avec les couples Linux/Vmware & Windows/VirtualPC Peut être détecté en analysant les données de la séquence de démarrage Ralentit considérablement l OS cible => détection plus facile
Blue Pill
Blue Pill Proof of concept présenté par Joanna RUTKOWSKA en juin 2006 En mai 2007, mise à disposition des sources sur : http://bluepillproject.org Blue Pill est à présent fonctionnel
Blue Pill Blue Pill utilise les extensions Pacifica d AMD pour virtualiser l OS cible Fournit un hyperviseur pour contrôler l OS
SVM Jeu d instructions supplémentaires utilisé pour faire tourner des machines virtuelles via le processeur EFER (Extended Feature Enable Register) Pour activer la virtualisation, il faut mettre le champ SVME dans EFER à 1
EFER
VMRUN VMRUN est utilisé pour exécuter le code de la machine virtuelle L appel à VMRUN nécessite l adresse du VMCB (Virtual Machine Control Block)
VMCB VMCB contient: La liste des instructions à intercepter Des bits de contrôle pour l environnement virtuel L état du processeur virtuel
Exécution de VMRUN
Installation 1. Activation du mode virtuel 1. Remplissage du VMCB en utilisant les informations du processeur réel 2. Démarrage du superviseur 1. Lancement de la nouvelle machine virtuelle
Avantages Blue Pill s installe lui-même à la volée L état des registres reste inchangé pour la nouvelle machine virtuelle Plus besoin de redémarrer la machine Indépendant des VMM Théoriquement, il serait possible de faire une attaque par Blue Pill dans une VM
Inconvénient Blue Pill ne résiste pas au redémarrage de la machine
Détection de machine virtuelle
Détection Utilisé par les créateurs de malware pour changer le comportement de ces derniers dans le cas où il se trouve dans une VM Utilisé par les défenseurs pour savoir s ils sont dans un environnement virtualisé alors qu il ne devrait pas l être
Red Pill «You take the red pill and you stay in Wonderland and I show you how deep the rabbit-hole goes.» Inventé par Joanna RUTKOWSKA en 2004 S intéresse à la valeur de certains registres du processeur (l IDTR par exemple) Morpheus, Matrix La VM renverra une adresse modifiée lorqu un programme voudra accéder à l adresse de l IDTR Inconvénient: ne marche pas avec grsec ou PAX
Exemple de code (1/2) #include <stdio.h> typedef struct { unsigned short limit; unsigned int base; } attribute ((packed)) s_idtr;
Exemple de code (2/2) int main(void) { s_idtr idtr; asm volatile ( sidt %0 : =m (idtr): ); printf ( adresse IDTR = %x\n, idtr); return 0; }
Résultats Dans un environnement non virtualisé : $ gcc redpill.c o redpill $./redpill IDT Base: 20000fff Dans un environnement virtualisé : $ gcc redpill.c o redpill $./redpill IDT Base: 800007ff
Conclusion
Principe virtualisation : Bibliography (1/2) http://bearstech.com/files/lbvirtualisationentreprisebearstech.pdf http://www.presence-pc.com/tests/virtualisation-intel-amd- 512/6/ http://www.akersia.fr/documents/virtualisaion%20et%20etat%2 0de%20l'art%20-%20Akersia.pdf http://xstra.u-strasbg.fr/sem2006/expose-stephane-larroque.ppt
Sécurité : http://bluepillproject.org Misc n 32 Bibliography (2/2)
Questions?