SAINT GRAIL: Una Plataforma Modular para Investigación de Seguridad Ofensiva con IA

Construí un sistema que integra APIs de modelos de lenguaje, investigación asistida por DeepWiki y un grafo interactivo para documentar y ejecutar hallazgos de vulnerabilidades. Un vistazo al estado actual, la arquitectura y hacia dónde voy.

/índice +

00. Motivación: El Bug Hunting No Es un Sprint

Durante años, colegas y amigos me han sugerido que me meta de lleno al bug hunting. "Con lo que sabes, deberías estar reportando CVEs todas las semanas", me dicen. Y sí, la idea es tentadora. Pero cualquiera que haya intentado vivir de esto sabe que los años de investigación no siempre se traducen en ingresos mensuales estables. Entre la fuga de cerebros hacia las FAANG, la competencia feroz y el hecho de que un solo bug puede llevarte semanas de trabajo sin garantía de recompensa... la ecuación no es sencilla.

Sin embargo, la inquietud por explorar vulnerabilidades nunca desapareció. Lo que necesitaba era un sistema que multiplicara mi capacidad de investigación. Algo que me permitiera documentar cada paso, visualizar las relaciones entre componentes y, sobre todo, integrar inteligencia artificial para acelerar el proceso. Así nació SAINT GRAIL.

Nota sobre los datos

Todas las capturas de pantalla y datos mostrados en este artículo son de prueba. Utilicé un conjunto de datos genérico (un programa ficticio llamado "GenericApp") para no exponer mi investigación real. La plataforma es completamente funcional, pero los vectores, fases y primitivas que se ven aquí son placeholders.

01. ¿Qué es SAINT GRAIL?

SAINT GRAIL es una plataforma modular para documentar, visualizar y ejecutar investigaciones de seguridad ofensiva. Combina un backend API REST con base de datos SurrealDB embebida, un frontend de grafo interactivo (HTML5 Canvas + vanilla JS), un dashboard administrativo y utilidades de línea de comandos. Todo el código es editable directamente, sin dependencias de frameworks pesados.

El objetivo es simple: tener un "copiloto" de investigación que no reemplace al analista, sino que lo potencie. La plataforma te permite:

¿Por qué no es público todavía?

El sistema aún no está lo suficientemente maduro para liberarlo como open-source. Hay piezas que necesitan pulirse, documentación que completar y pruebas de estrés que realizar. Pero estoy compartiendo los avances porque creo que la comunidad puede beneficiarse de las ideas, incluso si el código no está listo para consumo masivo.

02. Arquitectura y Componentes

La plataforma sigue los principios KISS (Keep It Simple, Stupid) y filosofía Unix: cada módulo tiene una responsabilidad única y se comunica mediante APIs bien definidas.

2.1 Estructura del Proyecto

# Árbol simplificado de SAINT GRAIL saint-grail/ ├── api/ # Backend Flask + SurrealDB │ ├── server.py # Arranque de la app Flask │ ├── storage.py # Capa de persistencia (SurrealDB) │ ├── llm.py # Cliente DeepSeek, token budget │ ├── deepwiki.py # Generación de preguntas DeepWiki │ └── routes/ │ ├── agent.py # Agente híbrido (bucle DeepWiki) │ ├── ingest.py # Ingesta de datos, PoC │ └── ... ├── graph/ # Frontend del grafo (HTML5 Canvas) ├── admin/ # Dashboard de administración ├── utils/ # Scripts auxiliares (fetch_commits, etc.) ├── config/ │ └── saint-grail.conf # Configuración global (tokens, GitHub) └── data/ # Base de datos SurrealDB + JSONs
Resumen de la arquitectura de componentes de SAINT GRAIL
arquitectura-componentes-resumen.png — Resumen detallado de la arquitectura: API, frontend, dashboard y utilidades.

2.2 Backend y Base de Datos

La API está construida con Flask y utiliza SurrealDB en modo embebido. Esto significa que no necesitas instalar un servidor de base de datos externo; todo se almacena en un archivo local. La taxonomía de nodos incluye:

KindForma en el grafoDescripción
phaseCuadradoFases de la cadena de ataque
vectorCírculoVectores de ataque específicos
primitiveTriánguloPrimitivas explotables (addr_of, fake_obj, etc.)
barrierRomboBrechas o bloqueantes
researchRectánguloPreguntas DeepWiki o referencias externas

La API expone endpoints para CRUD de datos, ingesta de hallazgos desde DeepWiki, creación y ejecución de PoCs, sincronización P2P entre instancias, y todo el ciclo de trabajo del agente híbrido.

Documentación de la API con Swagger
documentacion-api-endpoints.png — Interfaz Swagger mostrando los endpoints de la API REST.

2.3 Orquestador y Línea de Comandos

Todo se controla desde un script Bash llamado saint_grail.sh que actúa como orquestador. Desde aquí puedo iniciar los servicios, ver el estado, ejecutar el agente y monitorear el presupuesto de tokens de DeepSeek.

Menú de comandos del orquestador
ayuda-consola-saint-grail.png — Menú de ayuda del script orquestador con todos los comandos disponibles.
Estado de la API y presupuesto de tokens
ejecucion-status-orquestador.png — Estado en tiempo real: API, presupuesto de tokens y ciclo de trabajo.

03. El Agente Híbrido y DeepWiki

Una de las características más potentes es el agente híbrido de investigación. La idea es crear un ciclo donde la IA y el analista humano se complementan:

  1. Selección automática: el bucle toma el primer vector activo que no esté en un estado final.
  2. Generación de preguntas DeepWiki: usando el módulo deepwiki.py, se crean preguntas contextuales en español basadas en el componente, archivos de auditoría y tipo de vector. Por ejemplo: "En el canal IPC, ¿se validan los tamaños de los mensajes antes de asignar buffers? ¿Es posible enviar un mensaje manipulado que provoque una corrupción de memoria?"
  3. Intervención humana: el nodo se pausa en estado AWAITING_DEEPWIKI y las preguntas aparecen en el dashboard. El analista investiga y responde.
  4. Clasificación y acción: el endpoint /api/agent/deepwiki/answer clasifica el riesgo usando DeepSeek (o mediante palabras clave si el presupuesto de tokens está agotado). Si el riesgo es alto, se crea automáticamente un nuevo nodo primitive, se genera un PoC y se ejecuta.
DeepSeek como LLM de pruebas

Utilicé DeepSeek (modelo gratuito con límite diario de tokens) para todas las pruebas de integración. La plataforma está diseñada para ser agnóstica al proveedor: puedes configurar cualquier API compatible con OpenAI en saint-grail.conf.

Dashboard mostrando el flujo híbrido de investigación
dashboard-flujo-hibrido.png — Panel de control del flujo híbrido: preguntas DeepWiki pendientes, primitivas creadas y ejecución manual de PoCs.

04. Dashboard y Flujo de Trabajo

El dashboard es el centro de mando. Desde aquí gestiono todo el ciclo de investigación, desde la creación de vectores hasta la validación de integridad.

4.1 Visión General y Progreso

La pantalla principal muestra el progreso global del proyecto, con fases que van desde "Reconocimiento" hasta "Escape Lógico". Cada fase tiene sus vectores y primitivas asociados.

Vista general del progreso de fases
progreso-global-dashboard.png — Resumen del progreso de fases y estado de integración de nodos.

4.2 Grafo Interactivo

El frontend del grafo es una de las partes que más tiempo me llevó. Renderiza los nodos según su kind (cuadrados para fases, círculos para vectores, triángulos para primitivas, rombos para barreras) y colorea según el estado. El panel de detalles muestra información exhaustiva: auditoría, PoC, logs, preguntas DeepWiki respondidas, etc.

Interfaz principal del grafo con nodos y detalles
grafo-principal-interfaz.png — Grafo interactivo mostrando fases, vectores y detalles del nodo seleccionado.
Vista detallada de un nodo vector
detalle-tecnico-nodo-v05.png — Panel de detalles de un nodo con información de auditoría, referencias MITRE y más.

4.3 Editor de Datos y Carga de JSON

Para crear vectores rápidamente, hay un formulario que te permite definir ID, componente, tipo de vector y descripción. También se pueden cargar y descargar datasets completos en formato JSON.

Editor para crear y gestionar vectores de ataque
editor-datos-vectorial.png — Editor de datos: creación rápida de vectores y gestión de nodos.
Panel de carga y descarga de archivos JSON
interfaz-carga-descarga-json.png — Interfaz para importar y exportar configuraciones en formato JSON.

4.4 Validación de Integridad

Con el tiempo, los nodos pueden acumular referencias a archivos de log o commits que ya no existen. El panel de validación escanea y limpia estas referencias rotas, manteniendo la base de datos consistente.

Panel de validación de integridad
panel-validacion-integridad.png — Herramienta para verificar y limpiar referencias a logs inexistentes.

05. Estado Actual y Próximos Pasos

SAINT GRAIL ya es funcional en mi entorno de desarrollo. El agente híbrido genera preguntas, el dashboard permite responderlas, se crean primitivas automáticamente y los PoCs se ejecutan. Pero aún no está listo para producción ni para un repositorio público.

Las tareas pendientes incluyen:

¿Cuándo será público?

Cuando considere que el código está en un estado digno de ser compartido. No me gusta liberar proyectos a medias. Mientras tanto, este artículo y las futuras actualizaciones en el blog serán el canal para compartir avances.

Lo que más me entusiasma es el potencial de DeepWiki como fuente de contexto. La capacidad de generar preguntas específicas sobre archivos de código fuente, commits y componentes abre una puerta a una investigación semi-automatizada que no había visto en otras herramientas. No se trata de reemplazar al analista, sino de darle superpoderes.

/¿Te interesa la investigación de seguridad y la integración con IA?

Este proyecto se alinea con otras áreas de mi portafolio: exploit development, reversing y automatización de análisis.

07. Referencias y Enlaces