TahmidZamir/dll-injection-detection-wazuh

GitHub: TahmidZamir/dll-injection-detection-wazuh

该项目演示了如何通过 Wazuh SIEM 和 Sysmon 检测 Windows 端点上的 DLL 注入攻击并生成可视化告警。

Stars: 0 | Forks: 0

# 使用 Wazuh SIEM 检测 DLL 注入攻击 ## 项目概述 本项目演示了如何在 Windows 端点上结合使用 **Wazuh SIEM** 和 **Sysmon** 来检测 **DLL 注入攻击**。DLL 注入是一种将动态链接库 (DLL) 加载到运行进程的内存空间中,从而将恶意代码注入该进程的技术。 **MITRE ATT&CK 技术:** [T1055.001 - 动态链接库注入](https://attack.mitre.org/techniques/T1055/001/) ## 实验环境 | 组件 | 详情 | |-----------|---------| | SIEM | Wazuh v4.5.4 | | 操作系统 (Manager) | Ubuntu Linux (VM) | | 操作系统 (Agent) | Windows 10 IoT Enterprise LTSC 2021 | | EDR 工具 | Sysmon v15(包含 sysmon-modular 配置) | | 攻击工具 | InjectProc v0.1 | | 仪表板 | Elastic + Kibana(端口 5601) | ## 架构 ``` Windows Agent (192.168.152.145) | | Sysmon monitors processes | Wazuh Agent collects logs | v Wazuh Manager (192.168.152.148) | | Analyzes events | Fires custom rule 100010 | v Filebeat → Elasticsearch → Kibana Dashboard ``` ## 步骤 1:Sysmon 安装与配置 Sysmon (System Monitor) 是一项 Windows 系统服务,用于监控并将系统活动记录到 Windows 事件日志中。 ### 使用自定义配置安装 Sysmon: ``` cd C:\Users\ayan1\Desktop\Sysmon .\Sysmon64.exe -accepteula -i .\sysmonconfig.xml ``` ### 验证 Sysmon 是否正在运行: ``` Get-Service -Name Sysmon64 ``` **预期输出:** ``` Status Name DisplayName ------ ---- ----------- Running Sysmon64 Sysmon64 ``` ### 截图:Sysmon 服务正在运行 ![Sysmon 服务状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d7120504f9144232.png) 所使用的 sysmon 配置基于 [sysmon-modular](https://github.com/olafhartong/sysmon-modular),其中包含以下检测规则: - **Event ID 1:** 进程创建 - **Event ID 7:** 镜像加载(DLL 加载) - **Event ID 8:** CreateRemoteThread(DLL 注入标志) ## 步骤 2:Wazuh Agent 配置 必须配置 Windows 上的 Wazuh Agent,才能从 Windows 事件通道收集 Sysmon 日志。 ### 文件:`C:\Program Files (x86)\ossec-agent\ossec.conf` 添加以下代码块以启用 Sysmon 日志收集: ``` Microsoft-Windows-Sysmon/Operational eventchannel ``` ### 修复 Sysmon 日志权限(必需): ``` $acl = "O:BAG:SYD:(A;;0x3;;;SY)(A;;0x3;;;BA)(A;;0x2;;;LS)(A;;0x2;;;NS)(A;;0x2;;;AU)" wevtutil sl "Microsoft-Windows-Sysmon/Operational" /ca:$acl Restart-Service WazuhSvc ``` ### 截图:ossec.conf 配置 ![Windows ossec.conf](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6babe6a8f3144238.png) ## 步骤 3:Wazuh 自定义检测规则 Wazuh 针对 Sysmon Event ID 8(规则 ID:61610)的内置规则具有 `level="0"`,这意味着默认情况下不会生成警报。我们创建了一条自定义规则来覆盖它。 ### 文件:`/var/ossec/etc/rules/local_rules.xml`(位于 Wazuh Manager 上) ``` 61610 DLL Injection: CreateRemoteThread detected - $(win.eventdata.sourceImage) into $(win.eventdata.targetImage) T1055.001 ``` ### 规则链说明: ``` 60000 → Windows base rule (decoded_as: windows_eventchannel) 60004 → Sysmon channel rule (win.system.channel) 61600 → Sysmon INFORMATION event 61610 → Event ID 8: CreateRemoteThread (level=0, no alert) 100010 → OUR CUSTOM RULE (level=12, HIGH ALERT!) ``` ### 应用规则: ``` sudo systemctl restart wazuh-manager ``` ### 截图:自定义规则配置 ![Wazuh 自定义规则](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d89db01554144245.png) ## 步骤 4:攻击模拟 ### 什么是 DLL 注入? DLL 注入是指攻击者强制合法进程(例如 `notepad.exe`)加载恶意 DLL。注入的 DLL 在受信任的进程内运行,从而绕过安全控制。 ### 攻击工具:InjectProc **InjectProc** 是一款开源的进程注入测试工具。 ### 执行攻击: ``` cd C:\Users\ayan1\Downloads InjectProc.exe dll_inj hello-world-x64.dll notepad.exe ``` **预期输出:** ``` Injected Successfully ``` 在 notepad.exe 内部弹出一个 "Hello World!" 窗口——证明 DLL 已成功注入。 ### 截图:攻击模拟 ![攻击模拟](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/57de053984144251.png) ## 步骤 5:在 Windows 事件查看器中检测 攻击发生后,Sysmon 会在 Windows 事件日志中生成 **Event ID 8 (CreateRemoteThread)**。 ### 关键事件详情: - **Event ID:** 8 - **来源:** Microsoft-Windows-Sysmon/Operational - **RuleName:** technique_id=T1055, technique_name=Process Injection - **SourceImage:** `C:\Users\ayan1\Downloads\InjectProc.exe` - **TargetImage:** `C:\Windows\System32\notepad.exe` - **StartFunction:** LoadLibraryW ### 截图:Windows 事件查看器 - Event ID 8 ![Windows 事件查看器](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/41a0daa490144257.png) ## 步骤 6:Wazuh 仪表板警报 攻击发生后,Wazuh 生成了一个 **Level 12(高危)** 警报。 ### Kibana Discover 中的警报详情(过滤器:`rule.id: 100010`): | 字段 | 值 | |-------|-------| | rule.id | 100010 | | rule.level | 12 | | agent.name | windows | | data.win.eventdata.sourceImage | C:\\Users\\ayan1\\Downloads\\InjectProc.exe | | data.win.eventdata.targetImage | C:\\Windows\\System32\\notepad.exe | | data.win.eventdata.startFunction | LoadLibraryW | | data.win.eventdata.ruleName | technique_id=T1055, technique_name=Process Injection | ### 截图:Wazuh 仪表板警报 ![Wazuh 仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/766780be06144303.png) ### 截图:警报详情 ![警报详情](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/f6d1b9564d144308.png) ## 检测流程总结 ``` Attack Happens ↓ InjectProc.exe injects hello-world-x64.dll into notepad.exe ↓ Sysmon detects CreateRemoteThread (Event ID 8) ↓ Wazuh Agent reads Sysmon log (ossec.conf localfile) ↓ Wazuh Manager matches rule 100010 (level 12 alert) ↓ Filebeat sends to Elasticsearch ↓ Kibana Dashboard shows DLL Injection Alert ``` ## 关键发现 | 项目 | 详情 | |------|---------| | 攻击技术 | 通过 CreateRemoteThread 进行 DLL 注入 | | MITRE ID | T1055.001 | | 检测工具 | Sysmon Event ID 8 | | Wazuh 规则 | 100010(Level 12 - 高危) | | 源进程 | InjectProc.exe | | 目标进程 | notepad.exe | | 注入的 DLL | hello-world-x64.dll | | 启动函数 | LoadLibraryW (KERNEL32.DLL) | ## 参考资料 - [Wazuh 文档](https://documentation.wazuh.com) - [Sysmon - Microsoft Sysinternals](https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon) - [Olaf Hartong 的 sysmon-modular](https://github.com/olafhartong/sysmon-modular) - [MITRE ATT&CK T1055.001](https://attack.mitre.org/techniques/T1055/001/) - [InjectProc 工具](https://github.com/secrary/InjectProc) ## 作者 **TahmidZamir** GitHub: [@TahmidZamir](https://github.com/TahmidZamir)
标签:DLL注入检测, Sysmon, URL发现, Wazuh, 安全检测, 越狱测试