
AIRecon es un agente autónomo de ciberseguridad que combina un modelo de lenguaje grande (LLM) autoalojado (Ollama) con un sandbox Docker de Kali Linux y una TUI de Textual. Está diseñado para automatizar evaluaciones de seguridad, pruebas de penetración y reconocimiento para bug bounty — sin necesidad de claves API ni dependencia de la nube.
AIRecon es un agente autónomo de pruebas de penetración que combina un LLM de Ollama autoalojado con un sandbox Docker de Kali Linux, integración nativa con el proxy Caido, un pipeline estructurado RECON → ANALYSIS → EXPLOIT → REPORT y una TUI Textual en tiempo real — completamente offline, sin necesidad de claves API.

Los modelos comerciales basados en API (OpenAI GPT-4, Claude, Gemini) resultan prohibitivamente caros para flujos de trabajo de reconocimiento autónomos y recursivos que pueden requerir miles de llamadas al LLM por sesión.
AIRecon está construido 100 % para operación local y privada.
§FUZZ§), findings, scope.dataset_search de forma autónoma antes de intentar técnicas desconocidas, lo que fundamenta sus decisiones en datos reales indexados.RECON → ANALYSIS → EXPLOIT → REPORT
Cada fase tiene objetivos específicos, herramientas recomendadas y criterios automáticos de transición. La aplicación de las fases es flexible — el agente es guiado pero nunca bloqueado. Los checkpoints se ejecutan cada 5 (evaluación de fase), 10 (autoevaluación) y 15 (compresión de contexto) iteraciones.
AIRecon no realiza fine-tuning del LLM. Su «aprendizaje» es telemetría local y estructurada que guía la elección de herramientas y evita repetir rutas fallidas.
Persistencia local (todo en disco, sin nube):
~/.airecon/memory/airecon.db que almacena sesiones, hallazgos, patrones, inteligencia del objetivo, uso de herramientas, rendimiento del modelo, uso de skills y descubrimientos de cadenas de ataque.~/.airecon/learning/global_learning.json (estadísticas de rendimiento de herramientas, patrones de estrategia, registro de observaciones, insights destilados).~/.airecon/memory/by_target/ cuando se persisten, que contienen endpoints, vulnerabilidades, bypasses de WAF, parámetros sensibles y endpoints de autenticación.workspace/<target>/payload_memory.json cuando se ejecuta la persistencia de sesión.Cómo afecta al comportamiento:
AIRecon requiere un modelo con pensamiento extendido (bloques <think>) y capacidades fiables de tool calling. Las capacidades se detectan automáticamente mediante los metadatos de ollama show.
⚠️ El soporte de tool calling es OBLIGATORIO. El modelo debe soportar llamadas nativas a funciones/herramientas. Los modelos sin esta capacidad no podrán ejecutar ninguna herramienta (http_observe, execute, acciones de navegador, etc.), lo que dejaría AIRecon completamente inoperativo.
Mínimo recomendado: 8B-9B parámetros. Los modelos por debajo de 8B son técnicamente utilizables, pero muy desaconsejados — alucinan con frecuencia la salida de las herramientas, inventan CVEs, se saltan las reglas de alcance y producen llamadas a herramientas poco fiables.
Guía del tamaño del modelo:
Problemas conocidos: DeepSeek R1 produce llamadas a funciones incompletas. Los modelos < 8B carecen de soporte fiable de tool calling.
Si no tienes una GPU o tu VRAM local está por debajo del mínimo, puedes ejecutar Ollama en una GPU T4 gratuita de Google Colab y conectar AIRecon a ella mediante un túnel público.
Cómo funciona:
Google Colab GPU Your Local Machine
┌─────────────────────────┐ ┌──────────────────────────┐
│ Ollama (qwen3.5:9b) │◄────────►│ AIRecon TUI │
│ cloudflared tunnel │ HTTPS │ ollama_url: tunnel URL │
└─────────────────────────┘ └──────────────────────────┘
Pasos:
~/.airecon/config.yaml:ollama_url: "https://xxxx.trycloudflare.com" # printed by Cell 6
ollama_model: "qwen3.5:9b"
ollama_timeout: 300.0
ollama_chunk_timeout: 300.0
ollama_num_ctx: 32768
ollama_num_ctx_small: 16384
airecon startGPU de Colab → disponibilidad de modelos:
Limitaciones:
qwen3.5:9b es la configuración mínima viable — espera respuestas más lentas y más errores de tool calling que con un modelo local de 35B+scripts/airecon_colab.ipynb si quieres autoalojarlo o modificarloRequisitos previos: Python 3.12+, Docker 20.10+, Ollama (en ejecución), git, curl
curl -fsSL https://raw.githubusercontent.com/pikpikcu/airecon/refs/heads/main/scripts/install.sh | bash
El script detecta automáticamente el modo remoto frente al local, instala Poetry si no está presente (mediante el instalador oficial, sin conflictos con paquetes del sistema), compila la wheel e instala en ~/.local/bin.
git clone https://github.com/pikpikcu/airecon.git
cd airecon
./install.sh
# Add to ~/.bashrc or ~/.zshrc if needed
export PATH="$HOME/.local/bin:$PATH"
airecon --version
Archivo de configuración: ~/.airecon/config.yaml (se genera automáticamente en la primera ejecución). AIRecon creará ~/.airecon/ si no existe, incluso cuando se utiliza una ruta ~ personalizada.
# ======================================
# Ollama Connection
# ======================================
# Ollama API endpoint. REQUIRED — must be set. For local: http://127.0.0.1:11434. For remote: http://IP:11434
ollama_url: "http://127.0.0.1:11434"
# Model to use. 122B for best reasoning (requires 60GB+ VRAM). For 12GB VRAM: use qwen2.5:7b or smaller. For 8GB VRAM: use qwen2.5:1.8b.
ollama_model: "qwen3.5:122b"
# Total request timeout (seconds). 180s = 3 min. Stable for most models. Increase to 300s for slow remote servers or 122B models.
ollama_timeout: 180.0
# ======================================
# Ollama Model Settings
# ======================================
# Context window size. 65536 = 64K (stable for 12GB VRAM with 8B models). 131072 = 128K requires 30GB+ VRAM. Set -1 for server default.
ollama_num_ctx: 65536
# Context for CTF/summary mode. 32768 = 32K (stable for 12GB VRAM). Reduced from 64K for stability with 8B+ models.
ollama_num_ctx_small: 32768
# LLM output randomness. 0.0=deterministic, 0.15=recommended (strict), 0.3=creative. Does NOT affect thinking mode — controls output diversity only.
ollama_temperature: 0.15
# Max tokens to generate. 16384 = 16K (stable for 12GB VRAM). 32K requires more VRAM.
ollama_num_predict: 16384
# Enable extended thinking mode (for Qwen3.5+/Qwen2.5+). When enabled, model generates <think> reasoning blocks before answering.
ollama_enable_thinking: true
# Thinking intensity: low|medium|high|adaptive. For 12GB VRAM: use 'low' or 'medium'. 'high' may cause OOM with 8B models. Low=only deep tools, Medium=ANALYSIS+deep tools, High=most iterations (high VRAM only).
ollama_thinking_mode: low
# Protect first N tokens from KV eviction. 4096 = 4K (reduced for 12GB VRAM stability). 8K for larger VRAM.
ollama_num_keep: 4096
# ======================================
# Proxy Server
# ======================================
# Host to bind proxy server. 127.0.0.1 = localhost only.
proxy_host: 127.0.0.1
# Port for proxy server. Default 3000.
proxy_port: 3000
# ======================================
# Timeouts
# ======================================
# Docker command timeout (seconds). 900s = 15 min for long scans (nmap, nuclei).
command_timeout: 900.0
# ======================================
# Docker Sandbox
# ======================================
# Container memory limit. '16g' = 16GB (stable for 32GB+ RAM host, 18GB image + Chromium). Prevents OOM kills. Set to '12g' for 32GB RAM, '8g' for 16GB systems, '4g' for 8GB systems.
docker_memory_limit: 16g
# ======================================
# Deep Recon
# ======================================
# Auto-start deep recon on session start.
deep_recon_autostart: true
# Recon execution mode: standard|full. standard=respect user scope, full=auto-expand simple target prompts into comprehensive recon.
agent_recon_mode: standard
# ======================================
# Safety
# ======================================
# Allow destructive tests (e.g., DELETE requests). Default: False for safety.
allow_destructive_testing: false
Ollama remoto (servidor LAN o túnel de Google Colab):
ollama_url: "http://192.168.1.100:11434" # LAN server
ollama_model: "qwen3.5:35b"
# or via Colab tunnel (see "Running Ollama on Google Colab" section above):
ollama_url: "https://xxxx.trycloudflare.com"
ollama_model: "qwen3.5:9b"
ollama_timeout: 300.0
ollama_chunk_timeout: 300.0
AIRecon puede conectarse a servidores MCP externos y exponer sus herramientas dinámicamente como herramientas mcp_<server>.
Archivo de configuración: ~/.airecon/mcp.json
Ejemplo de configuración:
{
"mcpServers": {
"hexstrike": {
"command": "python3",
"args": [
"/path/hexstrike-ai/hexstrike_mcp.py",
"--server",
"http://127.0.0.1:8888"
],
"env": {
"PYTHONUNBUFFERED": "1"
},
"enabled": true
},
"xssgen": {
"command": "python3",
"args": [
"/path/xssgen/xss_client.py",
"--server",
"http://127.0.0.1:8000"
],
"env": {
"PYTHONUNBUFFERED": "1"
},
"enabled": true
},
"recon": {
"transport": "sse",
"url": "https://example.com/mcp",
"enabled": true,
"headers": {
"Authorization": "Bearer xxxxx"
}
}
}
}
Uso de las herramientas MCP en el chat:
mcp_<server>list_tools, search_tools, call_toolEjemplo:
{"name": "mcp_acme", "arguments": {"action": "list_tools"}}
airecon-dataset es un complemento opcional que descarga conjuntos de datos de seguridad de HuggingFace y los indexa localmente en bases de datos SQLite FTS5. Una vez instalado, el LLM los consulta de forma autónoma mediante la herramienta dataset_search.
Cómo funciona: dataset_search es una herramienta estándar del agente en tools.json. El LLM decide cuándo llamarla — AIRecon no la activa automáticamente. El prompt del sistema indica al agente que consulte la base de conocimiento antes de intentar técnicas desconocidas.
git clone https://github.com/pikpikcu/airecon-dataset.git
cd airecon-dataset && python install.py
Conjuntos de datos incluidos (~1.09M de registros en total, 100 % offline):
Ejemplos de consultas del agente (realizadas de forma autónoma por el LLM):
dataset_search: {"query": "log4j RCE exploitation chain"}
dataset_search: {"query": "SSRF bypass cloud metadata", "category": "bug-bounty"}
dataset_search: {"query": "nuclei template XSS detection"}
dataset_search: {"query": "CVE 2021 44228", "category": "vulnerability"}
Los resultados se limitan a 500 caracteres cada uno. Los caracteres especiales en los ID de CVE (guiones, corchetes) se sanean automáticamente.
airecon start # start TUI
airecon start --session <session_id> # resume session
Ejemplos de prompts:
# Full pipeline
full recon on example.com
pentest https://api.example.com
# Specific tasks
find subdomains of example.com
scan ports on 10.0.0.1
check for XSS on https://example.com/search
test SQL injection on https://example.com/api/login parameter: username
run schemathesis on https://example.com/openapi.json
# Authenticated testing
login to https://example.com/login with [email protected] / password123 then test for IDOR
test https://app.example.com with TOTP: JBSWY3DPEHPK3PXP
# Multi-agent
spawn an XSS specialist on https://example.com/search
run parallel recon on: example.com, sub.example.com, api.example.com
# Caido
replay request #1234 with a modified Authorization header
use Caido to fuzz the username parameter in request #45 with §FUZZ§ markers
workspace/<target>/
├── command/ # system-managed logs
├── output/ # Raw tool outputs (nmap, httpx, nuclei, subfinder, ...)
├── tools/ # AI-generated exploit scripts (.py, .sh)
└── vulnerabilities/ # Verified vulnerability reports (.md)
Las sesiones se persisten en ~/.airecon/sessions/<session_id>.json — subdominios, puertos, tecnologías, URLs, vulnerabilidades (deduplicación Jaccard), tokens de autenticación y fases completadas.
OOM de Ollama / página de error HTML — Más común en sesiones largas o con modelos grandes cerca de los límites de VRAM.
sudo systemctl restart ollama
{ "ollama_num_ctx": 32768, "ollama_num_ctx_small": 16384, "ollama_num_predict": 8192 }
Bucles/estancamientos del agente — Normalmente es un fallo de razonamiento. Prueba con un modelo más grande o reduce ollama_temperature a < 0.2.
El sandbox Docker no se inicia:
docker build -t airecon-sandbox airecon/containers/kali/
Conexión rechazada con Caido — Caido debe estar en ejecución antes que AIRecon. Valor por defecto: 127.0.0.1:48080.
PATH no encontrado después de la instalación:
export PATH="$HOME/.local/bin:$PATH" && source ~/.zshrc
Las issues y las PRs son bienvenidas. Si reportas un error, incluye logs, configuración y los pasos mínimos para reproducirlo.
AIRecon es solo para pruebas de seguridad autorizadas. Obtén siempre permiso explícito y cumple las leyes aplicables y el alcance del programa.
Consulta LICENSE.
| Característica | AIRecon | Agentes basados en la nube |
|---|
| Requiere claves API | No | Sí |
| Datos del objetivo enviados a la nube | No | Sí |
| Funciona sin conexión | Sí | No |
| Integración con Caido | Nativa | Ninguna |
| Reanudación de sesión | Sí | Varía |
| Base de conocimiento local | ~1.09M registros | Ninguna |
| Modelo | Pull | VRAM | Notas |
|---|
| Qwen3.5 122B | ollama pull qwen3.5:122b | 48+ GB | Mejor calidad, más fiable |
| Qwen3.5 35B | ollama pull qwen3.5:35b | 20 GB | Recomendado para la mayoría de los usuarios |
| Qwen3.5 35b | ollama pull qwen3.5:35b-a3b | 16 GB | MoE — menor VRAM |
| Qwen3.5 9B | ollama pull qwen3.5:9b | 6 GB | Mínimo viable — espera errores frecuentes |
| GPU de Colab | VRAM | Modelo disponible | Plan |
|---|
| T4 | 15 GB | qwen3.5:9b | Gratuito |
| L4 | 22 GB | qwen3.5:35b-a3b (MoE) | Pro |
| A100 | 40 GB | qwen3.5:35b | Pro+ |
| H100 | 80 GB | qwen3.5:122b | Pro+ |
| Clave | Valor por defecto | Notas |
|---|
ollama_temperature | 0.15 | Mantén 0.1–0.2. Los valores más altos causan alucinaciones. |
ollama_num_ctx | 131072 | Redúcela a 32768 si la VRAM es limitada. |
ollama_keep_alive | "60m" | Cuánto tiempo mantener el modelo en VRAM. |
deep_recon_autostart | true | Las entradas de dominio simples se expanden automáticamente a un reconocimiento completo. |
allow_destructive_testing | false | Desbloquea modos agresivos (confirmación de SQLi, cadenas RCE). |
command_timeout | 900.0 | Máximo de segundos por comando shell en Docker. |
vuln_similarity_threshold | 0.7 | Umbral de deduplicación Jaccard para vulnerabilidades. |
| Conjunto de datos | Registros | Contenido |
|---|
| Pentest Agent (ChatML) | 322,433 | Flujos de trabajo de explotación basados en CVEs (MITRE/NVD/ExploitDB) |
| CTF SaTML 2024 | 190,657 | Datos reales de interacción CTF de ataque/defensa |
| CTF Instruct | 141,182 | Pwn, web, cripto, forense, ingeniería inversa |
| Cybersecurity CVE | 124,732 | Análisis de CVEs, CVSS, contexto de explotación |
| SQL Injection Q&A | 50,632 | SQLi conversacional — detección, bypass, explotación |
| Cybersecurity Fenrir | 83,918 | Pares de instrucciones de ataque/defensa |
| Red Team Offensive | 78,430 | Movimiento lateral, escalada de privilegios, evasión |
| Cybersecurity Q&A | 53,199 | Conocimiento amplio de seguridad |
| StackExchange RE | 20,641 | Análisis de binarios, desensamblado, depuración, malware |
| Nuclei Templates | 23,180 | Generación de plantillas YAML de Nuclei |
| NVD Security Instructions | 2,063 | Análisis estructurado de CVEs con severidad y remediación |
| APT Privilege Escalation | 1,000 | Técnicas de escalada de privilegios (priv esc) en Linux con tácticas APT |
| Bug Bounty & Pentest | 146 | Payloads, métodos de bypass, plantillas de informes |