Aller au contenu principal

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).

astuce

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.

remarque

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

OutilUtilisation
NetExec (ex-CrackMapExec)Exécuter des commandes à distance sur un domaine Active Directory
ImpacketSuite d'outils Python pour interagir avec les protocoles réseau
BloodHoundCartographier les relations et les failles dans un Active Directory
ResponderIntercepter les authentifications réseau (Poisoning)
Ligolo-ngCréer des tunnels réseau pour contourner les pare-feu
Evil-WinRMSe connecter à distance sur des machines Windows via WinRM
John the Ripper / HashcatCasser 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


Quel est le rôle principal de Exegol ?


Quelle technologie Exegol utilise-t-il en arrière-plan ?


Quel est le domaine d'expertise principal de l'image 'ad' d'Exegol ?


Quel outil permet de cartographier les relations dans un Active Directory ?


Quelle commande permet de démarrer un conteneur Exegol ?


Quel outil est le successeur de CrackMapExec intégré à Exegol ?


Que permet de faire l'outil Impacket ?


Quelle commande permet de se connecter à un conteneur Exegol déjà lancé ?


Quel outil permet d'intercepter des authentifications réseau (comme NTLMv2) ?


Peut-on utiliser les outils de post-exploitation d'Exegol sur n'importe quel réseau ?



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.local dans 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.
  • -u et -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.