
AIRecon は、セルフホストの Ollama LLM と Kali Linux Docker サンドボックス、ネイティブの Caido プロキシ統合、構造化された RECON → ANALYSIS → EXPLOIT → REPORT パイプライン、リアルタイムの Textual TUI を組み合わせた自律型ペネトレーションテストエージェントです。完全にオフラインで動作し、API キーは不要です。

商用の API ベースモデル(OpenAI GPT-4、Claude、Gemini)は、セッションごとに数千回の LLM 呼び出しを必要とする再帰的な自律型 recon(偵察)ワークフローでは、法外なコストがかかります。
AIRecon は 100% ローカル・プライベート運用のために設計されています。
§FUZZ§)、findings(検出結果)、scope(スコープ)。dataset_search を自律的に呼び出し、実際にインデックス化されたデータに基づいて判断を下します。RECON → ANALYSIS → EXPLOIT → REPORT
各フェーズには、具体的な目標、推奨ツール、自動遷移基準があります。フェーズの強制はソフトです — エージェントは誘導されますが、ブロックされることはありません。チェックポイントは 5 イテレーションごと(フェーズ評価)、10 イテレーションごと(自己評価)、15 イテレーションごと(コンテキスト圧縮)に実行されます。
AIRecon は LLM をファインチューニングしません。その「学習」は、ツール選択を導き、失敗した経路の繰り返しを避けるための、ローカルで構造化されたテレメトリです。
ローカル永続化(すべてディスク上、クラウドなし):
~/.airecon/memory/airecon.db の SQLite メモリ DB。セッション、検出結果、パターン、対象インテル、ツール使用状況、モデルパフォーマンス、スキル使用状況、攻撃チェーン発見を保存します。~/.airecon/learning/global_learning.json の適応型学習状態(ツールパフォーマンス統計、戦略パターン、観察ログ、蒸留された洞察)。~/.airecon/memory/by_target/ 以下に対象ごとのメモリファイル(エンドポイント、脆弱性、WAF バイパス、機密パラメータ、認証エンドポイントを含む)。workspace/<target>/payload_memory.json に保存できます。動作への影響:
AIRecon には、拡張思考(<think> ブロック)と信頼性の高いツール呼び出し機能を備えたモデルが必要です。機能は ollama show メタデータによって自動検出されます。
⚠️ ツール呼び出しのサポートは必須です。 モデルはネイティブの関数/ツール呼び出しをサポートしている必要があります。この機能がないモデルは、ツール(http_observe、execute、ブラウザ操作など)を一切実行できず、AIRecon は完全に機能しません。
推奨最小: 8B〜9B パラメータ。 8B 未満のモデルは技術的には使用可能ですが、強く推奨されません — ツール出力の幻覚、CVE の捏造、スコープルールの無視、信頼性の低いツール呼び出しを頻繁に発生させます。
モデルサイズの目安:
既知の問題: DeepSeek R1 は不完全な関数呼び出しを生成します。8B 未満のモデルは信頼性の高いツール呼び出しをサポートしていません。
GPU がない場合や、ローカルの VRAM が最小要件を下回る場合は、無料の Google Colab T4 GPU で Ollama を実行し、パブリックトンネル経由で 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 startColab GPU → 利用可能なモデル:
制限事項:
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
含まれるデータセット(合計約 109 万件、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、脆弱性(Jaccard 重複排除)、認証トークン、完了済みフェーズ。
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
Issue と PR は歓迎します。バグを報告する場合は、ログ、設定、再現手順を最小限含めてください。
AIRecon は承認されたセキュリティテスト専用です。常に明示的な許可を取得し、適用される法律とプログラムのスコープに従ってください。
LICENSE を参照してください。
| 機能 | AIRecon | クラウドベースエージェント |
|---|
| API キーが必要 | いいえ | あり |
| 対象データがクラウドに送信される | いいえ | あり |
| オフラインで動作 | はい | いいえ |
| Caido 統合 | ネイティブ | なし |
| セッション再開 | はい | さまざま |
| ローカル知識ベース | 約 109 万件 | なし |
| モデル | Pull | 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 | 最小構成 — 頻繁なエラーが発生する可能性あり |
| Colab GPU | 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 | VRAM が限られている場合は 32768 に減らしてください。 |
ollama_keep_alive | "60m" | モデルを VRAM に保持する時間。 |
deep_recon_autostart | true | ベアドメイン入力が自動的に完全な recon に拡張されます。 |
allow_destructive_testing | false | 攻撃的なモードを有効化(SQLi の確認、RCE チェーン)。 |
command_timeout | 900.0 | Docker 内のシェルコマンドあたりの最大秒数。 |
vuln_similarity_threshold | 0.7 | 脆弱性の Jaccard 重複排除しきい値。 |
| データセット | レコード数 | 内容 |
|---|
| Pentest Agent (ChatML) | 322,433 | CVE ベースの悪用ワークフロー(MITRE/NVD/ExploitDB) |
| CTF SaTML 2024 | 190,657 | 実際の攻撃/防御 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 | Nuclei YAML テンプレート生成 |
| NVD Security Instructions | 2,063 | 深刻度と修復策を含む構造化 CVE 分析 |
| APT Privilege Escalation | 1,000 | APT 戦術を伴う Linux 権限昇格テクニック |
| Bug Bounty & Pentest | 146 | ペイロード、バイパス手法、レポートテンプレート |