Exegol
Introduction à Exegol et ses environnements de pentesting avancés

Notions théoriques
Qu’est-ce que Exegol ?
Exegol est un environnement de pentesting et de post-exploitation très populaire, développé par la communauté francophone de HackademINT.
Contrairement à une machine virtuelle classique, Exegol fonctionne grâce à la conteneurisation (Docker/Podman).
La conteneurisation permet d'avoir des environnements légers, rapides à démarrer, et facilement réinitialisables. Chaque conteneur est isolé, ce qui évite les conflits entre outils et les risques de polluer votre système hôte.
Exegol est particulièrement réputé pour ses environnements spécialisés dans les tests d’intrusion sur des environnements Active Directory (Windows).
Pourquoi utiliser Exegol ?
- Il est léger et rapide à déployer (pas besoin d'une machine virtuelle lourde).
- Il propose des images spécialisées (Web, AD, Cryptographie, etc.) avec tous les outils préinstallés.
- Il permet d'avoir plusieurs environnements isolés sans polluer votre système hôte.
- Il est idéal pour la post-exploitation et l'escalade de privilèges.
Les outils emblématiques intégrés à Exegol
| Outil | Utilisation |
|---|---|
| NetExec (ex-CrackMapExec) | Exécuter des commandes à distance sur un domaine Active Directory |
| Impacket | Suite d'outils Python pour interagir avec les protocoles réseau |
| BloodHound | Cartographier les relations et les failles dans un Active Directory |
| Responder | Intercepter les authentifications réseau (Poisoning) |
| Ligolo-ng | Créer des tunnels réseau pour contourner les pare-feu |
| Evil-WinRM | Se connecter à distance sur des machines Windows via WinRM |
| John the Ripper / Hashcat | Casser des mots de passe et des hash |
Fonctionnement de Exegol
- Exegol s'installe via un simple script sur votre machine hôte (Linux, macOS, Windows via WSL).
- Vous créez et démarrez des "conteneurs" avec des commandes simples (
exegol start). - Vous entrez dans l'environnement comme si c'était un terminal Kali, mais tout est isolé dans un conteneur.
- Vos outils et fichiers de travail sont conservés même si vous arrêtez le conteneur.
Est-ce légal ?
Tout comme Kali Linux, l’utilisation de Exegol est 100% légale tant que vous l’utilisez sur des systèmes que vous possédez ou pour lesquels vous avez reçu une autorisation écrite. Les outils de post-exploitation comme Impacket ou NetExec utilisés sur des réseaux sans autorisation constituent des infractions pénales.
Exemple pratique
Démarrer un environnement et enumérer un réseau avec NetExec**
Nous allons voir comment lancer Exegol, entrer dans un conteneur, et utiliser NetExec pour découvrir des machines sur un réseau local (similaire à ce que ferait Nmap, mais avec un focus sur le partage de fichiers Windows).
Étape 1 : Mettre à jour et démarrer un conteneur Exegol
Sur votre machine hôte (terminal Linux/WSL), tapez les commandes suivantes :
exegol update
exegol start -e ad
Explication :
update: Met à jour les images de base Exegol.start -e ad: Démarre un conteneur avec l'image spécialisée "Active Directory" (qui contient NetExec).
Étape 2 : Entrer dans le conteneur
Une fois le conteneur créé, connectez-vous-y :
exegol exec ad
Vous êtes maintenant à l'intérieur de l'environnement Exegol (votre invite de commande change de style).
Étape 3 : Scanner un réseau avec NetExec
Pour découvrir les machines Windows actives sur un réseau local via le protocole SMB :
netexec smb 192.168.1.0/24
Explication :
smb: Cible le protocole de partage de fichiers Windows.192.168.1.0/24: Plage d’adresses IP du réseau local.
Étape 4 : Lister les partages d'une machine
Si une machine (comme un contrôleur de domaine) a l’adresse IP 192.168.1.10, tapez :
netexec smb 192.168.1.10 -shares
Explication :
-shares: Liste tous les dossiers partagés accessibles publiquement sur la machine cible.
Résultat attendu
NetExec affiche l'adresse IP, le nom de la machine, le système d'exploitation, et la liste des dossiers partagés (ex: C$, ADMIN$, Users).
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Énumération et reconnaissance d'un environnement Active Directory avec Exegol
Étape 1 : Préparer l’environnement
Avant de nous attaquer à un domaine Windows, nous devons préparer notre arsenal de conteneur.
Lancer l'environnement Active Directory
Sur votre machine hôte, ouvrez un terminal et tapez :
exegol start -e ad
- Notez le nom de votre conteneur (par défaut, il porte le nom de l'image
ad, mais vous pouvez lui donner un nom avec-n mon_nom).
Entrer dans le conteneur
Tapez la commande suivante pour obtenir un shell interactif :
exegol exec ad
- Vous devriez voir le logo d'Exegol et votre prompt changer. Vous êtes maintenant dans un environnement dédié.
Étape 2 : Découverte du réseau
Nous allons utiliser NetExec pour trouver rapidement les machines Windows présentes sur le réseau.
Scanner le réseau avec le protocole SMB
Dans le terminal Exegol, tapez :
netexec smb 192.168.1.0/24
Explication :
smb: Demande à NetExec de chercher des réponses sur le port 445 (partage Windows).192.168.1.0/24: La plage de votre réseau local.
Analyser les résultats
NetExec va vous afficher un tableau. Cherchez une machine dont le nom se termine souvent par DC01 (Domain Controller) ou qui affiche le nom de votre domaine cible.
- Notez l'adresse IP du contrôleur de domaine (exemple :
192.168.1.10).
Étape 3 : Énumération des utilisateurs
Maintenant que nous avons trouvé le contrôleur de domaine, nous allons essayer de lister les utilisateurs du domaine sans être connectés (Session Nulle / Null Session).
Lister les utilisateurs du domaine
Tapez la commande suivante :
netexec smb 192.168.1.10 --users
Explication :
--users: Tente d'extraire la liste des identifiants du domaine via des requêtes RPC.
Analyser les résultats
Si la politique de sécurité du domaine est faible, vous verrez une liste d'utilisateurs s'afficher. Exemple :
192.168.1.10:445 SMB DC01 Windows 10 / Server 2019 [*] from 'ad.local' listed 15 users: administrateur, invité, krbtgt, j.doe...
- Notez le nom du domaine (
ad.localdans cet exemple) et les noms d'utilisateurs intéressants.
Étape 4 : Vérifier les partages réseau
Nous allons maintenant voir si des dossiers sont partagés publiquement sur ce même contrôleur de domaine.
Lister les partages
Tapez la commande suivante :
netexec smb 192.168.1.10 --shares
Explication :
--shares: Énumère tous les dossiers accessibles.
Analyser les résultats
Vous verrez peut-être des partages standards (C$, IPC$, NETLOGON, SYSVOL) mais parfois des dossiers custom comme Public ou Donnees.
192.168.1.10:445 SMB DC01 Windows 10 / Server 2019 [*] Listed 5 shares: ADMIN$, C$, IPC$, NETLOGON, SYSVOL
- Notez si des partages non standards sont présents, ils pourraient contenir des informations sensibles.
Étape 5 : Cartographier le domaine avec BloodHound
Exegol brille par son intégration d'outils graphiques. Nous allons collecter des données pour BloodHound en utilisant SharpHound (via l'outil bloodhound-python).
Collecter les données
Tapez la commande suivante (en remplaçant le domaine par celui trouvé à l'étape 3) :
bloodhound-python -d ad.local -u j.doe -p MotDePasse123 -ns 192.168.1.10 -c All
Explication :
-d: Nom du domaine.-uet-p: Identifiants d'un utilisateur du domaine (trouvés ou devinés).-ns: Adresse IP du serveur DNS (souvent le contrôleur de domaine).-c All: Collecte toutes les informations (utilisateurs, groupes, liens).
(Note : Sans mot de passe valide, cette étape échouera, ce qui est normal lors d'un premier scan de reconnaissance).
Analyser les résultats (Concept)
Si la commande réussit, elle génère des fichiers .zip ou .json. Dans un vrai TP, vous ouvririez l'interface graphique de BloodHound (accessible depuis un autre terminal via la commande bloodhound ou via un navigateur) pour importer ces fichiers et visualiser les chemins d'escalade de privilèges.
Étape 6 : Sauvegarder le contexte de travail
L'avantage des conteneurs, c'est que vous pouvez tout garder pour la prochaine session sans polluer votre PC.
Créer un dossier de travail
Dans votre terminal Exegol :
mkdir /opt/my_pentest
cd /opt/my_pentest
Exporter les résultats
Redirigez les résultats de vos commandes dans des fichiers texte pour votre rapport :
netexec smb 192.168.1.0/24 > scan_reseau.txt
netexec smb 192.168.1.10 --users > users_domaine.txt
Quitter proprement
Tapez exit pour revenir sur votre machine hôte. Le conteneur Exegol continuera de tourner en arrière-plan avec vos fichiers sauvegardés à l'intérieur.
Bonus
Essayez de découvrir d'autres outils intégrés spécifiquement à Exegol en tapant :
exegol sources
Cette commande liste les dépôts d'outils supplémentaires maintenus par la communauté Exegol que vous pouvez installer en un clic.
À retenir
- Exegol est un wrapper autour de Docker, il est donc indispensable d'avoir Docker installé et configuré sur votre machine hôte.
- L'éthique est primordiale : les outils d'Active Directory comme NetExec ou Impacket laissent des traces dans les logs Windows. Ne les utilisez que sur des environnements de test (comme des laboratoires GoAD ou HackTheBox).
- Le mot-clé d'Exegol est la modularité : n'hésitez pas à créer un conteneur "Web" pour vos scans de sites, et un conteneur "AD" pour vos tests Windows en parallèle.
- La communauté Exegol est très active : consultez régulièrement leur GitHub et leur Discord pour découvrir les nouveautés et les astuces d'utilisation.