DLL劫持
DLL劫持原理
如果在进程尝试加载一个DLL时没有指定DLL的绝对路径,那么Windows会尝试去按照顺序搜索这些特定目录时下查找这个DLL,只要将恶意的DLL放在优先于正常DLL所在的目录,就能够欺骗系统优先加载恶意DLL,来实现"劫持"
原理虽然简单,但是劫持DLL的选取和编写则要有些技巧,不是所有的DLL都可以被劫持的,有些DLL是受系统保护的,譬如user32.dll等,这些是不能劫持的。在一些老的DLL劫持病毒里面一般是选取usp10.dll,lpk.dll等,原因很简单,一般的应用程序都会加载它们,而且没有被系统保护
简单总结下DLL劫持和DLL注入的区别:
DLL劫持 | DLL注入 | |
---|---|---|
主动性 | 被动,等待目标运行 | 主动,目标必须已经在运行 |
是否需要跳板 | 不需要 | 需要,由第三方来帮助注入 |
是否容易拦截 | 不容易 | 容易 |
是否容易免疫 | 容易 | 不容易 |
DLL的编写要求 | 伪造真实DLL一样的导出函数表 | 可以按自己的流程写导出函数 |
DLL原理利用
windows xp sp2之前
Windows查找DLL的目录以及对应的顺序:
-
进程对应的应用程序所在目录;</