Skip to content
Snippets Groups Projects
Verified Commit 63c6225d authored by iliya.saroukha's avatar iliya.saroukha :first_quarter_moon:
Browse files

wip: intro to presentation

parent bd23e416
Branches
No related tags found
No related merge requests found
--- ---
title: Hypervisor rootkit for the x86 architecture title: Étude de rootkits HVM pour l'architecture informatique x86-64
subtitle: Projet de semestre 2025 subtitle: Projet de semestre 2025
author: author:
- Iliya Saroukhanian - Iliya Saroukhanian
...@@ -18,24 +18,43 @@ format: ...@@ -18,24 +18,43 @@ format:
- "block=fill" - "block=fill"
--- ---
# Introduction # Mise en contexte
## Mise en contexte ## Cadre académique
## Méthodologie ::: {.incremental}
::: {.callout-tip title="Projet de semestre"}
## Plan de la présentation - Préparation au travail de Bachelor
- Travail **autonome** d'une complexité moyenne
# Hyperviseur en guise de _rootkit_ - Approche rigoureuse / scientifique
:::
## État de l'art
# Étude de Blue Pill
# 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 ## 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
- Études des méthodes de détection
- Analyse temporelle
- Détection de virtualisation
:::
# Questions ?
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment