¿Te imaginas poder investigar un correo electrónico de phishing en tan solo 15 minutos? Éstas y otras tareas son principalmente las que automatizan y realizan las herramientas SOAR, orquesta capaces de realizar tareas que manualmente nos llevarían muchísimo más tiempo y que nos ayudan a minimizar los mismos y quitar acciones manuales que pueden generar problemas humanos.

Como todos sabéis, básicamente porque os vengo hablando de ellas desde el 2018, para mí este tipo de herramientas de orquestación / automatización , serán el punto de inflexión y diferenciación en la evolución de los SOC, demostrando un beneficio que está empezando a consolidarse.

Por ello, hoy os vengo hablar de un proyecto SOAR OpenSource , que creo que, puede tener un amplio recorrido. No tan potente como Apache NiFi , el cual tenía un amplio recorrido en transformación de datos, si no mucho más orientado al mundo de las ciberseguridad, como es el proyecto TraceCat

En tan solo 15 minutos, como os indicaba, ( y de una forma gratuita - Aunque tiene versión Cloud "luego hablamos de ella" ) esta poderosa herramienta puede recibir un correo sospechoso, extraer las URLs utilizando ChatGPT, solicitar un informe de phishing a URL scan, etiquetar el correo como malicioso o no mediante análisis de sentimiento de IA, y almacenar todas las evidencias recolectadas para una investigación más profunda en un caso.

¿Quieres saber cómo instalar, usar y aprovechar al máximo el potencial de Tracecat? En este post, te guiaremos paso a paso a través de sus funcionalidades, mostrando cómo esta herramienta puede convertirse en tu aliada perfecta si estas empezando con SOAR y no puedes permitirte algo de pago.

Instalando el SOAR Tracecat

Como podéis ver el vídeo y explicaremos posteriormente Tracecat tiene una muy fácil instalación, que posiblemente nos ayude a dar el paso de probar la herramienta. Pero no solo eso, sino que aparte dispone de un entorno Cloud, actualmente abierto para registrarnos y sobre el que podremos realizar todas nuestras pruebas.

Puesto que queríamos hacer pruebas con el fin de conocer su funcionamiento con datos de producción, motivado también por su fácil instalación, nos lanzamos a crear una instancia en local, siguiendo las instrucciones :

Lo primero que hicimos fue montar un servidor Ubuntu 20.04 , sobre el que procederíamos a instalar los requisitos que nos marcan para poder empezar, que son :

Siempre , lo primero del todo, es actualizar el entorno:

sudo apt update

  • Docker (Docker Engine v20.10+)
  1. Eliminar versiones antiguas:

sudo apt-get remove docker docker-engine docker.io containerd runc

  1. Configurar el repositorio:
sudo apt-get install \
  ca-certificates \
  curl \
  gnupg \
  lsb-release
  1. Agregar la clave GPG oficial de Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  1. Configurar el repositorio estable:
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. Instalar Docker Engine
sudo apt-get install docker-ce docker-ce-cli containerd.io

Y voila! , ya tenemos Docker instalado . Os dejo la prueba del delito de que soy tan friki que aquí ando un Sábado a las 8 de la mañana haciendo un post :) .

Instalación Docker

Ahora continuamos con :

Docker Compose V2 se distribuye como un plugin de Docker, por lo que vamos a ello.

  1. Descargamos el plugin:
mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.5.1/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
  1. Damos permisos de ejecución al plugin:
chmod +x ~/.docker/cli-plugins/docker-compose
  1. Verificar la instalación de Docker Compose:
docker compose version
Docker Compose

Docker Desktop no está disponible para Linux de la misma manera que para Windows o macOS, ya que Docker Desktop incluye Docker Engine y Docker Compose. En un entorno de servidor Linux como el nuestro, generalmente solo se instalan Docker Engine y Docker Compose. Sin embargo, podemos instalar Portainer como una alternativa para la gestión visual de contenedores Docker.

docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce
  1. Descargamos el binario de ngrok:
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
  1. Descomprimimos el archivo descargado:
unzip ngrok-stable-linux-amd64.zip
  1. Movemos el binario a /usr/local/bin:

sudo mv ngrok /usr/local/bin/ngrok

  1. Verificamos Version

ngrok --version

Version Ngrok
  • pnpm (with Node v20+)
  1. Instalar Node.js (usaremos nvm para gestionar la versión de Node.js):

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash source ~/.bashrc
nvm install 20

  1. Instalar pnpm:

npm install -g pnpm

  1. Verificar la instalación de pnpm:

pnpm --version

ppm version

Con estos pasos, ya dispondremos de los requisitos para empezar a instalar TraceCat y habremos instalado Docker Engine, Docker Compose, una alternativa para Docker Desktop, ngrok y pnpm con Node.js v20 en nuestro servidor Ubuntu.

Empezamos clonando el repositorio de TraceCat:

git clone git@github.com:TracecatHQ/tracecat.git --branch engine-0.1.0
cd tracecat

He instalando las dependencias:

cd frontend
pnpm install

Ahora continuamos con las variables de entorno. Para configurar manualmente las variables de entorno, copiamos el archivo .env.example para crear un archivo .env:

cp .env.example .env

Tendremos que reemplazar las variables de entorno que comienzan con your-.* con nuestros propios valores, para ello se recomienda en la web, usar env.sh. El script env.sh ejecuta comandos para configurar la clave de cifrado de la base de datos, la clave del servicio API y el secreto de firma del webhook por nosotros, algo que nos facilitará mucho la vida:

chmod +x env.sh
bash env.sh

Nos pedirá que ingresemos la URL pública del Runner, la clave de API de OpenAI y la clave de API de Resend. Si prefieres proporcionar estos valores más tarde, puedes omitir cada paso del prompt presionando Enter.

Si utilizas ngrok, la URL del Runner debería tener la forma https://<tu-dominio-ngrok>.ngrok-free.app. Por mi parte , os recomiendo ngrok, y asi lo vamos a hacer:

Visita ngrok y crea una cuenta.

ngrok es una herramienta poderosa que te permite exponer un servidor local detrás de un NAT o firewall a Internet.

Accede al panel de control de ngrok y crea un nuevo dominio estático gratuito. ngrok te ofrece 1 dominio estático gratuito, lo cual es perfecto para proyectos de desarrollo. El dominio debe tener el formato <alguna-frase-aleatoria>.ngrok-free.app.

Por ejemplo, si tu dominio ngrok es tu-dominio-ngrok.ngrok-free.app, puedes iniciar ngrok ejecutando el siguiente comando:

ngrok http --domain=tu-dominio-ngrok.ngrok-free.app 8001

Si prefieres no utilizar un dominio estático, puedes optar por un dominio efímero gratuito ejecutando:

ngrok http http://localhost:8001

Al enlazar ngrok al puerto 8001 en tu máquina host, las solicitudes entrantes del webhook se redirigen automáticamente al contenedor Runner. Por ello, asegúrate de que tu archivo .env contenga la siguiente línea:

TRACECAT__RUNNER_URL=https://tu-dominio-ngrok.ngrok-free.app

Con estos pasos, habremos configurado ngrok correctamente para nuestro proyecto TraceCat, permitiendo una integración fácil y segura de webhooks y otras funcionalidades dependientes de una URL accesible públicamente.

Esto ya es un problema más que conocido, pero si estás utilizando Linux, este es un problema conocido que puede afectar la comunicación entre contenedores y el host.es al no poder resolver host.docker.internal desde dentro de los contenedores Docker.

Para solucionar este problema, podemos agregar el siguiente parámetro a cada uno de los servicios en nuestro archivo docker-compose.yaml. Una solución recomendada por múltiples fuentes como StackOverflow.

services:
  api:
    build: .
    container_name: api
    ports:
      - "8000:8000"
    volumes:
      - ./tracecat:/app/tracecat
      - app-storage:/var/lib/tracecat
    environment:
      API_MODULE: "tracecat.api.app:app"
      # Shared
      LOG_LEVEL: ${LOG_LEVEL}
      RABBITMQ_URI: ${RABBITMQ_URI}
      TRACECAT__APP_ENV: ${TRACECAT__APP_ENV}
      TRACECAT__DB_ENCRYPTION_KEY: ${TRACECAT__DB_ENCRYPTION_KEY}
      TRACECAT__DB_URI: ${TRACECAT__DB_URI}
      TRACECAT__SERVICE_KEY: ${TRACECAT__SERVICE_KEY}
      TRACECAT__SIGNING_SECRET: ${TRACECAT__SIGNING_SECRET}
      TRACECAT__API_URL: ${TRACECAT__API_URL}
      TRACECAT__RUNNER_URL: ${TRACECAT__RUNNER_URL}
      # Auth
      CLERK_FRONTEND_API_URL: ${CLERK_FRONTEND_API_URL}
      TRACECAT__DISABLE_AUTH: ${TRACECAT__DISABLE_AUTH}
      # Integrations
      OPENAI_API_KEY: ${OPENAI_API_KEY}
    restart: unless-stopped
    depends_on:
      rabbitmq:
        condition: service_healthy
    networks:
      - internal-network
    extra_hosts:
      - "host.docker.internal:host-gateway"
# Do the same for the rest of the services
# ...

Y ya estaríamos en disposición de levantar TraceCat:

docker compose up

La interfaz de Tracecat debería estar ejecutándose en el puerto 3000. Para acceder a la interfaz, simplemente abre tu navegador web y dirígete a http://localhost:3000. No es necesario crear una cuenta para uso local, lo que facilita la configuración y pruebas iniciales.

Tracecat también ofrece acceso a sus servidores de API y runner a través de los puertos 8000 y 8001, respectivamente. Estos servidores permiten una interacción avanzada y gestión de procesos.

Documentación de la API: Puedes ver la documentación completa de la API en http://localhost:8000/docs. Esta documentación es esencial para integrar y utilizar las funciones de la API de Tracecat de manera eficiente.

Documentación del Runner: Para obtener información sobre el servidor runner, visita http://localhost:8001/docs. Aquí encontrarás guías y referencias necesarias para ejecutar y gestionar tareas con el runner de Tracecat.

Instalación TraceCat

Sin escusas para probarlo

Hemos visto como poder instalar nuestro propio SOAR en local, cuestión que recomiendo , como habéis visto por la facilidad de instalación , y por que no permitirá diseñar un entorno productivo mucho más real.

Pero si por tiempo o por comodidad no podemos, TraceCat nos lo pone muy fácil, estando ahora mismo en fase Alpha , permitiéndonos crear una cuenta en la plataforma Cloud que tienen a coste 0.

Esto, nos permitiria ahorrarnos la instalación, lo que nos deja sin excusas , si queremos probar la automatización en nuestro SOC.

Instancia Cloud SOAR TraceCat

Desgranando SOAR TraceCat

Uno de los puntos que más me ha llamado la atención de TraceCat, es la facilidad de uso que tiene. Algo muy similar a PowerAutomate de Microsoft y en concordancia con otros SOAR

Nada más entrar en la plataforma, lo primero que nos vamos a encontrar es un listado de todos nuestros Workflows, y donde claro esta también está el botón nuevos para poder crearlos.

Creación de Workflows SOAR TraceCat

Una vez dentro, nos encontraremos con una plataforma muy sencilla de utilizar como trasladaba antes. Diferenciada esta en tres partes principales.

Por un lado, ( 1 ) tendremos las acciones y las integraciones. Como punto negativo trasladar que a día de hoy, como se trata de un proyecto en fase Alfa, el número de integraciones es bastante reducido, algo que no podremos comparar con soluciones como XSOAR de Palo Alto, que tiene una inmensidad de ellas. Recordad que esto es una solución OpenSource , aun que a futuro posiblemente tenga un mínimo coste.

Por el lado de las acciones, considero que tiene la gran mayoría para poder trabajar de una forma automática, con la transformación de datos, extracción de URL, elecciones, sumamatizaciones ... Como veíamos con el ejemplo de Crowdstrike y Apache NIFI , también podíamos hacerlo, pero de una forma un poco más enrevesada.

Uno de los puntos que he visto más interesantes en la plataforma ( 2 ) , es que como resultado de análisis de nuestro workflow, podemos realizar la apertura de casos, para su posterior análisis por interacción humana, por ejemplo. esto lo hace complemento perfecto para los SOC , más pequeños o incluso una pequeña empresa sin capacidades, o cualquiera que quiera realizar un traje mínimo de posibles afecciones de seguridad.

Y por último ( 3 ), la configuración de las acciones que queramos realizar.

Yo soy un friki de Power Automate , y he de trasladaros, que la plataforma es super intuitiva, en la que se ha adoptado lo mejor de distintas plataformas de automatización.

Ejemplo de automatización con SOAR TraceCat

Os podría traer algún ejemplo como los que vimos de Crowdstrike , pero creo que el ejemplo que han desarrollado ellos es muy bueno, y da una visión de las capacidades que puede prestar TraceCat a entidades sin mucho peso / inversión en ciberseguridad.

Un autentico descubrimiento, sobre el que seguro que oiremos hablar mucho. Algo muy reciente , sobre lo que me he querido adelantar y traéroslo , y sobre el que veremos grandes avances próximamente.

Espero que disfrutéis con TraceCat, tanto como lo estoy haciendo yo.