Entreprise d'experts en Sécurité Informatique : Audits et conseils en cybersécurité
Entreprise française de cybersécurité depuis 2004
☎ 03 60 47 09 81 - info@securiteinfo.com

Les différentes techniques de détection de la virtualisation


VIRTUALISATION MALWARE MATÉRIEL INFORMATIQUE SYSTÈME D'EXPLOITATION OUTIL D'ADMINISTRATION

Comment les virus et autres malwares font pour savoir s'ils sont dans un environnement virtuel ?


D'un point de vue logiciel, une ordinateur virtuel ressemble beaucoup à une vraie machine physique. A tel point qu'il est possible d'installer tout un système d'exploitation et d'exécuter tous les logiciels dans une machine virtuelle !
Cependant, l'utilisation d'une machine virtuelle comporte quelques différences avec l'ordinateur hôte. Et c'est sur ces différences que se basent les techniques de détection de machine virtuelle.

Les virus sont de loin les programmes qui utilisent le plus ces techniques de détection de machines virtuelles pour éviter de s'exécuter dans une sandbox et d'être détectés.

Nous allons voir quelques techniques de base, mais sachez qu'il en existe beaucoup plus notamment du fait qu'il y a plusieurs éditeurs d'environnements virtuels sur le marché, et qu'il faut adapter ces techniques ou en créer de spécifiques pour chacun d'entre eux. La majorité des exemples ci-dessous fonctionnent pour VMWare.

Compter le nombre de cores du processeur : une détection générique


La technique la plus simple, c'est de compter le nombre de cores du processeur. Pourquoi ? Parce que de nos jours, il devient rare d'avoir un matériel équipé d'un processeur à un seul core.
Dans le langage C/C++, la fonction GetSystemInfo() permet d'avoir cette information sous Windows. Sous Linux c'est avec sysconf().
Bien entendu la méthode n'est pas fiable à 100% car il existe encore des processeurs bas de gamme qui n'ont qu'un seul core. Mais statistiquement, dans la majorité des cas, ça marche !

La quantité de mémoire disponible et la taille du disque dur


Sur le même principe que le comptage du nombre de cores du CPU, un programme peut très facilement connaître la taille de la mémoire RAM et la capacité du disque dur de la machine.
Si la RAM est inférieure ou égale à 1Go, et que la capacité du disque dur est inférieure ou égale à 60 Go, il y a une forte probabilité que vous soyez en environnement virtuel.

Détecter un disque dur virtuel par son modèle


Sous Windows, le nom du modèle de votre disque dur est dans la base de registre. Un programme peut donc facilement accéder à cette donnée. Il suffit d'aller dans HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\disk\\Enum et de lire la clé "0" qui représente le premier disque (celui du système d'exploitation en général). Si la clé "0" contient la chaîne de caractères "vmware", alors vous êtes dans une machine virtuelle.

Détecter une carte réseau virtuelle par son adresse MAC


La carte réseau dans votre ordinateur est un périphérique particulier. Chaque constructeur possède sa propre plage d'adresses MAC pour en donner une différente à chacune de ses cartes réseaux mise en vente. Les environnements virtuels ne font pas exception, et des plages d'adresses MAC ont été attribuées aux éditeurs de solutions de virtualisation.

Donc, en fonction de l'adresse MAC de la carte réseau, il est possible de connaître le constructeur de la carte.

Par exemple si l'adresse MAC de votre ordinateur commence par "00:05:69", "00:0c:29", "00:1C:14", ou "00:50:56", le constructeur est alors "VMWare, Inc". C'est donc que vous êtes en environnement virtuel.

Vérifier les informations du BIOS


Le BIOS de votre carte mère contient énormément d'informations permettant à votre ordinateur de fonctionner correctement.

Parmi ces informations on retrouve le nom du constructeur de la carte mère. Si ce nom commence par "VMware" ou "VMW", alors vous êtes dans une machine virtuelle VMware.

De la même manière, le BIOS de la carte graphique contient le nom du constructeur. S'il contient "VMware SVGA", alors vous êtes, là aussi, dans une machine virtuelle VMware.

Tester le bit d'hypervision de la commande CPUID


La commande assembleur CPUID permet de retourner des informations concernant le processeur.
Parmi ces informations retournées, un bit (le 31ème du registre ECX) permet de savoir si un hyperviseur est présent. S'il est positionné à 1, c'est donc que vous êtes en environnement virtuel.

Le port d'entrée/sortie numéro 0x5658 de VMware


Lorsque l'on est dans une machine virtuelle VMware, un port spécifique permet de communiquer avec le logiciel VMware. Il s'agit du port hexadécimal 5658. Ce n'est pas un port TCP, mais un port d'entrée/sortie qui est utilisable avec les commandes IN et OUT en langage assembleur.

Ce port accepte plusieurs commandes, à tel point qu'il est surnommé "backdoor VMWare". En fait, c'est une sorte d'API qui permet de faire communiquer le logiciel dans la machine virtuelle avec VMWare à des fins d'administration (VMWare tools).

D'après la documentation officielle de VMware, si nous envoyons commande hexadécimale "0xa" au port 0x5658 cela permet d'obtenir la version de VMWare. Si en retour le registre EBX du processeur contient la valeur 0x564D5868, c'est que vous êtes dans une machine virtuelle VMWare.

L'IDT (Interrupt Descriptor Table)


L'IDT signifie Table de Descripteurs d'Interruption. C'est une table de données située en mémoire et qui est utilisée par le processeur pour gérer les interruptions.

L'emplacement de cette table en mémoire est stocké dans un registre qui s'appelle IDTR (Interrupt Descriptor Table Register).

Le problème, c'est qu'une machine virtuelle ne peut pas utiliser la même IDT que son hôte, car cela engendrerait un conflit pour le processeur. L'IDT est donc relogé à un autre endroit, et l'IDTR est mis à jour en conséquence pour indiquer une autre adresse mémoire.

Par conséquent il suffit de consulter l'IDTR pour connaître la position en mémoire de l'IDT :
(X étant un chiffre potentiellement aléatoire).
Il suffit donc de tester le 5e octet de poids le plus faible pour savoir si vous êtes dans une machine virtuelle.
Cette technique est appelée "Red Pill", référence au premier film Matrix.

L'exploitation d'une faille : c'est parti pour la Sandbox Evasion


Imparable, l'exploitation d'une faille dans le logiciel de la machine virtuelle est le graal de tout hacker. L'article de secret.club détaille la procédure d'exploitation d'une faille logicielle de la gestion SCSI. Par l'exploitation d'un buffer overflow les auteurs ont pu exécuter un fichier exécutable en dehors de la VM, c'est à dire sur le serveur hôte !
Bien sûr cet exemple affecte VirtualBox, mais il existe des failles équivalentes chez VMware, Hyper-V, etc...

L'exploitation de telles faille sert non seulement à détecter la présence d'un environnement virtualisé, mais aussi de s'en échapper afin de contrôler ou infecter le serveur physique. On parle alors de "Sandbox Evasion".

Comment durcir une machine virtuelle pour qu'elle ne soit plus détectée ?


Afin de minimiser ces différences, certains programmes tentent d'effacer toutes traces de l'éditeur de la machine virtuelle. C'est le cas, par exemple, de VmwareHardenedLoader.

Un chercheur en malwares aurait tout intérêt à utiliser ce type de programme pour augmenter ses chances de voir un malware s'exécuter dans sa sandbox.

Pour aller plus loin


Le logiciel antivmdetection permet de faire un état des lieux encore plus complet, avec encore plus de techniques et prend en charge les environnements virtuels Sandboxie, Wine, VirtualBox d'Oracle, VMWare, Qemu et Bochs !

Un page Github regroupe certains projets, présentation et outils concernant l’évasion de sandbox.

Arnaud Jacques / mai 2020

Tags


VIRTUALISATION MALWARE MATÉRIEL INFORMATIQUE SYSTÈME D'EXPLOITATION OUTIL D'ADMINISTRATION


Inscription à notre lettre d'information


Inscrivez-vous à notre lettre d'information pour vous tenir au courant de nos actualités et de nos dernières trouvailles.


SecuriteInfo.com est une entreprise française de cybersécurité. Nous proposons différentes solutions matérielles et prestations de services permettant de sécuriser les données des Systèmes d'Information d'entreprises ou de collectivités. Notre périmètre d'intervention couvre l'intégralité de votre système d'information : Sécurité périmétrique, réseaux, accès distants, VPN, solutions anti-spam et anti-malwares, différents audits réseaux et systèmes, vérification de la politique de sécurité, hébergement sécurisé ...
Facebook SecuriteInfo.com
Twitter de SecuriteInfo.com
Github de SecuriteInfo.com
Calculs scientifiques distribués contre les maladies, équipe SecuriteInfo.com
Depuis 2015, SecuriteInfo.com soumet et analyse des malwaressur VirusTotal
Depuis 2020, SecuriteInfo.com participe à la lutte antivirale avec nos amis suisses de Malware Baazar (Abuse.ch)
© 2000-2026 - Tous droits réservés SecuriteInfo.com