检测方案
DLL劫持漏洞的检测比较简单,可以在虚拟环境将程序运行起来,对其中的DLL加载操作进行审计,找出加载顺序中可能被劫持的点;还可以为程序构建一个“劫持现场”(自己做一个劫持并转发给正常DLL的DLL文件看是否执行其中代码),并检查程序能否真正规避DLL劫持的威胁。
DLL(Dynamic Link Library),全称动态链接库,是Windows系统上程序正常运行必不可少的功能模块,是实现代码重用的具体形式。简单的说,可以把DLL理解成帮助程序完成各种功能的组件。
DLL劫持漏洞(DLL Hijacking Exploit),这个名字缘起微软在2010年8月23日发布的2269637号安全公告。通俗点说,这个漏洞就像是去年炒的沸沸扬扬的深圳526车祸中总会提到的“掉包”;严格点说,它是通过一些手段来劫持或者替换正常的DLL,欺骗正常程序加载预先准备好的恶意DLL的一类漏洞的统称。利用DLL劫持漏洞,病毒木马可以随着文档的打开(或者其他一些程序正常行为)而激活自身,进而获得系统的控制权。
我们来看看DLL劫持漏洞到底是何方神圣。
高危害利用形式的爆发
DLL劫持漏洞伴随着Windows而存在,但是一直并未得到大家的足够重视。
直到2010年8月份,有黑客在安全论坛上公布了一种危害极高的DLL劫持漏洞的利用形式,迅速引起强烈的反应。随后,著名安全组织exploit-db公布了一系列存在DLL劫持漏洞的软件列表,其中可以发现大家十分熟悉的应用软件,包括:AutoCAD 2007、Daemon Tools、Winamp、Media Player Classic、Mozilla Thunderbird、Microsoft Office、Adobe Photoshop、Adobe Dreamweaver CS5、Skype、Snagit10、Safari、WinDVD、Opera、Firefox等等。
图2 PCHOME针对DLL劫持漏洞的新闻截图
简单的讲,安装了上述软件的电脑,当用户在打开一个图片、音乐、视频、BT种子、网页文件都有可能感染病毒。当攻击者利用DLL劫持漏洞构造一个特殊的DLL文件,将这个DLL文件和一些JPG、PPT、MP3、MPG、HTML文件共同打包,用户解压后双击打开这些文档,病毒即被立即触发。也就是说,不需要其他漏洞,不需要可执行文件,只需要鼠标双击打开别人发给你的音乐、视频或者图片文件,就可能感染病毒!难怪国外安全公司authentium在官方博客中描述DLL劫持漏洞时,甚至用"The world is going to end!"做标题。
不过此次风波,随着网民们的关注和各个产品漏洞的逐步修复,逐渐平息下去。