minnaked/DetectionEngineering
GitHub: minnaked/DetectionEngineering
基于Sysmon和Wazuh构建的检测工程项目,展示从攻击模拟、规则编写到告警验证的完整流程,所有检测均映射MITRE ATT&CK并通过真实日志验证。
Stars: 0 | Forks: 0
# 威胁检测作品集
### Wazuh · Sysmon · MITRE ATT&CK · Python · Sigma
## 关于此作品集
资深安全工程师,在 NDR、网络协议分析和安全平台运营方面拥有丰富经验。此代码库展示了实用的检测工程能力——编写、测试和记录映射到 MITRE ATT&CK 的威胁检测。
**核心原则:** 此处的每一项检测均基于真实的攻击日志构建,并在真实的 SIEM 中进行了测试和带有证据的记录。绝非理论性的规则。
**背景:** ExtraHop NDR(检测验证、误报分析、SOC 集成) · Riverbed APM/NPM · Cisco · NUS MTech · CISSP · CySA+ 备考中
## 实验室架构
```
Attacker Simulation Endpoint Telemetry Detection & Response
────────────────── ────────────────── ────────────────────
Atomic Red Team → Sysmon (Event ID 1,3, Wazuh SIEM
(335 MITRE techniques) 8,10,11,12,13,22) → Custom XML Rules
Wazuh Agent OpenSearch Indexer
Win 11 VM Python Triage Tool
(windows11Detect) Sigma Rule Conversion
```
| 组件 | 版本 | 角色 |
|---|---|---|
| Wazuh OVA | 4.14.4 | SIEM — 规则引擎、告警索引、仪表盘 |
| Sysmon | Latest | 终端遥测 — 进程、网络、注册表事件 |
| OpenSearch | Bundled | 日志索引和搜索 |
| Atomic Red Team | 335 techniques | TTP 模拟和检测验证 |
| Python 3 | 3.13 | 通过 OpenSearch API 实现告警研判自动化 |
| Sigma CLI | 3.0.2 | 平台无关的规则转换 |
## 构建的检测
所有规则均使用 Atomic Red Team 进行了测试。每个检测文件夹中都有告警证据。
| Rule ID | Technique | MITRE | 检测方法 | Sysmon EID | Level |
|---|---|---|---|---|---|
| 100002 | whoami execution | T1033 | Image 字段匹配 | 1 | 10 |
| 100003 | whoami from PowerShell | T1033 | 父进程链 | 1 | 12 |
| 100004 | Process injection — full memory rights | T1055 | grantedAccess 0x1FFFFF | 10 | 14 |
| 100005 | systeminfo execution | T1082 | Image 字段匹配 | 1 | 10 |
| 100006 | systeminfo — renamed binary evasion | T1082 | OriginalFileName (PE 头) | 1 | 10 |
| 100007 | systeminfo via cmd wrapper | T1082 | commandLine 字段 | 1 | 10 |
| 100008 | systeminfo from PowerShell | T1082 | 父进程链 | 1 | 12 |
| 100009 | CreateRemoteThread | T1055 | Sysmon Event ID 8 | 8 | 14 |
| 100010 | RemoteThread into sensitive process | T1055 | targetImage 匹配 | 8 | 15 |
**MITRE ATT&CK 覆盖范围:** Discovery (T1033, T1082) · Defense Evasion · Process Injection (T1055)
## 检测工程方法
### 为什么需要分层规则
大多数检测仅匹配一个字段——磁盘上的二进制文件名。攻击者通过重命名二进制文件来绕过这一点。我的检测使用了三层:
```
Layer 1 — Image field
Catches standard execution.
systeminfo.exe running → alert.
Layer 2 — OriginalFileName (PE header)
Catches renamed binary evasion.
OriginalFileName is compiled into the binary.
Attackers cannot change it without recompiling.
Renaming systeminfo.exe to svchost32.exe
does not change OriginalFileName — alert still fires.
Layer 3 — commandLine field
Catches wrapper invocations.
cmd.exe /c systeminfo → alert fires
even when binary is called indirectly.
```
一种技术。三条检测路径。更难被绕过。更低的漏报率。
### 检测生命周期
```
1. Simulate Atomic Red Team runs the TTP on Win 11 VM
2. Capture Sysmon captures process, network, registry events
3. Analyse Identify key fields — image, commandLine, parentImage
4. Write Wazuh XML rule + Sigma YAML rule
5. Test wazuh-logtest validates rule logic
6. Deploy local_rules.xml — restart wazuh-manager
7. Validate Alert fires in Wazuh dashboard
8. Document Log evidence + rule + MITRE mapping on GitHub
```
## 检测规则 — 示例
**T1082 — 重命名二进制文件逃逸 (Rule 100006)**
```
windows
^1$
(?i)sysinfo\.exe$
T1082 - systeminfo renamed binary
detected on $(win.system.computer) by
$(win.eventdata.user) — evasion attempt
T1082
sysmon_event1,discovery,t1082,evasion_resistant
```
**为什么 OriginalFileName 很重要:** 如果攻击者将 `systeminfo.exe` 重命名以避开基于文件名的检测,Image 字段会改变,但 OriginalFileName(存储在编译进二进制文件的 PE 头中)保持不变。此规则能捕获仅靠 Image 规则遗漏的逃逸行为。
## Sigma 规则
每项检测都包含一个 Sigma YAML 规则以及 Wazuh XML——一次编写,即可转换为任何平台。
```
title: SystemInfo Renamed Binary Execution
id: b7f3a2c1-4d8e-4f9b-a1c2-8e7d6f5a4b3c
status: experimental
description: |
Detects systeminfo.exe execution using OriginalFileName
field — catches renamed binary evasion attempts.
MITRE T1082 System Information Discovery.
author: Mahesh Inna Kedage
date: 2026/05/08
logsource:
product: windows
category: process_creation
detection:
selection:
OriginalFileName: 'sysinfo.exe'
condition: selection
falsepositives:
- None known
level: medium
tags:
- attack.discovery
- attack.t1082
```
**已转换为四个平台:**
| 平台 | 格式 |
|---|---|
| Wazuh / OpenSearch | Lucene query |
| Splunk | SPL |
| Elastic | EQL |
| IBM QRadar | AQL |
有关所有输出,请参见 `detections/T1082-systeminfo/sigma-conversions.md`。
## Python 告警研判工具
**问题:** 手动查看仪表盘会导致告警疲劳——分析师会在噪音中遗漏真实的检测。
**解决方案:** `python-tools/fetch_alert.py` 直接查询 Wazuh OpenSearch API,通过 Rule ID 检索告警,并提取结构化的研判输出。
```
# 样本输出
[+] Querying Wazuh at 192.168.1.12...
[ALERT FOUND]
Time: 2026-05-08T06:35:31Z
Agent: windows11Detect
Rule: T1053.005 - Scheduled Task Created by vboxuser
Process: C:\Windows\System32\schtasks.exe
Parent: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
User: WINDOWS11DETECT\vboxuser
Path: C:\Users\vboxuser\AppData\Local\Temp\
[TRIAGE] Suspicious — schtasks from PowerShell in Temp directory
```
**工程细节:**
- 使用 Rule ID 过滤器查询 OpenSearch REST API
- 解析嵌套的 JSON 告警结构
- 提取 IOC 字段——进程、父进程、用户、路径
- 研判逻辑标记高置信度检测
- 下一步:VirusTotal hash 富化,pytest 验证
## 代码库结构
```
detection-engineering-lab/
├── README.md
├── detections/
│ ├── T1033-whoami/
│ │ ├── README.md ← Detection writeup
│ │ ├── wazuh-rule.xml ← Wazuh XML rules
│ │ ├── sigma-rule.yml ← Sigma YAML
│ │ └── sigma-conversions.md ← 4 platform outputs
│ ├── T1082-systeminfo/
│ │ └── (same structure)
│ └── T1055-injection/
│ └── (same structure)
├── python-tools/
│ └── fetch_alert.py
├── lab-setup/
│ ├── wazuh-pipeline.yml ← Sigma field mapping
│ └── architecture.md
└── docs/
└── troubleshooting.md
```
## 实验室故障排除 — 真实的工程记录
实验室构建过程中解决的真实问题——不是纯净的教程环境。
| 问题 | 根本原因 | 解决方案 |
|---|---|---|
| 磁盘占用达 97% 已满 | logall=yes 写入所有事件(约 1GB/小时) | 设置 logall=no,添加 logrotate |
| Indexer OOM 被杀 | JVM heap 2964MB 耗尽 6GB RAM | 减少到 1g,增加 4GB swap |
| wazuh-db 启动失败 | global.db 随 queue/ 目录一起被删除 | RPM 强制重装恢复 DB |
| wazuh-apid 失败 | 权限更改后 rbac.db 归 root 所有 | 对 security/ 执行 chown -R wazuh:wazuh |
| 规则未触发 | local_rules.xml 中存在两个根 XML 元素 | 合并为单个 group 元素 |
| Internet 路由中断 | eth1 静态默认路由与 NAT 冲突 | 移除 eth1 网关,保留 eth2 NAT |
## 下一步
```
In progress:
→ T1053.005 Scheduled Task detection rules
→ T1059.001 PowerShell encoded command detection
→ T1547.001 Registry Run Key persistence
→ MITRE ATT&CK Navigator coverage heatmap
→ Python triage tool with VirusTotal enrichment
→ pytest detection validation suite
```
## 联系方式
**Mahesh Inna Kedage**
资深安全工程师 | NDR · 网络分析 · 检测工程
- 18年以上网络和安全工程经验
- ExtraHop NDR — 检测验证、SOC 集成、误报分析
- Riverbed APM/NPM — 专业服务和升级工程
- NUS MTech 软件工程(新加坡)
- CISSP | CySA+ 备考中 | CCNP
📧 maheshinnakedage@yahoo.com
🔗 [LinkedIn](https://www.linkedin.com/in/maheshinnakedage)
🐙 [GitHub](https://github.com/minnaked)
*此代码库中的每一项检测均基于真实的攻击日志构建,并在真实的 SIEM 中进行了测试和带有证据的记录。上述故障排除记录反映了真实的工程实践——绝非照本宣科的教程。*
标签:API接口, Atomic Red Team, CISSP, Cloudflare, Conpot, DNS 解析, EDR, IP 地址批量处理, MITRE ATT&CK, Mr. Robot, NDR, Python, Sigma规则, Sysmon, Wazuh, Windows安全, 企业安全, 告警分类, 威胁检测工程, 安全实验室, 安全运营, 库, 应急响应, 扫描框架, 插件系统, 数据包嗅探, 数据泄露检测, 无后门, 无线安全, 流量嗅探, 目标导入, 端点遥测, 网络协议分析, 网络安全, 网络安全审计, 网络资产管理, 脆弱性评估, 逆向工具, 隐私保护, 高级威胁防御