码迷,mamicode.com
首页 > 其他好文 > 详细

36.浅谈DLL劫持

时间:2019-06-16 13:34:19      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:windows   gets   开会   set   路径搜索   软件   机制   dir   技术   

技术图片

最近在搞内网,需要实现免杀后门,大佬推荐了dll劫持,DLL劫持后,能干很多事情,比如杀软对某些厂商的软件是实行白名单的,你干些敏感操作都是不拦截,不提示的。还有留后门,提权等等。本文主要介绍如何检测dll劫持,以及实例演示。

DLL劫持

dll文件是什么?

DLL(Dynamic Link Library)文件为动态链接库文件,又称"应用程序拓展",是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。

如果在进程尝试加载一个DLL时没有指定DLL的绝对路径,那么Windows会尝试去按照顺序搜索这些特定目录时下查找这个DLL,只要黑客能够将恶意的DLL放在优先于正常DLL所在的目录,就能够欺骗系统优先加载恶意DLL,来实现"劫持"

dll原理利用

windows xp sp2之前

Windows查找DLL的目录以及对应的顺序:

1. 进程对应的应用程序所在目录;

2. 当前目录(Current Directory);

3. 系统目录(通过 GetSystemDirectory 获取);

4. 16位系统目录;

5. Windows目录(通过 GetWindowsDirectory 获取);

6. PATH环境变量中的各个目录;

例如:对于文件系统,如doc文档打开会被应用程序office打开,而office运行的时候会加载系统的一个dll文件,如果我们将用恶意的dll来替换系统的dll文件,就是将DLL和doc文档放在一起,运行的时候就会在当前目录中找到DLL,从而优先系统目录下的DLL而被执行。

windows xp sp2之后

Windows查找DLL的目录以及对应的顺序(SafeDllSearchMode 默认会被开启):

默认注册表为:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode,其键值为1

1. 进程对应的应用程序所在目录(可理解为程序安装目录比如C:ProgramFilesuTorrent)

2. 系统目录(即%windir%system32);

3. 16位系统目录(即%windir%system);

4. Windows目录(即%windir%);

5. 当前目录(运行的某个文件所在目录,比如C:DocumentsandSettingsAdministratorDesktoptest);

6. PATH环境变量中的各个目录;

windows 7 以上版本

系统没有了SafeDllSearchMode 而采用KnownDLLs,那么凡是此项下的DLL文件就会被禁止从EXE自身所在的目录下调用,而只能从系统目录即SYSTEM32目录下调用,其注册表位置:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs

那么最终Windows203以上以及win7以上操作系统通过“DLL路径搜索目录顺序”和“KnownDLLs注册表项”的机制来确定应用程序所要调用的DLL的路径,之后,应用程序就将DLL载入了自己的内存空间,执行相应的函数功能。

dll漏洞检查

123

 

36.浅谈DLL劫持

标签:windows   gets   开会   set   路径搜索   软件   机制   dir   技术   

原文地址:https://www.cnblogs.com/bmjoker/p/11031238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!