daemon-blockint-tech/project-raven
GitHub: daemon-blockint-tech/project-raven
Project Raven 是一个将多供应商 AI、ML 异常检测与自动化杀伤链规划融合的自主防御系统,旨在把被动安全运营转变为主动威胁狩猎。
Stars: 3 | Forks: 2
自主防御系统 — 多供应商 AI · 零日检测 · 主动威胁狩猎
## 概述
Project Raven 通过结合**运行时可切换的多供应商 AI 层**、ML 异常检测以及自动化杀伤链规划,将被动安全转化为主动威胁狩猎。完全在本地使用 LM Studio 或 Ollama 运行——或者通过单条命令切换至 OpenAI、Anthropic、OpenRouter 或 Nous Research。无需重启。
Raven 围绕**组合防御管道 (CDP)** 构建——这是一种架构原语,其中每一个 LLM 生成结论都必须基于确定性的工具预言机、经典的 ML 检测器或经过明确评分的假设。有关简要总结,请参阅 [`docs/methodology.md`](docs/methodology.md);有关形式化语法、基础定理和经验评估,请参阅完整的 [**白皮书**](docs/Whitepaper/README.md)。
## 核心特性
**AI 层**
- **多供应商 AI** — LM Studio / OpenAI / Anthropic / OpenRouter / Ollama / Nous / Tinker,通过 CLI 或 REST 在运行时切换
- **命名配置文件** — 保存/加载供应商 + 模型 + 密钥配置 (`raven provider save work`)
- **三角色协调器** — FAST / REASON / VISION 模型,根据任务类型进行路由
- **系统提示词管理器** — 一次加载 `RAVEN_SYSTEM_PROMPT.md`,自动注入到每次调用中
**防御性 AI 原语 (灵感来自 Hermes Agent)**
- **审批门控** — 针对破坏性操作的 `manual` / `smart` / `off` 模式,具有 *任何事物* 都无法绕过的 `UNRECOVERABLE_BLOCKLIST` 底线(即使 YOLO 模式或管理员也不行)
- **智能分流** — 辅助 LLM (`ModelOrchestrator.FAST`) 自动批准良性命令,上报模糊不清的命令
- **越狱检测器** — 对每个 `/ai/*` 入站请求进行 8 个攻击家族的指纹识别;`Parseltongue` 优先解码 33 种混淆技术
- **供应商健壮性测试** — 对当前活动供应商的越狱抵抗力进行 0-10 评分
- **攻击性 Godmode** — 三重门控的红队功能(默认关闭,需要 admin + token + 沙箱)
**威胁狩猎与检测**
- **LLM 驱动的假设生成** — 变体分析 + 前置条件推理 + 算法语义挖掘 (Anthropic 0-day 技术)
- **零日检测** — IsolationForest + RandomForest 集成,用于检测未知模式
- **杀伤链规划** — Incalmo 风格的声明式任务,与 MITRE ATT&CK 对齐
- **人在回路** — 针对漏洞利用、横向移动、数据窃取、权限提升和后渗透阶段的审批门控
**自我改进 (Tinker)**
- **持续学习循环** — 挖掘审计日志 + CyberGym + 杀伤链 → JSONL → 托管 LoRA 微调 → A/B 测试 → 自动晋升
- **5 个数据集构建器**,带有 PII 脱敏功能 (`from_audit_log` / `from_cybergym` / `from_killchain` / `from_redteam` / `distillation`)
- **A/B 路由器** — 伯努利流量拆分,在 95% 胜率时自动晋升,在回归时自动回滚
- **对 Mock 友好** — 通过 `MockTinkerClient` 离线运行,直到获得 Tinker beta 访问权限
**生产级加固**
- **JWT 认证 + 3 层 RBAC** (viewer / operator / admin),Argon2id 密码,refresh-token 轮换,吊销列表
- **审计日志** — 记录每个经过认证的变更操作,包含操作者、请求 ID、延迟和状态
- **结构化日志 + OTel 链路追踪 + Prometheus 指标** (`/metrics` 暴露接口 + 20 多个计数器/仪表盘/直方图)
- **Helm chart** 包含 HPA (3–12 个副本)、PodDisruptionBudget、NetworkPolicy、ServiceMonitor、非 root 用户 + 只读 rootfs
- **生产环境保护** — 拒绝使用默认 `SECRET_KEY`、`APPROVAL_MODE=off`、通配符 CORS 或不带 session token 的 `OFFENSIVE_REDTEAM_ENABLED` 启动
**工具编排 (统一 `ToolAdapter` 接口下的 20 多个适配器)**
- **智能合约审计** — **ARES-v3** (确定性 Solana 静态审计器,97% 召回率) · **Solana-eBPF-for-Ghidra** (编译后的 `.so` 反编译)
- **二进制分析** — Ghidra (analyzeHeadless)、radare2 (+ r2ghidra)、jadx、Frida、Volatility 3
- **恶意软件** — YARA 家族签名
- **侦察** — subfinder · naabu · httpx · interactsh · nuclei · recon-ng · whois · Shodan
- **漏洞利用** — Metasploit · Empire C2 · searchsploit
- **网络** — Nmap、**严格 SSH** (`RejectPolicy` + known_hosts)、**安全 Bash** (默认 `shell=False`)
- **数据操作** — CyberChef
## AI 供应商支持
无需重启服务器即可切换供应商。支持 `provider:model` 简写 (灵感来自 Hermes Agent)。
| 供应商 | 需要密钥 | 示例模型 |
|---|---|---|
| `lmstudio` | ❌ 本地 | `ibm/granite-4-micro`, `nvidia/nemotron-3-nano-4b` |
| `ollama` | ❌ 本地 | `llama3.2`, `mistral`, `deepseek-r1` |
| `openai` | ✅ | `gpt-4o`, `gpt-4o-mini`, `o3-mini` |
| `openrouter` | ✅ | `nous/hermes-2-mixtral-8x7b`, `google/gemini-2.5-pro`, 300+ |
| `anthropic` | ✅ | `claude-opus-4-5`, `claude-3-5-sonnet-20241022` |
| `nous` | ✅ | `nous-hermes-2-mixtral-8x7b`, `hermes-3-llama-3.1-405b` |
| `opencode` | ✅ | — |
| `tinker` | ✅ | Raven 训练的 LoRA 微调模型 (Llama-3.1, Qwen-2.5) |
### 在运行时切换供应商
```
# CLI
raven provider set openrouter --key sk-or-abc123 --model nous-hermes-2-mixtral-8x7b
raven model set anthropic:claude-3-5-sonnet-20241022 # provider:model shorthand
raven provider save work-profile
raven provider load work-profile
# REST API (server already running — no restart)
curl -X POST localhost:8000/ai/provider \
-H "Content-Type: application/json" \
-d '{"provider": "openrouter", "api_key": "sk-or-...", "model": "nous/hermes-2-mixtral-8x7b"}'
curl -X POST localhost:8000/ai/model \
-d '{"model": "anthropic:claude-3-5-sonnet-20241022"}'
```
## LM Studio 模型设置 (本地默认)
Raven 在单个 LM Studio 实例 (端口 1234) 上编排三个专用模型:
| 角色 | 模型 | 内存 | 用途 |
|------|-------|--------|----------|
| FAST | `ibm/granite-4-micro` | ~2.5 GB | JSON 假设生成,CVE 查询 |
| REASON | `nvidia/nemotron-3-nano-4b` | ~3.5 GB | 杀伤链规划,复杂分析 |
| VISION | `zai-org/glm-4.6v-flash` | ~5 GB | 截图 / 图像证据 (按需加载) |
FAST 和 REASON 常驻内存。VISION 按需加载,并临时替换 REASON。
总预算可容纳于 16 GB 统一内存 (Apple M 系列或同等配置) 中。
## 架构
有关详细的系统设计,请参阅 [ARCHITECTURE.md](ARCHITECTURE.md)。
## 安装说明
```
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装 core dependencies
pip install -r requirements.txt
# 安装 CLI + Anthropic SDK (optional)
pip install -e ".[ai]"
# 复制并配置 environment
cp .env.example .env
# 编辑 .env — 设置 AI_PROVIDER 和 AI_API_KEY (或保留为 lmstudio 用于本地)
```
### 可选工具依赖
| 工具 | 用途 | 安装 |
|------|---------|---------|
| [LM Studio](https://lmstudio.ai) | 本地 LLM 推理 | 下载安装程序 |
| [Ollama](https://ollama.com) | 本地模型运行器 | `brew install ollama` |
| [nuclei](https://github.com/projectdiscovery/nuclei) | 基于模板的漏洞扫描 | `brew install nuclei` |
| [Empire](https://github.com/BC-SECURITY/Empire) | 后渗透 C2 | 参见 Empire 文档 |
| [Ghidra](https://github.com/NationalSecurityAgency/ghidra) | 二进制分析 | 下载 + JDK 21 |
## 快速开始
```
# 1. 配置 (最低要求:一个强 SECRET_KEY)
cp .env.example .env
echo "SECRET_KEY=$(openssl rand -hex 32)" >> .env
echo "BOOTSTRAP_ADMIN_PASSWORD=$(openssl rand -base64 24)" >> .env
# 2. Local AI (LM Studio) — 加载 granite-4-micro + nemotron-3-nano-4b,然后:
uvicorn raven.api.main:app --host 0.0.0.0 --port 8000
# 3. Login → 获取 access token
TOKEN=$(curl -s -X POST localhost:8000/auth/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"admin\",\"password\":\"$BOOTSTRAP_ADMIN_PASSWORD\"}" \
| jq -r .access_token)
# 4. 运行 kill-chain exercise (HITL-gated)
curl -X POST localhost:8000/hunt/killchain \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"objective":"assess lateral movement risk","target_network":"192.168.1.0/24"}'
# 5. 测试 provider hardness
curl -X POST localhost:8000/redteam/hardness \
-H "Authorization: Bearer $TOKEN" -d '{}'
# 6. 训练 Raven-specialist 模型 (默认为 offline mock)
raven train dataset-build --source audit --out data/audit.jsonl
raven train job-start --recipe distill --dataset-id
raven train model-eval
raven train model-promote
```
有关通过 Helm 在 Kubernetes 上进行生产部署的信息,请参阅 [DEPLOYMENT.md](DEPLOYMENT.md)。
## 项目结构
```
raven/
├── ai/ Multi-provider AI runtime
│ ├── base.py BaseAIClient ABC + SUPPORTED_PROVIDERS
│ ├── factory.py create_client_from_config() router
│ ├── registry.py ProviderRegistry singleton — hot-swap + profiles
│ ├── model_orchestrator.py FAST / REASON / VISION role routing
│ └── providers/ lmstudio · openai_compat · anthropic · tinker
├── auth/ JWT + RBAC (viewer/operator/admin) + Argon2id
├── approval/ Hermes-style approval gate + UNRECOVERABLE_BLOCKLIST
├── redteam/ Jailbreak detector + Parseltongue + hardness + gated godmode
├── training/ Tinker continual-learning subsystem
│ ├── client.py Real Tinker SDK + MockTinkerClient
│ ├── datasets/ 5 builders with PII scrubbing
│ ├── jobs/ DistillJob · SFTJob · CodeRLJob
│ ├── registry.py ModelVersion + TrainingJob + ABTestRun store
│ ├── abtest.py Bernoulli router + auto-promote/rollback
│ └── eval.py Hardness + canary + CyberGym smoke
├── audit/ Mutation audit log + middleware (X-Request-ID)
├── observability/ structlog + OpenTelemetry + Prometheus metrics
├── api/ FastAPI app + routers per subsystem
├── cli/ `raven` Typer CLI (provider/model/prompt/approval/redteam/train)
├── core/ ThreatDetector + AnomalyDetector + BehavioralProfiler
├── hunters/ Hypothesis + Investigation + KillChainPlanner (Incalmo)
├── ml/ ZeroDayDetector + VariantAnalyzer (ZeroDayBench)
├── tools/ SSH (RejectPolicy) · Bash (no shell) · Nmap · Nuclei · Empire · Ghidra · Shodan
├── mitigation/ Containment + Remediation + ResponseOrchestrator
└── config/ Pydantic-settings with prod-mode safety guard
deployment/
├── helm/raven/ Helm chart (HPA + PDB + NetworkPolicy + ServiceMonitor)
├── lmstudio.service systemd unit for local dev
└── raven.service systemd unit for local dev
docs/
├── approval-and-redteam.md
├── training.md
├── benchmark.md (planned — CyberGym integration)
└── runbooks/
```
## API 端点
所有变更路由都需要 JWT bearer + 角色。读取路由接受任何经过身份验证的用户。
### 身份验证
| 方法 | 路径 | 角色 | 描述 |
|---|---|---|---|
| `POST` | `/auth/login` | — | 用户名 + 密码 → access + refresh token |
| `POST` | `/auth/refresh` | — | refresh token → 新的 token 对 |
| `POST` | `/auth/logout` | viewer | 吊销 refresh token |
| `GET` | `/auth/me` | viewer | 当前用户信息 |
### AI 供应商运行时切换
| 方法 | 路径 | 角色 |
|---|---|---|
| `GET`/`POST` | `/ai/provider` | viewer / admin |
| `POST` | `/ai/model` | admin |
| `GET`/`POST`/`PUT`/`DELETE` | `/ai/provider/profiles[/{name}]` | viewer / admin |
| `GET`/`POST`/`DELETE` | `/ai/system-prompt` | viewer / admin |
### 威胁狩猎
| 方法 | 路径 | 角色 |
|---|---|---|
| `POST` | `/analyze` `/hunt` `/hunt/variant` `/hunt/code` `/investigate/target` | operator |
| `POST` | `/hunt/killchain` | operator |
| `POST` | `/hunt/killchain/approve` `/hunt/killchain/reject` | admin |
| `POST` | `/mitigate` | operator |
### 审批门控 (Hermes 风格)
| 方法 | 路径 | 角色 |
|---|---|---|
| `GET`/`PATCH` | `/approval/mode` | viewer / admin |
| `GET` | `/approval/decisions` | viewer |
| `POST` | `/approval/decisions/{id}/{approve,deny}` | operator |
| `GET`/`POST`/`DELETE` | `/approval/allowlist[/{pattern}]` | viewer / admin |
### 红队
| 方法 | 路径 | 角色 |
|---|---|---|
| `POST` | `/redteam/scan` `/redteam/decode` | operator |
| `POST` | `/redteam/hardness` | admin |
| `POST` | `/redteam/godmode` | admin + `X-Raven-Authorization-Token` |
### 训练 (Tinker)
| 方法 | 路径 | 角色 |
|---|---|---|
| `GET` | `/training/tinker/status` `/training/datasets` `/training/jobs` `/training/models` | viewer |
| `POST` | `/training/datasets` `/training/jobs[/{id}/cancel|finalize]` | admin |
| `POST` | `/training/models/{id}/{eval,promote,rollback}` | admin |
| `POST`/`GET` | `/training/abtest[/{id}/{record,stop}]` | admin / viewer |
### 运维
| 方法 | 路径 | 描述 |
|---|---|---|
| `GET` | `/health` `/health/ready` `/health/startup` | K8s 探针 |
| `GET` | `/metrics` | Prometheus 暴露接口 |
| `GET` | `/audit/log` | 最近的变更审计日志条目 (admin) |
## 命令行界面
```
raven version
raven provider {set|status|list|save|load|delete|providers}
raven model {set|list|status}
raven prompt {show|set|load|clear}
raven approval {mode|status|allow|forget|test}
raven redteam {scan|decode|hardness|godmode}
raven train {status|dataset-build|dataset-list|job-start|job-status|job-list|
model-list|model-eval|model-promote|model-rollback}
```
## 安全性
| 加固措施 | 参考 |
|---|---|
| 在**所有**环境中拒绝默认的 `SECRET_KEY` | `_enforce_secret_key_floor` |
| 在生产环境中拒绝 `APPROVAL_MODE=off` (YOLO 模式) | `_enforce_prod_safety` |
| 在生产环境中拒绝通配符 CORS | `_enforce_prod_safety` |
| `pickle`/`joblib` 模型加载由 `ALLOW_PICKLE_MODELS` + `MODEL_PATH` 沙箱控制 | `raven/core/anomaly_detector.py`, `raven/ml/zero_day_detector.py` |
| `BashExecutor` 默认为 `shell=False`;可选择启用 `allow_shell=True` `raven/tools/bash_executor.py` |
| 补丁 ID 经过正则表达式验证 + 使用 `shlex.quote` 包装 | `raven/mitigation/remediation_engine.py` |
| PID 被强制转换为正整数 `int` | `raven/mitigation/containment_actions.py` |
| SSH `paramiko.RejectPolicy` + 操作员提供的 `known_hosts` | `raven/tools/ssh_manager.py` |
| 供应商 `base_url` 白名单 | `raven/api/main.py` |
| 扫描路径被限制在 `SCAN_ROOT` 下 | `raven/api/main.py` |
| 对每个 `/ai/*` 入站请求启用越狱检测器 | `raven/redteam/middleware.py` |
安全策略与威胁模型:[SECURITY.md](SECURITY.md)。
漏洞披露:参见 `.windsurf/automation-memory/project-raven---flagged-vulnerabilities.json`。
## 许可证
MIT 许可证 — 详情请参阅 [LICENSE](LICENSE)。标签:AI安全, AI风险缓解, Anthropic, AV绕过, Chat Copilot, CIS基准, CTI, FastAPI, Go语言工具, LLM, LLM评估, LM Studio, Ollama, OpenAI, Python, Unmanaged PE, 主动威胁狩猎, 内存规避, 复合防御管道, 多供应商路由, 多模型AI, 威胁情报, 开发者工具, 异常检测, 无后门, 本地大模型部署, 杀伤链自动化, 用户代理, 网络安全, 自主防御系统, 自定义请求头, 请求拦截, 逆向工具, 隐私保护