# Cheat Sheet & Astuces Exegol > Le Cheat Sheet Exegol est un résumé des commandes et concepts pertinents liés au projet Exegol, tel que je les vois. Publié le 2023-12-02 | Tags: exegol https://xsec.fr/offensive/exegol-cheat-sheet/ --- import Callout from '@shared/components/Callout.astro' Il peut y avoir quelques erreurs. Si vous en remarquez, contactez-moi [ici](mailto:contactit%2Eyarka%40slmail%2Eme) Le Cheat Sheet Exegol est un résumé des commandes et concepts pertinents liés au projet Exegol, tel que je les vois. ::github{repo="ThePorgs/Exegol"} ## Installation Exegol repose sur Docker ; s'il n'est pas installé sur votre système, installez-le avec cette commande : ```sh curl -fsSL "https://get.docker.com/" -o get-docker.sh && sh get-docker.sh ``` 1. Ajouter l'utilisateur au groupe Docker Permettre à l'utilisateur actuel d'utiliser Docker et donc Exegol sans élévation de privilèges : ```sh sudo usermod -aG docker $(id -u -n) && newgrp docker ``` 2. Installer Exegol avec PIPX La façon la plus simple et la plus propre d'installer le projet Python Exegol (en version stable de la branche main) : > Nécessite pipx ; installez-le si nécessaire : `sudo apt install pipx` ```sh pipx install exegol ``` pipx créera automatiquement les liens symboliques pour le venv Python afin que l'appel binaire fonctionne sans problème. Le [PEP668](https://peps.python.org/pep-0668/) récemment introduit par les principales distributions GNU/Linux ne permet pas l'installation de paquets Python côté système, en particulier avec pip. Pour une bonne raison, car de nombreux projets Python ont été développés sur une version spécifique de Python avec des versions de dépendances spécifiques, généralement installées avec pip install -r requirements.txt. Cela peut causer des problèmes de dépendances importants entre les projets, c'est pourquoi les environnements Python DOIVENT être isolés (idéalement) pour chaque projet, soit en créant un venv, soit en utilisant pipx, ce qui rend l'opération rapide et simple pour l'utilisateur. C'est pourquoi chaque projet Python installé dans les images Docker fournies par Exegol comprend un venv associé. 3. Ajouter l'autocomplétion Ajoutez ceci à votre .bashrc ou .zshrc : ```sh title="~/.bashrc" eval "$(register-python-argcomplete --no-defaults exegol)" ``` 4. Installer une image Docker Exegol ```sh exegol install nightly ``` ## Mise à jour d'exegol ```sh pipx upgrade exegol ``` ## Ressources hors ligne Les ressources hors ligne sont stockées dans /opt/resources, qui est partagé entre le système hôte et les conteneurs Docker. Ce répertoire stocke par défaut des outils utiles pour l'offensive, tels que : - winpeas - linpeas - ... L'objectif est de gagner du temps et de faciliter le transfert vers une cible. ## Utilisation - Installer une image : `exegol install` - Créer/démarrer/entrer dans un conteneur : `exegol start` - Afficher des informations sur les conteneurs et les images : `exegol info` - Arrêter un conteneur : `exegol stop` - Supprimer un conteneur : `exegol remove` - Désinstaller une image : `exegol uninstall` - Obtenir de l'aide et une utilisation avancée : `exegol --help` - L'aide et les exemples peuvent être obtenus pour chaque action directement depuis le wrapper avec la commande suivante : `exegol -h` (action: install/start/stop/etc.). ## Installer Exegol en version bêta La version bêta (branche dev) d'Exegol offre plusieurs fonctionnalités, dont le bureau à distance tant attendu (via le web) sur un conteneur. Si vous avez déjà Exegol installé : 1. Désinstaller la version standard : ```sh pipx uninstall exegol ``` 2. Il est nécessaire d'installer Exegol depuis le dépôt GitHub : ```sh git clone "https://github.com/ThePorgs/Exegol" ``` 3. Installer les dépendances Python : ```sh wrap python3 -m pip install --user --requirement "Exegol/requirements.txt" --break-system-packages ``` > Ici l'option `--break-system-packages` ignore le **PEP668**. 4. Ajouter Exegol au PATH : Si vous avez désinstallé une version précédente d'Exegol avant, supprimez l'ancien fichier : `sudo rm -f /usr/local/bin/exegol` ```sh sudo ln -s "$(pwd)/Exegol/exegol.py" "/usr/local/bin/exegol" ``` 5. Mettre à jour vers la branche bêta ou dev : ```sh exegol update -v ``` 6. Il vous sera demandé de choisir la version de votre branche dans le dépôt Git ; choisissez dev. 7. Vous devrez ensuite mettre à jour les dépendances Python du projet (la commande apparaîtra dans votre terminal). ## Lancer un conteneur avec bureau à distance via accès web ```sh exegol start test nightly --desktop ``` ## Corriger Evil-WinRM (Déprécié, corrigé) Exegol a un problème avec l'implémentation d'OpenSSL lors de l'exécution d'Evil-WinRM. Pour corriger cela, nous devons modifier le fichier openssl.cnf (trouver [openssl_init] et le remplacer par la configuration ci-dessous) : ```sh title="/etc/ssl/openssl.cnf" [openssl_init] providers = provider_sect # List of providers to load [provider_sect] default = default_sect legacy = legacy_sect [default_sect] activate = 1 [legacy_sect] activate = 1 ``` ## Astuces Comme j'utilise principalement Firefox et que c'est le navigateur par défaut dans les conteneurs, je télécharge parfois accidentellement quelque chose sur mon hôte au lieu du conteneur. Puisque j'utilise Hyprland, les titres de fenêtre n'apparaissent plus. Pour résoudre ce problème, je n'ai pas rétabli les titres, mais j'ai configuré Exegol pour installer un thème Firefox dans chaque conteneur. De cette façon, les deux fenêtres sont facilement distinguables comme le montre l'image ci-dessous. ![Le navigateur de gauche est ouvert dans exegol](/media/offensive/browsers.webp) J'ai également ajouté **uBlock Origin** à tous les conteneurs pour bloquer les publicités (invites de cookies, publicités, trackers...) en modifiant le fichier suivant : ```shell wrap # This file can be used to install addons on the Firefox instance of Exegol. # The download links of the addons to be installed can be listed in this file (ie: https://addons.mozilla.org/fr/firefox/addon/foxyproxy-standard/). # All addons listed below will be downloaded and installed automatically when creating a new Exegol container. https://addons.mozilla.org/fr/firefox/addon/ublock-origin/ https://addons.mozilla.org/fr/firefox/addon/rainbow-sparkle-animated-theme/ ``` Quelques modifications dans l'historique : ```sh title="~/.exegol/my-resources/setup/zsh/history" burpsuite &> /dev/null & python3 -m http.server 80 ``` Et quelques alias personnels : ```sh title="~/.exegol/my-resources/setup/zsh/aliases" alias http='python3 -m http.server 80' alias tun0='ip a sh dev tun0 | grep -oP "(?:[0-9]{1,3}\.){3}[0-9]{1,3}" | tr -d "\n" | xclip -sel c; tun0ip=$(xsel -ob); echo "\033[1;32m[+]\033[0m Successfully copied \033[1;32m$tun0ip\033[0m (tun0) to clipboard !"' ``` Si vous souhaitez monter des partages NFS dans un conteneur Exegol, vous devez le démarrer avec l'option `--privileged`. > Les captures d'écran viendront plus tard pour chaque étape :)