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 配置基于 [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 配置

## 步骤 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
```
### 截图:自定义规则配置

## 步骤 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 已成功注入。
### 截图:攻击模拟

## 步骤 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

## 步骤 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 仪表板警报

### 截图:警报详情

## 检测流程总结
```
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, 安全检测, 越狱测试