nbaliyan260/VeriCTI-RAG
GitHub: nbaliyan260/VeriCTI-RAG
VeriCTI-RAG是一个抗投毒且证据可验证的网络威胁情报系统,用于自动化生成和验证检测规则。
Stars: 0 | Forks: 0
# VeriCTI-RAG (原型)
**抗投毒、证据可验证的网络威胁情报RAG,用于检测规则生成**
这是实现 [顶层 `../README.md`](PROFESSOR_DEMO.md) 所述系统的工作研究原型。它面向防御和研究:帮助分析师 *验证* 源自CTI的检测逻辑。它 **不** 会自动化任何现实世界的恶意活动。
## 📄 报告与文档
| 文档 | 内容 |
|------|------|
| **[教授演示文档](PROFESSOR_DEMO.md)** | 2分钟摘要、演示指南、与教授会议讨论的问题 |
| **[第一阶段报告](PHASE1_REPORT.md)** | 学术风格的第一阶段报告:摘要、动机、架构、评估、第二阶段计划 |
| **[技术报告](REPORT.md)** | 完整技术报告:威胁模型、系统设计、实验、量化结果 |
| `demo_summary.json` | 教授演示的结构化JSON输出 |
| `demo_output.txt` | `python run_demo.py` 的完整输出 |
| `test_output.txt` | `pytest -q` — 27个测试全部通过 |
| `eval_output.txt` | 真值精确率/召回率/F1评估 (实体F1=0.88, 技术F1=0.92) |
## 🎓 教授演示
### 演示存在的原因
教授演示是一个 **精心设计的8步流程**,为论文答辩会议或研究顾问评审而设计。它展示了完整的VeriCTI-RAG管道在单个CTI报告上端到端运行的过程,然后演示了投毒报告如何破坏输出,以及系统如何检测到这种破坏。
### 如何运行
```
cd vericti-rag
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements-min.txt
make professor-demo
# 运行 python run_professor_demo.py --json
```
### 会议期间要展示的内容
1. **步骤1-5**: "这是系统所做的事情——摄取、提取、映射、生成、验证。"
2. **步骤6**: "每个输出都链接到特定的证据文本——这是它与普通RAG的区别所在。"
3. **步骤7**: "这是当CTI语料库被投毒时发生的情况——出现新的虚假IOC,系统会将其标记出来。"
4. **步骤8**: "最终的分析师报告会给出一个置信度评分和警告,以便分析师做出明智的决定。"
### 预期输出亮点
| 步骤 | 关键输出 |
|------|----------|
| 摄取 | doc_id, title, trust_score=0.9 |
| 提取 | 8个实体,带有证据片段链接 |
| ATT&CK | 7个技术映射 (T1059.001, T1105 等) |
| Sigma | 4条规则,全部已验证,0% FPR |
| 证据 | 每个实体 → 片段 → 源文本片段 |
| 投毒 | 检测到3个新引入的虚假IOC |
| 报告 | 结论=已验证但有疑虑, 置信度=0.85 |
### 已实现的功能 (第一阶段)
- ✅ 完整管道:摄取 → 提取 → 映射 → 生成 → 验证
- ✅ 5种投毒攻击类型,带有真值标注
- ✅ 每个输出的证据溯源
- ✅ 10种防御机制(信任度、新鲜度、溯源、注入检测等)
- ✅ 27个单元测试,全部通过
- ✅ FastAPI后端 + Streamlit仪表板
### 计划中的功能 (第二阶段)
- AZERG数据集评估 (141份报告, 4,011个实体)
- LLM增强提取 (GPT-4o / Claude)
- 跨报告佐证
- 实际日志验证 (Mordor, Atomic Red Team)
- 与SOC分析师进行的用户研究
## 🚀 快速开始
### 选项A:最小安装 (仅测试+演示)
```
cd vericti-rag
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements-min.txt
# 运行所有测试
make test
# 运行 professor demo
make professor-demo
# 运行 standard demo
make demo
```
### 选项B:全栈 (后端+UI+向量数据库+嵌入)
```
pip install -r requirements-full.txt
make api # terminal 1: FastAPI on port 8000
make ui # terminal 2: Streamlit frontend
```
### 选项C:旧版单个需求文件
```
pip install -r requirements.txt
```
## ⚙️ 配置
所有设置均通过环境变量配置 (参见 `.env.example` 和 `app/core/config.py`):
| 变量 | 默认值 | 描述 |
|------|--------|------|
| `VERICTI_DATA_DIR` | `./data` | 数据目录 (报告、日志、数据库) |
| `VERICTI_DB_PATH` | `./data/vericti.db` | SQLite数据库路径 |
| `VERICTI_CHROMA_DIR` | `./data/chroma` | ChromaDB持久化目录 |
| `VERICTI_LLM_PROVIDER` | `mock` | LLM提供者:`mock`, `openai`, `anthropic` |
| `VERICTI_LLM_MODEL` | `gpt-4o-mini` | LLM模型名称 (使用openai/anthropic时) |
| `OPENAI_API_KEY` | — | OpenAI API密钥 (可选) |
| `ANTHROPIC_API_KEY` | — | Anthropic API密钥 (可选) |
默认的 `mock` LLM提供者执行确定性的、基于规则的提取,因此整个管道**离线**运行,无需API密钥。
## 🧪 测试
```
make test # all 27 tests
pytest -v # verbose output
pytest tests/test_professor_demo.py # professor demo tests (12 tests)
pytest tests/test_sigma.py # Sigma generation tests
```
## 📡 API端点
FastAPI后端暴露:
| 方法 | 端点 | 描述 |
|------|------|------|
| `GET` | `/` | 健康检查 |
| `GET` | `/documents` | 列出已摄取的文档 |
| `POST` | `/ingest` | 上传文件或文本进行摄取 |
| `POST` | `/ingest/text` | 摄取内联文本 (JSON请求体) |
| `POST` | `/extract` | 提取STIX实体 + ATT&CK映射 |
| `POST` | `/generate-rule` | 从文档生成Sigma规则 |
| `POST` | `/verify-rule` | 验证Sigma规则 (语法 + 语义 + 日志) |
| `POST` | `/poison` | 对文本应用投毒攻击 |
| `POST` | `/evaluate` | 比较清洁文档与投毒文档 |
| `GET` | `/graph/{doc_id}` | 获取文档的证据图 |
| `GET` | `/report/{doc_id}` | 构建完整的分析师报告 |
## 🎛️ Streamlit 仪表板
前端有6个标签页:
1. **上传报告** — 摄取PDF/文本文件或粘贴报告文本
2. **提取的CTI** — 查看STIX实体、关系、ATT&CK映射
3. **证据图** — 交互式PyVis网络可视化
4. **生成的Sigma规则** — 查看带有证据链接的生成规则
5. **投毒分析** — 应用攻击,比较清洁与投毒的结果
6. **规则验证报告** — 带有置信度和警告的完整分析师结论
## 📁 项目布局
```
vericti-rag/
├── app/ # Backend: API, pipeline, modules
│ ├── main.py # FastAPI entrypoint
│ ├── services/pipeline.py # End-to-end orchestration
│ ├── core/ # Config, DB, schemas, LLM
│ ├── ingestion/ # Text/PDF loading, chunking
│ ├── retrieval/ # BM25 + vector hybrid retrieval
│ ├── extraction/ # IOC, STIX, ATT&CK extraction
│ ├── graph/ # Evidence graph + consistency
│ ├── rules/ # Sigma generation + validation + execution
│ ├── defense/ # Evidence verification + confidence scoring
│ ├── attacks/ # 5 poisoning attack modules
│ └── evaluation/ # Metrics, experiments, evaluation harness
├── data/
│ ├── raw_reports/ # Clean CTI reports (incl. demo report)
│ ├── poisoned_reports/ # Poisoned CTI reports (incl. demo report)
│ ├── ground_truth/ # Ground-truth annotation JSON
│ ├── logs_malicious/ # Per-technique malicious JSONL logs
│ └── logs_benign/ # Per-technique benign JSONL logs
├── frontend/ # Streamlit 6-tab dashboard
├── prompts/ # LLM prompt templates
├── tests/ # 27 unit tests (6 modules)
├── Makefile # make test / demo / professor-demo / api / ui
├── .env.example # Configuration template
├── requirements-min.txt # Minimal deps (tests + demo)
├── requirements-full.txt # Full deps (UI + vector + embeddings)
├── requirements.txt # Legacy combined deps
├── run_demo.py # Standard CLI demo
├── run_professor_demo.py # Professor demo (Phase 1)
├── demo_summary.json # Structured demo output
├── PROFESSOR_DEMO.md # Professor meeting guide
├── PHASE1_REPORT.md # Academic Phase 1 report
├── REPORT.md # Full technical report
└── README.md # This file
```
标签:Apex, CTI分析, Kubernetes, RAG技术, 原型系统, 威胁情报, 开发者工具, 情报驱动安全, 投毒攻击防御, 机器学习, 检测规则生成, 网络安全, 自动化验证, 证据验证, 逆向工具, 隐私保护