# Détection de l'exécution en environnement virtualisé
Le but de ce mini-projet est d'étudier les techniques permettant à un processus (malveillant ou non) de déterminer s’il s’exécute dans un environnement confiné (machine virtuelle, sandbox).
## Différents environments virtualisés
Un hyperviseur est une plateforme qui permet d'exécuter plusieurs machines virtuelles et donc plusieurs systèmes d'exploitation sur un même hôte. Il en existe plusieurs avec différentes caractéristiques.
## Identification d'un environnement confiné
De nombreuses méthodes permettent d'identifier les environnements confinés. Plusieurs de ces techniques sont décrites par la suite puis implémentées dans une application android.
### Filesystems, répertoires et registres
Les environnements virtuels et les sandbox contiennent des fichiers systèmes, des répertoires et des regsitres spécifiques et différents des systèmes hôtes habituels.
Il est donc possible de vérifier leur présence et de chercher des répertoires ou mots spécifiques ("VBOX", "vmware tools"), permettant également de déterminer la nature de l'environnement (virtualbox, vmware, etc.).
``
c:\windows\system32\VBoxControl.exe
``
``
%PROGRAMFILES%\VMWare\
``
``
HKLM\SOFTWARE\Oracle\VirtualBox Guest Additions
``
### Détection via les propriétés de l'OS
Certains environnements virtuels attribuent des noms par défaut aux utilisateurs et aux machines. De même, lors de la création d'un environnement virtuel, certaines données sont proposées par défaut telles que la taille de la RAM, la taille du disque dur, etc. Ces moyens ne sont pas les plus fiables mais sont parfois utilisés par les malwares pour identifier l'environnement.
### Détection d'objets
La détection d'objet donne également des informations sur l'environnement. Il est possible de détecter les périphériques, les drivers différents sur les environnements virtuels.
### Adresse mac
Les adresses mac sont parfois spécifiques en environnement virtuel.
``
08:00:27 - virtualbox
``
### Activités de l'utilisateur
Généralement, les systèmes hôtes ont un comportement différent des machines virtuelles et les sandbox. Il est donc possible d'analyser les fenêtres ouvertes sur la machine cible, généralement moins nombreuses que sur les machines hôtes, ou tout simplement l'historique du navigateur, les processus en cours d'exécution, le nombre de fichiers dans le répertoire personnel, la fréquence des clics puis d'en tirer des conclusions.
### Fonctionnalités de l'OS
Lorsqu'un malware est lancé dans un debugger ou une sandbox, il dispose des privilèges de debug. Le malware peut donc tenter de lancer des processus légitimes et critiques tels que csrss.exe (ne pouvant pas être stoppés même par un administrateur) puis tenter de les terminer. Dans le cas d'un debugger, le processus pourra être arrêté.
### Protection anti-analyse
La détection de d'outils couramment utilisés lors d'analyse de malware (wireshark, ollydbg, Frida, etc.) permet également de déduire qu'il s'agit d'un environnement utilisé pour analyser le malware.
## Virtualisation des serveurs
Les entreprises utilisent de plus en plus la virutalisation pour héberger ses serveurs. Au delà de l'hébergement de plusieurs serveurs sur un seul hôte physique, la virtualisation dispose de nombreux avantages (facilité d'administration, sauvegarde, gestion de la reprise d'activité simplifiée par les snapshots, rapidité, ...). Toutefois certains utilisateurs ont tendance à penser que les environnements virtuels sont plus "sûrs" que les environnements physiques, dû à la détection de ce type d'environnement par les malwares.
Globalement, la probabilité qu’un malware ne se déclenche pas en détectant un environnement virtuel existe, mais compter sur cette probabilité lors de la mise en place d'un serveur est une erreur, les malware préfèreront adapter leur comportement en fonction de l'environnement et pourront dtecter la nature du serveur en se basant sur les propriétés de l'OS (taille du disque, etc.).
Par ailleurs, la virtualisation offre la possibilité d'avoir des intéractions entre machines virtuelles et machine hôte entraînant parfois la propagation des malwares.
## Bilan
Il existe de nombreuses techniques permettant à un malware de détecter un environnement confiné, les techniques citées précédemment ne sont pas exhaustives et ne sont pas toutes aussi efficaces les unes que les autres. Il est intéressant pour un malware d'en utiliser plusieurs puis d'adapter son comportement en fonction de ce qu'il a détecté (sandbox, serveur virtuel, machine virtuelle d'un reverser, etc.).
## Bibliographie
https://www.researchgate.net/publication/220713559_SubVirt_Implementing_malware_with_virtual_machines
https://evasions.checkpoint.com/
https://ieeexplore.ieee.org/document/6121379/references#references
https://www.deepinstinct.com/2019/11/24/malware-evasion-techniques-part-3-anti-sandboxing/
https://attack.mitre.org/techniques/T1497/