oussama-allouch/snort-rag-rule-generator

GitHub: oussama-allouch/snort-rag-rule-generator

一个结合检索增强生成技术的 Snort 规则生成与对比实验项目,通过多种 RAG 架构将自然语言攻击描述自动转化为 IDS 检测规则。

Stars: 1 | Forks: 0

# Snort RAG 规则生成器 - NLP 迷你项目 + Devoir 3 这是一个防御性的 NLP/RAG 项目,旨在根据自然语言的网络攻击描述生成有效的 Snort IDS 规则。 ## 本项目包含的内容 - 一份**官方 Person 1 检索数据集**,存储在 `data/processed/final_snort_dataset.csv` 中。 - 一份存储在 `data/knowledge_base/` 中的真实 Snort 规则**可信源知识库**。 - 一个旧版脚本,用于**将可信规则扩展为实验数据行**:`python -m snort_rag.generate_dataset --multiplier 20`。 - 七种 Devoir 3 架构: - 无 RAG 的基线模型 - 经典 RAG - 带有重排序的 RAG - 混合 RAG(TF-IDF 稠密回退 + BM25 融合) - 多跳 RAG - 图 RAG - 代理式 RAG - 位于 `results/comparison_metrics.csv` 的指标和对比表。 - 位于 `results/embedding_tsne.png` 的 t-SNE 嵌入可视化。 - 带有 PDF 上传功能以扩展知识库的 Gradio 仪表板。 - 位于 `docs/` 中的技术报告。 ## 重要的学术限制 该作业禁止直接使用黑盒 LLM,并禁止在 Devoir 3 中使用 OpenAI/Mistral/Ollama API。因此,本项目使用基于检索上下文 + Snort 模板的**本地透明生成器**。代码仍然实现了完整的 RAG pipeline:查询编码、检索、提示词构建、生成、解释和评估。 ## 安装 ``` python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt pip install -e . ``` ## 构建真实规则知识库 ``` python scripts/fetch_real_sources.py ``` 输出: - `data/knowledge_base/trusted_rule_kb.csv` - `data/knowledge_base/trusted_rule_kb.jsonl` - `data/knowledge_base/fetch_summary.json` ## 官方 Person 1 数据集 应用程序、Devoir 3 运行器和检索层使用的官方数据集是: - `data/processed/final_snort_dataset.csv` - `data/processed/final_snort_dataset.jsonl` - `data/processed/dataset_summary.json` - `data/processed/person1_rules.rules` 该数据集是私人的、受控的、可手动审查的,并且是 Person 1 的主要数据集以及整个项目中的默认检索语料库。 提交状态: - 官方 Person 1 数据集为 `data/processed/final_snort_dataset.csv`。 - 最终数据集是私人的、受控的,在 10 种攻击类型之间保持平衡,包含 200 行。 - 旧版可信规则扩展生成器作为实验代码保留在存储库中。 - 旧的 50 万行生成文件未包含在最终提交的项目中。 ## 旧版数据集生成器 旧版生成器需要可信的真实规则知识库,并仅为较早的实验为每条真实规则创建多个自然语言数据行。 ``` python -m snort_rag.generate_dataset --multiplier 10 # 更大的 dataset python -m snort_rag.generate_dataset --multiplier 30 ``` 如果您手动运行实验,旧版输出为: - `data/experiments/legacy_generated/snort_generated_dataset.csv` - `data/experiments/legacy_generated/snort_generated_dataset.json` - `data/experiments/legacy_generated/snort_generated_dataset.jsonl` - `data/experiments/legacy_generated/snort_generated_dataset_summary.json` 这些文件仅是旧版的实验产物。旧版生成器不再写入 `data/processed/`,且不得用作官方的 Person 1 数据集工作流。 ## 运行 Devoir 3 对比 ``` python -m snort_rag.run_devoir3 ``` 输出: - `results/comparison_metrics.csv` - `results/detailed_devoir3_results.csv` - `results/embedding_tsne.png` ## 启动仪表板 ``` python -m snort_rag.app_gradio ``` 该仪表板允许您选择 RAG 架构,生成 Snort 规则,检查检索到的文档,并添加 PDF 作为新的知识源。 ## 项目结构 ``` src/snort_rag/ package source code data/knowledge_base/ persisted trusted-source real Snort rules data/raw/ source manifest data/processed/ official Person 1 dataset data/experiments/legacy_generated/ legacy trusted-rule expansion outputs only notebooks/ Devoir 3 notebook results/ metrics and t-SNE plot docs/ report files scripts/fetch_real_sources.py trusted-source rule ingestion ``` ## 示例 ``` from snort_rag.architectures import SnortRAGArchitectures rag = SnortRAGArchitectures("data/processed/final_snort_dataset.csv") result = rag.agentic_rag("Detect SQL injection with UNION SELECT in HTTP URI") print(result["generated_rule"]) print(result["explanation"]) ``` ## 免责声明 这是一个用于教育的防御性 IDS 规则生成项目。每个生成的规则在生产使用前,仍必须使用 Snort 的配置测试模式在真实的 Snort 安装中进行验证。
标签:DLL 劫持, IDS规则生成, NLP, RAG, 大语言模型, 检索增强生成, 逆向工具