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

feat: details about blue pill execution

parent 29169190
Branches
No related tags found
No related merge requests found
...@@ -93,7 +93,7 @@ pertinence. ...@@ -93,7 +93,7 @@ pertinence.
## _Hardware-assisted full virtualization_ ## _Hardware-assisted full virtualization_
::: {.callout-note} ::: {.callout-note}
\scriptsize Depuis $\sim$ 2005, exposition d'**instructions matérielles** par les _vendors_ CPU (Intel, \scriptsize Depuis $\sim$ 2005, exposition d'**instructions matérielles** par les fabricants CPU (Intel,
AMD) afin de palier au problème introduit par \textcolor{red}{17 instructions privilégiées} AMD) afin de palier au problème introduit par \textcolor{red}{17 instructions privilégiées}
ne générant pas de **_trap_**[^1] ne générant pas de **_trap_**[^1]
::: :::
...@@ -120,7 +120,7 @@ ne générant pas de **_trap_**[^1] ...@@ -120,7 +120,7 @@ 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)
# Hypervisor as a rootkit # Hyperviseur en guise de _rootkit_
## Rootkits ## Rootkits
...@@ -138,13 +138,13 @@ of a computer system **without being detected**"_ [^2] ...@@ -138,13 +138,13 @@ 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)
## Valeur "offensive" ajoutée par un hyperviseur ## 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
le **noyau de l'OS** le **noyau de l'OS**
- _Hijacking_ complet du système possible - _Hijacking_ complet du système possible
- Bras de fer entre les outils de détection (kernel mode) et le _malware_ - Bras de fer entre les outils de détection (_kernel mode_) et le _malware_
- Invisibilité pas forcément garantie ! - Invisibilité pas forcément garantie !
- _Hypervisor as a rootkit_ $\rightarrow$ un **changement de paradigme** - _Hypervisor as a rootkit_ $\rightarrow$ un **changement de paradigme**
- Insertion \textcolor{red}{entre} le **noyau de l'OS** et le **matériel** - Insertion \textcolor{red}{entre} le **noyau de l'OS** et le **matériel**
...@@ -156,7 +156,7 @@ le **noyau de l'OS** ...@@ -156,7 +156,7 @@ le **noyau de l'OS**
# Blue Pill, les points clés # Blue Pill, les points clés
## Background ## Historique
::: {.incremental} ::: {.incremental}
- \small 1ère démonstration lors du _Black Hat Briefings_ du 3 août 2006[^3] - \small 1ère démonstration lors du _Black Hat Briefings_ du 3 août 2006[^3]
...@@ -174,6 +174,48 @@ le **noyau de l'OS** ...@@ -174,6 +174,48 @@ le **noyau de l'OS**
redémarrage du système, est simplement chargé en tant que pilote Windows (`.sys`) redémarrage du système, est simplement chargé en tant que pilote Windows (`.sys`)
::: :::
[^3]: [Subverting Vista™ Kernel For Fun and Profit](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2008/08/20084218/BH-US-06-Rutkowska.pdf)
## Déroulement du code source
- Lancement du pilote -- `DriverEntry`
- Préparation du CPU
- Épinglage de l'exécution -- `KeSetSystemAffinityThread`
- Contexte de l'hyperviseur
- Pile noyau
- GDT et IDT
- Initialisation du VMCB
- Définition des interceptions -- `SvmSetupControlArea`
- État des registres de travaux du CPU -- `SvmInitGuestState`
- Subversion de l'OS
- Chargement du VMCB via `VMLOAD`
- Exécution de `VMRUN`
- Gestion des `#VMEXIT` par le pilote noyau
## Principe de fonctionnement
<!-- ![](../../thesis/figures/diagrams/blue_pill_diagram.png){width="80%" fig-align="center"} -->
::: {.columns}
::: {.column width="45%" .incremental}
- \footnotesize Appel au pilote Blue Pill
- \footnotesize Préparation du VMCB avec l'état de l'OS
- \scriptsize Définition des instructions à intercepter
- \footnotesize `VMRUN`
- \scriptsize CPU en mode \textcolor{teal}{non-root}
- \scriptsize OS cantonné dans une VM en tant qu'invité (zone rouge hachurée)
- \scriptsize `RET` de la "fonction" Blue Pill n'est jamais
atteint en mode hôte
- \footnotesize `#VMEXIT`
- \scriptsize État sauvegardé dans le _save-state area_ du VMCB
- \scriptsize Gestion par l'hyperviseur en mode hôte
:::
::: {.column width="55%"}
![Schéma de Blue Pill](../../thesis/figures/diagrams/blue_pill_diagram.png)
:::
:::
<!-- # État de l'art --> <!-- # État de l'art -->
<!-- --> <!-- -->
<!-- ## SubVirt --> <!-- ## SubVirt -->
...@@ -208,7 +250,6 @@ redémarrage du système, est simplement chargé en tant que pilote Windows (`.s ...@@ -208,7 +250,6 @@ redémarrage du système, est simplement chargé en tant que pilote Windows (`.s
<!-- redémarrage du système, est simplement chargé en tant que pilote Windows (`.sys`) --> <!-- redémarrage du système, est simplement chargé en tant que pilote Windows (`.sys`) -->
<!-- ::: --> <!-- ::: -->
<!-- --> <!-- -->
[^3]: [Subverting Vista™ Kernel For Fun and Profit](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2008/08/20084218/BH-US-06-Rutkowska.pdf)
# _Reverse-Engineering_ # _Reverse-Engineering_
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment