En regardant de plus près les systèmes d’exploitation installés sur les postes de pentesters, on voit souvent des distributions Linux, parfois Windows, plus rarement MacOS. Cependant, toutes les configurations sont possibles du moment qu’on peut utiliser des machines virtuelles et/ou des conteneurs. En effet, il n’est pas recommandé d’installer directement des outils de pentest sur notre hôte (oui oui, pour des raisons de sécurité, de propreté, éviter de tout casser, tout ça tout ça 🤡). Par ailleurs, selon le type de projets sur lesquels on va être amenés à travailler, les besoins et les outils nécessaires sont différents et peuvent nécessiter le recours à plusieurs systèmes d’exploitation et distributions, d’où l’importance de rester flexible !
Le roseau plie jeune phacochère, mais ne romp jamais.
Dans cette optique, je vous propose une configuration que l’on voit peu souvent : le déploiement d’un environnement de Pentest/CTF sous MacOS équipé d’une puce Apple. Il y a de nombreuses façons de créer son environnement de pentest sous MacOS, celle que j’ai choisie passe par l’installation d’une VM Kali Linux sur Parallels puis le déploiement d’Exegol, afin d’avoir tous les outils nécessaires pour commencer directement à pentester 🔧.
C’est parti !

Prérequis : Outil de virtualisation
Avant de pouvoir installer une machine virtuelle, il nous faut une solution de virtualisation. Il en existe plusieurs, et le but ici n’est pas de faire un comparatif entre celles-ci. La virtualisation ayant mis un peu de temps à arriver de manière stable sur les puces Apple, j’ai choisi d’utiliser Parallels Desktop qui était l’un des premiers outils à fournir une solution simple, mais malheureusement payante. Si vous souhaitez expérimenter avec une alternative gratuite, Virtual Box supporte aussi les puces Apple (non testé).
Déployer une machine virtuelle avec Parallels
Une fois Parallels Desktop installé sur votre machine, il est temps de rentrer dans le vif du sujet et déployer une machine virtuelle. Parallels propose une installation rapide et simplifiée de plusieurs distributions : parmi celles-ci, on retrouve notamment Ubuntu, Debian ou Kali Linux. Ici, j’ai choisi Kali Linux, une distribution dédiée au pentest et présentant plusieurs outils pré-installés.

Une fois l’installation de la VM terminée, celle-ci démarre et l’installation automatique des outils Parallels se lance. À la fin de cette étape, un redémarrage est nécessaire.
On peut alors terminer notre configuration en effectuant les dernières mises à jour grâce à la commande suivante :
sudo apt update && sudo apt upgrade -y
Notre VM est alors installée et prête pour le pentest ! … Ou Pas ?

Le problème
Kali Linux a beau être une distribution dédiée au pentest, on se retrouve très vite à devoir installer beaucoup d’outils qui ne sont pas présents par défaut et pourtant nécessaires : BurpSuite, Bloodhound, des outils et scripts dédiés au pentest Active Directory, etc. Ce qui n’est pas très pratique, et peut vite devenir énervant si on passe plus de temps à chercher et installer des outils au lieu de se concentrer directement sur ce qui nous importe (oui, je n’ai pas beaucoup de patience).
La solution : installer Exegol
Exegol est un environnement de pentest complet. Il est déployable rapidement sous forme de conteneur docker, ce qui permet d’avoir un environnement dédié à chaque pentest et pouvoir le supprimer proprement à la fin. C’est un gain de temps considérable puisque tout est déjà là ! En plus, il est compatible avec l’architecture ARM, ce qui nous intéresse ici.

Exegol offre pléthore d’avantages pour une utilisation au quotidien. En tant que pentester, je l’utilise sur la plupart de mes audits, sans besoin de machines virtuelles, d’autant plus qu’il est extrêmement facile à déployer sur Linux et beaucoup plus léger.
Pour en savoir plus sur le projet, c’est par ici !
Dans le cas présent, même s’il est possible de déployer Exegol directement sous MacOS, j’ai préféré garder la machine virtuelle comme environnement de base et déployer Exegol dans celle-ci.
Le problème n°2
L’espace disque disponible par défaut lors de l’installation d’une VM Kali sous Parallels est insuffisant pour installer la version full d’Exegol ( ~50Go), on va devoir apporter quelques modifications 💪.
Configuration de la VM
On va d’abord s’attaquer à la configuration matérielle de la VM, définie dans le menu de configuration :
- Ouvrir le menu configuration et naviguer sur l’onglet “Matériel”
- Vérifier la configuration “CPU et Mémoire” : on veut au minimum 2 processeurs et 4Go de mémoire (ici 8Go)

- Puis, aller dans l’onglet “Disque dur”, cliquer sur “Avancé” puis “Propriétés” et définir la taille sur 200Go (pour être sûrs d’avoir de la place de stocker toutes nos preuves d’audit)

Fini ? Pas tout à fait… Il nous reste encore à allouer le stockage que l’on vient de rajouter, cela se passe directement dans la VM.
- Ouvrir l’utilitaire “Disks”
- Stopper la partition de “Swap”, format sous lequel a été ajouté le stockage supplémentaire.
- Supprimer cette partition Swap, on se retrouve avec une partition non allouée.
- Il est alors possible ré-allouer cet espace au “Filesystem” en faisant clic droit sur celui-ci puis “Resize” :

- Donner les valeurs suivantes et changer la taille de la partition (ici on réserve 8Go pour garder du swap) :

- Sélectionner les 8GB d’espace restant et cliquer sur “+”
- Create Partition > Type “other” > Linux Swap Partition > Create
- Démarrer la partition
On est enfin prêts pour la suite des réjouissances.

Installer Exegol
Avant d’installer Exegol à proprement parler, nous allons devoir installer Docker. La documentation est fournie ici, voici les étapes que j’ai suivies :
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "bookworm") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Par la suite, la documentation Exegol liste toutes les étapes nécessaires à son installation sur Linux :
# add the sudo group to the user
sudo usermod -aG docker $(id -u -n)
# "reload" the user groups with the newly added docker group
newgrp docker
# install pipx
sudo apt install pipx
# You can now install Exegol package from PyPI
pipx install exegol
# Ajout au PATH
pipx ensurepath
# Run as root
echo 'alias exegol="sudo -E $(which exegol)"' >> ~/.zshrc
source ~/.zshrc
# Install
exegol install
Au cours de l’installation, il vous sera demandé de choisir une image. Je choisis généralement la version full, qui comme son nom l’indique est la plus complète et plus stable que la nightly.
On peut alors créer son premier conteneur avec Exegol start. N’hésitez pas à aller consulter les options possibles sur la documentation, certaines vous permettent de loguer vos actions, définir un workspace, modifier les permissions sur vos fichiers, etc. Plein de choses très utiles !
Vous voilà fin prêts à pentester le monde 🚀

Autres considérations
Même s’il est tout à fait possible d’installer directement Exegol sur MacOS et éviter de s’encombrer d’une VM, cela peut avoir quelques inconvénients. La documentation Exegol met en garde à ce sujet :
“Il est fortement conseillé d’installer Exegol sur un hôte Linux, surtout si vous prévoyez d’utiliser Exegol pour des tests de pénétration internes. En effet, Docker Desktop sur Windows et macOS manque de certaines fonctionnalités, principalement en raison de la manière dont ces systèmes d’exploitation exécutent les conteneurs Docker dans une machine virtuelle interne qui ne partage pas les interfaces réseau et les accessoires USB de l’hôte.”
Cependant, il serait tout à fait envisageable de choisir une autre distribution que Kali Linux pour sa VM linux. Dans les images disponibles dans Parallels, on retrouve notamment Debian ou encore Ubuntu qui peuvent être de bonnes alternatives.
Sources & Ressources
Parallels: https://kb.parallels.com/en/129758
Documentation Exegol: https://exegol.readthedocs.io/en/latest/getting-started/install.html
Installation de Docker: https://docs.docker.com/engine/install/debian/