Integrar al bug bounty GitHub Actions + ELK
GitHub Actions se usa como disparador de infraestructura como código para levantar servidores de escaneo bajo demanda en DigitalOcean, ejecutar El Kraken y destruirlos al terminar. Los resultados se envían por SCP a un servidor ELK permanente donde Kibana grafica métricas históricas y en tiempo real de cada target escaneado.

Dos herramientas distintas, un mismo pipeline
GitHub Actions y ELK (el stack de Elasticsearch) son herramientas con utilidades totalmente diferentes que, con una buena implementación, nos pueden ayudar muchísimo a completar de punta a punta cualquier proceso automatizado.
GitHub Actions es una herramienta potente para desplegar código mediante una metodología de CI/CD. En este post le vamos a dar una utilidad distinta: la punta inicial de nuestra automatización, para el despliegue de infraestructura como código («IaC») y la puesta en marcha instantánea de nuestros servidores, junto con la instalación de las herramientas necesarias para hacer bug bounty.

Por otro lado tenemos ELK, que sirve para tomar métricas y armar reportes históricos y en tiempo real. En nuestro caso nos interesa tener métricas y reportes de cada proceso de escaneo automatizado que hagamos a cada target, para revisarlos a posteriori y seguir nuestro proceso de hunting.

Paso 1: preparar el repositorio
Luego de esta intro, manos a la obra a integrarlo también con nuestra herramienta El Kraken, que en un post anterior ya expliqué cómo descargar y utilizar.
Lo primero es descargar el repositorio Deploy_ElKraken, crear una cuenta gratuita en GitHub y subir nuestra copia del repositorio con visibilidad privada. Esto último es muy importante por seguridad: evita exponer alguna key que más adelante vamos a necesitar.
Una vez hecho esto, seguimos los pasos descritos en el archivo README.md que está dentro del mismo repositorio. Siguiéndolos vamos a configurar todos los secrets y las variables de entorno necesarias para que funcione la implementación.
Paso 2: la primera ejecución
Con todo configurado, para hacer nuestra primera ejecución solo debemos aplicar un cambio en el archivo droplet.tf, en la línea 49, reemplazando el dominio de ejemplo:
echo vulweb.com
por el dominio que deseamos escanear. Aplicamos el commit del cambio y con eso comenzará a ejecutarse el workflow de GitHub Actions, que dispara el despliegue del servidor en DigitalOcean y el inicio del scan.
Paso 3: agregar el módulo de ELK
¿Y si queremos agregar el módulo de ELK? Lo primero que hay que entender es que este módulo es un complemento que se levanta en un servidor separado y debe estar presente de manera permanente, lo cual genera costos fijos mensuales que hay que tener en cuenta.
Mi recomendación en estos casos es:
- Levantar un servicio que trabaje con Elasticsearch y Kibana.
- En el servicio de escaneo (El Kraken), indicar en las variables de configuración cuál es el servidor al que se van a enviar los resultados: el servidor de ELK, o un repositorio de archivos al que puedan enviarse los resultados vía SCP.
- Configurar los certificados SSH correspondientes para que se pueda generar esa conexión SCP entre el servidor de escaneo y el repositorio de archivos que usará el ELK.
- Configurar los tableros que queremos que se grafiquen en Kibana.
Con todo esto configurado ya tenemos una herramienta automatizada de punta a punta que nos va a facilitar los procesos de hacking y bug bounty.
Espero que les sea de utilidad. Quedo a disposición a través de las redes para alguna información adicional que necesiten.
Happy Hacking!


