DLL 劫持
DLL 劫持 是什么?
DLL 劫持一种滥用 Windows DLL 搜索顺序的攻击,使合法程序加载攻击者控制的库,而不是预期的库。
DLL 劫持(MITRE ATT&CK T1574.001)利用 Windows 解析动态链接库的方式:当应用程序按名称请求 DLL 但未指定完整路径时,加载器会按可预测的顺序在多个目录中查找。攻击者只要能将恶意 DLL 写入优先级更高的位置(应用程序目录、可写的 PATH 项或 side-by-side 文件夹),就能在受信任且通常已签名的进程上下文中执行代码。该技术同时提供执行与持久化能力,并可绕过许多应用程序白名单。常见防御包括使用完全限定路径、启用 SafeDllSearchMode、应用 WDAC/AppLocker 规则、通过 Sysmon 事件 7 监控镜像加载,以及修补存在缺陷的安装程序。
● 示例
- 01
在签名安装程序所在目录放置恶意 version.dll,使其优先加载。
- 02
在可写的 PATH 目录中植入 DLL,由系统服务加载。
● 常见问题
DLL 劫持 是什么?
一种滥用 Windows DLL 搜索顺序的攻击,使合法程序加载攻击者控制的库,而不是预期的库。 它属于网络安全的 攻击与威胁 分类。
DLL 劫持 是什么意思?
一种滥用 Windows DLL 搜索顺序的攻击,使合法程序加载攻击者控制的库,而不是预期的库。
DLL 劫持 是如何工作的?
DLL 劫持(MITRE ATT&CK T1574.001)利用 Windows 解析动态链接库的方式:当应用程序按名称请求 DLL 但未指定完整路径时,加载器会按可预测的顺序在多个目录中查找。攻击者只要能将恶意 DLL 写入优先级更高的位置(应用程序目录、可写的 PATH 项或 side-by-side 文件夹),就能在受信任且通常已签名的进程上下文中执行代码。该技术同时提供执行与持久化能力,并可绕过许多应用程序白名单。常见防御包括使用完全限定路径、启用 SafeDllSearchMode、应用 WDAC/AppLocker 规则、通过 Sysmon 事件 7 监控镜像加载,以及修补存在缺陷的安装程序。
如何防御 DLL 劫持?
针对 DLL 劫持 的防御通常结合技术控制与运营实践,详见上方完整定义。
DLL 劫持 还有哪些其他名称?
常见的别称包括: DLL 搜索顺序劫持, DLL 预加载。
● 相关术语
- attacks№ 200
COM 劫持
一种持久化技术,将 Windows 组件对象模型的 CLSID 查找重定向到攻击者代码,只要宿主进程实例化该对象就会执行。
- attacks№ 054
AppInit_DLLs
Windows 早期持久化技术,通过滥用注册表值,将指定 DLL 加载到所有链接 user32.dll 的用户态进程中。
- attacks№ 515
IFEO 注入
一种利用 Windows 注册表 Image File Execution Options 项的持久化与提权技术,只要目标可执行文件启动就会触发攻击者代码。
- attacks№ 914
注册表 Run 键持久化
经典 Windows 持久化技术,在 Run 或 RunOnce 注册表项中添加条目,使二进制或脚本在每次用户登录时执行。
- attacks№ 862
进程注入
一类规避检测的技术,攻击者在合法进程的地址空间内执行恶意代码,以借用其信任与身份。
- attacks№ 610
LD_PRELOAD 劫持
一种 Linux 持久化与库劫持技术,利用 LD_PRELOAD 环境变量或 /etc/ld.so.preload 文件向动态链接进程注入攻击者代码。
● 参见
- № 1186UAC 绕过
- № 639Mach-O
- № 809PE 可执行文件格式