AhmedSalemmm/soc-l1-detection-lab

GitHub: AhmedSalemmm/soc-l1-detection-lab

一套围绕 Wazuh、Sysmon 和 Sigma 构建的 SOC L1 防御性安全实验室,通过合成日志、检测规则、分诊手册和独立告警解析器帮助分析师练习从告警分诊到事件升级的完整流程。

Stars: 0 | Forks: 0

# SOC L1 检测实验室 这是一个围绕 Wazuh、Sysmon、Sigma 规则和 MITRE ATT&CK 构建的实用 SOC 分析师实验室。它包含检测规则、植入了攻击场景和误报的合成日志、L1 分诊手册、报告模板,以及一个小型 Python 工具。该工具可以端到端地运行检测,而无需依赖 SIEM。这里的一切都仅用于防御:日志是手动编写的,其中唯一一条编码后的命令解码后只是一个无害的字符串,仓库中不包含任何漏洞利用代码。 ## 为什么构建这个实验室 SOC L1 的工作主要是判断:阅读警报,提取相关证据,并决定它是真正例(TP)、误报(FP),还是看起来可疑但实际上是已授权的活动。认证考试会谈论这项技能,但并不会展示它。这个仓库是我展示这项技能的方式:样本数据故意将真实的攻击模式与现实的误报(损坏的服务账户凭证、计划内的漏洞扫描器)混合在一起,因为区分这些情况才是这份工作的实际内容。 ## 功能介绍 - 7 条 Sigma 检测规则,涵盖暴力破解、密码喷洒、可疑的 PowerShell、由 Office 派生的 Shell、服务持久化、端口扫描和异常的出站连接,每条规则都记录了误报案例。 - 4 组合成日志集(Windows Security、Sysmon、防火墙、身份验证),包含 5 个植入的攻击场景、3 个植入的误报或良性场景,以及正常的背景噪声。 - 7 份具有固定结构的 L1 分诊手册:初始问题、证据、分诊步骤、FP 指标、升级标准和关闭说明。 - 一个 Python CLI,将 Sigma 规则的相同逻辑应用于样本日志,并生成可分诊的 Markdown 警报摘要。 - 用于在 VM 上结合 Wazuh 和 Sysmon 复现完整实验室的设置指南。 - 用于事件报告以及 SOC 日报和周报的模板,外加一份填写完整的示例事件报告。 ## 安全侧重点 - 检测逻辑:编写带有阈值的基于字段的规则,并了解每条规则会漏报什么。 - 警报分诊:TP 与 FP 与良性真正例的对比,提供了同一个警报被判定为不同结果的具体示例。 - 跨来源的日志分析:在 Sysmon 和防火墙日志中关联从 Outlook 到 Word、再到 PowerShell 最后到出站连接的链路。 - MITRE ATT&CK:严谨的、基于证据的技术映射(推理过程记录在 `docs/mitre-attack-mapping.md` 中)。 - 升级纪律:什么内容需要升级给 L2、何时升级,以及一次有用的交接应包含哪些内容。 ## 技术栈 - Wazuh(免费且开源的 SIEM) - 使用 SwiftOnSecurity 配置的 Sysmon - Sigma(供应商中立的检测规则格式) - 仅使用 Python 3.11+ 标准库 - 用于映射的 MITRE ATT&CK v15 ## 运行说明 解析器仅需要 Python 3.11 或更高版本: ``` git clone https://github.com/AhmedSalemmm/soc-l1-detection-lab.git cd soc-l1-detection-lab python parser/triage.py ``` 它会打印警报并写入 `output/alert-summary.md`。针对包含的日志的预期结果是:9 个警报,从其中一个严重警报(暴力破解伴随成功登录)一直到用于分诊(而非盲目信任)的植入误报。 ``` parsed 89 events, raised 9 alerts [CRITICAL] 1. 8 failed logons from 203.0.113.42 in under 2 minutes [HIGH ] 2. Failures against 7 distinct accounts from 203.0.113.99 [HIGH ] 3. Suspicious PowerShell on FIN-WS-07 ... ``` 要使用真实的 SIEM 构建完整的实验室,请遵循 `docs/wazuh-setup-guide.md` 和 `docs/sysmon-setup-guide.md`。 ## 项目结构 ``` detections/ Sigma rules, one scenario each, with FP notes and MITRE tags sample-logs/ synthetic JSONL logs with planted scenarios (see its README) playbooks/ L1 triage playbooks, one per alert type parser/ triage.py, applies the detection logic without a SIEM docs/ methodology, setup guides, classification and escalation guides, templates reports/ example alert summary and a filled example incident report screenshots/ capture checklist for the VM-based lab ``` ## 截图 针对样本日志的解析器输出: ![解析器输出](https://static.pigsec.cn/wp-content/uploads/repos/cas/80/80989846ca82dc6897623e77f5a1b805b5fa047315374d6978230b56862fcec3.png) VM 实验室的仪表板截图列在 `screenshots/README.md` 中,将随着实验室的重建而添加。 ## 我学到了什么 - 警报很少能直接作为决定。svc-backup 场景会触发与真实攻击相同的规则;区别在于重试频率、失败原因以及后续发生的事情。 - 阈值是对环境的一种声明。在小型实验室中,两分钟内失败六次是一个强烈的信号,但在繁忙的 VPN 集中器上可能只是背景噪声。 - 编写规则的误报部分比编写检测本身更难,但在分诊过程中却更有用。 - 正确记录升级过程(我检查了什么,我排除了什么)只需几分钟,却能避免 L2 重新进行整个调查。 ## 未来改进 - 在解析器中添加不可能的行程和大流量数据泄露检测(目前两者都作为手动练习存在)。 - 将 Sigma 规则转换为原生的 Wazuh 规则并提交经过测试的 XML。 - 添加一个场景生成器,以便可以对日志集进行随机化以供反复练习。 - 添加 Linux 身份验证日志 (sshd) 及其匹配的检测。 - 从重建的实验室中捕获 Wazuh 仪表板截图。 - 添加为每个植入场景填写的逐警报分诊工作表,而不仅仅是暴力破解案例。 ## 作品集说明 这个项目对应着我期望的职业方向:SOC L1、网络安全分析师和网络防御职位。它涵盖了这些工作的日常循环(分诊、分类、文档记录、升级)并基于真实的数据,同时对规模保持客观态度:这是一个实验室,不是生产经验,这些阈值和规则需要根据真实的业务量进行调优。 ## 作者 Ahmed Salem 网络安全毕业生,专注于 GRC、防御性安全、SOC 分析和网络安全。 LinkedIn: https://www.linkedin.com/in/ahmed-mohamed-salem
标签:Python, Sigma规则, SOC实验室, URL发现, Wazuh, 安全检测, 安全运营, 库, 应急响应, 扫描框架, 插件系统, 无后门, 目标导入, 知识库安全, 逆向工具