Exegol pentest docker

Exegol : l’environnement de pentest Docker qui remplace Kali Linux

/


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 concurrents

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.
plateformes supportées
  • 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.
répertoires repository exegol

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 :

ImageDescription
FullC’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.
AdIdem, on aime les choses simples, cette image est dédiée à Active Directory.
WebPour le pentest web.
LightCette image possède les outils les plus utiles pour bénéficier d’une légèreté au détriment de l’exhaustivité.
OSINTPossède tous les outils pertinents pour l’OSINT.
NightlyC’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.

oh my zsh

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 :

autocompletion zsh
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 :

OutilDescription
binwalkOutil d’extraction, d’analyse et d’ingénierie inverse d’images firmware.
gobusterUtilisé 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 ZAPScanner open source de sécurité des applications Web
hashcatOutil pour la récupération avancée de mots de passe.
John the RipperLogiciel pour craquer des mots de passe.
sqlmapAutomatise la détection et l’exploitation des vulnérabilités par injection SQL (SQLi).
NmapOutil d’audit et de scan réseau.
MetasploitFramework de pentest pour détecter et exploiter les vulnérabilités.
WiresharkAnalyseur de protocoles réseau qui permet d’observer en détail l’activité sur un réseau.
BloodHoundUtilise la théorie des graphes pour mettre en exergue les relations au sein d’un environnement Active Directory.
Burp SuiteProxy HTTP avec différents outils intégrés pour les tests de sécurité des applications web.
amassOutil pour la cartographie des surfaces d’attaque et la découverte des actifs externes via l’énumération DNS.
aircrack-ngSuite d’outils pour le test de pénétration des réseaux sans fil.
abuseACLUn 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.


Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *