
AIRecon — это автономный агент кибербезопасности, который сочетает самостоятельно размещаемую большую языковую модель (Ollama) с Docker-песочницей Kali Linux и TUI-интерфейсом Textual. Он предназначен для автоматизации оценки защищённости, тестирования на проникновение и разведки для программ bug bounty — без каких-либо API-ключей и облачной зависимости.
AIRecon — это автономный агент тестирования на проникновение, который сочетает локально размещённую Ollama LLM с Docker-песочницей Kali Linux, нативной интеграцией прокси Caido, структурированным пайплайном RECON → ANALYSIS → EXPLOIT → REPORT и Textual TUI в реальном времени — полностью офлайн, без необходимости в API-ключах.

Коммерческие API-модели (OpenAI GPT-4, Claude, Gemini) становятся непозволительно дорогими для рекурсивных автономных сценариев разведки, которые могут требовать тысяч вызовов LLM за сеанс.
AIRecon создан на 100% для локальной, приватной работы.
§FUZZ§), findings, scope.dataset_search перед попыткой применить незнакомые техники — обосновывая свои решения реальными проиндексированными данными.RECON → ANALYSIS → EXPLOIT → REPORT
Каждая фаза имеет конкретные цели, рекомендуемые инструменты и автоматические критерии перехода. Соблюдение фаз — мягкое: агент направляется, но никогда не блокируется. Контрольные точки выполняются каждые 5 (оценка фазы), 10 (самооценка) и 15 (сжатие контекста) итераций.
AIRecon не выполняет тонкую настройку LLM. Его «обучение» — это локальная структурированная телеметрия, которая направляет выбор инструментов и позволяет избегать повторения неудачных путей.
Локальное хранение (всё на диске, без облака):
~/.airecon/memory/airecon.db, хранящая сеансы, находки, паттерны, разведданные о целях, использование инструментов, производительность моделей, использование навыков и обнаруженные цепочки атак.~/.airecon/learning/global_learning.json (статистика производительности инструментов, паттерны стратегий, журнал наблюдений, сжатые выводы).~/.airecon/memory/by_target/, если сохранение включено; содержат конечные точки, уязвимости, обходы WAF, чувствительные параметры и конечные точки аутентификации.workspace/<target>/payload_memory.json при сохранении сеанса.Как это влияет на поведение:
AIRecon требует модель с расширенным мышлением (блоки <think>) и надёжными возможностями вызова инструментов. Возможности автоматически определяются через метаданные ollama show.
⚠️ Поддержка вызова инструментов ОБЯЗАТЕЛЬНА. Модель должна поддерживать нативные вызовы функций/инструментов. Модели без этой возможности не смогут выполнять никакие инструменты (http_observe, execute, browser actions и т.д.), что сделает AIRecon полностью неработоспособным.
Рекомендуемый минимум: 8B–9B параметров. Модели меньше 8B технически работоспособны, но настоятельно не рекомендуются — они часто галлюцинируют вывод инструментов, выдумывают CVE, игнорируют правила скоупа и генерируют ненадёжные вызовы инструментов.
Рекомендации по размеру модели:
Известные проблемы: DeepSeek R1 генерирует неполные вызовы функций. Модели < 8B не имеют надёжной поддержки вызова инструментов.
Если у вас нет GPU или объём локальной VRAM ниже минимального, вы можете запустить Ollama на бесплатном GPU T4 в Google Colab и подключить AIRecon через публичный туннель.
Как это работает:
Google Colab GPU Your Local Machine
┌─────────────────────────┐ ┌──────────────────────────┐
│ Ollama (qwen3.5:9b) │◄────────►│ AIRecon TUI │
│ cloudflared tunnel │ HTTPS │ ollama_url: tunnel URL │
└─────────────────────────┘ └──────────────────────────┘
Шаги:
~/.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 Colab → доступность моделей:
Ограничения:
qwen3.5:9b — минимально рабочая конфигурация: ожидайте более медленных ответов и большего числа ошибок вызова инструментов, чем у локальной модели 35B+scripts/airecon_colab.ipynb, если вы хотите запускать его самостоятельно или изменитьПредварительные требования: Python 3.12+, Docker 20.10+, Ollama (запущен), git, curl
curl -fsSL https://raw.githubusercontent.com/pikpikcu/airecon/refs/heads/main/scripts/install.sh | bash
Скрипт автоматически определяет удалённый или локальный режим, устанавливает Poetry при отсутствии (через официальный установщик — без конфликтов с системными пакетами), собирает wheel и устанавливает в ~/.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
Файл конфигурации: ~/.airecon/config.yaml (автоматически создаётся при первом запуске). AIRecon создаст ~/.airecon/, если его нет, в том числе при использовании пользовательского пути ~.
# ======================================
# 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 (LAN-сервер или туннель 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 может подключаться к внешним MCP-серверам и динамически предоставлять их инструменты как инструменты mcp_<server>.
Файл конфигурации: ~/.airecon/mcp.json
Пример конфигурации:
{
"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"
}
}
}
}
Использование инструментов MCP в чате:
mcp_<server>list_tools, search_tools, call_toolПример:
{"name": "mcp_acme", "arguments": {"action": "list_tools"}}
airecon-dataset — опциональный компонент, который загружает наборы данных по безопасности с HuggingFace и индексирует их локально в базы SQLite FTS5. После установки LLM запрашивает их автономно через инструмент dataset_search.
Как это работает: dataset_search — стандартный инструмент агента в tools.json. LLM сама решает, когда его вызывать — AIRecon не запускает его автоматически. Системный промпт предписывает агенту обращаться к базе знаний перед попыткой применить незнакомые техники.
git clone https://github.com/pikpikcu/airecon-dataset.git
cd airecon-dataset && python install.py
Включённые наборы данных (всего ~1,09 млн записей, 100% офлайн):
Примеры запросов агента (вызываются 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"}
Результаты ограничены 500 символами каждый. Специальные символы в CVE ID (дефисы, квадратные скобки) автоматически очищаются.
airecon start # start TUI
airecon start --session <session_id> # resume session
Примеры промптов:
# 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)
Сеансы сохраняются в ~/.airecon/sessions/<session_id>.json — поддомены, порты, технологии, URL, уязвимости (дедупликация по Жаккару), токены аутентификации и завершённые фазы.
Ollama OOM / HTML-страница ошибки — чаще всего возникает при длительных сеансах или больших моделях, близких к лимиту VRAM.
sudo systemctl restart ollama
{ "ollama_num_ctx": 32768, "ollama_num_ctx_small": 16384, "ollama_num_predict": 8192 }
Зацикливание/зависание агента — обычно следствие сбоя рассуждений. Попробуйте модель побольше или уменьшите ollama_temperature до < 0.2.
Docker-песочница не запускается:
docker build -t airecon-sandbox airecon/containers/kali/
Отказ в подключении к Caido — Caido должен быть запущен до AIRecon. По умолчанию: 127.0.0.1:48080.
PATH не найден после установки:
export PATH="$HOME/.local/bin:$PATH" && source ~/.zshrc
Приветствуются Issues и PR. Если вы сообщаете об ошибке, приложите логи, конфигурацию и минимальные шаги для воспроизведения.
AIRecon предназначен только для авторизованного тестирования безопасности. Всегда получайте явное разрешение и соблюдайте применимые законы и правила программы.
См. LICENSE.
| Возможность | AIRecon | Облачные агенты |
|---|
| Требуются API-ключи | Нет | Да |
| Данные цели отправляются в облако | Нет | Да |
| Работает офлайн | Да | Нет |
| Интеграция Caido | Встроенная | Отсутствует |
| Возобновление сеанса | Да | Зависит от реализации |
| Локальная база знаний | ~1,09 млн записей | Отсутствует |
| Модель | Команда | VRAM | Примечания |
|---|
| Qwen3.5 122B | ollama pull qwen3.5:122b | 48+ GB | Лучшее качество, максимальная надёжность |
| Qwen3.5 35B | ollama pull qwen3.5:35b | 20 GB | Рекомендуется большинству пользователей |
| Qwen3.5 35b | ollama pull qwen3.5:35b-a3b | 16 GB | MoE — меньше VRAM |
| Qwen3.5 9B | ollama pull qwen3.5:9b | 6 GB | Минимально рабочая — ожидайте частых ошибок |
| GPU Colab | VRAM | Доступная модель | Тариф |
|---|
| T4 | 15 GB | qwen3.5:9b | Бесплатно |
| L4 | 22 GB | qwen3.5:35b-a3b (MoE) | Pro |
| A100 | 40 GB | qwen3.5:35b | Pro+ |
| H100 | 80 GB | qwen3.5:122b | Pro+ |
| Ключ | По умолчанию | Примечания |
|---|
ollama_temperature | 0.15 | Держите 0.1–0.2. Более высокие значения вызывают галлюцинации. |
ollama_num_ctx | 131072 | Уменьшите до 32768, если VRAM ограничена. |
ollama_keep_alive | "60m" | Как долго удерживать модель в VRAM. |
deep_recon_autostart | true | Ввод «голого» домена автоматически расширяется до полной разведки. |
allow_destructive_testing | false | Открывает агрессивные режимы (подтверждение SQLi, цепочки RCE). |
command_timeout | 900.0 | Максимальное количество секунд на каждую shell-команду в Docker. |
vuln_similarity_threshold | 0.7 | Порог дедупликации уязвимостей по Жаккару. |
| Набор данных | Записей | Содержимое |
|---|
| Pentest Agent (ChatML) | 322,433 | Сценарии эксплуатации на основе CVE (MITRE/NVD/ExploitDB) |
| CTF SaTML 2024 | 190,657 | Реальные данные взаимодействия attack/defense CTF |
| CTF Instruct | 141,182 | Pwn, web, крипто, форензика, реверс-инжиниринг |
| Cybersecurity CVE | 124,732 | Анализ CVE, CVSS, контекст эксплуатации |
| SQL Injection Q&A | 50,632 | Диалоговый SQLi — обнаружение, обход, эксплуатация |
| Cybersecurity Fenrir | 83,918 | Пары инструкций атака/защита |
| Red Team Offensive | 78,430 | Горизонтальное перемещение, повышение привилегий, обход защит |
| Cybersecurity Q&A | 53,199 | Общие знания по безопасности |
| StackExchange RE | 20,641 | Анализ бинарных файлов, дизассемблирование, отладка, вредоносное ПО |
| Nuclei Templates | 23,180 | Генерация YAML-шаблонов nuclei |
| NVD Security Instructions | 2,063 | Структурированный анализ CVE с серьёзностью и мерами устранения |
| APT Privilege Escalation | 1,000 | Техники повышения привилегий в Linux с тактиками APT |
| Bug Bounty & Pentest | 146 | Полезные нагрузки, методы обхода, шаблоны отчётов |