TaruntejaDesireddy/cybersoc-portfolio

GitHub: TaruntejaDesireddy/cybersoc-portfolio

一个个人 Microsoft Sentinel SOC 实验室项目,包含 60 条自主编写的 KQL 检测规则、SOAR 自动化 Playbook 及端到端部署方案,弥补安全运营实际动手经验的不足。

Stars: 0 | Forks: 0

# cybersoc-portfolio 个人 Microsoft Sentinel SOC 实验室 —— 从零开始端到端部署和配置,以弥补(Sentinel 部署、connector 配置、SOAR 自动化)实际操作经验的不足,并补充 4 年以上的 SOC L2/L3 分析师经验。 ## 架构 - **Log Analytics 工作区** (`law-soc-lab`),已启用 Microsoft Sentinel —— 90 天数据保留(通过 Sentinel 免费层),每天 1 GB 的数据摄入上限以控制成本 - **Data connectors**:Azure Activity Log、Entra ID 登录/审计日志、Syslog(运行 Azure Monitor Agent 的专用 Ubuntu VM,通过自定义 Data Collection Rule 仅过滤出与安全相关的设施/严重级别),以及一个自定义 threat intel pipeline,将 AbuseIPDB 的高可信度 IP 黑名单拉取到 Sentinel Threat Intelligence 中 - **RBAC 分层**:所有者账户(Sentinel Contributor),3 个模拟的一级(Tier-1)分析师账户(Sentinel Reader —— 可查看 incident/hunt/workbook,无写入权限) ## Analytics Rules (`/analytics-rules`) 60 个自行编写的计划规则 —— 没有使用任何库模板。每一条规则都是针对已确认在此工作区中正在摄入数据的 table 编写的,因为无法触发的规则比没有规则更糟糕:它会营造出覆盖率的假象。 | 类别 | 规则数 | 数据源 | |---|---:|---| | Azure 控制面 | 20 | AzureActivity | | 身份与认证 | 20 | SigninLogs, AADNonInteractiveUserSignInLogs | | Entra ID 目录 | 12 | AuditLogs | | Linux 端点 | 5 | Syslog | | 检测健康与关联 | 3 | Heartbeat, Usage, AzureActivity | 30 条高危,25 条中危,5 条低危。60 条规则中有 59 条包含 entity mapping,全部 60 条均包含自定义细节,44 条包含动态告警标题,因此 incident 名称会包含实际的用户、IP 或资源,而不是静态字符串。 每条规则的描述都记录了其自身的检测逻辑、MITRE 映射、带编号的 triage 步骤、已知的误报及其特定的调整手段,以及 source table —— 这样 triage 就不会依赖于个人经验。 有关完整索引以及三条在生产环境使用前需要进行环境特定调整的规则,请参阅 [`analytics-rules/README.md`](analytics-rules/README.md)。 ## Playbooks (`/playbooks`) Logic App 工作流定义,已导出为 ARM 模板。机密信息(API key)已参数化 —— 请在部署时提供您自己的值,切勿提交。这三者均通过系统分配的 Managed Identity 进行身份验证 —— 任何工作流中都没有存储 Azure 凭据。 | Playbook | 触发器 | 用途 | |---|---|---| | `la-ip-enrichment.json` | HTTP(从 Sentinel incident 调用) | 通过 VirusTotal 查询 incident IP,并将丰富信息(恶意/可疑/无害计数,ASN 所有者,国家/地区)作为 incident 评论发布 | | `la-user-containment.json` | HTTP(从 Sentinel incident 调用) | 对于高严重级别的 incident,通过 Microsoft Graph 禁用关联的 Entra ID 用户账户,然后对该 incident 进行评论。Managed Identity 仅限于 `User.EnableDisableAccount.All` + `User.Read.All` —— 没有长期的 `User.ReadWrite.All` 权限 | | `la-email-alert.json` | HTTP(从 Sentinel incident 调用) | 通过 Azure Communication Services Email(Azure 原生,无第三方邮件提供商)发送格式化的 incident 警报电子邮件,然后对该 incident 进行评论 | ## 部署 ``` az deployment group create --resource-group --template-file playbooks/la-ip-enrichment.json --parameters VirusTotalApiKey= az deployment group create --resource-group --template-file playbooks/la-user-containment.json az deployment group create --resource-group --template-file playbooks/la-email-alert.json ``` 部署后,请为您的工作区授予每个 playbook 的 Managed Identity `Microsoft Sentinel Contributor` 权限,并(对于 containment)授予上述 Graph 应用角色。 Analytics rules 从其 JSON 定义进行部署: ``` ./deploy-rules.ps1 -SubscriptionId -ResourceGroup -WorkspaceName ``` 添加 `-WhatIf` 可在不写入的情况下进行预览。每条规则都带有一个固定的 GUID,因此脚本是幂等的 —— 重新运行时会就地更新,而不是创建重复项。
标签:AI合规, AMSI绕过, KQL检测规则, Libemu, Microsoft Sentinel, SOAR, 威胁检测, 安全运营, 扫描框架