分析分享:Hacking Team Flash 0Day - 图文

更新时间:2023-12-16 20:28:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

分析分享

Hacking Team Flash 0Day

Content

漏洞:Flash 0Day

为什么是Flash 0Dday 漏洞触发 受影响系统

攻击:漏洞利用

触发原理 动态调试 提权验证 利用形式

防护:思路及建议

思路 建议

教学:Flash漏洞分析

Flash背景知识 Flash文件格式 Flash常用工具介绍 AS脚本

Flash ActiveX控件介绍

威胁情报 关于绿盟科技

2 | 31

内容导读

3

3 Hacking Team事件已经过去1个星期,社会各4 界针对泄露数据的分析还在进行中。为了帮助安5

全技术从业者后续能够有更多的人加入到分析队

6

伍中来,绿盟科技安全技术专家将Flash 0Day的分6 6 析方法开放出来跟大家共享,便于技术人员能够入12 12

手Flash 0Day漏洞分析。

13

1 13 作,绿盟 6日,威胁响应中心启动应急分析工攻击; TAC产品拦截到Flash 0Day漏洞14

2 间告知客户关注; 6日夜,相关信息及初步建议,第一时 16

3 广大用户关注事件进展。分析工作进展进 7日,在官网网站发布紧急通告,建议16 展中; 17 4 统简要分析报告,同时发布防护方案; 9日,发布Hacking Team远程控制系 19 5 24 的分析过程资料分享。 13日,就Hacking Team Flash 0Day26

29 在看完本报告后,如果您有不同的见解,或者需要了解更多信息,请联系:

30

? 绿盟科技威胁响应中心微博 ? http://weibo.com/threatresponse ? 绿盟科技微博

? http://weibo.com/nsfocus ? 绿盟科技微信号 ?

搜索公众号 绿盟科技

漏洞:Flash 0Day

自7月5日晚,Hacking Team被Gamma Group Hacker①攻陷以来,其泄露的400GB数据包持续在业界传播发酵,绿盟科技威胁响应中心持续跟踪事态进展,给出系列分析报告②,同时也将相关解决方案提供给合作伙伴及最终用户,以便用户能够应对可能发生的攻击,此次事件告一段落。今天绿盟科技安全技术人员将针对此次泄露的Flash 0Day漏洞,将分析方法、工具及相关知识分享出来,希望更多的安全行业从业者能够从中有所获益。

为什么是Flash 0Dday

绿盟科技一直参与微软MAPP计划,该计划里面也包含了Adobe公司爆出的漏洞,通过以往长期跟踪分析的经验来看,Adobe漏洞主要集中在两款产品一个是Abode reader,另一个就是Adobe Flash。此次报告分析的漏洞就是关于后者的漏洞,该漏洞在绿盟科技漏洞库中具有这些标识,CVE-2015-5119,Adobe Flash Player ActionScript 3 ByteArray释放后重用远程漏洞(CVE-2015-5119),BUGTRAQ ID: 75568③,CVE(CAN) ID: CVE-2015-5119④

为什么Hacking Team用了Flash漏洞,是因为Flash漏洞相比其他软件,协议,服务的漏洞要更难分析和利用,一方面可以为黑产竞争者制造壁垒,同时也为分析和防护Flash 0Day提升难度。究其原因有以下几个方面:

? 没有符号表

Flash软件不是微软提供的软件,所以没有提供标准的符号表,较难定位到具体

的函数位置,目前做这方面分析的组织不多。

①②③④

Gamma Group Hacker, http://www.ibtimes.co.uk/who-hacked-hacking-team-gamma-group-hacker-holds-their-hand-1509662 Hacking Team系列报告, http://www.nsfocus.com.cn/research/threatintelligence.html BUGTRAQ, http://www.securityfocus.com/bid/75568

CVE, http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5119

3 | 31

? 虚拟机机制 如今常见的Flash Player都集成了AVM2,将AS编译的字节码直接跑在虚拟机

上,由AVM2来解释执行。一方面方便了swf文件的移植,另一方面,相对于分析其他软件的漏洞来说,无疑又是多了一层保护。 ? 沙箱机制

Flash安全模型使用安全域的沙箱来分离内容。Flash沙箱除了隔离内容外,还能避免

名字冲突(有点类似命名空间)。沙箱系统中不同的安全域使得SWF文件在Flash播放时运作在自身的沙箱里。如果想要突破沙箱机制,需要对Flash沙箱原理要有比较透彻的理解。 ? IE保护机制

现在的Flash一般都嵌入到网页,如果想利用Flash漏洞来获取权限,无疑受到

IE等浏览器本身机制的保护,比如IE,Chrome的沙箱机制。这就要求对沙箱机制和如何绕过沙箱有个整体细致的了解,也就是说想通过Flash漏洞来获取更高的权限还是要有更高的功底。 ? 没有完整的POC

对于漏洞分析和利用如果没有POC,那也只能靠自己去挖掘这个漏洞; 另一方

面如果缺少完整的POC,攻击者只能自己去写代码,所以业界及主管机构都是严格控制POC的传播。

POC的基本功能就是验证并触发该漏洞或是Bug存在,但是能触发漏洞,不代表就一定能利用漏洞;有些漏洞是不能利用,当然我们也可以不管这类漏洞叫漏洞,而只能称之为Bug。但此次泄露出的Flash0day数据,是可以被触发的。

漏洞触发

那么此次的漏洞如果被触发,会有什么样的结果呢?先来看看漏洞触发后的现象。通过分析,利用该漏洞可以在IE中稳定的执行系统可执行文件,比如在下图中就弹出了计算器。

4 | 31

方法很简单利用构造的test.html加载swf文件,在加载swf文件时IE会提示要加载ActiveX插件,运行就行。加载插件后点击图中的“run calc.exe”按钮即可弹出计算器,漏洞利用成功。这个实验中使用Win7 64位、IE11,能稳定触发漏洞。

受影响系统

Adobe Flash Player存在一个严重的释放后重利用内存破坏漏洞,攻击者可能远程获得当前用户的权限。此漏洞影响大量Flash Player版本,此漏洞影响大量Flash Player版本,目前已有可利用的攻击代码公开发布,强烈建议受影响用户更新到当前厂商提供的最新版本。

? Adobe Flash Player <= 18.0.0.194 ? Adobe Flash Player <= 18.0.0.194

? Adobe Flash Player Extended Support Release 13.x ? Adobe Flash Player Extended Support Release 13.0.0.296 ? Adobe Flash Player for Linux 11.x ? Adobe Flash Player for Linux 11.2.202.468

5 | 31

攻击:漏洞利用

触发原理

该漏洞是一个典型的UAF释放重利用的漏洞。用户改写字节数组大小,在原来字节数组释放后,重新分配,导致该数值被写入已经释放的内存中,造成释放重利用。

动态调试

由于Hacking Team泄露出的数据中暴露了Flash 0Day漏洞源码,我们的得以使用CS进行动态调试。

源码级调试分析

利用CS装载源文件中的fla原始档,和其他as文件。生成SWF文件

可以看出先是调用了MyClass.as文件中的InitGui函数来初始化GUI元素并输出一些系统相关信息,点击swf文件中的button按钮就会调用相应的处理函数如下图所示:

6 | 31

处理函数btnClickHandler里面首先调用了TryExpl函数如下图所示:

接下来就看看TryExp1函数里面是怎么样做到漏洞利用的,进入该函数

从给出的源码可以看出先是声明了变量alen=90,然后声明一个数组a,并将数组的各元素赋值,在AS中Array数组类型的变量不像C/C++数组一样要求是同一类型的数据在可以放到数组里面,在AS中不同类型的变量对象可以放到同一数组里面。从源码可以看出,a数组的90个元素是MyClass2对象和

7 | 31

ByteArray类型数组交替出现,并且每分配两个MyClass2元素才会分配一次BtyeArray类型数组,那么实际运行效果是怎么的呢,我们利用CS调试功能在for结束后的下一条语句下了断点显示如下图:

从图中看出我们在for(i=alen-5;i>=0;i-=3)处下了断点,在调试运行后,让a数组填充完毕;左上部紫色的框给出了按钮按下后堆栈中函数调用关系,btnClinckHandler->TryExp1。左下方的红框给出了a数组赋值完成后每个元素的实际值,从图中看出,除了a[0]外,每出现一次ByteArray元素要出现两次MyClass2元素,这和我们刚才通过静态代码分析的结果是一致的。

接下来就是一个for(i=alen-5;i>=0;i=3)语句,前面知道alen=90那么在第一次循环时i=85,通过源代码中的赋值我们知道a[85]的大小是0Xfa0,源码中将_ba=a[i],也就是第一次将a[85]赋给_ba(也就是_ba大小为0xfa0),同时将一个新的Myclass类赋给_ba的第四个字节_ba[3]。如下图所示

8 | 31

接下来就要动态跟踪一下a[i]是不是a[85],如果是a[85] 那么又是什么类型,为了能查看i的值到底是不是a[85],我在源码中添加了一条调试语句trace(“the number of i =”)看i的值打印多少,根据之前设置的断点,单步执行源代码,如下图所示:

从图中可以看出右下方打印出i的值是85,刚好我们分析的一致,从左边图可以看出a[85]元素的类型是ByteArray类型。接下来代码中会将MyClass对象赋值给_ba[3]。由前面介绍的知识我们知道,在MyClass对象赋给一个基本类型时,会调用ValueOf函数,这里给对象MyClass定义了ValueOf函数,所以在赋值之前会调用该函数。

继续单步跟进_ba[3]=new MyClass();调用自定义的ValueOf函数

9 | 31

在我们单步跟踪调试ValueOf函数,_gc数组除了在TryExp1中加入a数组元素外(_gc.push(a)),又通过valueof函数,加入了-va元素(_gc.push(_va)),这样_gc数组就有两个元素,一个是a数组元素,一个是_va数组元素,每个元素又是数组类型,a数组有90个元素,前面已经介绍过了,_va有5个元素,如图中左边显示的结果。在TryExp1中_ba=a[i]大小为0xfa0,在valueof函数中_ba通过_ba.length=0x1100会释放调原来的空间而从新分配内存大小。同时通过后面的_va[i]=new Vector.(0x3f0)来重新使用释放的内存。前面我们介绍过,在分配vector类型的空间时其前四个字节是vector大小也就是说,在被释放的空间的开始四个字节会写入0x3f0。

而在_ba[3]=new Myclass()中_ba[3]实际指向的内存地址还是释放后的内存地址所以在返回40后被释放的内存的数据就是0x400003f0。

UAF漏洞图解

a. 通过a数组创建ByteArray类型元素数据,设置长度为0xfe0:

b.通过调用valueof函数中的_ba.length=0x1100,释放该空间

c.调用分配vector来占据被释放的内存,由前面的知识,我们知道Uint vector包含了8字节的头部信息,其中开始的4字节是长度字段。

d.在valueof返回0x40后,写入到之前_ba[3]指向的地址中

10 | 31

动态跟踪查看结果

在Myclass对象调用valueof之前空间内存是esi-3,如下图所示

在调用length=0x1100后,内存空间被释放,申请的vector利用释放后的空间,从下图可见vector前四个字节值是0x3f0

在valueof返回后_ba[3]指向的第四个字节0x10a70003被赋值为0x40

此时vector的长度字段已经变成了0x400003f0

11 | 31

提权验证

那么利用该漏洞是否可以达到提权的目的呢,让我们来验证一下。利用windows 7自带的IIS服务搭建一个Web服务,将test.html和exp1.swf放在web服务目录中同时将test.html中对exp1.swf引用改为绝对地址引用,这样在访问test.html时方便加载exp1.swf。设置IE启动保护模式,同时需要启动ProcessExplorer工具来监控IE进程和进程的权限等级。

从ProcessExplorer结果来看,进程ID为1792的iexplore是沙箱进程,产生的子进程6512是在访问test.html是生成的一个Tab,如下图

当然有多个IE Tab标签时会有多个子进程,同时受到一个沙箱进程的保护,从图中看出沙箱进程等级是Medium,属于标准用户权限等级,而子进程6512则是low等级,是沙箱中的IE TAB进程的默认等级,IE沙箱中的IE TAB进程默认等级就是低。从图中可以看出,IE TAB子进程产生的calc子进程也是low。

利用形式

由此上面的分析,我们可以看出利用该漏洞并未达到权限提升的效果,也就是说,攻击者单独使用这个Flash 0Day漏洞是无法获得高权限的,它只是创建了一个低等级的进程,需要结合其他方法来提权,比如此次泄露数据中的windows内核字体权限漏洞,利用此内核漏洞是很容易提升权限的。

同时,结合之前我们对Hacking Team远程控制软件的分析①,可以看到其代理有两种安装方式:

简要分析:Hacking Team远程控制系统,http://www.nsfocus.com.cn/content/details_141_1984.html

12 | 31

? 感染移动介质 与很多木马、病毒及流氓软件的传播方式一样,该软件首先还是采取这种低成本的

方式进行,感染一些能够接触目标的移动媒体,比如CD-ROM、USB等,即便是OS 或者BIOS设置了密码也一样可以感染,从而获取一些环境数据,比如电脑是否可以上网等,为后续的动作提供参考依据。 ? 代理攻击

采用软件或硬件的系统,能够在网络会话过程中修改和注入数据,在某些情况下,

可以注入到系统并难以被检测到。同时,也能够感染Windows平台上的可执行文件,如果目标电脑从网站上下载并执行这些可执行文件时,Agent将在后台自动安装,用户不会知晓。

那么,我们这里可就可以画出一张可能的入侵乃至实现监控目的链条:

防护:思路及建议

思路

万变不离其宗,在上面的攻击链条中,有很关键的一条,用户需要执行恶意代码,漏洞利用才能成功,那么从防护的角度来说至少需要有这些层面,1要能够侦测到恶意的Flash脚本;2要能够阻断Flash脚本

13 | 31

的执行;3即便在执行后能够查杀恶意进程。值得一提的是,从下面的截图中可以看到在大家四处下载400GB泄露数据包的时候,恶意swf就藏在这些网站页面中,从这一点就可以看到其攻击目标很明确,针对中间环节的攻击从未停止。请下载这些数据包的人需要小心谨慎,不要四处传播这些数据包。

在上次防护方案①中,我们也提出用Intrusion Kill Chain模型②来进行Flash 0Day乃至后续攻击的防护方案的参考,具体的分析请参考那篇报告。

建议

同时,从用户的角度来说,建议您可以采取如下方式来防御Flash 0Day漏洞以及以后的类似漏洞 ? 建议您升级最新的Flash Player,具体请访问:https://get.adobe.com/flashplayer/?loc=cn

①②

防护方案:Hacking Team数据泄露事件, http://www.nsfocus.com.cn/content/details_141_1987.html

Intrusion Kill Chain(或称为Cyber Kill Chain)模型由Lock Martin公司Eric M. Hutchins等三位安全研究员在2011年3月举行的ICIW

大会 上公布。

14 | 31

? 建议您升级最新的安全产品规则库,具体请访问:http://update.nsfocus.com/ ? 建议您安装or升级最新杀毒软件,比如使用安全级别更高的猎豹, FireFox浏览器 ? 如果上面的措施实施需要一定时间,建议您暂时禁用Flash插件

由于Flash使用量庞大,所以攻击者对他的分析以及暴漏出来的漏洞是相当的多且频繁,仅在近两个月,绿盟科技漏洞库就更新发布了一系列相关漏洞,具体信息请查询安全漏洞公告: http://www.nsfocus.net/index.php?act=sec_bug

15 | 31

教学:Flash漏洞分析

在上面的分析中可以看到很多的术语和技术细节,为了帮助分析人员分析及应对这个漏洞,下面就结合此次Flash 0day漏洞,谈谈关于Flash方面的知识。

Flash背景知识

Flash又被称之为闪客,2005年12月3日被Adobe公司收购。Flash通常也指Macromedia Flash Player(现Adobe Flash Player)。 2012年8月15日,Flash退出Android平台,正式告别移动端。Flash是一种动画创作与应用程序开发于一身的创作软件,到2013年9月2日为止,最新的零售版本为Adobe Flash Professional CC(2013年发布)。目前用的最多的产品是Adobe Flash Professional CS6。

Flash动画说到底就是“遮罩+补间动画 +逐帧动画”与元件(主要是影片剪辑)的混合物,通过这些元素的不同组合,从而可以创建千变万化的效果。Flash是一个非常优秀的矢量动画制作软件,它以流式控制技术和矢量技术为核心,制作的动画具有短小精悍的特点,所以被广泛应用于网页动画的设计中,以成为当前网页动画设计最为流行的软件之一。

Flash影片的后缀名为.swf, swf在发布时可以选择保护功能,如果没有选择,很容易被别人输入到他的原始档中使用。

“fla”是Flash的原始档,只能用对应版本或更高版本的Flash打开编辑。

ActionScript是一种程序语言的简单脚本文件,.fla原始档能够直接包含ActionScript,但是也可以把它存成AS档做为外部连结档案(如定义ActionScript类则必须在写在as文件里,再通过import加入类),以方便共同工作和更进阶的程序修改。

而对于一般的Flash方面的漏洞集中于ActionScript脚本解析执行的漏洞利用。目前AS的最高版本是AS3.0。

16 | 31

Flash文件格式

对于Flash文件,其实和我们平时用的PE文件,ELF,及Dex文件类似,也是由一定格式的数据结构组成。Flash文件的扩展名为.swf,其头部格式如下图

再好的说明也没有实际的例子理解的深刻,那我们就结合两个实际Flash的swf文件看看SWF头部结构,如下图所示:

17 | 31

根据对swf文件头部的介绍,不需要大篇幅的文字来说明swf文件头部的结构,结合上面的两幅图,来自于两个不同的文件,exp1.swf,exp2.swf。可以清晰的看到swf文件的的总体结构。

图中的两个swf文件,一个是压缩过的exp1.swf,一个是未压缩的exp2.swf。exp1.swf和exp2.swf由同一个fla原始档和AS脚本编译而成;exp1.swf被压缩,exp2未被压缩。从下图也可以看到两个文件大小的对比情况:

上面两幅swf解析图来自于二进制查看工具010 Editer的截图,在官方下载swf.bt模板,导入010 Editer工具中,打开swf文件,运行模板插件即可识别出二进制文件类型及结构。

简单介绍一下,根据文件头部的说明,文件头部的前三个字节是标识符的开始位为0x46、0x57、0x53(“FWS”)或者0x43、0x57、0x53(“CWS”)其中之一。 “FWS”标识符说明该文件是未压缩的SWF文件,“CWS”标识符则说明该文件前8个字节之后(即文件长度字段之后)的全部数据为开源的标准ZLIB方式压缩,如上图exp1.swf所示;标识符之后是一个字节的版本号,这个版本号并不是一个ASCII码,而是一个8位的数字,比如,图中显示的版本值是0x0F。

文件长度字段是整个包含文件头在内的文件字节长度,如果是未压缩的SWF文件(标识符FWS),那么长度字段应该是和文件大小恰好匹配,如果是一个经过压缩的SWF文件(标识符CWS),那么文件长度字段是指文件经过解压缩之后的总长度,因此它一般不会和文件大小匹配,若果使用未压缩的文件尺寸能够让解压过程获得更高的效率,从上图中的exp1.swf看出使用了未压缩文件大小76528,和exp2.swf一样的大小。

帧率是以帧每秒为单位的帧回放比率,在exp2中给出的帧率是12,但是在压缩文件exp1中已经被压缩,压缩算法是zlib. 帧数是整个SWF影片帧的总数量。从图中看出,在压缩文件exp1也已经被压缩。文件头之后是一系列连续的标签数据块,所有的标签都共享一种通用格式如下图:

18 | 31

Exp2文件的一个整体结构如下图所示:

对swf文件格式的简单介绍就到这里,标签的具体内容这里就不做深入解读了。对于如何查看压缩之后的swf文件内容,会在后面介绍。

Flash常用工具介绍

对于Flash常用工具,包括编译工具、反编译工具等。这里结合HackingTeam给出的Flash0Day漏洞源码来学习一些常用的Flash工具。

编辑编译工具:CS

这款工具就是Flash编辑工具CS6.0,也是目前制作Flash动画使用最多的一款工具。该工具具有针对AS脚本简单的调试功能。结合Hackingteam给出的源代码,让CS6.0直接加载源代码中的.fla原始档文件。之后直接运行“Ctrl+Enter”会在源代码目录下生成.swf文件。当然该.swf文件包含了AS脚本的ABC字节码内容;编译后的结果如下图所示,由于在给的Flash0Day漏洞源码中已经给出了一些调试信息,所以在点击“run cale.exe”后,所有出现了一些调试信息,如图所示:

19 | 31

该工具还提供简单的调试功能,为了能够查看和调试AS源码文件,可以同时打开AS源码,加入调试信息或是设置断点来调试AS源码,如图所示

压缩与非压缩SWF文件

从前面看到的贴图知道,对于SWF文件有压缩格式与非压缩格式,那么为什么会有压缩格式与非压缩格式。在CS5.0以前产生的swf默认都是非压缩格式。如果需要对swf文件压缩需要借助其他的swf压缩工具,比如说MinifySWF,Flash Optimizer,LiatoSWF等;而在CS6.0,集成了lzma(7-zip)和zlib压缩算法,对编译的swf文件默认都是压缩格式,所以我们看到的HackingTeam默认编译的exp1.swf是一种压缩格式。

如果想编译出非压缩格式的swf文件,方法也很简单,只需要在发布影片时设置非压缩即可,如下图所示

20 | 31

反编译工具:AS Sorcerer

对于已经发布的swf文件,都不会带有源码,对我们调试swf文件就带来了不小的麻烦,类似分析Android的DEX文件,都是执行在虚拟机中,由虚拟机来解释执行字节码。DEX文件由反编译工具可以反编译出java源码,那么swf文件也有类似的工具,根据SWF文件格式和ABC字节码反编译出类源码的文件。

Swf反编译工具也比较多,这里举个例子利用AS Sorcerer工具来将编译好的swf文件重新解析,下图是HackingTeam爆出了Flash0Day源码

21 | 31

从图中知道,根据exp1.swf文件大小可知,HackingTeam自己编译的是zlib压缩后的文件,当然也可以通过二进制直接看看有没有被压缩,根据前面介绍的知识,只要二进制文件前三个字节是“CWF”那就是压缩后的文件。

接下来我们用AS Sorcerer工具来反编译exp1.swf文件看反编译后的结果:

从反编译结果来看,该工具确实还原了原有的几个AS文件,同时也说明该工具能自动解压由zlib压缩的swf文件,并对swf文件进行反编译解析。

反编译工具:Sothink SWF Editer

接下来再介绍一款反编译工具---硕思闪客精灵,该工具比上一个款工具有更直观的界面,同时重要了一点就是提供了一款swf文件编辑工具Sothink SWF Editer,不但能识别swf文件结构,而且可以直接编译swf的二进制文件。

先来看反编译工具硕思闪客精灵反编译exp1.swf文件的界面情况:

22 | 31

从图中可以看出该工具将压缩格式的swf文件,直接反编译,同时看到了ABC字节码在反编译后的源码情况。

前面我们提到过对于压缩后的swf文件,010 Editer即使使用了swf模板,也不能解析出压缩后的文件格式。这里就介绍一款能够查看SWF压缩后文件格式的工具,Sothink SWF Editer工具可以直接将压缩的swf文件,解压同时解析出文件结构,如下图所示:

从图中看出压缩的swf文件,在导入该工具后自动解压并识别为FWS文件。而非CWS文件,为我们分析没有源码的并压缩的SWF文件,提供便利。

23 | 31

反编译工具:其他

还有其他的一些反编译工具比如yogda,asv,swf decmpiler, decompile Flash free,swf deompiler magic等就不一一列举介绍。

AS脚本

AS(Action Script)是Flash动作脚本语言,类似于JS(JavaScript)脚本语言,所以在很多存储结构和对象使用上都可以参考JS脚本语言的使用方式。下面结合本漏洞中会用到的一些结构对象做简要介绍。

AS中数组的使用

对于AS中的数组我们需要知道AS数组不像C/C++中的数组,在C/C++中数组要求存储同种类型的数据,而在AS中可以存储不同类型的数据,可以是基本数据类型也可以是对象类型也可以是自己定义的类型。在本例将要提到的AS中,数据Array就同时存储了ByteArray和MyClass2两种数据类型。

AS中Vector存储形式

在AS中,Vector只能存储同一类型的元素,其一般使用的格式如下:

1 var v:Vector .= new Vector.(100) //声明一个含有100个整型数的Vector变量v。

Vector类构造函数有两个可选参数,它允许你明确你的Vector实例的数量。第一个参数是length参数。默认情况下,当一个Vector被创建时,它是空的(它有0个元素)。然而,如果你传递一个值给length参数,明确元素数量的Vector实例就被创建了:

1 var myVector:Vector. = new Vector.(7); // myVector is created with 7 elements

24 | 31

Vector对象的另一个特征就是他们可以调整长度,这意味着你可以改变值,但是不能通过添加或删除元素来改变总数。默认地,一个Vector实例是不允许动态修改长度的。要创建一个可修改长度的Vector,将Vector类构造函数的第二个参数(fixed参数)设置为true:

1 var myVector:Vector. = new Vector.(7, true); // m yVector's length is fixed to 7 elements

注意: 可以在任何时候修改Vector对象的fixed属性来设置Vector的长度是否可变。

1 myVector.fixed = false; // myVector's length is no longer fixed

uint Vector在内存中的布局如下图,Uint vector包含了8字节的头部信息,其中4字节是长度字段。

AS中对象类型转换

在AS通用对象属性中有两个特殊的方法ToString()方法和ValueOf()方法。

ToString方法没有参数,它返回一个某种程度上代表着对象值的一个字符串,而它正是在这个对象上调用的。当AS需要将一个对象转换为一个字符串对象时,就需要调用该函数。比如当使用+运算将一个字符串和一个对象链接起来,或是当期待一个字符串的函数Alert传递一个对象的时候就会默认调用该函数。

ValueOf方法和ToString方法类似,它是当AS需要把一个对象转换为某种基本数据类型时就会调用该方法。比如一个对象用在需要一个基本数值的环境中,AS会自动调用该函数,而在本文提到的漏洞中正式利用了这一点,在将一个对象Myclass转为字节类型时默认调用Myclass的ValueOf方法。

25 | 31

Flash ActiveX控件介绍

Flash ActiveX控件是Adobe提供的解析执行swf文件的引擎文件。AS1.0的时候Flash还没有虚拟机机制,AS2.0在控件中集成了AVM1,AS3.0集成了AVM2。

如何查看本机安装的Flash控件版本

方法一:随便打开一个视频网站的视频文件,点击右键看Flash版本,这里Flash版本就是本机安装的Flash版本,这里以优酷视频为例显示出本机Flash版本:

方法二:在本机控制面板中,点击本机控制面板中的Flash player,在更新标签中显示了跟控件的版本信息,如图:

方法三:在注册表中查看,如图示:

26 | 31

方法四:登录Flash官网在线查看Flash版本,地址为 http://www.Adobe.com/software/Flash/about/,该网址能自动识别出本机的Flash控件版本,其显示结果为:

更新Flash控件的常用办法

方法一:在控制面板的Flash player中安装更新

方法二:官网下载

27 | 31

方法三,在上面视频网站打开视频,点击右键,点击关于Adobe,也会进入官网下载

Flash控件介绍

Flash控件的安装目录默认在C:\\Windows\\System32\\Macromed\\Flash下, 在系统目录下,这玩意要求权限还挺高的,控件名Flash32.ocx,如下图所示:

Flash控件就是个PE类型的文件,可以使用PE查看工具来查看该文件。前面说过Flash控件不是微软发布的控件,没有提供符号表,所以不能看到详细的导出函数,下面是用LoadPE工具来查看它所有的导出函数,如下图所示

28 | 31

从图中可以看出我们能看到的导出函数函数只有8个。在使用IDA工具加载该控件后我们能看到的绝大部分函数名是下面这种类型:

很难辨认出函数名和函数的作用。所以对很多人来说分析Flash漏洞就更难了。

威胁情报

从目前此次攻击及各方面应对情况来看,对于一些高级攻击形式,关键在于尽可能快的了解到相关的情报,以便尽可能快的启动应急响应机制。这无论对于解决木马或者APT攻击来说都是重要的手段之一,威胁情报的获取及响应都体现了防御能力的建设程度,威胁情报服务体系至少包含了威胁监测及响应、数据分析及整理、业务情报及交付、风险评估及咨询、安全托管及应用等各个方面,涉及研究、产

29 | 31

品、服务、运营及营销的各个环节,绿盟科技通过研究、云端、产品、服务等立体的应急响应体系,向企业和组织及时提供威胁情报,并持续对对匿名者攻击事件进行关注,保障客户业务的顺畅运行。

如果您对我们提供的内容有任何疑问,或者需要了解更多的信息,可以随时通过在微博、微信中搜索绿盟科技联系我们,欢迎您的垂询!

关于绿盟科技

北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。

30 | 31

基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。

北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

31 | 31

基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。

北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

31 | 31

本文来源:https://www.bwwdw.com/article/gvd5.html

Top