DLLL加载顺序劫持
DLL加载顺序劫持是一种简单隐蔽的技术,它允许恶意代码编写者在不使用注册表项或者特洛伊二进制文件的前提下创建一个存活的、恶意的DLL程序。这种技术甚至不需要单独的恶意加载器,因为它有能力让Windows加载它。
加载DLL的默认搜索顺序:
1、加载应用程序的目录;
2、当前目录;
3、系统目录(使用GetsystemDirectory函数获取的路径,例如…/Windows/System32);
4、16位子系统的系统目录(如.…/Windows/System);
5、Windows目录(使用GetwindowsDirectory获取的路径,例如.…/Windows);
6、PATH环境变量里列出的目录。
在Windows系统中,利用KnownDLL注册表键可以跳过DLL的加载过程,这个注册表键保护一些特定的DLL位置列表,这些DLL通常位于…/Windows/System32/目录下。设置KnownDLL机制的目的是改善安全(恶意的DLL不能放到加载顺序的前面)和速度(Windows不需要默认搜索前面的列表),但是它仅包含一个较短的重要DLL列表。
可以通过Win+R组合键,输入regedit打开注册表编辑器。通过编辑的查找快速定位到KnownDLLs的位置。

/****************************/
/***下面的讲述存疑***/
DLL加载顺序劫持,是/System32之外目录中的二进制文件,加载/System32目录中未被KnownDLL保护的DLL程序。 例如,/Windows目录下explorer.exe会加载/System32目录下的ntshrui.dll。由于ntshrui.dll并不是一个KnownDLL,所以遵循默认搜索顺序,另外,/Windows目录在/System32目录之前被搜索。 如果恶意的DLL被命名为ntshrui.dll并放到/Windows目录,则它将被加载到合法DLL的位置。为了让系统正常运行,恶意DLL程序随后再加载真正的DLL。 由于DLL递归导入的原因,很多DLL会加载其他的DLL,而这些DLL按照默认顺序加载,因此KnownDLL机制也不能得到充分的保护。

浙公网安备 33010602011771号