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安全, 企业安全, 告警分类, 威胁检测工程, 安全实验室, 安全运营, 库, 应急响应, 扫描框架, 插件系统, 数据包嗅探, 数据泄露检测, 无后门, 无线安全, 流量嗅探, 目标导入, 端点遥测, 网络协议分析, 网络安全, 网络安全审计, 网络资产管理, 脆弱性评估, 逆向工具, 隐私保护, 高级威胁防御