- Permettre l'exécution de **plusieurs OS** sur une **seule** et même **machine**
- Exploiter **efficacement** les **ressources computationnelles**
- **Faciliter** et **centraliser** la **gestion des ressources IT** en
entreprise
<!-- BUG: not sure about this cross-architecture stuff -->
- Développement et déploiement de solutions logiciels **indépendamment** de
**l'architecture sous-jacente**
:::
. . .
...
...
@@ -43,7 +41,6 @@ pertinence
::: {.incremental}
- **Isolation**/**_sand-boxing_** de chaque environnement virtuel
<!--- TODO: add something about the MMU and shadow page tables-->
- **Impossibilité** (du moins théorique) de s'échapper de son environnement
- **Ne doit affecter** en \textcolor{red}{\textbf{aucun cas}} **l'hôte** ou
**la couche de virtualisation** (VMM) sous-jacente
...
...
@@ -149,12 +146,6 @@ Est simplement chargé en tant que pilote Windows (`.sys`)
[^4]: [Subverting Vista™ Kernel For Fun and Profit](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2008/08/20084218/BH-US-06-Rutkowska.pdf)
<!--HACK: à voir si je fais les deux ci-dessous-->
<!--## Cloudskulk-->
<!---->
<!--## CoVirt-->
# _Reverse-Engineering_
## Hyperviseur sous forme de module noyau chargeable
...
...
@@ -174,18 +165,42 @@ région allouée et initialisée
## Anatomie d'un _world-switch_
::: {.incremental}
- Chaque CPU possèdent une région **VMCS** (_"Virtual Machine Control Structure"_)
- Semblable en tout genre à la région **VMXON**
- Est utilisé pour sauvegarder l'état du CPU ou vCPU à chaque _world-switch_
- VMEntry $\rightarrow$ état du CPU en mode \textcolor{red}{root}
- VMExit $\rightarrow$ état du CPU en mode \textcolor{teal}{non-root}
:::
# Méthodes de détection
## _Timing analysis_
# Conclusion
::: {.incremental}
- Construire un ensemble d'opérations nécessitant des `VMExit`
- Établir une _baseline_ temporelle sur un hôte **pas soumis** à l'attaque
- Calculer les **différences de temps** entre la _baseline_ et un sujet infecté
:::
# Références bibliographiques
## Détection de virtualisation
- [Rootkits: User Mode](https://www.infosecinstitute.com/resources/general-security/rootkits-user-mode-kernel-mode-part-1/)
::: {.incremental}
- Vérifier si l'on est reparable par `systemd-detect-virt`
- Permet de détecter de manière granulaire QEMU, `kvm` et les technologies
de containerisation (e.g. `docker`)
- De même, avec [`VMAware`](https://github.com/kernelwernel/VMAware)
- Cf. projet de semestre de M. Ricardo Dos Santos
:::
# Conclusion
::: {.incremental}
- Approfondissement des connaissances liées à la virtualisation de plateforme
- Recensement des enjeux liés à la cybersécurité
- Étude de l'utilisation d'hyperviseur en guise de _rootkit_
- Développement d'un hyperviseur à l'aide des instructions matérielles x86