diff --git a/presentations/defense/defense.qmd b/presentations/defense/defense.qmd new file mode 100644 index 0000000000000000000000000000000000000000..b5f6d54806b6490f3c4bd6bc89d11e723376e68c --- /dev/null +++ b/presentations/defense/defense.qmd @@ -0,0 +1,167 @@ +--- +title: Hypervisor rootkit for the x86 architecture +subtitle: Projet de semestre 2025 +author: + - Iliya Saroukhanian +lang: fr-CH +date: today +date-format: long +urlcolor: blue +format: + beamer: + institute: Haute école du paysage, d'ingénierie et d'architecture de Genève -- HEPIA + highlight-style: github + slide-level: 2 + theme: metropolis + themeoptions: + - "progressbar=foot" + - "block=fill" +--- + +# Introduction + +## Mise en contexte + +## Méthodologie + +## Plan de la présentation + +# Hyperviseur en guise de _rootkit_ + +## État de l'art + +# Étude de Blue Pill + +# HVM _rootkit_ sous GNU/Linux + +# Conclusion + + +## Enjeux de la virtualisation de plateforme + +::: {.incremental} +- 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 +::: + +. . . + +::: {.callout-important} +\small Au tournant des années **2010**, l'avènement du **_cloud computing_** projette +la virtualisation de plateforme dans une nouvelle ère de popularité et +pertinence. +::: + +## Axiomes liés à la sécurité + +::: {.incremental} +- **Isolation**/**_sand-boxing_** de chaque environnement virtuel +- **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 +::: + +## _Hardware-assisted full virtualization_ + +::: {.callout-note} +\scriptsize Depuis $\sim$ 2005, exposition d'**instructions matérielles** par les _vendors_ CPU (Intel, +AMD) afin de palier au problème introduit par \textcolor{red}{17 instructions privilégiées} +ne générant pas de **_trap_**[^1] +::: + +. . . + +::: {.columns} +::: {.column width="50%"} + +::: {.incremental} +- \small \textbf{Déduplication} des anneaux de protection (\textcolor{red}{root}/\textcolor{teal}{non-root}) +- \small VMM opère en CPU \textcolor{red}{root} mode +- \small Exécution d'une instruction privilégiée : + - \footnotesize On passe le contrôle au VMM à travers un **`VMExit`** (_world-switch_) +::: + +::: +::: {.column width="50%"} + + + +::: +::: + +[^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 + +## Qu'est-ce qu'un _rootkit_ + +::: {.callout-important} +\small _"A set of software tools that enable an **unauthorized** user to **gain control** +of a computer system **without being detected**"_ [^2] +::: + +. . . + +| \textcolor{teal}{User mode} | \textcolor{red}{Kernel mode} | +|--------------- | --------------- | +| `LD_PRELOAD` library hijacking | Syscall table _hooking_ | +| Binary patching \footnotesize (e.g. `su`, `passwd`) | Injection de modules/pilotes malicieux \footnotesize(GNU/Linux, Windows) | + +[^2]: [Oxford English Dictionary, s.v. "rootkit (n.)," December 2024](https://doi.org/10.1093/OED/6892331220) + +## Hyperviseur en guise de _rootkit_ + +::: {.incremental} +- Point de départ $\rightarrow$ \textcolor{red}{Ring 0}, on se situe déjà au **même niveau** que +le **noyau de l'OS** + - _Hijacking_ complet du système possible + - Bras de fer entre les outils de détection (kernel mode) et le _malware_ + - Invisibilité pas forcément garantie ! +- _Hypervisor as a rootkit_ $\rightarrow$ un **changement de paradigme** + - Insertion \textcolor{red}{entre} le **noyau de l'OS** et le **matériel** + - \textcolor{purple}{Ring -1} effectif + - Détection plus **complexe** + - le _malware_ et l'OS \textcolor{red}{ne sont plus} + sur le **même pied d'égalité** +::: + +# État de l'art + +## SubVirt + +::: {.incremental} +- Papier publié en 2006 par des chercheurs de l'université du Michigan et de +Microsoft[^3] +- Concept originel du **VMBR** (_virtual-machine based rootkit_) +- Basé sur les hyperviseurs VMWare (Linux Target) et Virtual PC (Windows Target) + - Manipulation de la séquence de boot pour se "glisser" en-dessous de l'OS + - **Requiert un redémarrage** + - Chargement de l'OS natif en tant que _guest_ à l'intérieur du VMM +::: + +[^3]: [SubVirt: implementing malware with virtual machines](https://ieeexplore.ieee.org/document/1624022) + +## Blue Pill + +::: {.incremental} +- \small 1ère démonstration lors du _Black Hat Briefings_ du 3 août 2006[^4] +- \small Développé par Joanna Rutkowska (Invisible Things Labs, Qubes OS) +- \small VMBR utilisant les **instructions matérielles** exposées par les CPUs x86 +- \small \textbf{Premier exemple} d'un rootkit \textbf{HVM} (_hardware based virtual machine_) + - \footnotesize Basé initialement sur la technologie AMD-V (Pacifica, _aka_ SVM), puis + porté sur Intel VT-x +::: + +. . . + +::: {.callout-important} +\scriptsize Migration de l'OS natif **à la volée**, ne requiert pas de +redémarrage du système, 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) + +# Blue Pill -- Point clés +