Documente Academic
Documente Profesional
Documente Cultură
Cabinet de Consultants en Scurit Informatique depuis 1989 Spcialis sur Unix, Windows, TCP/IP et Internet
VMware et scurit
Julien Raeis <Julien.Raeis@hsc.fr> Nicolas Collignon <Nicolas.Collignon@hsc.fr>
Agenda
Rappels sur la virtualisation Mesures de scurit intgres VMware Virtualisation et DMZ Revue des vulnrabilits Retour d'exprience HSC
2/64
3/64
Dfinitions
Virtuel : Se dit des lments (terminaux, mmoire...) d'un systme informatique considrs comme ayant des proprits diffrentes de leurs caractristiques physiques - Grand Dictionnaire Encyclopdique Larousse Virtualisation : abstraction des ressources d'un systme informatique.
4/64
Historique
Concept introduit dans les annes 60
But : partitionner les ressources des coteux mainframes de l'poque IBM M44/44X, naissance du terme pseudo-machine
Premire implmentation de machines virtuelles
IBM CP-40
Systme tournant sur S/360-40
Mais cots d'infrastructure physique levs, manque de protection en cas de panne, maintenance des postes de travail coteuse, etc.
5/64
6/64
Chronologie
2005 et 2006 Extensions VT-x et AMD-V 26 juin 2008 Microsoft Hyper-V
7/64
Virtualisation(s) - 1/6
Au moins 7 types diffrents !
mulation Virtualisation partielle Virtualisation complte Para-virtualisation Virtualisation native Virtualisation par zones Virtualisation applicative etc.
8/64
Virtualisation(s) - 2/6
mulation
Simulation intgrale du matriel QEMU, PearPC, Bochs Principe des mulateurs des vieux ordinateurs/consoles de jeu
Amiga, Atari, etc.
Virtualisation partielle
Partage de ressources matrielles par abstraction Implmentation rpandue
Adressage virtuel des processus Linux, Windows, etc.
9/64
Virtualisation(s) - 3/6
Excution classique
Applications en Ring 1, 2 ou 3 Systme d'exploitation en Ring 0 Excution indpendante
Applications
10/64
Virtualisation(s) - 4/6
Virtualisation complte
Applications en Ring 3 Systme invit en Ring 1 En Ring 0
Systme d'exploitation hte Moniteur de machines virtuelles
Applications
11/64
Virtualisation(s) - 5/6
Para-virtualisation
Applications en Ring 3 En Ring 0
Systme d'exploitation modifi pour raliser des appels ( hypercalls ) directement la couche de virtualisation Couche de virtualisation tournant dans l'OS hte
Applications
Les instructions non-virtualisables sont directement traduites par le biais d'appels spciaux
12/64
Virtualisation(s) - 6/6
Virtualisation native
Applications en Ring 3 En Ring 0
Systme d'exploitation invit NONmodifi
Applications
Couche de virtualisation tourne sous le mode Ring 0 Traitement systmatique des instructions problmatiques par la couche de virtualisation
le rle des hypercalls
tat des invits stock dans des structures ddies du mode racine
13/64
Agenda
14/64
Hyperviseur
VMware ESX et ESXi VMKernel pour le rapport avec le matriel et la virtualisation Systme Linux pour le charger en mmoire, ensuite virtualis
15/64
VMware ESX
Avant la 3.0
Dmarrage sur un systme Linux comme support Chargement de modules propritaires VMware
Moniteur de machines virtuelles Gestion du systme de fichiers VMFS
Depuis la 3.0
Dmarrage sur un systme Linux Chargement de modules propritaires
Pivot sur VMkernel qui prend la main Chargement des pilotes matriels par VMkernel (et non Linux) Virtualisation du systme Linux sous-jacent ( Service console ) Lancement du moniteur de machines virtuelles, pilote VMFS, etc.
16/64
Copyright Herv Schauer Consultants 2008 - Reproduction Interdite
Communications chiffres
Entre VMware Infrastructure Client/Server Console et le serveur
Bientt : VMSafe
API de communication avec l'hyperviseur Prochaine version d'ESX Tellement sr que VMware demande un NDA pour avoir des infos
17/64
Copyright Herv Schauer Consultants 2008 - Reproduction Interdite
20/64
21/64
4 sorties d'isolation
Depuis l'invit vers l'hte 3 ncessitent des conditions particulires, non-prsentes par dfaut 2 sont uniquement valables sur VMware Workstation et Player
Retour d'exprience
23/64
Expriences HSC
Audits sur plates-formes de virtualisation
ESX Server uniquement Audit de configuration Audit d'architecture Intgration de la virtualisation en DMZ
Travaux de recherche
Communications avec l'hyperviseur Protocoles de communication Gestion des sessions Les Shared Folders Comment exploiter une vulnrabilit dans l'hyperviseur
24/64
Copyright Herv Schauer Consultants 2008 - Reproduction Interdite
Configuration - 1/2
Correctifs de scurit
Pas d'automatisation Dploiement rgulier tout de mme
Service console
Minimisation des services dploys
Outils de supervision CIM Activation du SNMP Serveur HTTP de gestion dsactiv
25/64
Configuration - 2/2
VMware Virtual Center
Cration d'utilisateurs et rles prcis
Administrateurs de machines virtuelles (avec droit de redmarrage) Administrateurs ESX (accs la configuration des VMs)
Systmes invits
Dploiement des VMware Tools (minimiss) Considrs comme des machines physiques Options d'isolation actives
Copier/coller, Drag'n'Drop, etc.
Architecture - 1/2
Sparation stricte de la console de service Pas bien !
Bien !
27/64
Architecture - 2/2
Autres possibilits d'amlioration
Pare-feu de primtre Pare-feu virtuel (cf. plus loin) Utilisation de VLANs
Dans ce cas, premire architecture vue prcdemment peut tre OK Trois niveaux :
Invits Commutateurs virtuels Commutateur physique la sortie du rseau virtuel
28/64
29/64
30/64
31/64
32/64
33/64
Un peu de recherche
34/64
Les interrogations
Comment l'hyperviseur peut-il obtenir des informations sur les systmes virtualiss ?
Adresses MAC Adresses IP ...
Par o passent les I/O sur les Shared Folders ? Copy/paste, DND, obscurit, ...
35/64
Backdoor : pourquoi ?
Ncessit de communiquer entre l'invit et l'hyperviseur Doit fonctionner sans que l'invit puisse tablir des connexions rseaux vers l'hyperviseur Qui ?
Driver HGFS VMware Tools API Vix ...
36/64
Backdoor
Terminologie non fantasme :)
$ strings vmware-vmx | grep -i backdoor | wc -l 23
2 ports I/O
0x5658 VX 0x5659 VY commandes lectures / critures
37/64
Backdoor : authentification ?
Qui peut utiliser la backdoor depuis l'invit ?
Le kernel (ex: hgfs.sys) Les applications (ex: VmwareHgfsClient.exe)
38/64
39/64
C:\temp> vmrpc -v call "info-get guestinfo.ip" io[c] ebx=c9435052 ecx=0000001e edx=ffff5658 esi=00000000 ebx=c9435052 ecx=00010000 edx=00050000 esi=9c0eefdb io[c] ebx=00000015 ecx=0001001e edx=00055658 esi=9c0eefdb ebx=00000015 ecx=00810000 edx=00055658 esi=9c0eefdb io[w] ebx=00010000 ecx=00000015 edx=00055659 esi=003d23cf ebx=00010000 ecx=00000000 edx=00055659 esi=003d23e4 io[c] ebx=00000015 ecx=0003001e edx=00055658 esi=9c0eefdb ebx=00000009 ecx=00830000 edx=00010000 esi=9c0eefdb io[r] ebx=00010000 ecx=00000009 edx=00055659 esi=9c0eefdb ebx=00010000 ecx=00000000 edx=00055659 esi=9c0eefdb io[c] ebx=00000001 ecx=0005001e edx=00055658 esi=9c0eefdb ebx=00000001 ecx=00010000 edx=00055658 esi=9c0eefdb ==> 1 192.168.0.11 io[c] ebx=00000000 ecx=0006001e edx=00055658 esi=9c0eefdb ebx=00000000 ecx=00010000 edx=00055658 esi=9c0eefdb
edi=00000000 edi=7d721754 edi=7d721754 edi=7d721754 edi=7d721754 edi=7d721754 edi=7d721754 edi=7d721754 edi=003d2510 edi=003d2519 edi=7d721754 edi=7d721754
ebp=00000000 ebp=00000000 ebp=00000000 ebp=00000000 ebp=9c0eefdb ebp=9c0eefdb ebp=00000000 ebp=00000000 ebp=7d721754 ebp=7d721754 ebp=00000000 ebp=00000000
40/64
Historique 2002 Premiers virus dtectant VMware 2005 Premiers virus infectant les invits depuis l'hte 2007 Une variante de Storm dtecte VMware et Virtual PC Modification du flot d'excution
Bloquer le code malveillant pour viter l'analyse dans une sandbox Modifier la charge utile pour infecter l'environnement virtualis
41/64
Backdoor : protocoles
2 ~protocoles~ de communication
Hypervisor
RPCI
l'initiative du guest
TCLO HGFS Server ... RPCI VMware Tools ...
42/64
Copyright Herv Schauer Consultants 2008 - Reproduction Interdite
TCLO
l'initiative de l'hte
Guest
Concepts
Protocole connect Principalement ASCII Descripteur de canal
Cod sur 16 bits ~8 descripteurs disponibles (0-8)
... open channel Select channel # + Generate SID
Identifiant de session
Cod sur 64 bits Gnr par l'hyperviseur (alatoire)
43/64
close channel
Protocole RPCI
~ 50 commandes
log <msg> tools.set.version <ver> upgrader.setGuestFileRoot <int> <path> info-get guestinfo.<key> info-set guestinfo.<key> <val> ...
Protocole RPCI
Possibilit de bloquer presque toutes les commandes
Commande
tools.capability.resolution_set tools.capability.resolution_min tools.capability.printer_set vmx.capability.edit_scripts copypaste.hg.copy.files disk.shrink ...
Paramtre
resolutionSetDisable resolutionMinDisable printerSetDisable scriptEditDisable copyDisable diskShrinkDisable ...
45/64
Protocole TCLO
Lecture de commandes TCLO intervalles prdfinis ~ 30 commandes gres par l'hyperviseur
Capabilities_Register Set_Option <str> <str> Vix_1_Open_Url <str> <str> <str> Time_Synchronize <int> Resolution_Set <int> <int> OS_Suspend ...
46/64
command answer
Copyright Herv Schauer Consultants 2008 - Reproduction Interdite
command(s)
47/64
Les sessions
Secrets de sessions
gnr via /dev/urandom sous Linux (pas de #ifdef PURIFY) 64 bits rpartis sur 2 registres
esi + edi pour les requtes ebp + edi pour les I/O VX VY
Expiration des sessions aprs inactivit : ~1 min Certaines sessions sont quasi-permanentes
Ex: service VMware, HGFS, etc.
48/64
49/64
50/64
Sessions : MITM
Trouver l'identifiant de 64 bits ?
pour intercepter les messages mis par l'hyperviseur pour usurper l'identit d'un client RPC de l'invit
Journalisation de l'attaque
vcpu-0| vcpu-0| vcpu-0| vcpu-0| ... GuestMsg: GuestMsg: GuestMsg: GuestMsg: Channel Channel Channel Channel 1, 1, 1, 1, Wrong Wrong Wrong Wrong cookie. cookie. cookie. cookie. Man Man Man Man in in in in the the the the middle middle middle middle attack? attack? attack? attack?
rotation des journaux + commande log pour nettoyer les journaux ...
52/64
53/64
HGFS
Host Guest File System Partage plusieurs rpertoires entre l'invit et l'hyperviseur I/O l'initiative de l'invit protocole RPCI
Commande : f
Messages binaires
~10 commandes HGFS
+2 f +6 +10 commande arguments...
00 00 00 00
54/64
Commande HGFS f 1 f 1 f 1 f
55/64
00 00 00 00
05 00 00 00
xx xx xx xx 01 00 00 00 xx xx xx xx 02 00 00 00 xx xx xx xx 03 00 00 00 xx xx xx xx
00 00 00 00 . 01 00 00 00 .. 02 00 00 00 tmp ...
mta-informations 00 00 00 00 05 00 00 00
mta-informations 00 00 00 00 05 00 00 00
mta-informations 00 00 00 00 05 00 00 00
56/64
Un rve ...
Et si tout hasard ...
Une vulnrabilit dans l'hyperviseur ... permettait d'crire dans la mmoire du processus hte
Et si ...
Une fuite d'information dans l'hyperviseur ... permettait de localiser la mmoire de l'invit dans le processus hte
Alors ...
57/64
Exploitation
Intrt
Obtenir un accs sur l'hyperviseur depuis un compte non privilgi de l'invit
ProblmeS
Ne pas tout casser ... Rcuprer le rsultat d'un shellcode
Faits
1 processus dans l'hte / machine virtuelle 1 thread / session RPCI moins de risques de bloquer l'invit
58/64
Exploitation
Surcharge d'une commande RPCI dj enregistre
Commandes RPCI tableau dynamique Commandes HGFS tableau statique
vtable function #1 function #2 function #3 function #4 function #5 ...
59/64
Exploitation
HGFS
Localisation du tableau en identifiant la version de l'hyperviseur ex: commandes RPCI, contenu de l'IDT ou de la GDT, ... Pas disponibles sur toutes les versions de VMware Dysfonctionnement de HGFS
RPCI
Localisation du tableau avec une vulnrabilit annexe Impact minimal
Conclusion
61/64
G1
G2
G3
G1
G2
G3
Rfrences
http://www.vmware.com/ http://www.vmware.com/security/ http://communities.vmware.com/ http://www.virtualization.info/ http://chitchat.at.infoseek.co.jp/vmware/backdoor.html http://sanbarrow.com/
63/64
Merci !
http://www.hsc.fr/
64/64
Copyright Herv Schauer Consultants 2008 - Reproduction Interdite