Bug Bounty3 min de lectura

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.

Diagrama del flujo de El Kraken integrando GitHub Actions, DigitalOcean y el stack ELK

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.

Captura del workflow de GitHub Actions ejecutando el despliegue de infraestructura de escaneo
El workflow de GitHub Actions dispara el despliegue del servidor de escaneo

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.

Captura de un tablero de Kibana con métricas de los escaneos automatizados
Kibana graficando los resultados de cada escaneo, para revisarlos a posteriori

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:

  1. Levantar un servicio que trabaje con Elasticsearch y Kibana.
  2. 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.
  3. 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.
  4. 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!

Seguir leyendo

  • Bug Bounty

    Bug Bounty Tool: El Kraken

    El Kraken es una herramienta modular en bash que automatiza recon y explotación de CVEs de punta a punta, encadenando nuclei, subfinder, wayback y dirsearch.