Exegol est un environnement de pentest se basant sur les containers, avec Docker, plutôt que sur les machines virtuelles. L’objectif reste le même, fournir un environnement isolé, spécifique et reproductible, avec certains avantages sur ses concurrents.
Cette solution, initiée par Dramelac et Shutdown, exprime clairement son objectif : remplacer les anciens environnements et machines virtuelles qui tournent sous Kali Linux, Parrot OS ou encore BlackArch.
Exegol est fait pour vous, que vous soyez débutant, professionnel, pentester, joueur CTF, chercheur bug bounty, chercheur ou dans le cadre d’un audit de sécurité d’un système d’information.
Exegol, comment ça marche ?
Lorsqu’on parle d’Exegol, on ne fait pas référence à une brique monolithique, mais plutôt un projet qui pourrait être décomposé en trois piliers :
- Le wrapper Python : c’est le point d’entrée central pour interagir avec Exegol. C’est une surcouche qui va communiquer avec Docker, Git, etc. Son objectif est de simplifier l’utilisation d’Exegol et garantir l’interopérabilité ainsi que la compatibilité. Vous n’avez donc théoriquement pas besoin de savoir utiliser Docker ou Git, même si je vous le recommande vivement. Ce wrapper gère les images, les containers, le VPN;
- des images Docker : une des forces d’Exegol est de proposer quelques images préconçues;
- des ressources : comme sur un système d’exploitation Kali, vous avez une quantité plus ou moins importante de ressources disponibles en hors ligne (en fonction de la configuration que vous utilisez : par défaut, personnalisée, etc). Cela va du script tel que WinPEAS, LinPEAS, LinEnum pour réaliser une élévation de privilège à la liste de dictionnaire à utiliser durant votre phase de reconnaissance.
Contrairement à certaines idées reçues, il est possible d’avoir un environnement graphique au sein d’un container grâce à l’installation d’un serveur X11 sur votre hôte avec la prise en charge du clavier, la souris et l’écran. Exegol est préconfiguré pour fonctionner avec ce serveur.
Avantages d’Exegol
Exegol possède de nombreux avantages parmi lesquels on retrouve :
- Poids : les containers sont par défaut moins lourds que les machines virtuelles, car vous ne virtualisez pas la couche hardware. Il partage également le système d’exploitation avec l’hôte. Un container, avec la même quantité d’outils installés qu’une VM, sera plus léger.
- Rapidité : le fait qu’un container partage le système d’exploitation avec l’hôte lui permet de démarrer extrêmement rapidement contrairement à une machine virtuelle qui doit charger son propre OS (Operating system).
- Flexibilité : vous pouvez créer de nombreux containers Exegol avec, pour chaque, une ou des spécificités. Il est possible de les partager facilement ou d’en lancer plusieurs facilement.
- Cross platform : tout appareil qui supporte Docker pourra exécuter Exegol. Fini l’époque où chacun avait sa VM avec son hyperviseur particulier avec un problème qu’aucun autre de ses collègues a rencontré et qui fait perdre un précieux temps. Exegol supporte plusieurs systèmes d’exploitations et architectures : MacOS, Windows, Linux, ARM64 et AMD64.
- Communautaire : Exegol est open source et sa roadmap est décidée et gérée par la communauté, n’importe qui peut y contribuer, soumettre des idées, remonter des bugs ou encore mieux : les corriger. On peut noter que la communauté est active ce qui est un point indispensable dans ce milieu. La dernière version de « dev » date d’il y a un jour et la version stable a moins de cinq mois. Ça n’est donc pas une petite solution pour les personnes dissidentes et elle totalise 116k téléchargements. Le compte Github « ThePorgs » est également l’exemple parfait.
Différentes images Exegol
Les images Exegol, qui sont en réalité des images Docker, sont hébergées sur Dockerhub. Il y en a 6 existantes :
Image | Description |
Full | C’est la plus lourde des images stables et comme son nom l’indique, il y a tous les outils existants supportés par Exegol. Vous pouvez cependant en ajouter d’autres. |
Ad | Idem, on aime les choses simples, cette image est dédiée à Active Directory. |
Web | Pour le pentest web. |
Light | Cette image possède les outils les plus utiles pour bénéficier d’une légèreté au détriment de l’exhaustivité. |
OSINT | Possède tous les outils pertinents pour l’OSINT. |
Nightly | C’est la moins stable et la plus lourde de toutes les images confondues, mais avec les dernières mises à jour. |
Vous pouvez aussi créer vos propres images ou partir d’une image existante et l’améliorer.
Configuration minimale requise / Requirements
Vous connaissez déjà la quasi-totalité des éléments requis pour utiliser Exegol :
- Git : pour aller chercher le code sur les serveurs distants.
- Docker : pour interagir avec les containers.
- Python : pour utiliser le wrapper qui va utiliser les précédents éléments.
- 20 Go : stockage minimum si vous utilisez l’image « light ».
Expérience utilisateur
Bien sûr, il y a le wrapper dont nous avons parlé précédemment, mais il y a aussi une multitude d’éléments déjà installés.
Il y a ZSH (Z Shell) qui est une version étendue de SH avec de nombreuses fonctionnalités plus poussées. Par-dessus ce shell, vous avez OhMyZSH qui est un framework open source qui vous permet de configurer ZSH, profiter des plugins puissants, de magnifiques thèmes.
L’autocomplétion avec les commandes les plus pertinentes et la gestion de l’historique des commandes est bien implémentée. Pour démarrer une version graphique de Firefox il vous suffit d’entamer l’écriture par « Fire » et valider la suggestion :
exegol-default /workspace # firefox &> /dev/null &
Veuillez noter un élément important et pas des moindres, surtout si vous êtes pentester : Exegol possède la notion de Workspace. C’est un volume persistant que vous montez entre votre hôte et votre container. Par défaut, le volume est monté entre ~/.exegol/workspaces/ sur votre hôte et /workspace sur le container.
~/.exegol/workspaces/:/workspace
Ces éléments sont appréciables et améliorables pour que vous ayez l’environnement qui vous correspond en modifiant « My ressources » disponible dans chaque container à l’adresse « /opt/my-resources ». Vous pouvez globalement tout configurer : bloodhound, vimrc, tmux, addons firefox, certificats, etc.
Commandes à connaître
Installer, désinstaller une image
exegol install
exegol uninstall
Créer, démarrer ou entrer dans un container
exegol start
Si vous démarrez un container avec une image qui n’est pas installée, le wrapper l’installera comme si vous aviez d’abord exécuté exegol install.
Stopper, supprimer un container
exegol stop
exegol remove
Obtenir différentes informations sur les images, containers, version d’Exegol, liens utiles
exegol info
Mettre à jour le wrapper
exegol update
Si vous l’avez installé avec pip, il faudra exécuter la commande :
python3 -m pip install --upgrade exegol
Obtenir de l’aide
exegol --help
Documentation d’Exegol
La documentation d’Exegol est hébergée sur readthedocs.io et est très bien rédigée. Vous retrouverez beaucoup d’informations dans l’article et bien plus, notamment sur les commandes avancées. Elle détaille, comme le projet Github Exegol-docs, la liste des services, des ressources et des outils existants.
Liste d’outils intégrés dans Exegol
Vous pouvez trouver la liste exhaustive des outils à cette adresse, en voici quelques-uns :
Outil | Description |
binwalk | Outil d’extraction, d’analyse et d’ingénierie inverse d’images firmware. |
gobuster | Utilisé pour le bruteforcing d’URI sur des sites web et l’énumération de sous-domaines DNS avec support de caractères génériques. |
Owasp ZAP | Scanner open source de sécurité des applications Web |
hashcat | Outil pour la récupération avancée de mots de passe. |
John the Ripper | Logiciel pour craquer des mots de passe. |
sqlmap | Automatise la détection et l’exploitation des vulnérabilités par injection SQL (SQLi). |
Nmap | Outil d’audit et de scan réseau. |
Metasploit | Framework de pentest pour détecter et exploiter les vulnérabilités. |
Wireshark | Analyseur de protocoles réseau qui permet d’observer en détail l’activité sur un réseau. |
BloodHound | Utilise la théorie des graphes pour mettre en exergue les relations au sein d’un environnement Active Directory. |
Burp Suite | Proxy HTTP avec différents outils intégrés pour les tests de sécurité des applications web. |
amass | Outil pour la cartographie des surfaces d’attaque et la découverte des actifs externes via l’énumération DNS. |
aircrack-ng | Suite d’outils pour le test de pénétration des réseaux sans fil. |
abuseACL | Un script Python pour répertorier automatiquement les ACE/ACL Windows vulnérables. |
Et bien d’autres encore existent !
Comment installer Exegol
Cette section a pour but de vous montrer à quel point il est facile d’installer Exegol. Si vous rencontrez un problème, vous pouvez vous référer à la documentation d’installation complète.
D’abord, vous devez avoir installé les éléments requis comme nous l’avons évoqué précédemment (Git, Docker, Python, etc.).
Il y a trois manières principales d’installer Exegol : avec pip, depuis les sources ou avec pipx.
Avec pip
C’est la méthode la plus simple :
python3 -m pip install exegol
Depuis les sources
Cette méthode est à privilégier si vous souhaitez changer de branches et contribuer au projet. Nous allons cloner le répertoire hébergé sur Github :
git clone "https://github.com/ThePorgs/Exegol"
À présent, nous pouvons installer les dépendances Python nécessaires au bon fonctionnement du projet :
python3 -m pip install --user --requirement "Exegol/requirements.txt"
Avec pipx
Pipx va installer Exegol dans un environnement virtuel séparé.
pipx depuis la source
pipx install git+https://github.com/ThePorgs/Exegol
pipx depuis PyPI
pipx install exegol
Ajout d’Exegol dans le path
Si vous avez installé Exegol avec pip ou pipx, il est déjà ajouté à votre path.
Dans le cas où vous l’avez installé depuis les sources et que vous êtes sur Linux ou MacOS, vous pouvez faire un lien symbolique :
sudo ln -s "$(pwd)/Exegol/exegol.py" "/usr/local/bin/exegol"
Et sur Windows, ouvrez PowerShell :
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
echo "Set-Alias -Name exegol -Value '$(pwd)\exegol.py'" >> $PROFILE
Pour vous assurer qu’Exegol est bien ajouté à votre path, il vous suffit d’écrire « exegol » (ou exegol info) dans votre terminal. Il peut être nécessaire de fermer votre session pour charger le path à nouveau.
➜ exegol
usage: exegol [-h] [-v] [-q] [-k] [--offline] [--arch {amd64,arm64}]
{start,stop,restart,install,update,uninstall,remove,exec,info,vers
ion}
...
Cas concret sur Hack The Box
Voici un exemple de commande (one liner) Exegol concret que vous pouvez utiliser, sur un environnement pour lequel vous êtes autorisé bien entendu. Quoi de mieux que la plateforme Hack The Box pour cet exemple.
Pour réaliser un challenge ou pentest une machine, il faut rejoindre le réseau VPN. Parallèlement, je veux monter le répertoire Workspace à mon dossier Téléchargement pour faire communiquer des fichiers.
exegol start app full -V "/Users/thibault/Downloads/:/workspace" --vpn /Users/thibault/Downloads/lab_thibault.ovpn
Explications :
- app : nom de mon container.
- full : image Exegol utilisée.
- -V (ou –volume) : pour partager un volume entre l’hôte et le container.
- –vpn : pour charger le fichier de configuration OpenVPN à la création du container.
Que retenir d’Exegol ?
Vous l’aurez compris, depuis plusieurs mois, j’utilise majoritairement l’environnement Exegol et j’en suis ravi. J’espère avoir suscité en vous l’envie de tester cette nouvelle manière d’envisager un pentest ou un audit. Je n’hésiterai pas à mettre à jour cet article puisque la communauté est très active. Pour ceux qui le souhaitent, vous pouvez rejoindre le serveur Discord qui compte déjà plus de 1700 membres. C’est l’endroit idéal pour remonter des problèmes, obtenir de l’aide et suivre les nouveautés.
Laisser un commentaire