| name | detecting-dll-sideloading-attacks |
| description | 检测 DLL 侧加载攻击,攻击者将恶意 DLL 放置在合法应用程序旁以劫持执行流程,实现防御规避。 |
| domain | cybersecurity |
| subdomain | threat-hunting |
| tags | ["threat-hunting","mitre-attack","dll-sideloading","defense-evasion","t1574","edr","proactive-detection"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
检测 DLL 侧加载攻击
适用场景
- 调查企业环境中潜在的 DLL 劫持时
- EDR 告警显示已签名应用程序加载未签名 DLL 后
- 狩猎使用合法应用程序包装器进行 APT 持久化时
- 事件响应期间识别木马化应用程序时
- 威胁情报表明 DLL 侧加载活动针对特定软件时
前置条件
- 具备 DLL 加载监控功能的 EDR(CrowdStrike、MDE、SentinelOne)
- 带哈希验证的 Sysmon 事件 ID 7(镜像加载)
- 应用程序白名单或 DLL 完整性监控
- 合法应用程序及预期 DLL 路径的软件清单
- 代码签名验证能力
工作流程
- 识别侧加载目标:研究已知存在漏洞的、不使用完整路径限定加载 DLL 的应用程序(LOLBAS、DLL 侧加载数据库)。
- 监控 DLL 加载事件:查询 Sysmon 事件 ID 7,查找 DLL 路径与应用程序预期目录不同的 DLL 加载。
- 检查 DLL 签名:标记由已签名可执行文件加载的未签名或不受信任的 DLL。
- 检测路径异常:识别从异常位置(Temp、AppData、Public)运行的合法可执行文件,这些可能是诱饵包装器。
- 哈希验证:将加载的 DLL 哈希与已知良好版本和威胁情报 feeds 进行比对。
- 与进程行为关联:检查宿主进程在加载可疑 DLL 后是否表现出异常行为(网络连接、子进程)。
- 记录与修复:报告侧加载实例,隔离恶意 DLL,并更新检测规则。
核心概念
| 概念 | 描述 |
|---|
| T1574.002 | DLL 侧加载(DLL Side-Loading) |
| T1574.001 | DLL 搜索顺序劫持 |
| T1574.006 | 动态链接器劫持 |
| T1574.008 | 通过搜索顺序劫持进行路径拦截 |
| DLL 搜索顺序 | Windows DLL 加载优先级路径 |
| 侧加载 | 将恶意 DLL 放置在合法应用程序加载的位置 |
| 幻影 DLL | 合法应用程序尝试加载但不存在的 DLL |
| DLL 代理 | 恶意 DLL 将调用转发给合法 DLL |
工具与系统
| 工具 | 用途 |
|---|
| Sysmon | 事件 ID 7 DLL 加载监控 |
| CrowdStrike Falcon | 带进程上下文的 DLL 加载检测 |
| Microsoft Defender for Endpoint | DLL 加载异常检测 |
| Process Monitor | 实时 DLL 加载跟踪 |
| DLL Export Viewer | 验证 DLL 导出函数 |
| Sigcheck | 数字签名验证 |
| pe-sieve | 代理 DLL 的 PE 分析 |
常见场景
- 合法应用程序包装器:攻击者将已签名应用程序(如 OneDrive 更新程序)复制到临时文件夹,并在旁边放置与预期依赖项同名的恶意 DLL。
- 幻影 DLL 利用:恶意 DLL 被放置在 PATH 路径中,合法应用程序在此处搜索不存在的 DLL。
- DLL 代理加载:恶意 version.dll 将所有导出代理到真实的 version.dll,同时在 DllMain 中执行恶意代码。
- 软件更新劫持:攻击者在合法更新程序加载之前,替换更新暂存目录中的 DLL。
输出格式
Hunt ID: TH-SIDELOAD-[DATE]-[SEQ]
Technique: T1574.002
Host Application: [合法已签名可执行文件]
Sideloaded DLL: [恶意 DLL 名称和路径]
Expected DLL Path: [DLL 应合法所在的位置]
DLL Signed: [是/否]
App Location: [预期/异常]
Host: [主机名]
Risk Level: [Critical/High/Medium/Low]