Halhebshi/AI-SOC-Triage-Automation
GitHub: Halhebshi/AI-SOC-Triage-Automation
基于 Azure OpenAI 和 Microsoft Sentinel 构建的 AI 驱动 SOC 事件分诊流水线,以按需付费方式替代 Security Copilot 实现自动化事件分析与决策路由。
Stars: 0 | Forks: 0
# AI-SOC-Triage-Automation#
这是一个旨在回答一个实际问题的自主实验:Security Copilot 的定价对许多组织来说难以承受,那么能否使用 Azure OpenAI 和 Microsoft Sentinel 基于按需付费模式构建出类似的东西?
这是一个概念验证。它远未达到企业级标准,也不能直接原样投入生产环境,但它展示了仅使用 Microsoft 技术栈中已有工具可以实现的功能。初衷是跳出标准工具提供的功能进行思考,探索在承诺全面部署 Security Copilot 之前,租户内部托管且经济实惠的 AI 分诊是否现实。
运行正常时,该流水线会自动分诊 Sentinel 事件。当分析师打开工单时,它已经包含了一份结构化的三级(Tier 3)报告:确凿的日志条目、MITRE ATT&CK 映射、可直接运行的 hunting 查询以及缓解步骤。误报会在无需人工干预的情况下自动关闭。所有事件数据都保留在 Microsoft 租户内部,且每个事件的成本以美分为单位计算。
## 架构
当 Sentinel 事件触发时,Logic App 会提取实体(账户、设备、IP、文件名),并跨可用的遥测表运行 KQL union 查询以获取原始证据。这些证据将与事件详情打包在一起,并伴随三级 SOC 分析师 prompt 发送给 Azure OpenAI。模型会返回结构化的 JSON,Decision Matrix 随后将事件路由到四种结果之一:自动关闭、升级、排队审查或默认评论。
基于 Azure Logic Apps、Microsoft Sentinel 和 Azure OpenAI 构建。没有使用第三方工具,数据也不会离开租户。
## 工作原理
**1. 事件触发。** Sentinel 事件触发 Logic App。实体被提取到一个目标列表中,用于界定证据查询的范围。
**2. 收集证据。** 跨可用遥测表运行 KQL union 查询:
```
union isfuzzy=true
DeviceProcessEvents,
DeviceNetworkEvents,
DeviceFileEvents,
DeviceLogonEvents,
EmailEvents,
SecurityAlert
| where TimeGenerated > ago(14d)
| where AccountName has_any (targetedEntities)
or DeviceName has_any (targetedEntities)
or RemoteIP has_any (targetedEntities)
or FileName has_any (targetedEntities)
or InitiatingProcessAccountName has_any (targetedEntities)
| project TimeGenerated, Type, ActionType, AccountName, DeviceName,
RemoteIP, FileName, TableName=Type
| sort by TimeGenerated desc
| take 50
```
**3. AI 深度分析。** 事件详情和 KQL 证据被发送给 Azure OpenAI,并附带三级 SOC 分析师 system prompt。模型输出包含六个字段的结构化 JSON:
| 字段 | 用途 |
|---|---|
| ActionableRecommendation | 自动关闭、排队或升级 |
| PrimaryIndicator | 具体的确凿日志条目及其确认威胁的原因 |
| ExecutiveSummary | 简明的非技术性摘要 |
| TechnicalAnalysis | 包含 MITRE ATT&CK 映射的详细报告 |
| InvestigationKQL | 用于深度 hunting 的可直接运行的 KQL 查询 |
| NextSteps | 手动缓解步骤 |
**4. Decision Matrix 路由。** switch 操作根据模型自身的建议执行,而不是依赖硬编码的规则:
- **自动关闭**:事件作为误报关闭,并带有解释性评论
- **升级**:分配事件,提高严重性,将完整分析报告作为事件评论发布
- **排队**:发布三级分析,保留事件供分析师审查
- **默认**:为任何无法顺利解析的内容发布评论
升级逻辑信任模型的建议字段。prompt 负责推理;flow 负责路由。
## 实际结果
来自实验室的一个真实事件:在混合加入的 endpoint 上发生了带有编码命令执行的可疑 PowerShell 下载。
在无需分析师干预工单的情况下,系统将创建多个具有 GUID 类似名称的 `.key` 文件标记为勒索软件活动的主要指标 (T1486),识别出指向多个外部 IP 的出站连接为潜在的 C2,生成了跨 `DeviceFileEvents`、`DeviceProcessEvents` 和 `DeviceNetworkEvents` 的特定设备 hunting 查询,建议立即隔离主机,升级了事件,并将严重性从中级提高到高级。完整的报告已自动作为事件评论发布。
(screenshots/logic-app-flow.png)
(screenshots/decision-matrix.png)
(screenshots/incident-report.png)
## 设计决策
**Prompt enrichment,而非 RAG。** 会针对每个事件收集实时的 KQL 证据,并在 runtime 注入到 prompt 中。没有向量存储,没有检索步骤。值得一提的正确命名。
**成本。** Security Copilot 需要专用的 SCU 配额。本项目基于 Azure OpenAI 的按需付费定价运行,这对于规模较小的安全团队来说是完全不同的考量。
**数据边界。** Azure OpenAI 在 Azure 订阅中运行。事件数据不会离开租户,这对于对合规性敏感的环境至关重要。
## 已知局限性
跨六个表的 union 查询对于真实的生产环境来说范围太广。它在实验室中可行,但面对每日大量数据摄入的企业级 Sentinel 工作区时将无法支撑。
下一次迭代将首先根据告警产品名称进行路由,并按来源运行定向查询:MDE 告警仅查询设备表,身份告警仅查询 sign-in 和 MDI 表。更窄的查询,在 prompt 中产生的噪音更少,token 成本更低。
标签:AI, Azure OpenAI, Microsoft Sentinel, 大语言模型蜜罐, 安全运营, 扫描框架, 自动化代码审查, 自动化分类