This page looks best with JavaScript enabled

Exegol: Entorno de Pentesting en Docker Automatizado

 ·   ·   8 min read  ·  Autor - Snifer

No es molestoso instalar una máquina virtual para hacer la prueba una herramienta, además que cada máquina virtual puede ocupar más de 30GB más o menos y después debes de eliminar, también debemos de configurar en tu equipo principal todos los programas y software de pentesting que posiblemente en algún momento te toque reiniciar todo y tenemos que contar con un script de customización de todo el software que usamos.

La version refacto que es la que utilice para realizar este post esta en constantes cambios si deseas usarlo y ver el funcionamiento eres libre de hacerlo, pero te recomiendo que uses la version en la rama principal.

¿Que es Exegol?

Exegol es un entorno de pentesting dockerizado que nos permite levantar imágenes a nuestra disposición con scripts, y binarios previamente cargados, cuenta con una configuración personalizada para zsh, historial de comandos definidos, el cual puedes también adicionar ARSENAL, este proyecto puede ser usado en pentesting, bugbounty, CTF, HackTheBox, laboratorios es decir el uso y hasta donde lo pones de límite tu mismo.

Podemos considerar también que Exegol puede ser utilizado en caso de emergencias o directamente como entorno para hacer pruebas.

  • Imágenes diseñadas con diferentes
  • Directorio compartido entre el contenedor y el anfitrión.
  • Herramientas disponibles.
  • Interacción a través de X11.

EXEGOL por dentro es un WRAPPER que tiene como finalidad administrar los contenedores e imágenes haciendo más sencillo los comandos (docker pull, docker build, docker run, docker start, docker stop, docker ps, docker rm, docker inspect).

Podrias trabajar solo con Docker claro que si! Y tú decides si usar o no este Framework, ya que usa como sistema operativo base Kali Linux.

Instalación

Vale aclarar que necesitas y requieres contar con python 3, pip, git, Docker previamente instalado en tu equipo con estas dependencias podemos proceder a realizar la instalación de Exegol.

1
2
3
git clone https://github.com/ShutdownRepo/Exegol
cd Exegol
python3 -m pip install --user --requirement requirements.txt

Específicamente este post está siendo realizada con el branch refacto que es el desarrollo actual que están realizando, por lo tanto, si ejecutas de la rama principal tendrás una breve diferencia en la interfaz pero no así en los comandos.

Después de realizar la instalación puedes crear un enlace simbólico al script exegol.py con el fin de poder ejecutarlo desde cualquier ubicación adicionalmente a ello te recomiendo crear un alias, como se muestra a continuación.

1
2
sudo ln -s exegol.py /usr/bin/exegol.py # ENLACE SIMBOLICO
alias exegol.py = 'sudo exegol.py' # ALIAS

Comandos de Exegol

Después de realizar la instalación y configuración respectiva de Exegol, iniciamos el proceso de conocimiento de la herramienta.

Algunos comandos a tomar en cuenta para el trabajo con Exegol que nos serviran para conocer.

  • exegol.py install: Instalar (pull o build) una imagen. 
  • exegol.py uninstall: Eliminar una imagen.
  • exegol.py start: Crear/arrancar/entrar en un contenedor
  • exegol.py stop: Detener un contenedor
  • exegol.py remove: Eliminar un contenedor.
  • exegol.py info: Muestra información general de las imágenes disponibles y contenedores creados más su estado.
  • exegol.py exec: Permite ejecutar un comando en el contenedor.
  • exegol --help: Obtener ayuda y comandos

Veremos el output al ejecutar con la flag --help.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
sudo exegol.py --help
usage: exegol.py [-h] [-k] [-q] [-v] {start,stop,install,update,uninstall,remove,exec,info,version} ...

This Python script is a wrapper for Exegol. It can be used to easily manage Exegol on your machine.

Required arguments:
  {start,stop,install,update,uninstall,remove,exec,info,version}
                        Description of the actions
    start               Automatically create, start / resume and enter an Exegol container
    stop                Stop an Exegol container in a saved state
    install             Install or build Exegol image
    update              Update an Exegol image
    uninstall           Remove Exegol image(s)
    remove              Remove Exegol container(s)
    exec                Execute a command on an Exegol container
    info                Print info on containers and local & remote images (name, size, state, ...)
    version             Print current Exegol version

Optional arguments:
  -h, --help            show this help message and exit
  -k, --insecure        Allow insecure server connections for web requests, e.g. when fetching info from DockerHub (default: False)
  -q, --quiet           Show no information at all
  -v, --verbose         Verbosity level (-v for verbose, -vv for advanced, -vvv for debug)

Examples:
  install (↓ ~25GB max) exegol install
  check image updates   exegol info
  get a shell           exegol start
  run as daemon         exegol exec -e bloodhound
  get a tmux shell      exegol start --shell tmux
  use wifi/bluetooth    exegol start --privileged
  use a Proxmark        exegol start --device /dev/ttyACM0
  use a LOGITacker      exegol start --device /dev/ttyACM0
  use an ACR122u        exegol start --device /dev/bus/usb/
  use an HackRF One     exegol start --device /dev/bus/usb/
  use an Crazyradio PA  exegol start --device /dev/bus/usb/>)

Imágenes disponibles

Al utilizar Exegol contamos con algunas imágenes disponibles para trabajar entre las cuales tenemos las siguientes

ImagenTamaño
dev24.7GB
osint5.8GB
ad15.5GB
web7.2GB
light3.9GB
stable11.7GB

Estas imágenes tienen como diferencia la cantidad de aplicaciones y servicios instalados en el mismo, el tamaño de las mismas es un aproximado, ya que tiende a ser un poco más grande el espacio que ocupan.

Instalación de imágenes

Antes de iniciar tenemos que hacer el docker pull, en este caso es con el flag install realizamos la descarga de la imagen.

1
sudo exegol.py install

Lo primero que nos pide es que seleccionemos la imagen que deseamos descargar, se observa que estando con dev y ligth Up to date es decir descargadas y las que tenemos como Not Installed sin descargar.

Ingresamos que deseamos descargar ad después de ello procede la herramienta a realizar la descarga de la imagen.

Actualización y Estados de las imágenes

Cada cierto tiempo veremos que las imágenes disponibles en el proyecto irán actualizando y necesitaremos actualizarlo también en nuestro ambiente local.

1
sudo exegol.py update

Vemos a continuación que la imagen Web esta Up to date y tenemos Update available las cuales necesitan ser actualizadas, por ejemplo indicamos que actualice dev procederá a realizar la actualización.

También contaremos con las imágenes que no están instaladas y debemos de proceder a realizar la instalación con el flag install

Desinstalación de una imagen

Si deseamos eliminar una imagen por algún caso en particular se realiza con el flag uninstall más el nombre del que deseamos retirar.

1
sudo exegol.py uninstall <NOMBRE_IMAGEN>

Creación de un contenedor

Después de realizar la descarga de las imágenes y tener la disponibilidad respectiva la siguiente tarea es crear un contenedor en el cual podremos trabajar directamente el proceso es realizado con el comando start para realizar la creación respectiva.

1
sudo exegol.py start

Después de ejecutar tenemos los contenedores disponibles, en el caso de crear uno nuevo debemos de ingresar el nombre cuando exegol nos solicita.

Después de ello debemos de seleccionar la imagen con el cual se creara el contenedor.

Teniendo como resultado final el espacio de trabajo compartido con el nombre del contenedor que estemos creando.

Ahora si deseamos iniciar un contenedor en particular que ya fue creado con anterioridad debemos de agregar el nombre de los mismos después del flag start.

1
sudo exegol.py start <NOMBRE DEL CONTENEDOR>

Contenedores en ejecución.

Para listar los contenedores que están en ejecución es posible hacerlo con el comando info

1
sudo exegol.py info

Detener un contenedor

Cuando procedamos a detener un contenedor es con el flag stop

1
sudo exegol.py stop <NOMBRE DEL CONTENEDOR>

Eliminar un contenedor

Para eliminar un contenedor se hace con el flag remove seguido del nombre del contenedor

1
sudo exegol.py remove <NOMBRE DEL CONTENEDOR>

Si el contenedor cuenta con información en el directorio compartido veremos que nos pregunta si deseamos eliminarlo o mantener.

Directorios compartidos

Contamos con dos directorios compartidos principalmente los cuales podemos usar entre el equipo anfitrión y el dockerizado los cuales son:

  • shared-resources
  • shared-data-volumes

Shared Resource

Este directorio cuenta con binarios y herramientas de Hacking para entorno windows podemos ver a continuación los directorios.

La ubicación en el contenedor se encuentra en /opt/resources.

Shared Data Volumes

Este es el directorio donde debemos de manejar los datos que deseemos compartir específicamente todo lo que generemos en este podremos visualizarlo sin ninguna restricción, la ubicación es /workspace

Herramientas

Cuenta con múltiples herramientas configuradas e instaladas en la imagen, podemos ver a continuación algunas de ellas.

Esto puede variar según el tipo de imagen que seleccionemos.

Ejecutando programas

Al estar dentro del contenedor podemos ejecutar todos los comandos que sean necesarios sin ningún inconveniente.

Si por ejemplo llamamos a Bloodhound dentro del contenedor como se muestra a continuación visualizaremos en nuestro host principal, ya que se está haciendo el forward x11 respectivo.

Del mismo modo si ejecutamos algún comando debido a que tiene un zsh_history con ejemplos de comandos podremos tenerlo siempre a mano.

Detalles finales

Con esta entrada aprendimos y conocimos un poco más de Exegol Framework como levantar una imagen y movernos en ella con algunos ejemplos, en una próxima entrada iremos viendo algunos casos de uso, pero vale aclarar que todas las entradas y contenido en su mayoría del blog desde inicio de año estamos utilizando el framework, del mismo modo estoy en proceso de creación de un script que permita generar un backup de los datos creados por las herramientas y exportarlos para que se pueda eliminar el contenedor directamente.

UPDATE

UPDATE: Se tiene un video en el que puedes ver el uso de Exegol Framework.

Regards,
Snifer

Share on
Support the author with

Avatar
WRITTEN BY
Snifer
Creador del proyecto Snifer@L4b's, Consultor en Seguridad Informática.