ManojKumarSatheesh/sigma-rule-agent
GitHub: ManojKumarSatheesh/sigma-rule-agent
该项目是一个基于本地 LLM 的 AI 助手,能将自然语言威胁描述或 ATT&CK 技术标识符自动转换为 Sigma 检测规则,解决安全团队手动编写规则耗时且门槛高的问题。
Stars: 0 | Forks: 0
# Sigma 规则代理
一个本地 AI 驱动的网络安全助手,通过 Ollama 使用本地托管的 LLM,将简短的威胁描述或 MITRE ATT&CK 技术 ID 转换为 Sigma 检测规则。
## 概述
安全团队通常需要快速编写检测规则,但手动创建 Sigma 规则不仅耗时,还需要检测工程知识。本项目提供了一个轻量级的本地原型,它可以接受自然语言威胁描述或 ATT&CK 技术标识符,并通过由 Ollama 支持的 Streamlit 界面生成 Sigma YAML。
当前原型的重点在于:
- 基于本地 LLM 的 Sigma 规则生成。
- 基础的输出清理与 YAML 提取。
- 简单的规则验证。
- 针对明显输出偏移的有界自我修正。
- 支持从 UI 下载生成的 Sigma 规则。
## 问题
检测工程对 SOC 团队非常重要,因为规则质量直接影响能在日志中检测到的恶意行为。手动编写 Sigma 规则可能十分缓慢,而在不断扩展的 ATT&CK 知识库中维护检测覆盖率是安全团队持续的负担。
本项目旨在解决一个实际问题:
- 分析师可能知道他们想要检测的攻击者行为,但不知道如何从头开始编写 Sigma 规则。
- 小型团队可能没有专门的检测工程能力。
- 某些环境要求使用本地工具,并且无法将敏感的检测逻辑发送到外部云 API。
## 解决方案
本应用程序允许用户输入:
- 简短的威胁描述,例如 `Suspicious PowerShell execution`,或者
- MITRE ATT&CK 技术 ID,例如 `T1059.001`。
然后,应用程序会:
1. 向本地 Ollama 模型发送提示词。
2. 清理返回的响应。
3. 如果模型将答案包裹在 Markdown 代码块中,则提取 YAML。
4. 检查输出是否与输入存在明显偏差。
5. 如果需要,使用纠正提示词重试一次。
6. 当生成失败或偏差过大时,回退到预定义的规则。
7. 显示生成的 Sigma 规则并允许用户下载。
## 为什么选择本地?
本原型使用由 Ollama 提供服务的本地 LLM,这意味着生成步骤可以在不向外部 API 发送数据的情况下运行。这对于威胁描述、检测规则和内部逻辑可能属于敏感信息的网络安全工作流来说非常有用。
## 功能
- Streamlit Web 界面。
- 本地 Ollama 集成。
- 支持自然语言输入。
- 支持 ATT&CK 技术 ID 输入。
- 从模型输出中提取 YAML 代码块。
- 对必需的 Sigma 部分进行基础验证。
- 针对明显技术偏差的一步自我修正。
- 用于下载生成的 Sigma 规则的下载按钮。
## 架构
该原型遵循一个简单的本地 pipeline:
```
User Input
↓
Streamlit UI
↓
Prompt Builder
↓
Ollama Local Model (llama3.1:8b)
↓
Output Cleaning / YAML Extraction
↓
Basic Validation + Drift Check
↓
Optional Self-Correction Retry
↓
Fallback Rule (if needed)
↓
Display + Download Sigma YAML
```
## 技术栈
- Python
- Streamlit
- Ollama
- Llama 3.1 8B
- Requests
- 用于清理和提取的正则表达式
## 项目结构
```
sigma-rule-agent/
├── app.py
├── outputs/
│ └── sample-rule.yaml
├── requirements.txt
└── README.md
```
## 设置说明
### 1. 克隆仓库
```
git clone https://github.com/ManojKumarSatheesh/sigma-rule-agent.git
cd sigma-rule-agent
```
### 2. 创建并激活虚拟环境
Windows PowerShell:
```
python -m venv venv
.\venv\Scripts\Activate.ps1
```
### 3. 安装依赖
```
pip install streamlit requests
```
或者,如果你有 `requirements.txt`:
```
pip install -r requirements.txt
```
### 4. 安装 Ollama
从官方网站为你的操作系统安装 Ollama。在 Windows 上,Ollama 会在 `http://localhost:11434` 提供本地 API 服务。
### 5. 拉取模型
```
ollama pull llama3.1:8b
```
### 6. 确认 Ollama 正在运行
```
Invoke-WebRequest http://localhost:11434 -UseBasicParsing
```
预期响应:
```
Ollama is running
```
你还可以列出可用的模型:
```
ollama list
```
Ollama 还在端口 11434 上暴露了本地 API,例如 `/api/tags` 和 `/api/generate`。
### 7. 运行 Streamlit 应用
```
python -m streamlit run app.py
```
然后打开终端中显示的本地 URL。
## 如何使用
每次输入一个内容,例如:
- `Suspicious PowerShell execution`
- `Suspicious use of rundll32.exe`
- `T1059.001`
- `Unknown suspicious process`
应用程序将生成一条 Sigma 规则,对其进行验证、解释,并允许你下载 YAML 输出。
## 示例用例
### 示例 1:自然语言输入
输入:
```
Suspicious PowerShell execution
```
预期行为:
- 应用程序生成一个与 PowerShell 相关的 Sigma 规则。
- 解释部分会描述可疑的 PowerShell 执行活动。
### 示例 2:ATT&CK 输入
输入:
```
T1059.001
```
预期行为:
- 应用程序将其视为 ATT&CK 技术标识符。
- 应用程序会尝试使结果与 PowerShell 执行保持一致。
- 如果首次输出出现偏差,应用程序会使用纠正提示词重试一次。
## 验证方法
当前原型通过检查是否包含必需的 Sigma 样式部分来执行轻量级验证,例如:
- `title`
- `id`
- `status`
- `logsource`
- `detection`
- `falsepositives`
- `level`
它还会检查:
- 是否缺少 `selection`
- 是否缺少 `condition`
- 最终显示的输出中是否包含 Markdown 代码块
这对于原型来说很有用,但这与使用 `sigma-cli` 进行完整的 schema 验证并不相同。
## 当前局限性
本项目是一个可运行的原型,而非生产级的检测工程平台。
已知的局限性:
- 验证仍然非常基础,可能会允许语义薄弱或非标准的 Sigma 字段通过。
- 本地模型可能仍会产生错误的字段名称或拙劣的检测逻辑。
- ATT&CK 对齐比以前更好,但并不能保证适用于所有技术。
- 当前版本尚未使用基于 Sigma schema 文档的 RAG pipeline。
- 当前版本尚不能自动将规则转换为 Splunk SPL、Microsoft Sentinel KQL 或 Elastic EQL。
- 当前版本尚未使用 `sigma-cli` 进行完整的解析器级别验证和修正。
## 与更广泛的研究项目的关系
本仓库是基于更广泛的毕业论文构想的一个实用原型:一个本地 LLM 驱动的 Sigma 规则生成系统,具备 schema 基础、自动化验证、有界自我修正和多后端转换功能。这项研究的长期目标是评估这样一个系统是否能减少生成语法有效且实际有用的检测规则所需的时间和专业门槛。
## 安全提示
请勿在仓库或提示词中放置 API 密钥、密码或机密的内部数据。毕业项目指南明确警告不要在提交的代码中包含密钥。
## 建议的演示流程
对于简短的演示视频,请使用以下顺序:
- 展示本地运行的 Ollama。
- 展示带有 `llama3.1:8b` 的 `ollama list`。
- 启动 Streamlit 应用。
- 为 `Suspicious PowerShell execution` 生成一条规则。
- 为 `Suspicious use of rundll32.exe` 生成一条规则。
- 为 `T1059.001` 生成一条规则。
- 下载 YAML 文件。
- 简要解释本地架构以及回退/自我修正逻辑。
## 未来改进
计划的后续步骤:
- 集成 `sigma-cli` 以进行更严格的验证。
- 使用 Sigma 文档添加基于 schema 的检索。
- 添加 ATT&CK 上下文检索。
- 添加对 Splunk SPL、Microsoft Sentinel KQL 和 Elastic EQL 的转换支持。
- 添加日志记录,以对比首次生成与修正后的生成结果。
- 通过从业者的反馈评估准确性和可用性。
## 许可证
对于 Kaggle 毕业项目,根据比赛规则,获奖作品可能需要在 CC-BY 4.0 下开源。
## 致谢
本项目是作为 Kaggle **AI Agents: Intensive Vibe Coding Capstone Project** 的一部分而构建的,该比赛要求在公共仓库中提供书面报告、视频、项目链接以及相关支持文档。
标签:AI风险缓解, Kubernetes, LLMOps, Sigma规则, 字符串匹配, 安全运营, 扫描框架, 本地大模型, 目标导入, 网络安全, 逆向工具, 隐私保护