diff --git a/presentations/defense/defense.qmd b/presentations/defense/defense.qmd index b5f6d54806b6490f3c4bd6bc89d11e723376e68c..9c16a35908d66f587e305057bb5ae1702ad70b1c 100644 --- a/presentations/defense/defense.qmd +++ b/presentations/defense/defense.qmd @@ -1,5 +1,5 @@ --- -title: Hypervisor rootkit for the x86 architecture +title: Étude de rootkits HVM pour l'architecture informatique x86-64 subtitle: Projet de semestre 2025 author: - Iliya Saroukhanian @@ -18,24 +18,43 @@ format: - "block=fill" --- -# Introduction +# Mise en contexte -## Mise en contexte +## Cadre académique -## Méthodologie - -## Plan de la présentation - -# Hyperviseur en guise de _rootkit_ - -## État de l'art - -# Étude de Blue Pill +::: {.incremental} +::: {.callout-tip title="Projet de semestre"} +- Préparation au travail de Bachelor +- Travail **autonome** d'une complexité moyenne +- Approche rigoureuse / scientifique +::: -# HVM _rootkit_ sous GNU/Linux +- Recherche dans le domaine de la cybersécurité +- Application des connaissances acquises en Bachelor ISC + - Programmation bas-niveau + - Systèmes d'exploitation + - Virtualisation de plateforme +- Étude de _rootkits_ + - Compromission d'un système + - Virtualisation comme vecteur d'attaque +::: -# Conclusion +## Approche méthodologique + +- Phase de **recherche** (Oct-Nov 2024) + - État de l'art + - Papiers scientifiques (ex.: SubVirt, CloudSkulk) + - Projets existants (ex.: Blue Pill, CoVirt) +- Début **d'implémentation** d'un _POC_ (Dec-Jan 2025) + - Module noyau GNU/Linux + - Extensions matérielles Intel VT-x (documentation technique) + - Interception d'instructions +- **É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 @@ -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) -# Approche offensive +# Hypervisor as a rootkit -## Qu'est-ce qu'un _rootkit_ +## Rootkits ::: {.callout-important} \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] [^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} - 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 [^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 +- Études des méthodes de détection + - Analyse temporelle + - Détection de virtualisation +::: +# Questions ?