lumen-maximus/soc_triage_bot
GitHub: lumen-maximus/soc_triage_bot
一个异步、与SIEM无关的SOC分诊代理,用于自动化安全警报分析与响应建议生成。
Stars: 0 | Forks: 0
# SOC分诊机器人
一个异步的、与SIEM无关的安全运营中心(SOC)分诊代理服务,用于自动化安全警报分析与响应建议生成。
## 功能特性
- **信号摄入与规范化**:接收多种信号类型(SIEM警报、IOC、CVE、威胁狩猎发现、用户报告),并将其规范化为通用模式
- **并发增强**:使用适配器并行运行增强处理:
- SIEM(历史上下文、警报频率)
- EDR(端点数据、进程树)
- 威胁情报(信誉、攻击活动)
- 漏洞数据库(CVE详情、补丁状态)
- CMDB(资产关键性、所有权)
- **ETS预测**:多时域指数平滑预测,支持滚动回测与异常检测
- **相似案例检索**:基于TF-IDF的相似性搜索,查找相关历史案例
- **确定性分类**:使用增强数据和历史模式,基于规则的TP/FP分类
- **操作建议**:生成、去重和排序操作建议,来源包括:
- 预定义模板
- 案例学习到的模式
- 基于动态上下文的生成
- **Jinja Markdown报告**:专业、易读的分诊报告
- **双重接口**:同时提供CLI和REST API
## 安装说明
```
# 克隆仓库
git clone https://github.com/lumen-maximus/soc_triage_bot.git
cd soc_triage_bot
# 安装依赖项
pip install -e .
# 用于开发(包括测试依赖项)
pip install -e ".[dev]"
```
## 快速开始
### CLI使用方法
```
# 启动 REST API 服务器
soc-agent serve --host 0.0.0.0 --port 8000
# 从 JSON 文件分类信号
soc-agent triage examples/siem_alert.json -o report.md
# 使用历史数据进行分类以预测
soc-agent triage examples/siem_alert.json \
--historical-data examples/historical_data.json \
-o report.md
# 交互式创建和分类信号
soc-agent create --type siem_alert
# 验证信号文件
soc-agent validate examples/siem_alert.json
# 检查适配器健康状况
soc-agent health
```
### REST API使用方法
启动服务器:
```
soc-agent serve
```
或直接使用uvicorn:
```
uvicorn soc_triage_bot.api:app --host 0.0.0.0 --port 8000
```
API调用示例:
```
# 健康检查
curl http://localhost:8000/health
# 分类信号
curl -X POST http://localhost:8000/triage \
-H "Content-Type: application/json" \
-d @examples/siem_alert.json
# 获取分类结果
curl http://localhost:8000/triage/{triage_id}
# 获取 Markdown 报告
curl http://localhost:8000/triage/{triage_id}/report
# 获取行动提案
curl http://localhost:8000/triage/{triage_id}/actions
# 标准化原始信号
curl -X POST http://localhost:8000/signals/normalize \
-H "Content-Type: application/json" \
-d '{"type":"siem_alert","title":"Test","description":"Test alert","severity":"high"}'
```
## 信号格式
信号遵循规范化模式:
```
{
"signal_id": "sig-20251214-001",
"signal_type": "siem_alert",
"timestamp": "2025-12-14T19:00:00Z",
"source": {
"system": "splunk",
"rule_id": "rule-001",
"rule_name": "Suspicious PowerShell"
},
"title": "Suspicious PowerShell Execution",
"description": "PowerShell with encoded command detected",
"severity": "high",
"entities": {
"hostname": ["workstation-01"],
"user": ["admin"],
"ip": ["192.0.2.15"]
},
"tags": ["malware", "powershell"],
"raw_data": {},
"metadata": {}
}
```
### 信号类型
- `siem_alert`:来自SIEM系统的警报
- `ioc`:威胁指标匹配
- `cve`:漏洞报告
- `hunt`:威胁狩猎发现
- `user_report`:用户提交的安全问题
## 架构设计
### 组件
1. **模型**:用于信号、增强、分类和操作的Pydantic模型
2. **适配器**:可插拔的外部系统适配器(SIEM、EDR、TI、Vuln、CMDB)
3. **服务**:
- `EnrichmentService`:编排并发增强处理
- `ForecastingService`:支持滚动回测的ETS预测
- `SimilarityService`:基于TF-IDF的相似案例检索
- `ClassificationService`:确定性TP/FP分类
- `ActionProposalService`:模板、学习和生成的操作建议
- `ReportService`:基于Jinja2的报告生成
- `TriageService`:完整工作流程的主编排器
### 工作流程
1. **摄入**:接收多种格式的信号
2. **规范化**:转换为通用模式
3. **增强**:通过适配器运行并发增强
4. **预测**:分析时间序列模式(如果提供历史数据)
5. **检索**:查找相似历史案例
6. **分类**:确定TP/FP/未知,并计算置信度分数
7. **建议**:生成排序后的操作建议
8. **报告**:渲染全面的Markdown报告
## 配置说明
系统设计为与SIEM无关,支持可插拔适配器。要集成到您的环境中:
1. **实现自定义适配器**:为您的特定系统扩展 `BaseAdapter`
2. **配置端点**:在适配器配置中设置API端点和凭据
3. **调整分类**:在 `ClassificationService` 中调整置信度阈值
4. **添加模板**:在 `ActionProposalService` 中扩展操作模板
自定义适配器示例:
```
from soc_triage_bot.adapters import BaseAdapter
from soc_triage_bot.models import Signal, EnrichmentResult, EnrichmentStatus
class MySIEMAdapter(BaseAdapter):
async def enrich(self, signal: Signal) -> EnrichmentResult:
# Query your SIEM
data = await query_my_siem(signal)
return EnrichmentResult(
adapter=self.name,
status=EnrichmentStatus.SUCCESS,
data=data
)
```
## 开发指南
### 运行测试
```
# 安装开发依赖项
pip install -e ".[dev]"
# 运行测试
pytest
# 运行覆盖率
pytest --cov=soc_triage_bot --cov-report=html
```
### 项目结构
```
soc_triage_bot/
├── soc_triage_bot/
│ ├── __init__.py
│ ├── models/ # Pydantic data models
│ │ ├── signal.py
│ │ ├── enrichment.py
│ │ ├── classification.py
│ │ └── action.py
│ ├── adapters/ # Enrichment adapters
│ │ ├── base.py
│ │ ├── siem.py
│ │ ├── edr.py
│ │ ├── threat_intel.py
│ │ ├── vulnerability.py
│ │ └── cmdb.py
│ ├── services/ # Core services
│ │ ├── enrichment.py
│ │ ├── forecasting.py
│ │ ├── similarity.py
│ │ ├── classification.py
│ │ ├── action_proposal.py
│ │ ├── report.py
│ │ └── triage.py
│ ├── api.py # FastAPI REST API
│ └── cli.py # Click CLI
├── tests/ # Test suite
├── examples/ # Example signals
└── pyproject.toml # Project configuration
```
## API文档
当服务器运行时,请访问:
- Swagger UI:http://localhost:8000/docs
- ReDoc:http://localhost:8000/redoc
## 系统扩展
### 添加新信号类型
1. 在 `models/signal.py` 的 `SignalType` 枚举中添加
2. 更新 `api.py` 或 `cli.py` 中的规范化逻辑
3. 在 `examples/` 中添加示例
### 添加新适配器
1. 在 `adapters/` 中创建新适配器
2. 扩展 `BaseAdapter`
3. 实现 `enrich()` 方法
4. 在 `api.py` 和 `cli.py` 中注册
### 添加操作模板
编辑 `services/action_proposal.py` 中的 `ActionProposalService._load_templates()` 方法
## 许可协议
MIT License - 详见LICENSE文件
## 贡献指南
欢迎贡献!请:
1. Fork本仓库
2. 创建功能分支
3. 为新功能添加测试
4. 确保所有测试通过
5. 提交拉取请求
## 支持渠道
如有问题、疑问或贡献,请在GitHub上提交issue。
标签:GPT, Markdown报告生成, Python开发, REST API, TF-IDF相似度搜索, 事件分类, 动作推荐, 占用监测, 命令行接口, 响应推荐, 威胁分类, 威胁情报集成, 安全运营中心, 并发增强, 异步处理, 时间序列预测, 漏洞管理, 监控工具, 网络映射, 自动化安全分析, 规则分类, 警报管理, 资产管理, 逆向工具, 预测分析