由AI驱动的渗透测试框架,支持黑盒、白盒、灰盒、主机/云及LLM红队模式;通过跨模型投票和工具凭证验证发现结果。
自主、多模型渗透测试框架 —— 基于 Rust,纯 CLI。
作者:Joas A Santos & Red Team Leaders
⭐ 如果这个项目对你有用,请给仓库点个 Star —— 这会带来很大帮助。
📖 第一次来?请阅读完整教程与用户指南 → —— 每种模式、标志、配置和示例都有说明。各版本的变更记录见 RELEASE.md。
NeuroSploit 将一个 URL、源码仓库、运行中的应用或主机/IP 转变为
一次自主安全评估。一个 Rust 编排框架(tokio)驱动一组
LLM —— 通过 API key 或本地订阅(Claude Code / Codex / Gemini /
Grok)—— 对目标进行侦察,智能地只选择与已发现攻击面匹配的智能体,
并行运行它们,将发现串联为更深入的影响,
并在报告之前通过跨模型投票 + 工具凭证锚定来验证每一项声明。
它内置 435 个 markdown 智能体 和一个 Mission Control TUI。
may_assert
门是一条数学上的反幻觉规则(当信念分散时,不要声称可利用)。file:line —— 代码引用就是凭证)用于
白盒 SAST 与技能审计,灰盒两者皆可;未被锚定的声明
会被降级。aws/gcloud/az)。通过 creds.yaml 连接:AWS 密钥、Google
service-account JSON,或 Azure service principal —— 参见
云凭证。这是精简、仅 Rust 的发行版(
neurosploit-rs/+agents_md/)。 更早的 Python 引擎和 Web GUI 位于旧的v3.4.0分支上。
Linux / macOS (x64 & arm64):```bash curl -fsSL https://raw.githubusercontent.com/JoasASantos/NeuroSploit/main/setup.sh | bash
**Windows** (PowerShell, x64 & arm64):```powershell
irm https://raw.githubusercontent.com/JoasASantos/NeuroSploit/main/install.ps1 | iex
| 操作系统 | x64 | arm64 |
|---|---|---|
| Linux(推荐 Kali) | ✅ | ✅ |
| macOS |
纯 Rust + 标准库,因此只要有稳定的 Rust 工具链,就可以在任何地方原生构建。
安装程序会自动检测操作系统/架构,并在缺少时安装 Rust。在原生 Windows 上
使用 install.ps1;在 WSL2 / Git Bash 下,setup.sh 一行命令同样适用。
安装程序会在需要时自动安装 Rust,将仓库克隆到 ~/.neurosploit,
构建 release 二进制,并将 neurosploit 链接到 ~/.local/bin。随时重新运行
以更新。可通过环境变量进行调整:NEUROSPLOIT_REF(分支/标签)、
NEUROSPLOIT_DIR、PREFIX。
更想手动构建?```bash git clone https://github.com/JoasASantos/NeuroSploit && cd NeuroSploit/neurosploit-rs cargo build --release # → target/release/neurosploit
## ⚡ 快速开始(60秒)```bash
# easiest path — just run it; the interactive session asks everything:
neurosploit
# or one-liner (subscription login, no API key needed):
neurosploit run http://testphp.vulnweb.com/ --subscription --model anthropic:claude-opus-4-8 -v
# white-box — review a source repository (SAST agents, file:line evidence):
git clone https://github.com/digininja/DVWA /tmp/DVWA
neurosploit whitebox /tmp/DVWA --subscription --model anthropic:claude-opus-4-8 -v
# grey-box — review the code AND exploit the running app together:
neurosploit greybox /tmp/DVWA --url http://localhost:8080/ --creds creds.yaml \
--subscription --model anthropic:claude-opus-4-8 --mcp -v
# host / infra — Linux / Windows / Active Directory (SSH/Win creds in creds.yaml):
neurosploit host 10.0.0.10 --creds creds.yaml --subscription --model anthropic:claude-opus-4-8 -v
# 🛰 Mission Control TUI — live panels (header/feed/findings/targets) + a composer
# you can type in WHILE the run streams (summary · pause · errors · notes):
neurosploit tui http://testphp.vulnweb.com/ --subscription --model anthropic:claude-opus-4-8 --mcp
每种模式(black/white/grey/host)的完整分步说明见 TUTORIAL.md。
没有登录?改用 API 密钥 即可 — 参见 认证。
一个用于同一 harness 的浏览器 UI — 每个操作都会启动真正编译的 CLI 并解析其输出;浏览器中不会重新实现任何 harness 逻辑。```bash cd neurosploit-rs && cargo build --release # once node web/server.js # → http://localhost:4173
- **5 步式任务向导** — 资产(模式 + 目标/仓库)→ 范围与认证(目标、重点、
范围外)→ 线索(下文的 435 个代理面板)→ 模型与运行(提供商/模型选择器、
API 密钥与订阅切换、投票/链深度/侦察)→ 审查。每次任务都会预先命名,
因此运行记录在历史中可通过名称识别,而非仅靠原始目标字符串。
- **线索看板** — 全部 435 个代理自动分类(业务逻辑、访问控制失效、
注入、LLM 应用、认证与会话、SSRF 与网络、云与基础设施……)。可切换单个
线索或整个类别(部分选中时为半选状态),或使用 **全选 / 全部清除**——
该操作遵循当前生效的搜索过滤器。全部关闭时,则交由 harness 自身
基于侦察驱动的选择来挑选。
- **自定义线索 → 真实代理** — “+ 自定义线索”不只是添加文本提示:它会调用
`claude` CLI(Opus,使用你的 Anthropic 订阅)生成真正的专家代理
markdown 文件到 `agents_md/vulns/`,格式与所有内置代理一致,可立即置顶。
若 Claude 不可用,则回退为纯文本的重点提示。
- **实时运行视图** — 阶段/进度通过 SSE 从 CLI 自身的 stdout 流式传输,包含发现
结果表格,以及**生成式攻击路径链接**:节点/边图(根节点 = 目标,每个已确认
发现对应一个节点,按攻击链阶段定位,当 harness 设置了 `chains_from` 时
以其为边),而非平面列表——点击任意节点或行可查看完整发现详情,
包括利用代理写入 `pocs/` 的任何 PoC 脚本。
- **认证与密钥**(统一菜单)— 目标认证头 + 用于 IDOR/BOLA/BFLA 测试的命名角色
(为本次运行生成临时的 `creds.yaml`),以及各提供商的 API 密钥,仅保存在
服务器进程内存中——绝不写入磁盘。
- 支持页面刷新:进行中的运行会重新连接到同一实时流,而不是
重置回向导。
完整 API 参考:**[web/API.md](https://github.com/joasasantos/neurosploit/blob/HEAD/web/API.md)** · 快速开始:**[web/README.md](https://github.com/joasasantos/neurosploit/blob/HEAD/web/README.md)**。
---
## 🔌 集成(GitHub · GitLab · Jira)
将 NeuroSploit 接入你的 SDLC。可通过 REPL(`/integrations`)或 CLI
(`neurosploit integrations enable github|gitlab|jira`)切换。**令牌绝不会被存储**
——仅保存环境变量的*名称*;其值从你的环境中读取。```bash
export GITHUB_TOKEN=ghp_... # PAT with `repo` scope (private repos)
neurosploit integrations enable github
# Review a Pull Request's code (clones the PR head, white-box) and comment back:
neurosploit pr digininja/DVWA 42 --subscription --model anthropic:claude-opus-4-8 --comment
# Same, but BLOCK the merge on a confirmed critical: fails the check, sets a
# `neurosploit/security` commit status, and posts a REQUEST_CHANGES review.
neurosploit pr digininja/DVWA 42 --model anthropic:claude-opus-4-8 --comment --fail-on critical
# Watch a branch and re-review on every new commit:
neurosploit watch myorg/private-app --branch main --subscription --model anthropic:claude-opus-4-8
# Private GitLab repo (token-injected clone) — works in whitebox/greybox:
export GITLAB_TOKEN=glpat-... ; neurosploit integrations enable gitlab
neurosploit whitebox https://gitlab.com/myorg/private-svc --subscription --model anthropic:claude-opus-4-8
# Open a Jira card per finding (any engagement):
export [email protected] JIRA_API_TOKEN=... # set base/project once: /integrations setup jira
neurosploit whitebox https://github.com/myorg/app --jira --subscription --model anthropic:claude-opus-4-8
examples/github-actions/ 中附带两个现成的工作流——将它们复制
到你的仓库中:
neurosploit-pr-gate.yml — 审查每个 PR,并在确认严重问题时阻止合并。
使其强制执行:设置 → 分支 → 要求
neurosploit-pr-gate 状态检查(和/或要求审查以遵守
REQUEST_CHANGES)。在 Actions 密钥中设置 ANTHROPIC_API_KEY(或更换模型);
内置的 GITHUB_TOKEN 负责状态/审查。neurosploit-mention.yml — 在 PR 或 issue 上评论 @neurosploit 以
触发扫描(仅仓库写入者可以)。提及后的文本就是
指令(任何语言):@neurosploit focus SQLi and IDOR,或
@neurosploit scan https://staging.app 进行黑盒运行。📖 每个工具的逐步设置:TUTORIAL-INTEGRATION.md。
在 creds.yaml 中添加云配置块,工具会导出正确的环境变量,以便 AWS/GCP/Azure 代理可以驱动 aws / gcloud / az。密钥保留在你的文件/密钥管理器中;代理会先进行只读枚举,绝不进行破坏性操作。```yaml
aws: access_key_id: AKIA... secret_access_key: ...
region: us-east-1
gcp: service_account_json: /path/to/sa.json project: my-project-id
azure: tenant_id: ... client_id: ... client_secret: ... subscription_id: ...
I don't see any content after "INPUT:" in your message. There's nothing to translate. Could you resend the chunk with the Markdown content included?```bash
neurosploit host my-cloud-account --creds creds.yaml \
--subscription --model anthropic:claude-opus-4-8 -v
Agents 涵盖 IAM 权限提升、存储暴露(S3/GCS/Blob)、计算与
网络暴露、机密(Secrets Manager / Secret Manager / Key Vault)、
服务账号/SP 滥用,以及身份枚举(Entra ID)。最佳实践
认证方式:AWS 访问密钥或配置文件;GCP 服务账号 JSON
(GOOGLE_APPLICATION_CREDENTIALS);Azure 服务主体
(az login --service-principal)。
在 creds.yaml 中为 NeuroSploit 提供两个或更多命名角色,它将分别
以每个角色进行身份验证,并测试跨角色访问(低权限角色访问其他用户的
对象或管理功能即视为发现):```yaml
admin:
jwt: eyJ... # per role: jwt | header (raw) | cookie | apikey | login+username+password
user:
apikey: abc123 # → X-Api-Key: abc123
victim:
cookie: "session=deadbeef"
请提供需要翻译的 Markdown 内容。```bash
neurosploit run https://app.example --creds creds.yaml \
--subscription --model anthropic:claude-opus-4-8 -v
每个发现均通过授权 vs 未授权请求对进行验证,并置于数据安全护栏(只读、PII 脱敏)之下。
每个请求都带有用于识别的 User-Agent(默认
NeuroSploit/<ver> …,可通过 /ua 或 NEUROSPLOIT_UA 更改)以及
X-NeuroSploit-Scan 请求头,每个发现都会盖章为“Identified and
validated by NeuroSploit” —— 因此来源信息会随流量、发现文本、findings.json 以及报告页脚一起传递。
cd neurosploit-rs cargo build --release # → target/release/neurosploit
需要 Rust 工具链(`rustup`)。**推荐:在 Kali Linux 上运行**(或
Kali Docker 镜像),这样代理使用的攻击性工具已经就绪:```bash
docker run -it --rm kalilinux/kali-rolling
apt update && apt install -y curl nmap ffuf nodejs npm
# rustscan (faster port scan): cargo install rustscan (or grab a release from GitHub)
代理会优雅降级:如果未安装 rustscan,则使用 nmap;如果
两者都没有,则使用 curl 进行探测。若存在可用的 Playwright MCP 浏览器,
则将其用于重度依赖 JS 的页面,否则回退到 curl。
不带任何参数运行,即可启动交互式向导:```bash ./target/release/neurosploit
或者直接运行它:```bash
# Black-box — subscription (no API key), Opus, browser via Playwright if present, verbose
./target/release/neurosploit run http://testphp.vulnweb.com/ \
--subscription --model anthropic:claude-opus-4-8 --mcp -v
# Black-box — API keys, multi-model voting panel (1st finds, others adjudicate)
./target/release/neurosploit run http://testphp.vulnweb.com/ \
--model anthropic:claude-opus-4-8 --model openai:gpt-5.1 --vote-n 3
# White-box — clone a vulnerable app and review its source
git clone https://github.com/digininja/DVWA /tmp/DVWA
./target/release/neurosploit whitebox /tmp/DVWA \
--subscription --model anthropic:claude-opus-4-8 -v
# Offline pipeline self-test (no keys/login needed)
./target/release/neurosploit run http://testphp.vulnweb.com/ --offline
# Utilities
./target/release/neurosploit agents # library counts
./target/release/neurosploit models # providers & models
./target/release/neurosploit --help # full help with examples
run / whitebox)你可以通过两种方式运行 NeuroSploit。两者相互独立:每次运行时选择一种。
导出模型面板中提供商的密钥,然后 不 带 --subscription 运行。任何兼容 OpenAI 的提供商都可以。```bash
export ANTHROPIC_API_KEY=sk-ant-... # anthropic:claude-* export OPENAI_API_KEY=sk-... # openai:gpt-* export GEMINI_API_KEY=AIza... # gemini:gemini-* export XAI_API_KEY=xai-... # xai:grok-* export NVIDIA_NIM_API_KEY=nvapi-... # nvidia_nim:* export DEEPSEEK_API_KEY=... # deepseek:* export MISTRAL_API_KEY=... # mistral:* export DASHSCOPE_API_KEY=... # qwen:* (Alibaba DashScope) export GROQ_API_KEY=... # groq:* export TOGETHER_API_KEY=... # together:* export MOONSHOT_API_KEY=... # moonshot:* (Kimi K3/K2) export OPENROUTER_API_KEY=... # openrouter:* export OPENCODE_API_KEY=... # opencode:* (OpenCode Zen gateway) export NOUS_API_KEY=... # nous:* (Nous Portal — Hermes) export LITELLM_API_KEY=... # litellm:* (your LiteLLM proxy) export AZURE_OPENAI_API_KEY=... # azure: (also set AZURE_OPENAI_ENDPOINT)
./target/release/neurosploit run http://testphp.vulnweb.com/
--model anthropic:claude-opus-4-8 --vote-n 3 -v
./target/release/neurosploit run http://testphp.vulnweb.com/
--model anthropic:claude-opus-4-8 --model openai:gpt-5.1 --model gemini:gemini-2.5-pro
或者把密钥放进 `.env` 并 source 它(`cp .env.example .env`;编辑;`set -a; . ./.env; set +a`)。
**Provider → 环境变量 → 端点**(全部兼容 OpenAI):
| `--model` 前缀 | 环境变量 | 基础 URL |
|------------------|---------|----------|
| `anthropic:` | `ANTHROPIC_API_KEY` | api.anthropic.com |
| `openai:` | `OPENAI_API_KEY` | api.openai.com |
| `gemini:` | `GEMINI_API_KEY` | generativelanguage.googleapis.com |
| `xai:` | `XAI_API_KEY` | api.x.ai |
| `nvidia_nim:` | `NVIDIA_NIM_API_KEY` | integrate.api.nvidia.com |
| `deepseek:` | `DEEPSEEK_API_KEY` | api.deepseek.com |
| `mistral:` | `MISTRAL_API_KEY` | api.mistral.ai |
| `qwen:` | `DASHSCOPE_API_KEY` | dashscope-intl.aliyuncs.com |
| `groq:` | `GROQ_API_KEY` | api.groq.com |
| `together:` | `TOGETHER_API_KEY` | api.together.xyz |
| `moonshot:` | `MOONSHOT_API_KEY` | api.moonshot.ai |
| `openrouter:` | `OPENROUTER_API_KEY` | openrouter.ai |
| `opencode:` | `OPENCODE_API_KEY` | opencode.ai/zen(OpenCode Zen 网关) |
| `nous:` | `NOUS_API_KEY` | inference-api.nousresearch.com(Hermes 4) |
| `litellm:` | `LITELLM_API_KEY` | 你的 LiteLLM 代理(`LITELLM_BASE_URL`,默认 localhost:4000) |
| `azure:` | `AZURE_OPENAI_API_KEY` | 你的 Azure OpenAI 资源(`AZURE_OPENAI_ENDPOINT`) |
| `ollama:` | _(无)_ | localhost:11434 |
| `llamacpp:` | _(无)_ | localhost:8080 |
运行 `./target/release/neurosploit models` 可查看完整的 provider/model 列表。
> **本地、无审查、仅限 CPU** — `ollama:` 和 `llamacpp:` 完全在你的机器上运行,
> 无需 API 密钥,数据也不会离开主机。`llamacpp:` 面向
> [`llama-server`](https://github.com/ggml-org/llama.cpp) OpenAI 兼容
> 端点(可用 `LLAMACPP_BASE_URL` 覆盖);`model` 就是你加载的任何 gguf。
> 非常适合离线任务和无过滤的攻击性提示。
#### 2) 通过订阅(无需 API 密钥)
`--subscription` 直接使用你本地的 agentic-CLI 登录状态,而非 API 密钥 —
请先安装并登录其中一个 CLI:
| `--model` 前缀 | 使用的 CLI | 登录 |
|------------------|----------|-------|
| `anthropic:` | `claude`(Claude Code) | `claude` 然后 `/login` |
| `openai:` | `codex` | `codex` login |
| `gemini:` | `gemini` | `gemini` login |
| `xai:` | `grok` | `grok` login |
| `opencode:` | `opencode` | `opencode` auth login`(或 TUI 中的 `/connect`)— Zen/plan 账户 |
| `nous:` | `hermes` | `hermes` setup --portal` — Nous Portal OAuth |
`opencode:` 也像 anthropic/openai 一样支持 Playwright MCP(`--mcp`)。
`nous:` 则依靠 Hermes 自身内置的工具集(web/terminal/computer-use)— 它没有 CLI 级别的 MCP 钩子。```bash
./target/release/neurosploit run http://testphp.vulnweb.com/ \
--subscription --model anthropic:claude-opus-4-8 --mcp -v
target ─▶ recon (curl/nmap/…) ─▶ INTELLIGENT agent selection (recon-aware) ─▶ parallel exploitation ─▶ cross-model validation vote ─▶ severity/score ─▶ report (HTML + Typst PDF) ─▶ RL reward update
每次运行都会写入一个自包含的文件夹 `runs/ns-<ts>-<target>/`:
| 文件 | 内容 |
|------|----------|
| `status.json` | `running` → `complete` 并附带摘要 |
| `recon.json` / `recon.md` | 映射的攻击面 |
| `exploitation.md` | 每个代理的原始记录 |
| `findings.json` / `findings.md` | 已验证的发现(可供其他工具/AI 复用) |
| `report.html`, `report.typ`, `report.pdf` | 最终报告(PDF 通过 Typst 引擎生成) |
强化学习奖励存储(`data/rl_state_rs.json`)会影响代理
在后续运行中的选择。
## 代理库 — `agents_md/` (435)
| 类别 | 数量 | 用途 |
|----------|-------|---------|
| `vulns/` | 245 | 利用特定漏洞类别(Web/API) |
| `code/` | 78 | 白盒源代码(SAST)审查 |
| `ai/` | 30 | AI/LLM 红队测试、越狱、MCP 威胁 |
| `infra/` | 34 | 主机/云:Linux、Windows、AD、AWS/GCP/Azure |
| `meta/` | 23 | 编排器、验证器、评分器、报告器、RL |
| `chains/` | 13 | 多阶段攻击链(SQLi→RCE→LPE、SSRF→云等) |
| `recon/` | 12 | 信息收集 / 攻击面 |
每个代理都是自包含的 Markdown 操作手册(`## User Prompt` 方法论 +
`## System Prompt` 严格的反误报规则)。将新的 `.md` 放入
匹配的文件夹——或从 Web 控制台的“+ Custom lead”(见上文)生成一个——工具链
会自动识别;`neurosploit agents` 显示实时数量。
---
## 安全
仅限**授权**测试。代理被指示保持在范围内,绝不运行
破坏性/DoS 操作,并要求提供利用证明。你有责任
确保对任何目标拥有权限。
## 致谢
**Joas A Santos** & **Red Team Leaders**。
## 许可证
MIT。
| 模式 | 命令 | 功能 |
|---|
| 黑盒 | neurosploit run <url> | 侦察 → 选择 → 利用 → 投票 → 报告 |
| 白盒 | neurosploit whitebox <repo> | 源码/SAST 审查(file:line 证据) |
| 灰盒 | neurosploit greybox <repo> --url <app> | 代码审查 + 实时利用一起进行 |
| 主机/基础设施 | neurosploit host <ip> --creds creds.yaml | Linux / Windows / AD 以及云(AWS/GCP/Azure)测试 |
| AI / LLM 红队 | neurosploit aitest <ai-url> | 越狱与提示注入 + 针对实时 AI 智能体的 OWASP LLM Top 10 / MCP |
| AI 技能 / n8n | neurosploit skills <file|folder> | Skill/插件 与 n8n 工作流定义的白盒审计 |
| Mission Control | neurosploit tui <url> | 运行期间实时 TUI 面板 + 编辑器 |
| 交互式 | neurosploit | 持久化 REPL 会话(按项目恢复) |
pocs/ 文件夹并在报告中引用,让
发现可复现。另有荒谬错误配置智能体(暴露的 .git/.env、
debug/actuator、默认凭证、仪表盘、CORS)和速率限制测试 —— 全部
处在严格的数据安全/PII 护栏之下(无破坏性/状态改变
操作;PII 仅用掩码样本证明,绝不转储)。--only <agent>(可重复 /
逗号分隔)只运行你指定的智能体,并跳过基于侦察的
选择 —— 快速重测单个发现。适用于 run / whitebox /
greybox;neurosploit agents 会列出名称。file:line 凭证、源到汇污点追踪、清单
版本→CVE),禁止幻觉式的实时/黑盒网络动作,并可
向 pocs/ 输出可复现的 PoC。neurosploit pr <repo> <n> --fail-on critical 审查
pull request,当确认的发现达到/超过阈值时,它使检查失败、
设置 neurosploit/security 提交状态,并发布 REQUEST_CHANGES
审查 —— 这样分支保护就会阻止合并。包含现成的 GitHub Actions
工作流(PR 门禁 + 一个 @neurosploit 提及机器人,当有写入权限者评论时
运行扫描)。参见 集成。/objective、/scope-out,或 --objective /
--out-of-scope);两者都会指导每个智能体的提示词。evidence/<finding-id>-N.png),并嵌入到 Typst/HTML/Markdown
报告中其漏洞的旁边。ollama: 和 llamacpp: 可在你的机器上
运行整个评估,无需 API key,数据也不会离开
主机。llamacpp: 与 llama-server 的 OpenAI 兼容端点
(LLAMACPP_BASE_URL,默认 localhost:8080)通信;model 就是你加载的任意 gguf。
非常适合离线/气隙环境以及不受过滤的攻击性提示。/proxy <url>(或 /burp)将智能体流量
路由到你的本地拦截代理,以便在 Burp 中检查与重放。summary、pause、…)。<cwd>/.neurosploit/ 保存会话、运行历史和
命令历史;REPL 在重新打开时恢复。无需数据库。| ✅ |
| ✅(Apple Silicon) |
| Windows | ✅ | ✅ |
| 集成 | 你能得到什么 | 环境变量 |
|---|
| GitHub | 私有克隆 · pr 审查 + 评论 · PR 门禁(--fail-on:使检查失败 + 提交状态 + REQUEST_CHANGES)· watch 分支 | GITHUB_TOKEN |
| GitLab | 用于白盒/灰盒的私有克隆 | GITLAB_TOKEN |
| Jira | 每个发现一张卡片(--jira) | JIRA_EMAIL, JIRA_API_TOKEN |
| 标志 | 含义 |
|---|
--model provider:model | 可重复。第一个为主模型;其余作为故障转移 并 组成投票评审团。 |
--subscription | 使用本地 CLI 登录(Claude/Codex/Gemini/Grok)而不是 API 密钥。 |
--mcp | 启用 Playwright MCP(通过 npx 自动配置;不支持 MCP 的后端使用内置工具)。 |
--vote-n N | 需要多少模型同意某个发现为真(默认 3 / whitebox 为 2)。 |
--max-agents N | 限制运行的 agent 数量(0 = 所有匹配侦察结果的 agent)。 |
--offline | 在不调用任何模型的情况下运行完整流程。 |
-v, --verbose | 记录每个 agent 启动、执行侦察和投票的过程。 |