
Table des matières
Pourquoi monter son lab ?
Apprendre la cybersécurité, que ce soit par son côté défensif ou offensif, c’est avant tout explorer un domaine vaste et faire des expériences. Il est important d’avoir à disposition un environnement sécurisé, facile à maintenir et isolé de ses outils communs, pour éviter toute catastrophe… ou d’avoir à être trop prudent.
Faire des erreurs c’est très important, et aujourd’hui nous te proposons de monter l’environnement idéal pour se planter en toute tranquillité !
Plan du lab en 3 mots
Pour te permettre de découvrir un maximum de choses, le choix a été fait de proposer plusieurs options, autant au niveau des machines offensives que des machines cibles.
Machines offensives
- Kali Linux : un grand classique, qui est une distribution Linux spécialisée pour les activités offensives et embarque énormément d’outils très communs dans le domaine
- Ubuntu avec Exegol : une philosophie différente, basée sur des containers jetables, beaucoup d’outils offensifs préconfigurés et une communauté active
Machines cibles
- Juice Shop : le grand classique des systèmes vulnérables pour apprendre les attaques Web progressivement, avec un système de gamification et beaucoup de challenges
- Metasploitable3 : le terrain d’entrainement idéal pour apprendre à utiliser des exploits connus via le framework Metasploit, divisé en deux machines vulnérables, une Ubuntu et un Windows Server
Quelques notions
Avant de se lancer tête baissé dans la procédure de déploiement, nous conseillons fortement de lire (même rapidement) le petit résumé des notions utilisées dans ce guide.
Même si ce n’est pas un cours à part entière, survoler les grands principes qui serviront de base à ce lab permettra de mieux comprendre les choix qui ont été faits et de diagnostiquer plus rapidement en cas de problème.
Virtualisation imbriquée
Certaines architectures proposées dans ce guide utiliseront la virtualisation imbriquée ou « nested virtualization » en anglais.
La virtualisation imbriquée est une fonctionnalité qui permet à un hyperviseur (VirtualBox, VMWare Workstation, Hyper-V, Proxmox, etc…) d’exécuter des machines virtuelles à l’intérieur d’autres machines virtuelles.
Source : https://learn.microsoft.com/fr-fr/virtualization/hyper-v-on-windows/user-guide/nested-virtualization

Il est possible de l’activer lors de la configuration d’une machine virtuelle, en choisissant de virtualiser… les fonctionnalités de virtualisation du processeur (ici, Intel VT-x/EPT ou AMD-V/RVI).

Sans cette fonctionnalité, une machine virtuelle ne pourra pas fournir la couche de virtualisation matérielle nécessaire à l’exécution d’un hyperviseur, et un message d’erreur sera produit par celui-ci.

Infrastructure-As-Code
Certains outils utilisés dans ce guide se basent sur le principe d’Infrastructure-as-Code ou IaC.
L’idée de l’IaC est de permettre de déployer et/ou de configurer des éléments d’infrastructure uniquement à travers des fichiers de configuration standardisés.
Ces fichiers de configuration sont ensuite utilisé pour déployer et configurer les ressources sans qu’aucune autre interaction ne soit nécessaire.
Source : https://en.wikipedia.org/wiki/Infrastructure_as_code
Dans le cas de ce lab, l’IaC permet de télécharger et déployer des machines virtuelles d’entrainement préconfigurées en une seule commande, plutôt que d’avoir à configurer et adapter les images à chaque environnement.
Source : https://www.cbtnuggets.com/blog/technology/programming/infrastructure-as-code-iac

Containers
Certaines architectures utiliseront des containers via Docker, notamment pour utiliser l’environnement de pentest appelé Exegol.
La technologie des containers est un dérivé de la virtualisation permettant d’exécuter chaque ensemble d’application (appelé une image) dans un espace isolé et dédié.
Là ou la virtualisation classique demande de dédier un système d’exploitation entier par environnement isolé, les containers partagent le même noyau système et l’isolation est assurée par le moteur de conteneurisation lui-même (Docker Engine pour Docker).
Source : https://www.docker.com/resources/what-container/

Concrètement, l’utilisation correcte d’une image Docker permet de s’assurer que l’ensemble des applications voulues seront configurées exactement de la même façon à chaque nouveau déploiement, que le système hôte soit protégé d’une mauvaise utilisation dans le container, et que les données présentes dans le container soient isolées du reste.
Bien entendu, aucun de ces principes n’est correct si les containers sont mal configurés ou mal utilisés… attention aux bonnes pratiques de sécurité !
Source : https://docs.docker.com/engine/security/
LVM chiffré
Lors de l’installation des systèmes Linux offensifs, nous proposons de gérer le stockage (partitionnement et gestion des disques) via LVM (Logical Volume Manager) en activant le chiffrement, plutôt que de conserver les options par défaut.
L’utilisation de LVM permettra de gérer des volumes logiques, ce qui facilite largement les opérations courantes, comme l’ajout d’espace une fois l’installation terminée.

Source : https://www.jjworld.fr/lvm-logical-volume-manager/
Un autre grand avantage est de pouvoir chiffrer tout un ensemble de partitions (donc un disque entier) avec un seul mot de passe, ce que nous allons faire.
Chiffrer le disque d’un système Linux est une mesure de sécurité supplémentaire qui empêche l’accès aux données sans posséder la clé de déchiffrement.
Sans cette clé, il est impossible de monter le disque sur un autre système pour y accéder.
Dans le cas d’une machine virtuelle, le disque est stocké sous forme de fichier sur le système hôte… et ce fichier sera donc chiffré, ce qui empêche ce dernier d’interférer avec la machine virtuelle.
Bien entendu, chiffrer également le disque de votre système hôte est conseillé (via LVM/LUKS ou Bitlocker) pour compléter la chaine.
Source : https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup
Source : https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/
Choix d’architecture
Prérequis
CPU : 4 Coeurs
RAM : 16 GB minimum
Stockage : 150 GB minimum
Data/Téléchargement : Environ 100 GB
Privilèges : Administrateur local / Root et accès au BIOS
Architecture
La procédure de déploiement de lab ci-dessous est conçue pour fonctionner sur n’importe quel OS Windows récent (Windows 10 & 11), et ne nécessite pas de désactiver les fonctionnalités basées sur la virtualisation Windows (Hyper-V, Credentials/Device Guard, Isolation du noyau, etc…).
Ces fonctionnalités peuvent empêcher l’utilisation de virtualisation imbriquée (c.a.d. exécuter une machine virtuelle dans une machine virtuelle) et ne sont plus désactivables (ou difficilement) dans les versions récentes de Windows.
Source : https://learn.microsoft.com/fr-fr/virtualization/hyper-v-on-windows/user-guide/nested-virtualization

Parmi ces fonctionnalités, on retrouve des mesures de sécurité basées sur la virtualisation Hyper-V (aussi appelées VBS), notamment l’isolation du noyau Windows, l’intégrité de la mémoire ou la protection des identifiants (Credential Guard), qui isolent ces composants critiques dans des environnements virtualisés.
Les désactiver présente un risque supplémentaire pour l’utilisateur et nous conseillons de garder les paramètres par défaut dans la mesure du possible.
Source : https://learn.microsoft.com/fr-fr/windows-hardware/design/device-experiences/oem-vbs
Les machines offensives pourront être déployées suivant les préférences sur VirtualBox, VMWare Workstation, ou autre hyperviseur au choix.
Les machines cibles, elles, seront déployées en utilisant l’outil Vagrant (IaC) sur l’hôte Windows via VirtualBox uniquement.
Pour rappel, Vagrant est un outil permettant de déployer rapidement et simplement des machines virtuelles à partir de fichiers de configuration standard, ce qui permet d’automatiser et de simplifier cette étape.
Source : https://developer.hashicorp.com/vagrant/intro
Ci-dessous, tu trouveras un exemple d’architecture Windows sans virtualisation imbriquée

Installation d’un hyperviseur
Activer la virtualisation dans le BIOS
Accède au BIOS de la machine et vérifie que les options de virtualisations sont activées (appelées SVM pour les processeurs AMD ou VT-x pour les processeurs Intel).
Pour obtenir la procédure exacte d’activation de la virtualisation, fait une recherche spécifique en fonction de la carte mère utilisée ou de la marque du laptop.
Pour accéder au BIOS sur n’importe quel système, redémarre la machine et appuie sur la touche indiquée.

Sous Windows, il est aussi possible d’y accéder simplement en maintenant la touche [SHIFT] enfoncée lors d’un redémarrage.

Une fois le système redémarré, choisi l’option « Dépannage ».

Puis choisis l’option « Changer les paramètres du microprogramme UEFI » et valide le choix.

Installer VirtualBox
Télécharge VirtualBox et l’Extension Pack à l’adresse ci-dessous.
Source : https://www.virtualbox.org/wiki/Downloads

Lance l’installation de VirtualBox en conservant les options par défaut et clique sur « Suivant ».

Autorise l’installation des composants manquants et termine l’installation.

Lance l’installation du pack d’extension pour terminer la procédure.

Installer VmWare Workstation (optionnel)
La gestion des machines offensives peut également se faire via VMWare Workstation, plutôt que VirtualBox.
Note que toutes les VM cibles seront installée via VirtualBox et que ce guide ne permet pas de construire un lab entièrement via VMWare Workstation.
Rends-toi à l’adresse ci-dessous et sélectionne « Download fusion or workstation ».
Source : https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion

Crée un compte Broadcom et connecte-toi.

Sélectionne « VmWare Workstation Pro » sur la page 2 et choisi la dernière version disponible.
Source : https://support.broadcom.com/group/ecx/downloads

Clique sur l’icône de téléchargement à droite de la page et rentre les informations demandées pour valider la requête, puis clique à nouveau sur l’icône de téléchargement pour obtenir l’installer.

Lance l’installation et coche « Install Windows Hypervisor Platform », puis clique sur « Suivant » et termine l’installation.
Installation des machines offensives
Kali Linux
Télécharge la dernière version de l’ISO Kali à l’adresse suivante en choisissant « Installer Images ».
Source : https://www.kali.org/get-kali/#kali-platforms

Crée une nouvelle machine virtuelle en sélectionnant l’ISO Kali comme média d’installation.

Clique sur « Hardware » puis augmente la mémoire à 4 GB et attribuer 4 cœurs au minimum.

Clique sur « Hard Disk » puis attribue 40 GB de stockage minimum.

Valide la configuration en cliquant sur « Finish », puis clique sur « Démarrer » et sélectionne « Graphical Install ».

Sélectionne les options de langage et de clavier souhaitées, puis nomme la nouvelle machine.

Nomme le nouvel utilisateur et choisi son mot de passe.

Choisis de partitionner le disque en utilisant LVM en mode chiffré (encrypted LVM).
Le chiffrement du disque permet d’ajouter un niveau de sécurité/cloisonnement supplémentaire entre les données de la machine hôte et celles de la machine virtuelle.
Le mot de passe permettant de déchiffrer le disque te sera demandé à la prochaine étape, et devra être saisi à chaque démarrage de la machine virtuelle.

Laisse les autres options par défaut et valide les changements lors de la dernière étape en cochant « Yes ».

Une fois les changements appliqués, valide une dernière fois la configuration des partitions en sélectionnant « Yes ».

Choisis l’environnement de bureau souhaité et valider la sélection d’outils.

Sélectionne la partition /dev/sda disponible pour l’installation du GRUB boot loader et valide.

Termine l’installation en sélectionnant « Continue ».

Exegol sous Ubuntu
Télécharge la dernière version de l’ISO Ubuntu LTS à l’adresse suivante.
Source : https://ubuntu.com/download/desktop

Crée une nouvelle machine virtuelle en sélectionnant l’ISO correspondant comme média d’installation.

Modifie les paramètres Hardware pour attribuer au minimum 4 GB de mémoire, un processeur avec 4 cœurs et 80 GB de stockage.

Démarre la machine virtuelle et clique sur « Install Ubuntu ».

Suis les mêmes étapes que pour l’installation de Kali Linux ci-dessus et laisse les options par défaut à l’exception du chiffrement du disque, puis sélectionne « Advanced features » et enfin « Use LVM and encryption ».

Renseigne les informations de base du système et de l’utilisateur, puis termine l’installation.

Docker sous Ubuntu
Une fois l’installation d’Ubuntu terminée, démarre la machine et lancer un terminal.
Ouvre le fichier sources.list et commente la ligne se trouvant à l’intérieur.
sudo nano /etc/apt/sources.list

Sauvegarde les modifications avec [CTRL + x], [Y] et [Enter], puis met à jour la liste des paquets et vérifie qu’il n’y a pas d’erreur.
sudo apt update

Puis, télécharge les derniers outils nécessaires avant d’installer Docker et de configurer l’environnement.
# Installer l'outil Curl
sudo apt install curl
# Lancer l'installation de Docker via le script d'installation
curl -fsSL "https://get.docker.com/" | sh
# Ajouter l'utilisateur actuel au groupe Docker
sudo usermod -aG docker $(id -u -n)
# Recharger les groupes pour l'utilisateur
newgrp docker
# Tester le bon fonctionnement de Docker
docker run hello-world

Source : https://docs.docker.com/engine/install/
Exegol sous Ubuntu
Installe les prérequis pour Exegol, puis lance l’installation d’une image.
# Installer pipx
sudo apt install pipx
# Cloner et installer Exegol
pipx install exegol
pipx ensurepath
# Configurer l'alias pour lancer Exegol en tant que root
echo "alias exegol='sudo -E $(which exegol)'" >> ~/.bash_aliases source ~/.bashrc
# Installation d'une image Exegol
exegol install
Si l’erreur suivante est obtenue pour les modules docker ou git…

…installe manuellement les paquets manquants.
python3 -m pip install docker --break-system-packages
python3 -m pip install --upgrade -r requirements.txt --break-system-packages

Accepte l’installation de l’image par défaut (nightly).

Source : https://exegol.readthedocs.io/en/latest/getting-started/install.html
Installation des machines cibles
Pour cette section, nous aurons besoin d’installer une instance de Juice Shop et une instance de Metasploitable3.
Si le choix est fait de déployer les machines cibles sur Linux, l’utilisateur aura le choix entre un déploiement via Docker ou via Vagrant (VirtualBox).
Juice Shop
Source : https://git-scm.com/downloads/win
Source : https://github.com/juice-shop/juice-shop
Installe Git pour Windows avec les options par défaut puis lance Git bash et clone le dépôt Juice Shop.
git clone https://github.com/juice-shop/juice-shop.git

Ouvre un PowerShell, navigue jusqu’au dossier juice-shop/vagrant et installe la VM.
cd D:/Labs/VMs/juice-shop/vagrant
vagrant up

Ouvre VirtualBox et vérifie que la VM a bien été ajoutée.

Une fois la machine démarrée, Juice Shop sera accessible à l’IP 192.168.56.110.

Metasploitable3
Source : https://github.com/rapid7/metasploitable3
Source : https://developer.hashicorp.com/vagrant/docs/installation
Ouvre un PowerShell en administrateur et déplace-toi dans le dossier des VMs, puis crée un dossier dédié et déplace-toi à l’intérieur.
cd C:\Labs\VMs
mkdir metasploitable3-workspace
cd metasploitable3-workspace

Télécharge le fichier de configuration Vagrant puis lance Vagrant pour télécharger et déployer les deux VM sur VirtualBox.
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/rapid7/metasploitable3/master/Vagrantfile" -OutFile "Vagrantfile"
vagrant up

Si un message d’erreur indique un problème d’adresse IP, modifie le fichier de configuration Vagrantfile et activer le DHCP pour le système concerné.

Remplace l’IP par type: « dhcp » et enregistre les modifications.

Ouvre VirtualBox et vérifie que les VM a bien été ajoutées.

Pour obtenir l’IP cible de la VM Windows, connecte-toi avec les identifiants vagrant::vagrant, et utilise la commande ipconfig via un Powershell.
ipconfig

Pour obtenir l’IP cible de la VM Ubuntu, connecte-toi avec les identifiants vagrant::vagrant et utilise la commande ifconfig.
ifconfig eth0
