通过一个精心构造的页面 exploit 第三方软件中的 ActiveX 已经成为一种惯用攻击手段,众多知名软件公司都曾被发现其注册的 ActiveX 中存在严重的缓冲区溢出漏洞,一个被广泛使用的第三方软件漏洞的危害性不亚于 OS 级别的漏洞!

每一个 ActiveX 控件被注册进入系统之后,就会在注册表中建立一个键值来标识自己,这个键值就是 CLSID(Class ID),位于:HKEY_CLASSES_ROOT\CLSID,而能被浏览器加载的控件信息位于:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility

满足下列条件的 ActiveX 控件才能被浏览器正常调用:

* 对已经安装进系统的控件,必须被标记为可安全执行脚本(as safe for scripting,CLSID 项下若有 Implemented Catagories 选项,则为可安全执行脚本)。
* 对未安装进系统的控件,初次调用时浏览器会给出提示警告,在用户确定并同意后,才会下载安装该控件。

当可安全执行脚本选项被取消时,IE 会警告用户:该 ActiveX 控件可能不安全,根据用户的选择,该控件仍可能被调用。

当 ActiveX 控件的 KillBit 被设置后,只要不启用 IE 中的“对未标记为安全的 ActiveX 控件初始化并执行脚本”选项,IE 就不会调用该控件。所以一旦一个控件被设置了 KillBit,就很难再被浏览器自动调用(注:论文 Acctcking Interoperability 中说明某些情况下 KillBit 机制可以被绕过)。

设置 KillBit 的方法:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\<CLSID>
Compatibility Flags = 0x400

很多程序例如 VC++6.0 自带的工具 OLEViewer 可以查看控件中的信息。

OLEViewer 中的 Type Libraries 选项中包含在系统中注册过的所有 ActiveX 控件信息。

一个 ActiveX 控件文件可以同时向系统中注册多个控件类,从 OLEViewer 中打开一个 ActiveX 后,新的窗口中以 coclass 为前缀即为控件类。

选中某个控件类,可以看到其 uuid;展开某个控件类,通过 Methods 可以查看其内部的接口集合。

选中接口名称,可以在右侧窗口中显示出接口信息。其中无参接口为属性接口,带有 propget 描述,测试时用赋值来传递数据给接口(Name.Interface=data);带参数的接口为函数/方法接口,带有 propput 描述,测试时用参数形式来传递数据(Name.Function(data))。

手工 Fuzz 的流程为:

  建立变量,string//负数/小数/大数…
将变量传递给用户接口
保存代码到 web 服务目录下
OllyDbg 挂接 IE 并访问测试文件
分析

自动化的 ActiveX Fuzz 可以使用以下软件:

* COMRaider,带 GUI,由 iDefense LAB 的 David Zimmer 出品,很出色。
* AxMan,必须配合 IE 一起使用。
* Axfuzz,开源工具,可以列举 COM 的所有属性,进行简单 Fuzz。可以阅读这个工具的源码来学习如何编写 ActiveX 插件。

COMRaider 已将测试 ActiveX 控件所需的编写模板、获取用户接口、制定参数、测试结果监视等功能全部整合,能自动区分当前系统中能被浏览器正常调用的 ActiveX 控件,并分析出被测试控件的所有外部接口。

书中有几个实验:

* 超星阅读器 4.0 版本中的 pdg2.dll 的 LoadPage() 缓冲区溢出漏洞分析(Heap Spray)
* 微软 COMCT232.ocx 远程文件判断漏洞(实现穷举目录内容功能)

OD: ActiveX Vulnerabilities的更多相关文章

  1. OD: Kernel Vulnerabilities Analyze

    内核漏洞大多出没于 ring3 到 ring0 的交互中.从 ring3 进入 ring0 的通道,以及操作系统提供的 API 都有可能存在漏洞.例如:驱动程序中 IoControl 的处理函数,SS ...

  2. OD: Kernel Vulnerabilities

    内核漏洞概述 内核漏洞的分类 运行在 Ring0 上的操作系统内核.设备驱动.第三方驱动能共享同一个虚拟地址空间,可以完全访问系统空间的所有内存,而不像用户态进程那样拥有独立私有的内存空间.由于内核程 ...

  3. OD: File Vulnerabilities & Protocols & Fuzz

    IE.Office 等软件有个共同点,即用文件作为程序的主要输入,但攻击者往往会挑战程序员的假定和假设. 文件格式 Fuzz 就是利用畸形文件测试软件的稳健性,其流程一般包括: * 以一个正常文件作为 ...

  4. OD: Vulnerabilities Analyze Skills

    第五篇了,漏洞分析案例 漏洞利用的灵活程度让这门技术变得似乎没有什么原则可言,只有实践后总结提高才能挥洒自如. 漏洞分析方法 目标:弄清攻击原理.评估潜在利用方式及风险等级.扎实的漏洞利用技术是进行漏 ...

  5. ActiveX控件dsoFramer的使用(word、excel、PPT)

    dsoframer是微软提供一款开源的用于在线编辑.调用Word. Excel .PowerPoint等的ActiveX控件.国内很多著名的OA中间件,电子印章,签名留痕等大多数是依此改进而来的. 一 ...

  6. Flash Activex NPAPI PPAPI 各种网页插件完整安装包下载地址

    内容全部是自己手工原创写作的参考内容,完全排除从其他网站COPY的内容信息.如有雷同实属巧合.   奉献给有需求的人士,也给各位解决FLASH安装头疼的问题,正常在线下载安装运气不好的安装半天.运气好 ...

  7. 盗墓笔记—阿里旺旺ActiveX控件imageMan.dll栈溢出漏洞研究

    本文作者:i春秋作家——cq5f7a075d 也许现在还研究Activex就是挖坟,但是呢,笔者是摸金校尉,挖坟,呸!盗墓是笔者的本职工作. 额,不扯了,本次研究的是阿里旺旺ActiveX控件imag ...

  8. 第一次ActiveX Fuzzing测试

    接着上一篇的看雪Exploit me试题. 这道题给出了一个ActiveX的DLL,挖掘这个DLL中的漏洞. 由于从来没有接触过ActiveX的Fuzzing,所以找了一些文章来看.自己动手试验了一下 ...

  9. Registering DLL and ActiveX controls from code

    http://delphi.about.com/od/windowsshellapi/l/aa040803a.htm How to register (and unregister) OLE cont ...

随机推荐

  1. Linux Chaining Operators用法学习

    Linux Chaining Operators顾名思义,就是连接命令的操作,有些时候,往往一些命令可以用一行命令代替,我们就不需要大动干戈再去写Shell Script了,掌握和学习这些Chaini ...

  2. [PHP学习日志]简单Session的使用

    首先,给出一些Session的解释:目前最实用的网络协议即HTTP超文本传输协议,它是“无状态”的,所谓“无状态”是指它在用户与服务器交互时没有存储需要交互的“状态”.而Session 是在网络应用中 ...

  3. jquery easy ui 学习 (2) customtools window

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. Hybrid----优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案-备

    本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发送.接 ...

  5. jQuery的live绑定事件在mobile safari(iphone / ipad / ipod)上失效的解决方案

    jQuery的live绑定为什么会在mobile safari上失效呢?其实可以追溯到jQuery里live的实现方式.live的实现方式实际上是通过事件委托机制来实现的,也就是说是通过诸如冒泡的方式 ...

  6. 过多if-else分支的优化

    http://www.udpwork.com/item/9294.html 我想谈一谈这个话题是因为我的上一篇博客在ITEye上有一些朋友回复,说if-else过多的分支可以使用switch或者责任链 ...

  7. c# 接口代码实例

    类和接口的实现 接口定义:为一组方法签名指定一个名称的方式. 类实现接口,就一定要提供接口所有方法的实现. 即使抽象类,也要全部实现,但是,它可以把接口方法声明为abstract的,从而把这个接口方法 ...

  8. haskell趣学指南笔记1

    网址:http://learnyouahaskell.com/ 中文版:http://learnyouahaskell-zh-tw.csie.org/zh-cn/ready-begin.html 在 ...

  9. BeautifulSoup解析非标准HTML的问题

    发现问题: BeautifulSoup版本:4.3.2 在用BeautifulSoup.find_all()搜索HTML时,遇到下面的代码: <a href="/shipin/dong ...

  10. BZOJ1596: [Usaco2008 Jan]电话网络

    1596: [Usaco2008 Jan]电话网络 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 513  Solved: 232[Submit][S ...