Dan-StrategicAutomation/spider

GitHub: Dan-StrategicAutomation/spider

一款基于 DSPy 的原生渗透测试编排框架,通过结构化推理、类型化输出和内置安全控制,为授权安全评估提供可控且可审计的自动化工作流。

Stars: 0 | Forks: 0

SPIDER logo

SPIDER

共生渗透测试调查与 DSPy 漏洞利用运行时

一个优先本地、DSPy 原生的安全编排平台,用于授权的 渗透测试、结构化攻击路径推理和可审计的工具 执行。

快速开始 · 架构 · 安全模型 · 开发

## 产品定位 SPIDER 专为需要自动化但不愿妥协控制权的安全团队设计。它将每次评估视为受控的工作流:目标必须在授权范围内,工具通过已审计的适配器调用,漏洞利用需要人工批准,模型输出将作为结构化数据进行验证。 其结果是为受控的攻防安全提供了卓越的操作员体验:本地推理、显式拓扑、类型化发现、确定性的质量门禁,以及一种重可追溯性轻不透明代理行为的开发模式。 ## 平台能力 | 能力 | 提供的功能 | | ---------- | ---------------- | | 结构化推理 | DSPy 模块将侦察、枚举、分析、规划、执行和报告表示为类型化程序。 | | 受控自动化 | 范围防护、排除、HITL 批准、沙箱和审计日志内置于执行路径中。 | | 高保真输出 | Pydantic schema 使发现、计划和报告保持机器可读,而不是依赖临时的文本解析。 | | 并行评估流 | 独立的图节点在基于波的执行中运行,同时保留依赖顺序。 | | 优先本地操作 | 基于 Ollama 的模型将核心推理保留在操作员环境附近。 | | 可扩展工具层 | 安全工具通过单一的适配器接口注册,并具有一致的验证和日志记录。 | ## 技术差异化优势 大多数 AI 渗透测试项目将安全工具作为直接函数调用公开,并让模型去协调自由格式的文本。相反,SPIDER 是围绕 DSPy 程序和类型化 schema 构建的: - **DSPy 原生编排**,支持 `dspy.ReAct`、`dspy.Predict`、 `dspy.ChainOfThought` 和 `dspy.Refine`。 - **类型化的结构化输出**,使用通过 `src/spider/schemas.py` 共享的 Pydantic 模型。 - **基于波的执行**,用于并行运行独立的图节点。 - **已审计的工具包装器**,通过 `src/spider/tools/adapter.py` 注册。 - **范围防护执行**,在工具执行前进行。 - **Human-in-the-loop 门禁**,在漏洞利用或后渗透操作之前进行。 - **优先本地模型设置**,通过 Ollama 进行,并提供可选的外部 API 密钥,用于情报和备用提供商。 ## 项目状态 SPIDER 正在积极开发中。该代码库包含核心引擎、节点模块、工具包装器、沙箱控制、TUI 组件、实验环境配置和测试。在架构不断加固的过程中,接口可能会发生变化。 有关当前的设计说明,请参阅 [`plan/`](plan/) 中的规划材料和 [`docs/`](docs/) 中的长篇文档。 ## 要求 - Python 3.13+ - [`uv`](https://docs.astral.sh/uv/) 用于依赖项和命令执行 - Ollama 用于本地 LLM 推理 - Docker 用于沙箱和易受攻击的测试实验室 - 特定包装器使用的安全工具,例如 `nmap`、`gobuster`、`ffuf`、 `nikto`、`nuclei` 或 `sqlmap`,具体取决于扫描模式 ## 模型设置 默认配置通过 Ollama 使用 Qwen3.5 Abliterated。 ``` ollama pull huihui_ai/qwen3.5-abliterated:9b ollama pull huihui_ai/qwen3.5-abliterated:4b ``` 如果你想要一个具有 SPIDER 特定默认值的命名本地模型,则包含一个可选的 [`Modelfile`](Modelfile): ``` ollama create spider-qwen35 -f Modelfile ``` 然后在 `.env` 中设置 `SPIDER_PRIMARY_MODEL=spider-qwen35`。 ## 快速开始 ``` git clone https://github.com/Dan-StrategicAutomation/spider.git cd spider uv sync --all-extras cp .env.example .env ``` 在运行扫描之前编辑 `.env`。至少设置一个明确的允许目标或 实验网络: ``` SPIDER_MODEL_PROVIDER=auto SPIDER_ALLOWED_TARGETS=192.168.1.0/24 SPIDER_EXCLUDED_TARGETS=0.0.0.0,127.0.0.1,localhost SPIDER_RULES_OF_ENGAGEMENT=No destructive actions without human approval. ``` `SPIDER_MODEL_PROVIDER` 控制 LLM 路由: | 值 | 行为 | | ----- | -------- | | `auto` | 当 Ollama 可达时使用它;否则,如果设置了 `SPIDER_OPENROUTER_API_KEY`,则使用 OpenRouter。 | | `ollama` | 强制使用本地 Ollama,利用 `SPIDER_PRIMARY_MODEL` 和 `SPIDER_EVAL_MODEL`。 | | `openrouter` | 强制使用 OpenRouter,利用 `SPIDER_FALLBACK_MODEL`。 | 仅使用 OpenRouter 的示例设置: ``` SPIDER_MODEL_PROVIDER=openrouter SPIDER_OPENROUTER_API_KEY=sk-or-v1-... SPIDER_FALLBACK_MODEL=openrouter/openai/gpt-4o-mini ``` 如果你使用的是 `auto` 或 `ollama`,请启动 Ollama 并确认模型 可用。然后启动 SPIDER: ``` ollama list uv run spider ``` 对于安全的首次运行,请针对你拥有的目标或本地 实验室选择仅侦察模式。 ## 扫描模式 | 模式 | 行为 | | ---- | -------- | | 仅侦察 | 在配置的范围内进行自主发现和枚举。 | | 完整渗透测试 | 侦察、分析、规划以及由 HITL 把控的漏洞利用。 | | 自定义目标 | 将自然语言目标转换为 DSPy 图拓扑。 | 当目标在范围内时,侦察和枚举可以自主运行。 漏洞利用、payload 投递和后渗透操作需要明确的人工 批准。 ## 架构 SPIDER 将评估作为 DSPy 模块的有向无环图(DAG)执行: ``` Recon (ReAct) -> Enumeration (parallel) -> Vulnerability Analysis -> Exploit Planning -> Exploitation (HITL-gated) -> Report ``` 编排流程如下: 1. GraphWeaver 根据目标和扫描模式构建拓扑。 2. 编排器通过中央适配器调配范围受限的工具。 3. GraphRunner 以依赖波的形式执行节点。 4. 奖励函数评估结构化输出。 5. 当不满足质量阈值时,`dspy.Refine` 会重试模型工作。 6. 安全控制强制执行范围、沙箱、HITL 和审计边界。 关键实现区域: | 区域 | 路径 | | ---- | ---- | | 引擎和编排 | [`src/spider/engine/`](src/spider/engine/) | | DSPy 节点模块 | [`src/spider/nodes/`](src/spider/nodes/) | | 共享的 Pydantic schema | [`src/spider/schemas.py`](src/spider/schemas.py) | | 工具包装器和适配器 | [`src/spider/tools/`](src/spider/tools/) | | 范围、HITL、沙箱、审计 | [`src/spider/sandbox/`](src/spider/sandbox/) | | 情报客户端 | [`src/spider/intelligence/`](src/spider/intelligence/) | | 终端 UI | [`src/spider/tui/`](src/spider/tui/) | | 本地实验室 | [`lab/`](lab/) | ## 安全模型 SPIDER 将安全控制视为执行路径的一部分,而不仅仅是文档: | 控制 | 目的 | | ------- | ------- | | 范围防护 | 拒绝超出 `SPIDER_ALLOWED_TARGETS` 的目标。 | | 排除项 | 阻止明确排除的主机和范围。 | | HITL 门禁 | 漏洞利用和后渗透需要批准。 | | 沙箱 | 在隔离的 Docker 环境中运行支持的工具执行。 | | 审计日志 | 记录工具调用、目标、参数和结果。 | | 类型化输出 | 防止隐藏的字符串解析掩盖模型故障。 | 详细的安全设计请参阅 [`docs/safety.md`](docs/safety.md)。 ## 本地实验室 该实验室包含用于集成测试和 开发的故意设置漏洞的目标。 ``` docker compose -f lab/docker-compose.yml up -d ``` 仅针对实验室目标或你拥有书面 授权的系统运行集成测试。 ## 开发 使用 `uv` 进行项目命令操作。为了获得最快且安全的 CLI 反馈回路,请使用 smoke 目标;它仅检查命令加载和模拟的 CLI 测试,因此它不会 启动扫描或联系外部目标。 ``` # 快速安全 CLI 冒烟检查 make smoke # make 不可用时的等效命令 uv run spider --help uv run --extra dev python -m pytest tests/test_cli.py -q # 运行完整测试套件 uv run pytest tests/ -q # 运行专注测试套件 uv run pytest tests/test_safety/ -q uv run pytest tests/test_tools/ -q uv run pytest tests/test_engine/ -q uv run pytest tests/test_intelligence/ -q uv run pytest tests/test_integration/ -q # Lint 与格式化 uv run ruff check src/ tests/ uv run ruff format src/ tests/ ``` AI 代理和贡献者的开发契约位于 [`AGENTS.md`](AGENTS.md)。简而言之:保持较小的更改,为 结构化的 DSPy 数据使用 Pydantic 模型,通过适配器注册工具,在 执行前强制执行范围,并为行为更改添加测试。 ## 文档 | 文档 | 内容 | | -------- | -------- | | [`docs/quickstart.md`](docs/quickstart.md) | 安装设置和首次运行 | | [`docs/architecture.md`](docs/architecture.md) | 系统设计和图拓扑 | | [`docs/dspy-engine.md`](docs/dspy-engine.md) | Weaver、runner、refine 和评估 | | [`docs/tools.md`](docs/tools.md) | 工具目录和适配器模式 | | [`docs/safety.md`](docs/safety.md) | 范围防护、HITL、沙箱和审计日志 | | [`docs/testing.md`](docs/testing.md) | 测试策略和实验室设置 | | [`docs/tui.md`](docs/tui.md) | 终端 UI 规范 | | [`docs/intelligence.md`](docs/intelligence.md) | CVE、KEV、EPSS 和漏洞利用情报 | | [`plan/`](plan/) | 路线图、审查说明和实施计划 | ## 许可证 Apache License 2.0。请参阅 [`LICENSE`](LICENSE)。 ## 免责声明 SPIDER 仅提供用于合法、授权的安全测试。作者对 误用、未经授权的访问、服务中断、数据丢失 或因操作不当造成的其他损害不承担责任。始终遵守 目标环境的交战规则和负责任的披露规范。
标签:AI风险缓解, DLL 劫持, DSPy, 大语言模型, 实时处理, 密码管理, 编排框架, 请求拦截, 逆向工具