频道栏目
首页 > 资讯 > 网络安全 > 正文

如何分析Adobe Flash Player漏洞样本

16-06-12        来源:[db:作者]  
收藏   我要投稿

最近一直在分析Adobe Flash漏洞,在分析和调试Adobe Flash漏洞过程中遇到了一系列问题,因此这篇文章主要介绍如何去分析一个Flash漏洞,以及在分析过程中需要使用哪些工具可以让工作变得更加轻松。在之后的文章中会具体分析Flash漏洞。

关于文件格式

刚开始接触flash文件时,会遇到不同一些不同格式的文件,比如.swf、.as、.fla格式文件。这里做一下解释。

1 .fla的文件是flash的源文件,所有制作的东西都在这个文件里面。

2 .AS 文件是flash的外部脚本文件,其中AS是ActionScript的简称,翻译成中文就是"动作脚本",是flash支持的编程脚本语言,通过该语言可以更加高效的实现flash动作,同时可以在avm虚拟机上直接运行。

3 .swf文件是由.fla的文件经flash应用软件发布生成的文件,或者也可以说是编译生成的最终文件,网页上的一些动画都是这类文件。

Flash文件的开发工具,比较流行的是Flash CS系列、Adobe Flash Builder系列,而使用最多的就是Flash CS系列(见下图),可以从官网下载。

在有源码的情况下(当然可能性很小)Flash CS还是一款比较好的分析工具,例如Hacking Team武器库中爆出的Flash漏洞,不仅可以查看内部AS代码,而且可以方便调试跟踪源码,

,调试方法也非常简单,习惯使用windbg或者其他调试器的都很容易上手,因此比较容易分析出漏洞触发原因。

关于Flash漏洞

一般调试Flash漏洞时常见的基本有两种:Flash文件格式漏洞和ActionScript脚本语言漏洞。

其中flash文件格式漏洞,是指flash控件在解析swf文件中的的某些元素的时候,解析代码处理不当,导致漏洞的产生。例如典型的CVE-2012-1535就是由于flash控件在解析特殊格式字体时产生的一个整数溢出漏洞。

另一类则是ActionScript脚本语言漏洞级别的漏洞,比如典型的CVE-2015-5119、CVE-2015-0349和CVE-2015-0311都是由于ActionScript处理ByteArray不当造成的UAF漏洞。

此外在调试Flash漏洞时,经常需要找到对应的flash player版本,可以从下面的链接中找到Flash Player的历史版本:

https://helpx.adobe.com/flash-player/kb/archived-flash-player-versions.html

http://www.oldversion.com/windows/macromedia-flash-player/

Flash Player的统一安装目录为:C:\WINDOWS\system32\Macromed

分析Flash漏洞样本

Flash漏洞通常会借助office文档或者网页挂马的方式诱导用户打开。通常是在office文档中嵌入精心构造的swf文件,用户打开文档后,swf文件执行,漏洞触发。在分析的时候,需要将编译后的swf文件从office文档中提取出来才能进一步分析,可以通过oletools的pyxswf模块提取,可以从doc、openxml以及rtf文件格式中提取swf,如下所示。

C:\oletools>pyxswf.py -o word_flash.doc

OLE stream: 'Contents'

[SUMMARY] 1 SWF(s) in MD5:993664cc86f60d52d671b6610813cfd1:Contents

[ADDR] SWF 1 at 0x8 – FWS Header

C:\oletools>pyxswf.py -xo word_flash.doc

OLE stream: 'Contents'

[SUMMARY] 1 SWF(s) in MD5:993664cc86f60d52d671b6610813cfd1:Contents

[ADDR] SWF 1 at 0x8 – FWS Header

[FILE] Carved SWF MD5: 2498e9c0701dc0e461ab4358f9102bc5. swf

使用二进制编辑器打开提取出来的swf文件,推荐使用010editor,因为010editor包含很多文件解析模板,其中就有swf文件的模板,很方便就能分析这种格式文件,如下图所示。

通过模板文件可以分析文件格式解析所造成的漏洞。

查看编译后的swf文件头,头部标志信息可以分为3种:FWS、CWS、ZWS,见下表(详细swf文件格式信息见这里)。

Field

Type

Comment

Signature

UI8

Signature byte:

"F" indicates uncompressed

"C" indicates a zlib compressed SWF (SWF 6 and later only)

"Z" indicates a LZMA compressed SWF (SWF 13 and later only)

Signature

UI8

Signature byte always "W"

Signature

UI8

Signature byte always "S"

Version

UI8

Single byte file version (for example, 0x06 for SWF 6)

FileLength

UI32

Length of entire file in bytes

FrameSize

RECT

Frame size in twips

FrameRate

UI16

Frame delay in 8.8 fixed number of frames per second

FrameCount

UI16

Total number of frames in file

可以看到CWS和ZWS是经过压缩的,因此如果在分析压缩后的swf文件,有时候可能会需要将文件还原成原始未压缩的文件,因为在漏洞分析时可能会对swf文件进行修改,但是压缩后的文件不好修改,例如反编译swf后发现shellcode"3A5B546D8F…",但是这些串在压缩的swf文件中是无法定位到的。

因此可以使用xxxswf.py脚本解压swf文件(如下图所示),该脚本运行需要需要安装pylzma模块,但是目前最高只支持python2.5版本,具体用法可以参考这篇文章。

反汇编swf文件

正常情况下最后我们分析的样本都是swf文件,它是经过Flash开发工具编译后发布的文件,直接分析这个文件显然也不切合实际,因此Adobe Lab发布了一款名为SWF Investigator集动态和静态一体的分析工具,如下图所示。

这款工具在概念上与所有多功能工具相似。它是一个可供快速解决常见问题的简单工具集合。SWF Investigator 的反汇编程序并不是要取代高端商业反编译程序的所有功能。但是,如果只是需要快速浏览 SWF,则这款工具具备提供基本信息及执行某些快速测试所需的所有功能。

Adobe SWF Investigator 能够查看 SWF 标签、分解 ActionScript,及提供二进制 SWF 视图。

查看基本信息:

查看DefineEditText标签以及反汇编后的ActionScript代码:

从安全角度来看,该工具能够检测跨站点脚本漏洞并执行简单的 AMF 服务模糊测试。其中还包含一些配套工具,比如基本 ActionScript 3.0 编译器和简单的 Web 服务器。

安装SWF Investigator时需要先安装Adobe AIR。

SWF Investigator的功能还有很多,比如还可以直接预览swf文件和编译AS脚本等。

反编译ActionScript语言

使用SWF Investigator虽然可以得到很多swf文件的详细信息,但是反汇编得到的字节码文件看起来实在很麻烦,因此可以使用一些AS脚本语言的反编译工具,例如AS3 Sorcerer、Sothink Flash Decompiler,不过这两款都是商业软件,因此推荐使用FFDec,一款开源的Flash Decompiler,如下图所示。

在反编译后的源码文件中,直接就可以看到shellcode,如下图所示。

本文简单介绍了在拿到一个flash漏洞样本时如何在短时间内对样本进行分析,以及用到的一些工具,为下一个阶段做准备。

相关TAG标签
上一篇:CVE-2016-2563 漏洞分析与利用
下一篇:解析一次购物引发的互联网安全测试
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站