Proyecto CAI - Github
CAI o Cybersecurity IA es un proyecto muy interesante propietario de aliasrobotics, su repositorio de Github está muy bien documentado y da muy buenas pautas a lo que son los agentes y cómo este proyecto los utiliza para poder hacer un framework de seguridad con IA bastante sólido. Invito a todos a darle un vistazo.
Entendiendo CAI
Cybersecurity AI (CAI) es un marco ligero y de código abierto que permite a los profesionales de la seguridad crear e implementar automatizaciones ofensivas y defensivas basadas en inteligencia artificial. CAI es el marco de facto para la seguridad basada en IA, ya utilizado por miles de usuarios individuales y cientos de organizaciones. Tanto si es investigador de seguridad, hacker ético, profesional de TI o una organización que busca mejorar su postura de seguridad, CAI le proporciona los componentes básicos para crear agentes de IA especializados que pueden ayudar en la mitigación, el descubrimiento de vulnerabilidades, la explotación y la evaluación de la seguridad.
Las principales características del modelo es que utiliza litellm para poder conectarse a modelos de IA según plazca, tiene prompts perviamente formados para ahorrar tiempo, está testeado en competiciones CTF con muy buenos resultados y principalmente, su arquitectura basada en agentes.
Componentes Principales (General)
Agentes
CAI internamente abstrae todo el comportamiento de ciberseguridad en Agentes
y en patrones
del propio agente. Un agente
, bajo el mismo concepto de la documentación, el agente es un sistema inteligente que interactúa con algún entorno y que de forma más técnica, es cualquier cosa que puede ser vista como un sistema percibiendo el entorno con censores, razonando sobre sus metas y actuando según ese entorno. Y esto CAI lo adapta como una implementación de Razonamiento y Acción.
Herramientas
Esta es una parte muy buena de CAI, las herramientas permmiten a los agentes tomar acciones proporcionándoles interfaces para ejecutar comandos del sistema, esto incluyendo, realizar escaneos de seguridad, analizar vulenrabilidades e interactuar con los sistemas objetivos, algunas de estas herramientas incluyen la ejecución de comandos (puede llegar a ejecutar ldapsearch
por ejemplo, o dirb
si lo cree conveniente), búsquedas web (para realizar tareas de OSINT e incluzo es compatible con la API de Shodan
), análisis y ejecución dinámica de scripts, SSHTunnels e incluso la implementación con web proxies (Esto como integración de MCP o Model Context Procol, por lo que le puedes pedir que envíe cierta petición a intruder
por ejemplo).
Handoffs
Los handoffs
tienen una función interesante que potencia mucho el framework, permite a un agente
delegar tareas a otro agente
Esto permite una validación continua sobre toda la cadena de explotación o la tarea, puedes verlo como un agente que se especializa en buscar el flaw, otro agente se especializa en la verificación lo que permite una división de tareas o responsabilidades sobre varias tareas en ciberseguridad.
Existen más componentes y para ello, los invito a leer la documentación, pero en este post, quería hacer un pequeño overview para dar una idea de lo que puede llegar a lograrse con este framework.
Instalación
Para implementar este proyecto localmente (en mi caso: en un entorno Debian
(aunque también compatible con WSL
, Ubuntu
e incluso Android
)), se necesitan pocas cosas, la documentación no la siento muy completa (pues sigue en desarrollo) por sobre el proceso de instalación pero faltan unas cosillas para puntualizar: python3.12, openai==1.99.9, litellm[proxy], rich==14.0.1 una APIKEY (esto puede ser de cualquier modelo o plataforma (para ver los modelos soportados, puedes revisar los proveedores de litellm).
De igual manera, si falta algún componente, tendremos fallos que nos ayudaran a tener una pequeña traza.
Instalación Python 3.12
En el caso en que estés trabajando en un entorno limpio, esto será necesario para tener la vesión actualizada de python3.12 que es donde trabaja el framework:
- Descarga el tarball de python3.12 según la versión Linux que tengas
- Descomprime el tarball en tu directorio local
tar -xf <Archivo.tar.xz>
otar -xvzf <archivo.tgz>
- Ejecuta
./configure --enable-optimizations
(Llega a tardar varios minutos) sudo make altinstall
Montado y preparación del venv
Desde la documentación, se nos sugiere trabajar en un entorno virtual de python, esto ofrece varias ventajas (pero no me meteré mucho en ese tema) por lo que he de aclarar, que CAI sólo será accesible en este entorno.
- Para crear el entorno ejecutamos
python3.12 -m cai_env
, lo que creará un directorio en el directorio actual con el mismo nombre. - Activamos el entorno con
source cai_env/bin/activate
- Instalamos
litellm proxy
que nos permitirá conectar nuestra aplicación con el modelo:pip install 'litellm[proxy]'
- Debemos instalar
openai
en su versión más reciente para utilizar correctamentelitellm
, al momento de la escritura 1.99.9:pip install --upgrade openai==1.99.9
- Y ahora sí, instalamos CAI:
pip install cai-framework
- Aquí es probable que de un aviso sobre las dependencias o incompatibilidades, Revisa el mensaje en rojo indicado en la salida
- Si lo indica, instalar
rich
a su versión más reciente:pip install --upgrade rich
Nota: Deja la terminal abierta, la ocuparemos a continuación
Archivo .env
Luego de preparar el entorno, es importante que prepares un archivo .env
que CAI leerá para utilizar sus valores, el formato es el siguiente
OPENAI_API_KEY="<OPENAI KEY>"
SHODAN_API_KEY="<SHODAN KEY>"
ANTHROPIC_API_KEY="<ANTROPIC KEY>"
OLLAMA=""
PROMPT_TOOLKIT_NO_CPR=1
CAI_STREAM=false
Todo depende de qué modelo elijas, si no utilizas una plataforma, deja el espacio de las comillas vacío justo como la de OLLAMA
; en cualquier caso, necesitas levantar tú mismo litellm
para lograr que funcione el framework, si no, te arrojará problemas relacionados con algo de error ... /key/generate
o algo parecido.
Entonces:
- En la misma terminal que tienes abierta si seguiste los pasos, ejecuta:
export OPENAI_API_KEY="<API-KEY>"
(El nombre de la variable cambia por plataforma, revisa la documentación) - Ejecuta lo siguiente cambiando el nombre del modelo que quieras
litellm --model gpt-3.5-turbo
- Un servicio DEBE levantarse en la
0.0.0.0:4000
. - En otra terminal, dirigirte al directorio donde está venv que habías creado anteriormente.
- Inicia el entorno virtual en la terminal
source cai_env/bin/activate
- Inicia CAI:
cai
- Lee el menú!
- Selecciona el mismo modelo que seleccionaste en
litellm
con/model gpt-3.5-turbo
- E inicializa un agent según la tarea (tal y como dice el menú) con:
/agent ...
Aclaraciones y conclusiones.
El framework es súmamente útil, y se potencia bastante según el modelo usado, openai es buena, pero en mi opinión no lo mejor para esto; eso sí, es interesante dar el intento para ver qué puede llegar a hacer, en mi experiencia, sólo vi cómo gpt-3.5-turbo empezó a enumerar directorios con rockyou.txt para llegar a esta conclusión xd.
Gracias a todo el equipo de aliasrobotics Han creado una herramienta brutal y mejor aún, opensource para la democratización de la IA en ciberseguridad.
Agradecimiento
Si lees esto, gracias por llegar hasta aquí!, si existen dudas, comentarios y correcciones (que son más que bienvenidas) contáctame con confianza, que siempre he dicho que la ciberseguridad es esfuerzo conjunto.
En caso que no los vea, buenos días, buenas tardes y buenas noches. Happy Hacking!.