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技术, 原型系统, 威胁情报, 开发者工具, 情报驱动安全, 投毒攻击防御, 机器学习, 检测规则生成, 网络安全, 自动化验证, 证据验证, 逆向工具, 隐私保护