- **Étude** détaillée de Blue Pill (Fév-Mars 2025)
- Virtualisation du CPU
- Migration à la volée de l'OS
- Conception d'une VM à partir des briques de base
## Plan de la présentation
## Enjeux de la virtualisation de plateforme
## Enjeux de la virtualisation de plateforme
...
@@ -93,9 +112,9 @@ ne générant pas de **_trap_**[^1]
...
@@ -93,9 +112,9 @@ ne générant pas de **_trap_**[^1]
[^1]: [Platform Virtualization, Pr. Florent Glück](https://githepia.hesge.ch/flg_courses/virtualization/virtualization_pub_spring24/-/blob/master/course/02-Platform_Virtualization.pdf?ref_type=heads)
[^1]: [Platform Virtualization, Pr. Florent Glück](https://githepia.hesge.ch/flg_courses/virtualization/virtualization_pub_spring24/-/blob/master/course/02-Platform_Virtualization.pdf?ref_type=heads)
# Approche offensive
# Hypervisor as a rootkit
## Qu'est-ce qu'un _rootkit_
## Rootkits
::: {.callout-important}
::: {.callout-important}
\small _"A set of software tools that enable an **unauthorized** user to **gain control**
\small _"A set of software tools that enable an **unauthorized** user to **gain control**
...
@@ -111,7 +130,7 @@ of a computer system **without being detected**"_ [^2]
...
@@ -111,7 +130,7 @@ of a computer system **without being detected**"_ [^2]
[^2]: [Oxford English Dictionary, s.v. "rootkit (n.)," December 2024](https://doi.org/10.1093/OED/6892331220)
[^2]: [Oxford English Dictionary, s.v. "rootkit (n.)," December 2024](https://doi.org/10.1093/OED/6892331220)
## Hyperviseur en guise de _rootkit_
## Valeur "offensive" ajoutée par un hyperviseur
::: {.incremental}
::: {.incremental}
- Point de départ $\rightarrow$ \textcolor{red}{Ring 0}, on se situe déjà au **même niveau** que
- Point de départ $\rightarrow$ \textcolor{red}{Ring 0}, on se situe déjà au **même niveau** que
...
@@ -163,5 +182,63 @@ redémarrage du système, est simplement chargé en tant que pilote Windows (`.s
...
@@ -163,5 +182,63 @@ redémarrage du système, est simplement chargé en tant que pilote Windows (`.s
[^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)
[^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)
# Blue Pill -- Point clés
# _Reverse-Engineering_
## Hyperviseur sous forme de module noyau chargeable
::: {.incremental}
- Concerne **l'architecture x86** pour **Intel VT-x**
- Détection du CPU et de ses capacités pour la virtualisation (_support for VMX_)
- Appel à **`cpuid`** avec `eax = 1` (bit 5 _set_ de `ecx`)
- Vérification du **_"feature control"_** MSR (_"model specific register"_) pour
déterminer si la virtualisation n'a **pas été désactivée depuis le BIOS**
- Initialisation de la région **VMXON** associée à une future VM
- Vérification des valeurs dans les registres de contrôle **CR0** et **CR4**
- Activation de **VMX** à travers le **bit 13** du registre **CR4**
- Exécution de l'instruction **`vmxon`** avec comme opérande **l'adresse physique**
de la 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 à 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
## Analyse temporelle
::: {.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é
:::
## Détection de virtualisation
::: {.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