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.
|
|
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.
|
|
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 contenedorexegol.py stop
: Detener un contenedorexegol.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
.
|
|
Imágenes disponibles
Al utilizar Exegol contamos con algunas imágenes disponibles para trabajar entre las cuales tenemos las siguientes
Imagen | Tamaño |
---|---|
dev | 24.7GB |
osint | 5.8GB |
ad | 15.5GB |
web | 7.2GB |
light | 3.9GB |
stable | 11.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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
Contenedores en ejecución.
Para listar los contenedores que están en ejecución es posible hacerlo con el comando info
|
|
Detener un contenedor
Cuando procedamos a detener un contenedor es con el flag stop
|
|
Eliminar un contenedor
Para eliminar un contenedor se hace con el flag remove
seguido del 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