fhurau/detection-engineering-lab

GitHub: fhurau/detection-engineering-lab

一个基于 Python 的轻量级检测工程实验室,用于测试 Sigma 风格检测规则并生成 SOC 风格的 Markdown 调查报告。

Stars: 0 | Forks: 0

# 检测工程实验室 一个小型可运行的检测工程实验室,它使用 Sigma 风格的规则、Splunk SPL 等效规则、MITRE ATT&CK 映射以及基于 Python 的检测引擎,分析实验室生成的安全事件。 [![Python CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c18ca0ca17173305.svg)](https://github.com/fhurau/detection-engineering-lab/actions/workflows/python-ci.yml) ![Python 3.12](https://img.shields.io/badge/Python-3.12-3776AB?logo=python\&logoColor=white) ![Docker Ready](https://img.shields.io/badge/Docker-Ready-2496ED?logo=docker\&logoColor=white) ![MITRE ATT\&CK](https://img.shields.io/badge/MITRE%20ATT%26CK-Mapped-E34F26) ![Splunk SPL](https://img.shields.io/badge/Splunk-SPL-000000?logo=splunk\&logoColor=white) ## 概述 检测工程实验室是一个拉取并运行的项目,用于针对小型的实验室生成数据集测试简单的检测逻辑。 该实验室包含 Windows 安全、Sysmon、DNS 和电子邮件事件的示例。它加载 Sigma 风格的 YAML 规则,将它们与事件进行匹配,并生成 Markdown 格式的 SOC 风格调查结果报告。 该项目特意保持轻量化,以便于检查检测逻辑、事件字段和匹配行为。 ## 快速开始 ### Docker ``` docker compose up --build ``` ### 本地 Python ``` python -m pip install -r requirements.txt python src/main.py ``` ### 交互式数据集选择 ``` python src/main.py --interactive ``` ### 测试 ``` python -m pytest -q ``` ## 架构 ``` detection-engineering-lab/ |-- datasets/ | |-- windows/ | |-- network/ | |-- email/ | `-- custom/ |-- rules/ | |-- sigma-style/ | `-- splunk/ |-- src/ |-- reports/ |-- tests/ |-- Dockerfile |-- docker-compose.yml `-- requirements.txt ``` * `datasets/` 包含实验室生成的安全事件。 * `rules/sigma-style/` 包含 YAML 检测规则。 * `rules/splunk/` 包含等效的 Splunk SPL 搜索。 * `src/` 包含规则加载器、数据集加载器、标准化器、检测引擎和报告生成器。 * `reports/` 包含生成的调查结果报告。 * `tests/` 包含用于规则加载、标准化和检测输出的 pytest 覆盖率测试。 ## 包含的检测规则 | 检测 | 数据源 | 严重程度 | MITRE ATT&CK | | -------------------------------------- | --------------------------- | -------: | ---------------- | | 可疑的 PowerShell 编码命令 | Sysmon 进程创建 | 高 | T1059.001 | | 创建了新的本地用户 | Windows 安全事件 4720 | 中 | T1136 | | Robocopy 数据暂存 | Sysmon 进程创建 | 中 | T1074 | | 由 PowerShell 启动的 nslookup | Sysmon 进程创建 | 中 | T1059, T1071.004 | | 计划任务持久化 | Sysmon 进程创建 | 高 | T1053.005 | | Office 应用程序启动 PowerShell | Sysmon 进程创建 | 高 | T1204, T1059.001 | ## 工作原理 主要工作流程是: ``` Load dataset files | v Normalize common event fields | v Load Sigma-style rules | v Match rules against events | v Print detections and write reports/findings.md ``` 检测引擎支持简单的匹配行为: * 精确字段匹配 * 不区分大小写的字符串匹配 * 命令行中的关键字匹配 * 父子进程关系 * Windows EventCode 匹配 ## 使用您自己的数据集 自定义数据集可以放置在以下位置: ``` datasets/custom/ ``` 然后运行: ``` python src/main.py --dataset datasets/custom ``` 要分析一个特定的文件: ``` python src/main.py --dataset datasets/custom/my-file.jsonl ``` 推荐使用 JSONL 格式,每行一个 JSON 事件。标准 JSON 文件可以包含一个事件对象或一个事件列表。 该引擎会标准化来自内部实验室事件、Elastic/ECS 风格事件、Splunk JSON 导出和 Sysmon 风格 JSON 的常见字段名称。 规则使用的常见规范字段包括: ``` EventCode host user.name process.name process.command_line process.parent.name dns.question.name message ``` Elastic/ECS 风格 JSONL 事件示例: ``` {"@timestamp":"2026-01-15T10:00:00Z","host":{"name":"ECS-LAB-01"},"event":{"code":"1"},"user":{"name":"lab_user"},"process":{"name":"powershell.exe","command_line":"powershell.exe -EncodedCommand RkFLRQ==","parent":{"name":"cmd.exe"}}} ``` Sysmon 风格 JSONL 事件示例: ``` {"UtcTime":"2026-01-15T10:05:00Z","Computer":"SYSMON-LAB-01","EventID":1,"User":"lab_user","Image":"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe","CommandLine":"powershell.exe -EncodedCommand RkFLRQ==","ParentImage":"C:\\Windows\\System32\\cmd.exe"} ``` ## 交互式数据集选择 交互模式会列出可用的 JSON 和 JSONL 文件,并允许用户选择要分析的文件: ``` python src/main.py --interactive ``` 仅列出 `datasets/custom/` 下的文件: ``` python src/main.py --dataset datasets/custom --interactive ``` 选择器支持: ``` Enter use the default dataset path 1 analyze one file 1,2,4 analyze multiple files all analyze all listed files q quit ``` 无效输入会被妥善处理,不会抛出 Python traceback。 ## 如何在 Windows PowerShell 上本地运行 ``` python -m venv .venv .venv\Scripts\activate python -m pip install -r requirements.txt python src/main.py ``` ## 如何在 Linux/macOS 上本地运行 ``` python3 -m venv .venv source .venv/bin/activate python -m pip install -r requirements.txt python src/main.py ``` ## 运行测试 ``` python -m pytest -q ``` ## 示例输出 ``` Detection Engineering Lab Dataset path: datasets Rules loaded: 6 Logs analyzed: 20 Detections triggered: 6 [HIGH] Suspicious PowerShell Encoded Command Host: LAB-WIN-01 User: test_admin MITRE: attack.t1059.001 Evidence: powershell.exe -NoProfile -EncodedCommand RkFLRV9MQUJfUEFZTE9BRA== ``` ## 报告输出 每次运行都会将 Markdown 报告写入: ``` reports/findings.md ``` 报告包括: * 分析的总日志数 * 触发的总检测数 * 严重程度 * 主机 * 用户 * 源文件 * MITRE ATT&CK 标签 * 证据 * 建议的响应步骤 ## 涵盖的技术领域 该实验室涉及几个实用的蓝队工程领域: * 检测规则编写 * MITRE ATT&CK 映射 * Splunk SPL 转换 * Windows 安全事件和 Sysmon 风格日志分析 * 基于 Python 的日志处理 * 事件标准化 * Docker 化执行 * 基于 pytest 的验证 * Markdown 调查结果报告 ## 局限性 * 这是一个实验室项目,不是生产环境的 SIEM。 * 为了可读性,规则被故意简化了。 * 匹配逻辑专为小型 JSON/JSONL 数据集设计。 * 具有不常见字段的外部数据集可能需要额外的标准化。 * 示例日志是实验室生成的,不应将其视为真实的应急响应数据。 ## 免责声明 所有日志、用户、主机、域名、IP 地址和调查结果均为实验室生成的占位符。此存储库不包含真实的客户数据、真实的公司数据、真实的恶意软件或真实的攻击基础设施。
标签:Docker, Python, Sigma规则, Splunk SPL, Sysmon, URL发现, 安全检测, 安全规则引擎, 安全防御评估, 无后门, 时序数据库, 目标导入, 请求拦截, 逆向工具