lunes, junio 29, 2020

ATTPwn: Ejecución en Docker y nueva GUI

ATTPwn es una de nuestras herramientas en el equipo de Ideas Locas en el área CDCO de Telefónica. Estamos contentos con lo que tenemos entre manos, ya que creemos que aporta un valor a la emulación de adversarios. También sabemos que debemos seguir incorporando la implementación de técnicas de ATT&CK, ya que la gracia de todo esto está, precisamente, en ello.

Figura 1: ATTPwn: Ejecución en Docker y nueva GUI

La semana pasada presentábamos en el blog la herramienta y nos queda un mundo por contaros. Poco a poco iremos desgranando los secretos de la herramienta y, también, como vamos metiendo funcionalidades y añadiendo técnicas que mejoren las posibilidades que ofrece ATTPWn. Además, hablaremos más adelante del modo colaborativo, un modo en el que la compartición de conocimiento de técnicas ofensivas es una realidad.

Figura 2: ATTPwn en GitHub

Hoy quería mostrar algo que me gusta mucho y es la posibilidad de dockerizar el proyecto para unas pruebas rápidas. En el mundo de la seguridad probamos y utilizamos muchas herramientas y, en muchas ocasiones, es un quebradero de cabeza el tener que instalar dependencias, librerías, otros binarios, etcétera. En el caso de ATTPwn no debería ser muy complejo ya que con un: “pip install -r requirements.txt” debería valernos.

Figura 3: Libro de Docker: SecDevOps
de Fran Ramirez y Rafael Troncoso

Sea como sea, hemos decidido ‘dockerizar’ el proyecto, tal como puede verse en el Github. Las instrucciones para desplegar el proyecto, generando una imagen y, posteriormente, un contenedor son dos. En primer lugar, generamos la imagen y metemos todo lo necesario con docker build. La instrucción es la siguiente y es opcional usar :versionX si queremos llevar un control de la versión que utilizamos.

docker build . -t attpwn[:versionX]

La segunda instrucción ya nos permitirá levantar el contenedor. Si estás en modo probar el proyecto y no quieres que nada de lo que hagas persista, puedes ejecutar la instrucción:

docker run –rm -d -p X:5000 IMAGE_ID | TAG

En esa instrucción “--rm” indica que cuando se pare el contenedor éste se destruirá, “-d” indica que entramos en modo “dettach”, la variable X indica el puerto de la máquina anfitriona con la que quieres mapear el 5000 del contenedor y, por último, IMAGE_ID o TAG, si quieres referenciar a la imagen a través de su ID (visible ejecutando docker images) o por el tag que le has puesto al utilizar la instrucción docker build, con el formato “repository:tag”.

Figura 4: Instrucciones para dockerizar ATTPwn

Como comenté anteriormente, con la instrucción “docker images” puedes ver las imágenes construidas y que están disponibles para utilizarse. 

Figura 5: Imágenes con TAG

En la imagen de la Figura 5 podemos ver diferentes imágenes y vemos dos de ATTPwn, las cuales son diferentes versiones. El TAG ayuda a poder identificarlas claramente.

Nueva GUI y ejemplo

Ahora mismo, como novedad, estamos trabajando en una nueva interfaz gráfica que podamos tener en el proyecto de cara a la BlackHat USA 2020 y hoy mostraremos un poco de lo que tenemos.

Figura 7: Nuevo GUI para ATTPwn

Si vemos el paper de ATTPwn  podemos ver que la antigua GUI tiene el mismo flujo que la anterior. Las mejoras vienen dadas en su aspecto y en la experiencia del usuario, en ciertos aspectos.

Figura 8: Información de un Warrior

Como se puede ver en el ejemplo, éstas son las nuevas tarjetas disponibles, aunque aún pueden cambiar en algún detalle. Cuando seleccionamos una amenaza, y como veréis en el vídeo de más adelante, podemos seleccionar las técnicas a utilizar y comprobar si han tenido éxito o no.

Figura 9: Control del módulo de Adversary Emulation

En la vista de resultados, tenemos dos posibilidades: una vista ejecutiva que muestra el estado de las tareas/técnicas y si el resultado es satisfactorio o no y una segunda vista técnica en la que se muestra el detalle de la ejecución y se puede ir observando el “datastore”.

Figura 10: Control del flujo de emulaciones

El “datastore” es una pequeña base de datos dónde se almacenan los elementos, como direcciones IP, puertos, usuarios, hashes, etcétera, que pueden ser utilizados por una técnica posteriormente dentro de la misma amenaza. Creemos que eso es una de los valores añadidos de ATTPwn, ya que permite que una amenaza vaya aprendiendo con la ejecución de técnicas y pueda aprovechar las técnicas posteriores en su máximo esplendor.

Figura 11: Demo de ATTPwn 

Aquí os dejo un vídeo en el que primero se ve la nueva GUI y la configuración de una amenaza basándonos en técnicas. Es una amenaza personalizada, aunque podemos tomar amenazas “de ejemplo” cómo se puede ver en el vídeo.

Saludos,


Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González

Figura 12: Contactar con Pablo González

No hay comentarios:

Publicar un comentario