dokotela021/intellirecon-console
GitHub: dokotela021/intellirecon-console
浏览器原生的 AI 驱动安全侦察控制台,通过 Claude agent 统一调度 MCP 安全工具与共享 shell 终端,实现跨会话的持久化侦察知识管理。
Stars: 1 | Forks: 0
# IntelliRecon
[](https://github.com/dokotela021/intellirecon-console)
[](#)
[](#)
[](#)
[](#)
[](#)
[](#)
**一个浏览器原生的 AI 侦察控制台。** 一个浏览器内终端和一个驱动 MCP 安全工具的 Claude agent,共享同一个 shell 会话 —— 位于一个轻量级 Node 后端之上。
灵感来自 hexstrike-ai 和 xalgorix。
IntelliRecon 是一个项目,包含三个部分,均位于此 repo 下:
- **`engine/`** — 基于 MCP 的安全工具模型,通过 stdio 向 agent 暴露 150+ 个工具。
- **`scanner/`** — Go CLI/TUI/webui 扫描器;其 Geist/Vercel-dark 设计系统(React + Vite + Tailwind v4)是控制台 UI 的构建基础,并带有翠绿色的“侦察”强调色。
- **RLearning / 自动化渗透测试** — agent 的姿态:范围界定 → 枚举 → 探测 → 验证,仅报告其能证明的发现。
## IntelliRecon 的增量功能
这不是三个独立工具的并列组合 —— 融合才是核心:
- **一个 agent,双工具界面。** 单个基于 Claude 的循环可在同一轮对话中跨 engine 的 150+ 安全工具 *和* 共享 shell 进行规划,而无需在扫描器 CLI 和单独的工具运行器之间切换上下文。
- **终端交接。** 每次运行都会在 `intellirecon-runs/` 下写入一个 `HANDOFF.md` + 结构化的 `run.json`,因此在嵌入终端中启动的 `claude` (Claude Code) 会话会准确接替 agent 停止的地方 —— 相同的 cwd,相同的发现,无需重新解释目标。
- **持久的跨会话知识库。** 发现、endpoint、角色和身份验证笔记按目标持久化存储在 SQLite (`server/db.mjs`) 中,并且可被 9 种侦察视角模式中的任何一种查询,而不是每次工具运行都从零开始。
- **两个可互换的 LLM 后端。** 将 `ANTHROPIC_API_KEY` 直接指向 Anthropic,或将 `ANTHROPIC_BASE_URL`/`ANTHROPIC_AUTH_TOKEN` 指向 OpenRouter(或任何兼容 Anthropic 的网关) —— 相同的 agent 循环,无需更改代码。
- **统一的 UI。** 控制台、终端、发现、知识库和工具活动都位于一个单一的设计系统中,而不是三个外观和感觉各不相同且生硬拼凑在一起的工具。
所有智能操作都在浏览器 + Claude 中运行。后端是一个**单文件** (`server/server.mjs`),它只做浏览器在物理上无法做到的两件事:生成 shell 和持有 API key。
```
┌──────────────────── browser (all UI state) ────────────────────┐
│ Agent chat (Claude) │ xterm.js terminal │ MCP tool feed │
└───────────┬───────────────────┬───────────────────┬────────────┘
WS /agent WS /pty (same shell)
│ │
┌───────────▼────────────────────▼───────────────────────────────┐
│ server.mjs — Claude agent loop · PTY bridge · MCP client │
│ (thin, ~1 file) │
└───────────┬─────────────────────────────────────────────────────┘
│ stdio
MCP servers (engine, …) + local shell tools (nmap, ffuf, …)
```
## 快速开始
```
cd intellirecon
npm install # builds node-pty natively (needs gcc/make)
export ANTHROPIC_API_KEY=sk-ant-... # required for the agent
# 开发(Vite 运行在 :5173,backend 运行在 :8899,hot reload):
npm run dev
# → 打开 http://localhost:5173
# 或者单个 production 进程(backend 在 :8899 上提供已构建的 UI):
npm run serve
# → 打开 http://localhost:8899
```
如果未设置 `ANTHROPIC_API_KEY`,终端和 UI 仍然可以工作;agent 面板会显示横幅,直到您设置它并重新启动。
## 使用说明
1. 打开 **控制台**。左侧面板是 Claude agent;右侧是基于共享 MCP 工具流的实时终端。
2. 输入目标/任务,例如 *“对 scanme.nmap.org 进行侦察 —— 从 nmap 服务扫描开始。”*
3. agent 会进行规划、调用工具(用于本地 CLI 工具的 `run_command`,以及任何 MCP 工具)、读取输出并进行迭代。它运行的命令会回显到您的终端中 —— 您和 agent 共享一个 shell 和一个工作目录。
4. 对于基于 IP/CIDR 的发现(云范围、ASN 块)而不是 DNS 枚举,agent 可以通过 `run_command` 调用 [CloudRecon](https://github.com/g0ldencybersec/CloudRecon) (`go install github.com/g0ldencybersec/CloudRecon@latest`) —— 它会直接从这些 IP 上提供服务的 TLS 证书中提取主机名。其输出会被合并到每次运行的 `subdomains.txt` 中,而无需事先知道 apex 域名。
5. 验证后的问题会出现在 **发现** 面板上(可导出为 JSON)。已连接的工具列在 **MCP 工具** 下。
## Agent 模式
Agent 面板标题中的下拉菜单可在 9 种专门的 bug bounty 侦察视角(定义在 `server/agents.mjs` 中)以及不受限制的默认模式之间切换单个 agent 循环:
| 模式 | 侧重点 |
|------|-------|
| 通用侦察 | 不受限 —— 范围界定、枚举、探测、验证(默认)。 |
| JavaScript 侦察 | 爬取 JS 资产,提取 endpoint/secrets/routes,构建应用地图。 |
| API 映射 | 将发现的 endpoint 转换为完整的规格;对比它们以发现身份验证/校验不一致之处。 |
| 浏览器分析 | 客户端行为 —— DOM、存储、隐藏功能、网络触发器。 |
| 业务逻辑审查 | 记录多步骤工作流;标记可能未在服务端强制执行的步骤。 |
| 会话与 Token 分析 | JWT、session cookie、refresh/CSRF token —— 生命周期、轮换、claims、cookie 属性。 |
| 密码重置审查 | 请求 → 邮件 → token → 重置流程:过期、一次性使用、绑定。 |
| 授权分析 | 映射角色,对比每个角色的 endpoint 访问权限,暴露偏差/不一致之处。 |
| Burp Suite 集成 | 将 Burp site-map/proxy-history 导出(或已连接的 Burp MCP server)提取到知识库中。 |
| 报告 | 无新侦察 —— 将已验证的发现 + 知识库组装成可提交的报告。 |
一个模式就是一份系统提示简报加上一组精心挑选的知识库 *record* 工具(见下文) —— `run_command`、`report_finding` 和每个已连接的 MCP 工具在每种模式下都保持可用,因为真实的侦察输出很少会遵守整齐的类别边界。
## 知识库
每种模式都会读写同一个持久的、针对目标的 SQLite 存储 (`server/db.mjs`),而不是每次会话都重新进行侦察:JS 资产、API endpoint、角色、角色↔endpoint 访问权限、auth token 配置、业务流程、第三方源、客户端观察记录和自由格式笔记。任何模式都可以在开始工作前调用 `query_knowledge_base` 来查看为某个目标记录的所有内容。
在 **知识库** 页面上浏览它(按目标,按类别分选项卡),或通过 `GET /api/kb?target=` 和 `GET /api/kb/targets` 浏览。
## 配置
- **模型** —— 默认为 `claude-opus-4-8`。使用 `INTELLIRECON_MODEL` 覆盖(例如 `claude-sonnet-5` 以获得更快/更便宜的循环)。
- **MCP server** —— 编辑 `mcp.config.json`。每个条目都通过 stdio 启动;失败不是致命的。要接入捆绑的 engine 工具,请启动其 API server (`engine/intellirecon_server.py`),然后翻转 `enabled: true`:
{
"mcpServers": {
"engine": {
"enabled": true,
"command": "./engine/intellirecon-env/bin/python",
"args": ["./engine/intellirecon_mcp.py", "--server", "http://127.0.0.1:8888"]
}
}
}
- **MCP 调用超时** —— 全局默认值 `INTELLIRECON_MCP_TIMEOUT_MS` (`300000`,即 5 分钟),覆盖 MCP SDK 的 60 秒默认值。在 `mcp.config.json` 中每个 server 的 `toolTimeouts` 下设置**每个工具**的上限(值以**秒**为单位;`default` 覆盖整个 server,命名条目会覆盖它)—— 像 `amass_scan` 这样长时间运行的枚举器需要更多时间(附带配置给了它 30 分钟)。上限是一个限制额度,而不是等待时间:工具在完成的那一刻就会返回,因此慷慨的限制成本很低,并且操作员可以随时点击 **Stop** 提前取消调用。如果调用仍然达到其上限,扫描可能会继续在 MCP server 上运行 —— 此时 agent 会被指示缩小范围,而不是重放同样的重型调用。
- **端口** —— `PORT`(默认 `8899`)。**Shell** —— `SHELL`。**启动目录** —— `INTELLIRECON_CWD`。
## 端口与 endpoint
| 路径 | 用途 |
|------|------|
| `GET /api/health` | 模型、key 状态、MCP 工具计数 |
| `GET /api/agent-modes` | 9 种侦察视角 + 默认模式,用于模式下拉菜单 |
| `GET /api/kb?target=` | 单个目标的完整知识库 |
| `GET /api/kb/targets` | 具有知识库条目的所有目标 |
| `WS /pty` | 终端 ↔ node-pty(上行 JSON 控制帧,下行原始输出) |
| `WS /agent` | Claude agent(流式传输 delta、工具调用、发现、`set_mode`) |
## 安全性
IntelliRecon 适用于**已授权**的安全测试、bug bounty 和 CTF 工作。agent 会在您的机器上针对您提供的目标运行真实命令 —— 请仅将其指向您有权测试的系统。
## 技术栈
React 18 · Vite 5 · Tailwind v4 · xterm.js · Node (ws + node-pty) · `@anthropic-ai/sdk` · `@modelcontextprotocol/sdk`。
标签:AI智能体, EVTX分析, Go, MITM代理, React, Ruby工具, Syscalls, 侦察工具, 实时处理, 密码管理, 日志审计, 逆向工具