fhurau/detection-engineering-lab
GitHub: fhurau/detection-engineering-lab
一个基于 Python 的轻量级检测工程实验室,用于测试 Sigma 风格检测规则并生成 SOC 风格的 Markdown 调查报告。
Stars: 0 | Forks: 0
# 检测工程实验室
一个小型可运行的检测工程实验室,它使用 Sigma 风格的规则、Splunk SPL 等效规则、MITRE ATT&CK 映射以及基于 Python 的检测引擎,分析实验室生成的安全事件。
[](https://github.com/fhurau/detection-engineering-lab/actions/workflows/python-ci.yml)




## 概述
检测工程实验室是一个拉取并运行的项目,用于针对小型的实验室生成数据集测试简单的检测逻辑。
该实验室包含 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发现, 安全检测, 安全规则引擎, 安全防御评估, 无后门, 时序数据库, 目标导入, 请求拦截, 逆向工具