探索黑客技术攻防,实战研究与安全创新

导航菜单

无处不在的Dllhij ack漏洞

浏览器的开发一直编程人员最为扎堆的一个项目,国内在这一方面也不乏很多经典之作,如遨游、搜狗、360安全浏览器等等。无论是最元老级别的微软IE浏览器,还是现在一些外包浏览器,它们在安全方面都或多或少存在问题,除去我们常见的缓冲区溢出漏洞、跨域脚本执行漏洞,一些特殊的安全漏洞也是值得安全人员注意的,这里我们给大家带来的两个安全漏洞就属于浏览器软件的“Dllhij ack”漏洞。

“Dllhij act;顾名思义就是对Dll文件的劫持,简单地说,一个软件在开发的时候,如果调用了某个Dll,但是在最后发布的时候却没有将这个Dll打包,那么,软件在运行的时候就会试图寻找这个Dll,这个时候,我们就可以制造一个特殊的Dll,让其冒充那个软件真正寻找的Dll,从而让软件加载我们的特殊Dll,运行其中的恶意代码。

从原本的意义上讲,“Dllhij act;中使用的特殊Dll应该存在于用户系统的本地硬盘上,不然用户系统中的软件怎么知道从哪里加载Dll。更严格地规定应该是特殊Dll必须存在于软件程序自身的文件目录当中,应该与软件的主程序在一起。如果真的是这样的话,那么,我想以Dllhij ack”的意义就不大了,要知道当我们有权利将特殊Dll放到用户系统当中时,我们都已经获得进入用户系统的权利,还要“Dllhij ack”干什么呢?

还好,拜微软所赐,Windows系统下的软件在寻找要加载的Dll时,是按照一定的路径来搜索的。这个路径次序中包含了除用户系统以外的目录。下面,我们就结合两个真实的“Dllhij ack"漏洞来给大家做以说明。

第一个“Dllhij ack"案例涉及到的软件是“E影智能浏览器”的2012.194版本。当我们使用FileMon这款软件监视“E影智能浏览器”的运行过程时,我们发现“E影智能浏览器”在试图加载一个不存在的Dll文件,如图1所示。

图片39.png

从图1中,我们看到“E影智能浏览器”试图在多个目录下搜寻一个名为“quserex.dll”的Dll文件(注意Windows系统下不区分文件名的大小写)。

现在,我们随意编写一个htm网页文件,其中的代码可以是简单的“<b>测试</b>",将该网页文件放置在局域网中一台计算机的共享目录下,为了后面的区别,我们这里简称为A计算机的A目录。同时,我们利用VC这款编程软件,编写一个简单的Dll文件。其代码如下:

#includeIfstdafx.h¨

BOOL APIENTRY DllMain( HANDLE hModule,

DWORD  ul_reason_for_call,

LPVOID lpReserved)

{

WinExec(”calc.exe¨,SW NORMAL);

return TRUE;

)

这是一个简单得不能再简单的Dll,它的作用只有一个就是运行Windows系统自带的计算器程序。编译这段代码,最终生成一个Dll文件,我们将其改名为“quserex.dll",并且,将这个“quserex.dll”也放置在A计算机的A目录当中。

现在,我们在局域网中的另外一台计算机B上安装上“E影智能浏览器”的2012.194版本,我们将此浏览器设置为默认浏览器,接着,我们从B计算机上打开A计算机A目录当中的那个htm网页文件,这个时候,“E影智能浏览器”启动了,它将试图打开htm网页文件,以此同时,我们发现B计算机上运行了很多的计算器程序,如图2所示。

图片44_看图王.png

毫无疑问,我们的“quserex.dll"这个Dll文件被“E影智能浏览器”当做自己需要的那个Dll文件给自动加载了,而此时,这个伪造的“quserex.dll”却是在远程计算机A上。

上面这个案例告诉我们,“Dllhij ack"是可以成功被用于远程攻击的,Windows系统的库文件搜索机制造就了我们借助“Dllhij ack"实现远程执行任意代码的目的,漏洞的危害性骤然变大。

同样的问题也出现在了“闪游浏览器”上。利用FileMon我们监测到“闪游浏览器”试图加载一个名为“dwmapi.dll"的Dll文件,如图3所示。

图片41.png

于是,我们可以将上面第一个案例中的“quserex.dll"修改为“dwmapi.dll”,还是将其与htm网页文件一起放置在A计算机的A目录当中,然后,在B计算机上使用“闪游浏览器”打开htm网页文件,你会发现计算器程序依旧被执行了,如图4所示。

图片42.png

不过做这个实验请千万注意,“闪游浏览器”在加载我们的“dwmapi.dll"后,会循环调用该库文件,于是会连续打开计算器程序,所以大家注意赶紧关闭,以免造成计算机系统“死机”。通过上面两个案例,我们可以看出“Dllhij ack”其实是属于漏洞范畴的,借助“Dllhij ack"恶意攻击者可以实现远程入侵用户系统,危害权值还是比较高的。它的发掘测试方法还是很简单,不过在有些时候,软件对被加载的Dll文件可能需要一定的要求,这个时候就需要借助逆向分析技术来看一看具体情况了。

“Dllhij ack”发生的范围不仅仅限于浏览器软件,无论是文字处理软件,还是我们最常用的媒体处理软件,都会存在这样的安全问题。在测试中,我们甚至发现了百度影音也存在此类安全漏洞,借助邮件和第三方漏洞收集平台,我们已经及时通知百度影音的开发团队,如图5所示。

图片43.png

出现问题的厍文件名称为“log.dll”,推测应该是带有调试性质的日志记录接口,将该文件与任意格式的媒体文件放置在同一目录下,当用户使用百度影音播放媒体文件时,“log.dll”文件将会被同时加载,如果该文件为恶意攻击者开发,那么就会直接造成用户系统受到攻击。为此,恶意攻击者可以利用该漏洞,远程共享带有“log.dll"和媒体文件的文件夹,诱使用户访问,最终实现远程入侵用户系统。

常用软件出现“Dllhij ack"漏洞,其影响力是巨大的,一般的用户只会对exe这样的程序比较敏感,不会轻易执行,但是,一个Dll文件放在一堆视频文件当中,或者网页当中,谁会在意?反正双击又不会运行。这就造成了“Dllhij ack’’漏洞的隐蔽性。

最后,以上关于浏览器的两个安全漏洞属于首次公布,本文旨在讨论安全技术。希望国内浏览器的开发者能够及时修补该漏洞,为广大使用者带来一个安全方便的使用体验。

本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。

相关推荐