dedsechack-1337/soc-copilot

GitHub: dedsechack-1337/soc-copilot

一款基于本地开源大模型的安全运营 AI 助手,支持用自然语言查询日志、自动生成并验证 Sigma/YARA 规则,以及进行 MITRE ATT&CK 行为映射。

Stars: 1 | Forks: 0

# AI 威胁狩猎助手 (SOC Copilot) 一款本地优先的 AI 助手,专为安全分析师设计:使用自然语言查询日志, 生成经过验证的 Sigma 和 YARA 规则,并将行为映射到 MITRE ATT&CK —— 所有这一切都通过聊天界面完成,由通过 Ollama 运行的开源 LLM 提供支持,并在真实的 ATT&CK 语料库上使用检索增强生成 (RAG)。 ## 架构 ``` ┌───────────────────┐ │ Streamlit Chat │ └─────────┬───────────┘ │ ┌─────────▼───────────┐ │ LangChain Agent │ (agent.py — create_agent, │ (Ollama chat model) │ langgraph tool-calling loop) └──┬───────┬───────┬────┘ ┌────────────┘ │ └────────────┐ ▼ ▼ ▼ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ query_security_ │ │ generate_sigma_ │ │ generate_yara_ │ │ logs │ │ detection_rule │ │ detection_rule │ │ (NL → ES DSL) │ │ (LLM + pySigma │ │ (LLM + yara-python │ │ │ │ validation) │ │ compilation check) │ └──────────────────┘ └──────────────────┘ └──────────────────┘ │ ▼ ┌──────────────────┐ │ mitre_attack_ │ │ lookup │ │ (ChromaDB RAG over │ │ real ATT&CK STIX) │ └──────────────────┘ ``` ## 已实现功能与需要接入的功能 | 组件 | 状态 | |---|---| | MITRE ATT&CK 数据 | **真实** —— 从 `mitre/cti` GitHub repo 实时拉取,解析了 697 个技术/子技术 | | ATT&CK 向量搜索 | **真实** —— 使用 ChromaDB + Ollama embeddings,已进行端到端逻辑测试 | | Sigma 生成 + 验证 | **真实** —— pySigma 解析/验证每一条生成的规则;失败时自动重试 | | YARA 生成 + 验证 | **真实** —— yara-python 编译每一条生成的规则;失败时自动重试 | | 日志查询 | **内置 Mock backend** —— 将 `MockLogBackend` 替换为 `ElasticsearchBackend`(在 `tools/log_query.py` 中提供了存根),并指向你真实的 SIEM 索引 | | LLM | 需要在本地运行 **Ollama**,并配置一个 chat 模型(默认为 `llama3.1`)和一个 embedding 模型(`nomic-embed-text`) | ## 设置 ### 1. 安装 Ollama 并拉取模型 ``` # https://ollama.com/download ollama pull llama3.1 # chat/reasoning model ollama pull nomic-embed-text # embedding model for ATT&CK RAG ollama serve # if not already running as a service ``` ### 2. 安装 Python 依赖项 ``` python -m venv venv && source venv/bin/activate pip install -r requirements.txt ``` ### 3. 构建 ATT&CK 知识库(一次性) ``` # 获取 + 解析最新的 MITRE ATT&CK Enterprise matrix curl -o data/enterprise-attack.json \ https://raw.githubusercontent.com/mitre/cti/master/enterprise-attack/enterprise-attack.json python ingest/parse_attack.py # -> data/techniques.json python ingest/build_vectorstore.py # -> vectorstore/attack_chroma/ ``` ### 4. 运行 **Chat UI:** ``` streamlit run app.py ``` **CLI:** ``` python agent.py ``` **单个工具(用于测试):** ``` python tools/attack_lookup.py "dumping lsass memory to steal credentials" python tools/sigma_generator.py "PowerShell downloading and executing a remote script" python tools/yara_generator.py "Cobalt Strike beacon default config" python tools/log_query.py "show failed logins in the last 6 hours" ``` ## 连接真实的 SIEM 编辑 `tools/log_query.py`: ``` from tools.log_query import ElasticsearchBackend _backend = ElasticsearchBackend(hosts=["https://your-es-host:9200"], index_pattern="security-logs-*") ``` 更新同一文件中的 `SCHEMA_DESCRIPTION` 以匹配你实际的索引 字段映射 —— NL 到 DSL 转换的质量完全取决于 LLM 是否拥有准确的 schema 可供使用。对于 Splunk,请编写一个等效的 `SplunkBackend`,将查询转换为 SPL 而不是 ES DSL(NL2DSL 的 prompt 模板是一个很好的改编起点)。 ## 设计说明 - **验证优先的规则生成**:LLM 总是能可靠地生成 *看似合理* 但存在细微错误的 Sigma/YARA 语法(错误的 UUID、缺失 `condition` 块、 不平衡的 YARA 字符串引用)。两个生成器在返回输出之前都会对其进行解析/编译, 并在失败时将错误信息反馈给模型并自动重试一次。 如果仍然失败,分析师将看到原始输出 *以及* 验证错误,而不是一条默默损坏的规则。 - **RAG 用于 ATT&CK,而不是用于查询每个规则的生成**:ATT&CK 映射是纯粹的检索(快速、确定性强、无幻觉风险)。 Sigma/YARA 生成目前不会为了风格定位而检索示例规则 —— 一个很好的下一步(见下文)是将 真实的 Sigma/YARA 规则语料库(例如 SigmaHQ 的规则集)像 ATT&CK 一样进行 embedding,并检索相似的示例以引导 LLM 的风格并 进一步减少验证失败。 - **本地优先**:一切皆通过 Ollama 运行,因此日志数据和 生成的检测规则永远不会离开你的基础设施。 ## 下一步 / 扩展想法 - 将 [SigmaHQ ruleset](https://github.com/SigmaHQ/sigma) 和 YARA 规则语料库 embedding 到它们各自的 Chroma 集合中,以实现 few-shot 检索。 - 添加一个 `sigma-cli`/pySigma backend 转换步骤,以便可以将生成的规则 立即转换为你 SIEM 的原生查询语言。 - 添加对话记忆持久化(基于 SQLite 的 langgraph checkpointer), 以便分析师可以在不同会话之间恢复调查。 - 添加一个反馈循环:让分析师对生成的规则点赞/点踩,并 随着时间推移将接受的规则反馈到检索语料库中。
标签:AI风险缓解, Kubernetes, 逆向工具