usk6666/yorishiro-proxy

GitHub: usk6666/yorishiro-proxy

面向 AI Agent 的 MITM 代理服务器,通过 MCP 协议让 AI 自主完成流量拦截、重放和模糊测试等安全测试任务

Stars: 0 | Forks: 0

Yorishiro Proxy

AI 优先的 MITM 代理工具
面向 AI Agent 的网络代理 —— 通过 MCP 拦截、记录和重放流量。

CI Go Report Card License

日本語

Yorishiro Proxy 作为 [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) 服务器运行,通过十一个 MCP 工具赋予 AI Agent 对代理操作的完全控制权。该工具专为 Claude Code 和其他兼容 MCP 的 Agent 设计,无需手动操作 UI 即可实现自动化安全测试工作流。同时提供内置 Web UI,用于可视化检查和交互式操作。

Web UI - Flows

## 功能特性 - **流量拦截与记录** -- 具备自动 CA 证书管理的 MITM 代理 - **重发器 (Resender)** -- 重放请求,支持 Header/Body/URL 覆盖、JSON 补丁及原始 HTTP 编辑 - **模糊测试器 (Fuzzer)** -- 自动化 Payload 注入,支持顺序/并行模式及异步执行 - **宏 (Macro)** -- 多步请求序列,支持变量提取和模板替换 - **拦截** -- 实时挂起并检查请求/响应,然后释放、修改或丢弃 - **自动转换** -- 针对匹配流量的自动请求/响应修改规则 - **目标范围** -- 双层安全边界(策略层 + Agent 层)以限制可访问的主机 - **多协议** -- HTTP/1.x, HTTPS (MITM), HTTP/2 (h2c/h2), gRPC, WebSocket, Raw TCP, SOCKS5 - **多监听器** -- 在不同端口上同时运行多个代理监听器 - **Flow 导出/导入** -- 支持 JSONL, HAR 1.2 和 cURL 导出格式 - **SOCKS5 监听器** -- 支持可选用户名/密码认证的 SOCKS5 代理,便于 proxychains 集成 - **上游代理** -- 支持通过 HTTP 或 SOCKS5 代理进行链式代理 - **可流式 HTTP MCP (Streamable HTTP MCP)** -- 支持 Bearer Token 认证的多 Agent 共享访问 - **插件系统** -- 使用 [Starlark](https://github.com/google/starlark-go) 脚本扩展代理行为,可挂载到请求/响应管道中 - **Web UI** -- 内置 React/Vite 仪表盘,用于可视化检查和交互式测试 ## 快速开始 ### 1. 获取二进制文件 从 [GitHub Releases](https://github.com/usk6666/yorishiro-proxy/releases) 页面下载预编译的二进制文件,或从源码构建: ``` git clone https://github.com/usk6666/yorishiro-proxy.git cd yorishiro-proxy make build # outputs bin/yorishiro-proxy ``` ### 2. 配置 MCP 添加到你的 MCP 客户端配置中(例如 Claude Code 的 `.mcp.json`): ``` { "mcpServers": { "yorishiro-proxy": { "command": "/path/to/bin/yorishiro-proxy", "args": [] } } } ``` 代理通过 stdin/stdout 作为 MCP 服务器启动。CA 证书会在首次运行时自动生成,并持久化存储到 `~/.yorishiro-proxy/ca/`。 若要同时启用 Web UI: ``` { "mcpServers": { "yorishiro-proxy": { "command": "/path/to/bin/yorishiro-proxy", "args": ["-mcp-http-addr", "127.0.0.1:3000"] } } } ``` 启动时,日志(stderr 或 `-log-file` 指定的文件)会打印包含认证 Token 的访问 URL: ``` WebUI available url=http://127.0.0.1:3000/?token= ``` 在浏览器中打开此 URL。Token 每次启动时自动生成;可使用 `-mcp-http-token` 设置固定值。 ### 3. 首次捕获 MCP 服务器运行后,AI Agent 即可开始捕获流量: ``` 1. Start the proxy -> proxy_start with listen_addr "127.0.0.1:8080" 2. Set HTTP_PROXY -> point your target application at the proxy 3. Install the CA cert -> query ca_cert to get the certificate path 4. Browse / send traffic -> captured flows appear in query flows 5. Inspect & replay -> use resend to replay with modifications ``` ## MCP 工具 所有代理操作均通过十一个 MCP 工具暴露: | 工具 | 用途 | |------|---------| | `proxy_start` | 启动代理监听器,配置捕获范围、TLS 透传、拦截规则、自动转换、TCP 转发及协议设置 | | `proxy_stop` | 优雅关闭一个或所有监听器 | | `configure` | 运行时配置更改(上游代理、捕获范围、TLS 透传、拦截规则、自动转换、连接限制) | | `query` | 统一信息检索:Flow、Flow 详情、消息、代理状态、配置、CA 证书、拦截队列、宏、Fuzz 任务/结果 | | `resend` | 重放已记录的请求,支持变更(Method/URL/Header/Body 覆盖、JSON 补丁、原始字节补丁、Dry-run) | | `fuzz` | 执行模糊测试任务,支持 Payload 集、位置、并发控制及停止条件 | | `macro` | 定义并执行多步宏工作流,支持变量提取、守卫条件及钩子 | | `intercept` | 处理被拦截的请求:释放、修改并转发或丢弃 | | `manage` | 管理 Flow 数据(删除/导出/导入)及 CA 证书重新生成 | | `security` | 配置目标范围规则(策略层 + Agent 层)以限制代理访问范围 | | `plugin` | 在运行时列出、重载、启用和禁用 Starlark 插件 | ## Web UI 当启用可流式 HTTP 模式(`-mcp-http-addr`)时,内置 Web UI 将在同一地址提供服务。 | 页面 | 描述 | |------|-------------| | **Flows** | Flow 列表,支持按协议、方法、状态码和 URL 模式过滤 | | **Dashboard** | Flow 统计概览,提供实时流量摘要 | | **Intercept** | 实时请求/响应拦截,支持内联编辑 | | **Resender** | 重放请求,支持覆盖、JSON 补丁、原始 HTTP 编辑及 Dry-run 预览 | | **Fuzz** | 创建并管理模糊测试任务,包含 Payload 集和结果分析 | | **Macros** | 多步请求工作流,支持变量提取 | | **Security** | 目标范围配置(策略层 + Agent 层),支持 URL 测试 | | **Settings** | 代理控制、TLS 透传、自动转换规则、CA 管理等 | Web UI 通过可流式 HTTP MCP 与后端通信 —— 即 AI Agent 所使用的同一协议。 ## 支持的协议 | 协议 | 检测方式 | 备注 | |----------|-----------|-------| | HTTP/1.x | 自动 | 转发代理模式 | | HTTPS | CONNECT | MITM,支持动态证书签发 | | HTTP/2 | h2c / ALPN | 明文和 TLS 均支持,支持按流显示 | | gRPC | HTTP/2 content-type | 服务/方法提取,支持流式传输,结构化元数据显示 | | WebSocket | HTTP Upgrade | 消息级记录,支持按消息显示 | | Raw TCP | 回退 | 捕获任何未识别的协议,支持 TCP 转发映射 | ## CLI 标志 | 标志 | 环境变量 | 默认值 | 描述 | |------|-------------|---------|-------------| | `-db` | `YP_DB` | `~/.yorishiro-proxy/yorishiro.db` | SQLite 数据库路径或项目名称 | | `-ca-cert` / `-ca-key` | `YP_CA_CERT` / `YP_CA_KEY` | -- | CA 证书和私钥路径 | | `-ca-ephemeral` | `YP_CA_EPHEMERAL` | `false` | 使用临时的内存 CA | | `-insecure` | `YP_INSECURE` | `false` | 跳过上游 TLS 验证 | | `-config` | `YP_CONFIG` | -- | 代理默认值的 JSON 配置文件路径 | | `-log-level` | `YP_LOG_LEVEL` | `info` | 日志级别:debug, info, warn, error | | `-log-format` | `YP_LOG_FORMAT` | `text` | 日志格式:text, json | | `-log-file` | `YP_LOG_FILE` | stderr | 日志输出文件 | | `-mcp-http-addr` | `YP_MCP_HTTP_ADDR` | -- | 可流式 HTTP 监听地址(同时提供 Web UI) | | `-mcp-http-token` | `YP_MCP_HTTP_TOKEN` | 自动生成 | HTTP Bearer 认证 Token | 优先级:CLI 标志 > 环境变量 > 配置文件 > 默认值。 `-db` 标志接受绝对路径、带扩展名的相对路径或纯项目名称。项目名称(例如 `my-project`)会解析为 `~/.yorishiro-proxy/my-project.db`,便于为每次任务维护独立的数据库。 ## 架构 ``` Layer 4 TCP Listener -> Protocol Detection (peek bytes) -> Protocol Handler (HTTP/S, HTTP/2, gRPC, WebSocket, Raw TCP) -> Flow Recording (Request/Response) -> MCP Tool (Intercept / Replay / Search) ``` - 在第 4 层(TCP)接受连接,并路由到模块化协议处理器 - 无外部代理库 —— 基于 Go 标准库构建 - MCP 优先:所有操作均作为 MCP 工具独占暴露 - 内置 Web UI 采用 React/Vite 构建,通过可流式 HTTP 提供服务 ## 文档 - [入门指南](docs/getting-started.md) -- 详细的安装和使用演练 - [插件开发指南](docs/plugins.md) -- 编写 Starlark 插件以扩展代理行为 ## 贡献 欢迎贡献!请先开 Issue 讨论你希望更改的内容。 ## 许可证 根据 Apache License 2.0 授权。详见 [LICENSE](LICENSE)。
标签:CA证书管理, Claude Code, EVTX分析, Go语言, HTTP代理, IP 地址批量处理, MCP服务器, Model Context Protocol, Python工具, Web安全, 中间人攻击, 人工智能原生, 安全测试, 攻击性安全, 数据包篡改, 日志审计, 流量录制与回放, 流量拦截, 程序破解, 网络协议分析, 自动化渗透测试, 蓝队分析, 请求重发