Nicholas-Kloster/VisorRAG
GitHub: Nicholas-Kloster/VisorRAG
一个由 RAG 加持的 LLM 智能侦察代理,在 gVisor 沙箱中安全执行基础设施发现、AI/ML 指纹识别和漏洞关联匹配。
Stars: 1 | Forks: 0
[](https://claude.ai/code)
VisorRAG
由基于 RAG 的 LLM 驱动的智能侦察 · 每次探测均在 gVisor 沙箱中运行
## 它是什么 VisorRAG 是一个由 LLM 驱动的安全侦察智能体,它打通了发现与记忆之间的闭环。核心循环是 **检索 → 思考 → 行动 → 观察**:在每次 LLM 轮次之前,RAG 引擎会按来源(Web、云、API、AI/ML)提取得分最高的 playbook 文本块,以及针对确切目标的最近 6 个已确认发现——因此模型是基于经验事实进行推理,而非过时的假设。工具观察结果会被向量化并在运行期间持久化,这意味着第二次扫描不会从零开始。该智能体会查看其已确认的内容,跳过冗余探测,并寻找差异变化。 每次探测都在 gVisor OCI 捆绑包内运行:只读 rootfs、单一 capability(用于原始套接字的 CAP\_NET\_RAW)、显式的命名空间隔离以及 512 MB 的内存上限。智能体进程——持有 API 密钥、决策状态和完整的 RAG 记忆——绝不会与探测执行共享进程边界。这不是容器级别的隔离;gVisor 直接拦截系统调用,因此即使是受到破坏的探测二进制文件也无法触及宿主机。 该工具集经过精心精简,由 NuClide 编写。VisorGraph 在单次传递中映射基础设施来源(CT 日志、HTTP、TLS、暴露分类)。aimap 对 36 种 AI/ML 服务进行指纹识别——包括 Ollama、vLLM、ChromaDB、Qdrant、MLflow——直接针对它们实际运行的确切端口。menlohunt 执行特定于 GCP 的攻击面探测:用于提取项目 ID 泄露信息的 cert SAN 提取、元数据 API、GCS 发现。BARE 接收任何发现,并对 3,904 个 Metasploit 模块进行语义搜索,从而对漏洞利用相关性进行排名。当 Nuclei 和 osv-scanner 的依赖项存在时,它们会有条件地注册。通用扫描器(httpx、naabu、asnmap)已被定义,但不在默认注册表中——七次实际运行表明,它们会遇到认证墙、缺失模板目录和预设拒绝等问题,而量身定制的工具在设计上巧妙避开了这些情况。 系统提示词明确强制要求工具纪律:LLM 会被明确告知,playbook 文本可能会引用其 function-calling 规范中不存在的工具,并且它绝对不能仅为在 markdown 中看到的名称捏造调用。Schema 类型推断(number 与 string)使得相同的工具定义能够跨严格限制的提供商(如 Groq)正常工作,而无需手动调整 schema。`--manual` 模式通过交互式 y/n 提示来控制每次调用;拒绝会转化为模型可见的否定信号,从而引导其寻找其他路径。`--cortex` 增加了一个侦察后处理阶段,针对观察到的攻击面生成一份正式的授权上下文工件。 ## 架构 ``` visor CLI └── agent (ReAct loop, Anthropic / OpenAI) ├── rag (chromem-go) │ ├── playbooks/ — embedded markdown (ai-ml, api, cloud, web) │ └── findings/ — persistent observations, namespaced by embedder ├── tools │ ├── visorgraph — seed-polymorphic recon graph │ └── aimap — 36-service AI/ML fingerprinter └── sandbox (gVisor runsc) └── every tool call runs in an OCI bundle ``` ## 环境要求 - Go 1.22+ - [gVisor](https://gvisor.dev/docs/user_guide/install/)(`runsc` 位于 `$PATH` 中) - `ANTHROPIC_API_KEY` **或** `OPENAI_API_KEY` - `visorgraph` 和/或 `aimap` 二进制文件位于 `$PATH` 中 Embedding 后端(优先匹配首个条件): | 优先级 | 条件 | 后端 | |---|---|---| | 1 | `VISORRAG_EMBED=ollama` | 位于 `$OLLAMA_HOST` 的 Ollama | | 2 | `VISORRAG_EMBED=openai` | OpenAI `text-embedding-3-small` | | 3 | 已设置 `OPENAI_API_KEY` | OpenAI `text-embedding-3-small` | | 4 | 兜底方案 | Ollama `nomic-embed-text`,位于 localhost:11434 | ## 安装 ``` git clone https://github.com/Nicholas-Kloster/VisorRAG cd VisorRAG go build -o visor ./cmd/visor ``` ## 使用 ``` # 基础运行 — agent 自动决定步骤 visor --target 192.0.2.1 # 限制 ReAct 循环 visor --target example.com --max-steps 8 # 覆盖模型 visor --target 10.0.0.0/24 --model claude-opus-4-7 # Ephemeral 运行 — 不将结果写入磁盘 visor --target 192.0.2.1 --ephemeral # 手动步骤确认 visor --target 192.0.2.1 --manual # 在会话之间保持状态 visor --target 192.0.2.1 --state-dir ~/.visor/sessions/target-1 ``` ## Playbooks 在构建时嵌入并在启动时加载到 RAG 索引中的 Markdown 文档。智能体在每次 ReAct 步骤之前检索相关文本块。 | Playbook | 覆盖范围 | |---|---| | `ai-ml.md` | AI/ML 基础设施发现、向量数据库、推理端点 | | `api.md` | API 侦察、身份验证绕过、密钥枚举 | | `cloud.md` | 云资产枚举、存储桶发现、元数据端点 | | `web.md` | Web 侦察、Header 分析、JS 机密信息、重定向链 | ## 相关项目 - **[VisorGraph](https://github.com/Nicholas-Kloster/VisorGraph)** — 种子多态侦察图谱引擎(作为默认工具使用) - **[aimap](https://github.com/Nicholas-Kloster/aimap)** — AI/ML 基础设施深度枚举器(作为默认工具使用) - **[JAXEN](https://github.com/Nicholas-Kloster/JAXEN)** — 由 Shodan 驱动的侦察平台,向 VisorRAG 提供目标数据 - **[BARE](https://github.com/Nicholas-Kloster/BARE)** — 针对 Metasploit 语料库的语义漏洞利用匹配 ## 许可证 MIT标签:Agentic Recon, aimap, AI/ML服务发现, AI风险缓解, ASM, BARE, CAP_NET_RAW, ChromaDB, CT日志分析, EVTX分析, GCP安全, GitHub, Google, Google Cloud, gVisor沙箱, LLM评估, LLM驱动, Menlo-hunt, MLflow, Nuclei, OCI Bundle, Ollama, OSV-Scan, Petitpotam, Qdrant, RAG检索增强生成, TLS证书分析, VisorGraph, vLLM, Web截图, 侦察工具, 向量数据库, 命名空间隔离, 基础设施发现, 大语言模型应用, 安全代理, 安全工具开发, 安全测试, 实时处理, 容器安全, 密码管理, 插件系统, 攻击性安全, 日志审计, 暴露面分类, 沙箱隔离, 系统调用拦截, 网络安全, 能力隔离, 自动化侦察, 语义搜索, 请求响应过滤, 资产指纹识别, 隐私保护