时间:2017-12-26 来源:互联网 浏览量:
微软在2010年的2269637号安全公告中披露了Dll劫持漏洞(DLL Hijacking Exploit)。国外安全公司Authentium在博客中描述DLL劫持漏洞时,用The world is going to end(世界末日)做标题。七年过去了,DLL劫持技术也已经是黑客们杀人越货,打家劫舍必备的武器。但就是这样一个漏洞,微软似乎却没有放在心上,只是轻描淡写地修改了一下注册表完事。
海阳顶端黑客今天来教你一招,利用此漏洞打开这记事本就能运行你的程序,从制作方法到原理让你明明白白。你也不用担心你的计算机水平,看完我的文章,人人都会制作的。
一、制作前的准备工作,生成一个运行计算器的dll。
(1) 去https://pentestbox.org/zh/#download下载pentestbox,记得下载安装有 Metasploit 的 PentestBox。
下载安装完毕后,直接点击目录里的PentestBox.exe或PentestBox.bat。如果你是WIN10 系统的话,记住要在出来的界面里打输一次CMD,要不没法用,这算是它的BUG了,其它系统你直接用就行,不用输CMD。
(2) 一条命令生成一个可以运行计算器的cryptbase.dll文件,我是生成在了D盘。 如果你想执行别的命令,学习下Metasploit吧。
执行:msfvenom -p windows/exec CMD=calc.exe -f dll -o d:/cryptbase.dll
二、准备一台win7 32位的机器进行测试。
(1)拷贝win732机器里的记事本程序notepad.exe和步骤一里生成的cryptbase.dll放在同一个目录。
(2)点击记事本程序notepad.exe,计算器就会弹了出来。
三、这个漏洞的原理是什么?
在Windows系统中,为了节省内存和实现代码重用,微软在Windows操作系统中实现了一种共享函数库的方式,这就是DLL文件。系统调用DLL时会依次从下面几个位置去查找所需要调用的DLL文件。
1.程序所在目录。
2.加载 DLL 时所在的当前目录。
3.系统目录即 SYSTEM32 目录。
4.16位系统目录即 SYSTEM 目录。
5.Windows目录。
6.PATH环境变量中列出的目录
因为我们把cryptbase.dll放在了notepad.exe的同目录,所以首先第一个调用的就是同目录下的cryptbase.dll文件。
四、你怎么知道要用cryptbase.dll这个文件名?
这个你可以用filemon软件,打开之后,点击那个小漏斗图标,输入notepad.exe进行过滤。然后你再打开你copy出来的notepad.exe进行捕获,你会看到很多信息。你看我下图中,我鼠标点高亮的那一行有个NOT FOUND选项。意思是在当前目录中没有找到cryptbase.dll文件。那么自然而然,我们找到的能利用的就是cryptbase.dll这个文件了。如果你会了的话,你能找到win7 x64位的的可利用文件名吗?
五、微软做了哪些补丁措施?
微软为了更进一步的防御系统的DLL被劫持,将一些容易被劫持的系统DLL写进了一个注册表项中,那么凡是此项下的DLL文件就会被禁止从EXE自身所在的目录下调用,而只能从系统目录即SYSTEM32目录下调用。注册表路径如下:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs
下图是我在win10中的注册表选项,注册表里的dll只能让你从system32下调用了。
不过,微软又莫名其妙的允许用户在上述注册表路径中添加“ExcludeFromKnownDlls”注册表项,排除一些被“KnownDLLs注册表项”机制保护的DLL。也就是说,只要在“ExcludeFromKnownDlls”注册表项中添加你想劫持的DLL名称就可以对该DLL进行劫持,不过修改之后需要重新启动电脑才能生效。
但是呢,这个补丁对我们的办法来讲是不起作用的,因为我们找到的是系统目录下未加载的而且在当前目录下找不到的DLL,而且我们的搜索顺序是排在第一位的,是不是非常可怕呢?所以如果有陌生人给你发一个带DLL的文件夹,无论同目录底下是什么文件你都要小心了,这是来自海阳顶端黑客的善意提醒,如果你实在忍不住好奇心,那就在虚拟机中打开吧。这篇文章方法是简单的,原理有点深了,不知道头条的观众能不能接受得了,但是我相信大家还是能看明白的,我追求的是黑客技术,流量就次要吧。