1 ActiveX控件
1.1 什么是ActiveX
ActiveX 是一个开放的集成平台,为开发人员、 用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内容的方法。 使用 ActiveX, 可轻松方便的在 Web页中插入 多媒体效果、 交互式对象、以及复杂程序,创建用户体验相当的高质量多媒体 CD-ROM 。 微软定义根据微软权威的软件开发指南MSDN(Microsoft Developer Network)的定义,ActiveX插件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。
以前称为 OLE 控件或 OCX 控件. 是组件 (或对象) 打包,别人编程功能. 以便您可以重用 Web页或其他程序中插入。 例如, 随 InternetExplorer 一起提供 ActiveX 控件可用于增强 Web页具有复杂格式功能和动画。ActiveX 控件结合了Java 程序和 Netscape 插件优点,还可以用许多编程语言, 包括所有 Microsoft 编程和在数据库语言编写程序中使用 ActiveX 控件。
1.2 脚本安全
一个ActiveX控件可以被标注为脚本安全SFS(Safe For Scripting),这意味着IE可以通过脚本语言如或VBScript调用控件,并设置或获得它的属性。
有两种方法可以描述一个控件是脚本安全的,种方法是使用组件目录管理(Component Categories Manager)来在系统注册表中创建合适的项目。可以通过在这册表编辑器中查看“HKEY_CLASSES_ROOT\CLSID\
1.3 KillBit
KillBit是注册表中的一项,用来标识控件使得在IE浏览器或者脚本环境运行时不加载控件。当发现有漏洞的控件时,可以先通过设置KillBit来使IE在使用默认设置时永不调用ActiveX控件。KillBit是ActiveX控件的兼容性标志DWORD值在注册表中的特定值0x00000400。针对IE与操作系统的不同,KillBit在注册表中的位置略有不同[4],可分别表示为:
(1)32位IE/32位Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet
Explorer\ActiveX Compatibility\
(2)64位IE/64位Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet
Explorer\ActiveX Compatibility\
(3)32位IE/64位Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\
Internet Explorer\ActiveX Compatibility\
1.4 控件函数枚举
由于ActiveX遵循COM规范,因此它也像其他的COM控件一样使用相同的方式实现了COM接口,COM接口中很好地定义了一个COM组件中所实现的方法和属性。如果控件实现了IDispatch或者IDispatchEx接口,那么可以通过获得IDispatch接口来枚举出控件的方法、参数以及属性等信息。
2 不安全方法漏洞及检测
2.1不安全方法漏洞
漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误,在Sendmail早期版本中的编程错误,在NFS协议中方式上的弱点,在Unix系统管理员设置匿名Ftp服务时配置不当的问题都可能被攻击者使用,威胁到系统的安全。因而这些都可以认为是系统中存在的安全漏洞。
漏洞会影响到很大范围的软硬件设备,包括作系统本身及其支撑软件,网络客户和服务器软件,网络路由器和安全防火墙等。换而言之,在这些不同的软硬件设备中都可能存在不同的安全漏洞问题。在不同种类的软、硬件设备,同种设备的不同版本之间,由不同设备构成的不同系统之间,以及同种系统在不同的设置条件下,都会存在各自不同的安全漏洞问题。漏洞问题是与时间紧密相关的。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些早先被发现的漏洞也会不断被系统供应商发布的补丁软件修补,或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中具有漏洞的同时,也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。
如果一个方法被设计是由IE调用,那么它应该就被标记为脚本安全,微软在MSDN中提供了编写一个安全的控件时对于哪些应该被标为安全提供了指导。但是由于编程人员在安全性上的疏忽,或者根本就不熟悉ActiveX的调用机制,一些标记为脚本安全的方法能够轻易地被远程调用者不加任何限制地调用,或者一些本不应该被IE所使用的方法错误地被标注上了脚本安全,这些方法给系统带来很大的安全隐患。这类漏洞往往表现为任意的注册表读写、本地文件系统的读写、网络端口的开放,执行文件、敏感信息的泄漏等。由于这类漏洞的利用一般非常简单,因此这类漏洞利用门槛很低,危害性极大。
2.2 ActiveX控件的检测
2.2.1 威胁建模
威胁建模(Threat modeling)是一个过程,软件开发人员可以使用它来评估,从而减少控件所面临的潜在的威胁[6]。威胁建模来自于软件测试领域,威胁建模的一般步骤是先分解应用程序,建立数据流图,然后识别所面临的威胁,根据威胁识别潜在的漏洞。对于识别潜在的威胁,可以利用Howard和Leblanc提到的STRIDE威胁目录[7]。
但是由于威胁建模一般是建立在拥有软件设计细节的基础上。作为漏洞挖掘工作,常常面临的只是软件的二进制文件形式,很难得到软件设计的源代码,构建完整的数据流图。因此,基于威胁建模的漏洞挖掘工作,很难建立起准确的威胁模型。
2.2.2 基于STRIDE指导的渗透测试
渗透测试是指测试人员围绕网络或者系统的安全性展开探测,以发现系统脆弱的环节[6]。在不安全方法的测试中,函数的参数成为渗透测试的主要入口,分析大量的已公布不安全方法漏洞,发现从暴露的方法名字中,一般就能推断出该方法执行的操作。因为在代码编写时,常常使用有意义的单词来表示方法和参数的名字,如下面的一些例子:
LaunchExe(BSTR ExeName)
SaveFile(BSTR FileName,BSTR Url)
Update(BSTR Url,BSTR LocFile)
ExecuteCommand(BSTR Command)
这些函数及参数明显地暗示了函数的功能以及所需参数的意义,应当首先尝试使用合适的值来测试这些方法。而利用威胁建模中的STRIDE威胁目录可以保证测试的全面性。结合ActiveX控件中常常被用来作为功能扩展的方面,应该从表1所列的几个方面来测试确定该控件是否包含了不安全方法。
2.3 测试的一般步骤
结合ActiveX控件的特点及其安全方法机制,提出了不安全方法漏洞挖掘的一般步骤。
其中,检查是否标注为脚本安全一般先看该控件是否实现了IObjectSafety接口,如果没实现则再检查注册表中是否标注脚本安全。函数调用中要根据测试者之前预测的潜在威胁输入合适的参数,如果测试结果符合预期假设的威胁,则漏洞分析成功,如果测试结果没有实现预期的威胁,则返回查看是否还有其他的潜在威胁可能存在,循环进行测试,直到被测函数被认定不会包含中所具有的威胁为止。
3 实验及结果分析
本文选取了三款国产软件,分别是UUsee2008、暴风影音、迅雷看看。将三款软件安装到机器后,分别枚举控件并且检查每个控件的信息,三款软件共在机器上安装新COM控件60个,其中有2个设置KillBit,10个被标注为脚本安全。详细信息如表2所示,表中可以看到暴风影音没有被标注为脚本安全的控件,在防范不安全方法漏洞方面做得比较好。
(1)UUSee任意文件漏洞
软件:UUSee2008
控件名称:UUUpgrade Control
函数:VARIANT_BOOL Update(BSTRbstrLocalINIFile-
Name,BSTR bstrRemoteINIURL,BSTR bstrDetailURL,short nMode)
根据函数名字推测可能具有使用远程文件更新本地文件的作用,符合威胁列表中条威胁。因此需要编写测试网页对该方法进行测试,测试结果发现存在之前预测的威胁。该漏洞为已公布漏洞,已发布于国内绿盟漏洞数据库上[9]。
(2)系统信息暴露漏洞
软件:UUSee2008
控件名称:UUUpgrade Control
函数:BSTR GetMacID( )
BSTR GetHDID( )
通过分析函数的名字可预测这两个函数可能分别能使远程攻击者得到本地机器的MAC地址和硬盘ID,存在一定的信息暴露危害,测试结果显示符合之前的预测。两个方法存在泄露系统信息漏洞。
软件:迅雷看看
控件名称:DapCtrl Class
函数:long IsFileExist([in] BSTR filePath)
该函数能够根据攻击者指定的文件路径名称,返回该文件是否存在,返回值为1表示存在,为0表示不存在。这在远程渗透攻击中会给远程攻击者提供帮助。因此存在信息泄漏的危害。
本文只对ActiveX控件中的不安全方法漏洞的挖掘方法作了介绍,这种漏洞利用难度较易,危害极大。本文
介绍的方法,只能对单个的方法分别进行测试,但是还有一些控件的方法需要调用属性信息或者其他方法的结果,这种方法对造成的漏洞需要先对控件中的方法属性之间利用数据流分析建立起联系,这是以后研究中需要进一步完成的工作。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。