FLASHMINGO:一款可以预防Flash攻击的开源自动分析工具

栏目: 软件资讯 · 发布时间: 5年前

内容简介:Adobe Flash是过去十年中最受开发的软件组件之一,不过这也使其成为攻击者的目标。自2005年以来,仅Flash播放器就被分配了1000多个CVE。其中,近900个漏洞的公共漏洞评分系统(CVSS)得分为9或更高。在与攻击者博弈了这么长时间后,Adobe终于决定在2020年弃用Flash。这一举动并不令人意外,因为所有主流浏览器都已经放弃了对Flash的支持。不过,目前存在一种误解:既然Flash已经成为过去式了,是不是我们就不必对它进行安全防护了。然而,历史告诉我们,传统技术如果要被完全更迭,会花很

Adobe Flash是过去十年中最受开发的软件组件之一,不过这也使其成为攻击者的目标。自2005年以来,仅Flash播放器就被分配了1000多个CVE。其中,近900个漏洞的公共漏洞评分系统(CVSS)得分为9或更高。

在与攻击者博弈了这么长时间后,Adobe终于决定在2020年弃用Flash。这一举动并不令人意外,因为所有主流浏览器都已经放弃了对Flash的支持。

不过,目前存在一种误解:既然Flash已经成为过去式了,是不是我们就不必对它进行安全防护了。然而,历史告诉我们,传统技术如果要被完全更迭,会花很长时间。如果组织没有及时淘汰Flash,则由于缺少安全补丁,黑客会更加猖狂,安全威胁可能会超过Flash的生命周期。

目前FLARE团队的恶意软件分析师仍然在恶意软件样本中看到Flash漏洞的利用样本,因此,他们必须在Flash被完全替换之前,找到一个过渡的安全方案。这也是FLASHMINGO出现的原因,它是一个自动分析SWF文件的框架。FLASHMINGO使分析师能够对可疑的Flash样本进行分类,并以最小的付出进一步调查它们。它作为一个独立的应用程序会被集成到各种分析工作流程中,或者独立作为一个强大的库使用。用户可以通过自定义 Python 插件轻松地扩展该 工具 的功能。

SWF和ActionScript3

在深入了解FLASHMINGO的内部工作原理之前,让我们了解一下Flash框架。Flash的SWF文件由块(称为标记)组成,以实现特定的功能。标记彼此完全独立,允许与旧版本的Flash兼容。如果不支持标记,则软件会忽略它。这意味着,安全漏洞的主要与SWF的脚本语言有关:ActionScript3 (AS3)。此脚本语言被编译为字节码并放置在Do ActionScript ByteCode(DoABC)标记内。如果SWF文件包含DoABC标记,则字节码由Adobe Flash player中附带的专用基于堆栈的虚拟机(VM)提取并执行,该虚拟机在AS3的情况下称为AVM2。 AVM2的设计基于Java VM,同样受到内存损坏和逻辑漏洞的困扰,这些漏洞允许恶意AS3字节码在Flash播放器的上下文中执行本机代码。只有在少数情况下,AVM2中才不存在过去的漏洞,不过仍然需要使用ActionScript代码将系统置于适合可靠利用的状态。例如,在触发内存损坏之前清理堆。基于这些原因,FLASHMINGO着重分析AS3字节码。

FLASHMINGO的框架

FLASHMINGO利用开源SWIFFAS库来解析Flash文件,此时,所有二进制数据和字节码都被解析并存储在一个名为SWFObject的大型对象中。该对象包含与我们的分析相关的SWF的所有信息:标记列表、有关所有方法的信息、字符串、常量和嵌入式二进制数据,它本质上是以一种易于查询的格式表示SWF文件。

FLASHMINGO是一组插件,可以在SWFObject上运行并提取有趣的信息。图1显示了FLASHMINGO及其插件与SWFObject之间的关系。

FLASHMINGO:一款可以预防Flash攻击的开源自动分析工具

软件结构

FLASHMINGO已经包含了几个有用的插件,涵盖了常见的分析,包括:

1.查找可疑的方法名称,许多示例包含开发期间使用的方法名称,比如“run_shell”或“find_virtualprotect”,此插件使用包含可疑子字符串的方法标记恶意样本。

2.发现可疑的常量,字节码中某些常量的存在可能指向恶意代码或可疑代码。例如,包含常量0x5A4D的代码可能是搜索MZ标头的shellcode。

3.发现可疑的loop,恶意活动经常发生在loop中。这包括编码、解码和堆喷涂。这个插件标记包含具有有趣操作(如XOR或按位AND)的loop方法。它是一种简单的启发式方法,可有效地检测大多数编码和解码操作,以及其他需要进一步分析的有趣代码。

4.检索所有嵌入的二进制数据;

5.使用 FFDEC Flash Decompiler 的反编译器插件。Flash Decompiler或称FFDec,FFDec是一个比较好用的基于 JAVA 平台开发的SWF反编译软件,也就是flash反编译软件。Flash Decompiler反编译软件可通过打开图标或者拖动SWF文件到软件窗口中来开始反编译FLASH SWF/GFX/SWC文件。可以打开编辑FLASH,提供里面的图形、文本、图像、视频、声音、按钮与字体框架脚本等资源。可另存为EXE文件,还可导出为FLA/XFL文件。对里面的资源可以删除或导出所选,替换文件或者进行RAW编辑。

这个用Java编写的反编译器引擎可以用作独立的库。由于FLASHMINGO是用Python编写的,因此使用此插件需要Jython在这两种语言之间进行互操作。

使用你自己的插件扩展FLASHMINGO

FLASHMINGO非常容易扩展,每个插件都位于插件目录下自己的目录中。在启动FLASHMINGO时,搜索所有插件目录以查找列表文件(稍后将解释),如果插件被标记为活动的,则注册插件。

研发人员提供了模板插件,如果你要添加自己的插件,请复制模板目录,重命名并编辑其列表和代码。用YAML编写的模板插件列表如下所示:

``
# This is a template for easy development
name: Template
active: no
description: copy this to kickstart development
returns: nothing
```

此模板中最重要的参数是:name和active。 name参数在FLASHMINGO内部用于引用它。 active参数是一个布尔值((yes或no)),指示此插件是否应处于活动状态。默认情况下,所有插件(模板除外)都处于活动状态,但在某些情况下,用户可能希望禁用插件。参数描述和返回是简单的字符串,用于向用户显示文档。最后,在程序启动时解析插件列表。添加新插件或启用/禁用插件需要重新启动FLASHMINGO。

现在来看实现业务逻辑的实际代码,文件plugin.py包含一个名为Plugin的类,唯一需要做的就是实现它的run方法。每个插件都接收一个SWFObject实例作为参数。代码将与此对象交互,并以用户定义的自定义格式返回数据。通过这种方式,可以编写用户的插件来生成可以被其基础设施直接接收的数据。

让我们看看通过遍历其中一个名为binary_data的插件来创建插件是多么容易,这个插件会默认返回SWF文件中的所有嵌入数据。如果用户指定了一个可选参数模式,那么插件将在嵌入式数据中搜索该字节序列的匹配项,返回一个嵌入式数据字典和找到该模式的偏移量。

首先,我们定义用户提供的可选参数模式(第2行和第4行)。

FLASHMINGO:一款可以预防Flash攻击的开源自动分析工具

然后,实现一个自定义运行方法和支持它所需的所有其他代码:

FLASHMINGO:一款可以预防Flash攻击的开源自动分析工具

这是一个简单且有用的插件,它会详细说明了如何与FLASHMINGO进行交互。该插件有一个可通过属性“ml”(第2行)访问的日志记录功能。默认情况下,它会记录到FLASHMINGO的主记录器。如果未指定,则返回到插件目录中的日志文件。第10行到第16行显示了自定义运行方法,借助自定义_inspect_binary_data方法从SWF的嵌入数据中提取信息。请注意此二进制数据的来源:它是从一个名为“swf”的属性读取的。如前所述,它是作为参数传递给插件的SWFObject。可以对与此swf对象交互的SWF文件内容执行更复杂的分析。

总结

尽管Flash已经准备好在2020年底彻底被废除,并且大部分开发社区已经不再使用它了,但研究人员预测,在它被完全取代之前,会在一段时间的以Flash为感染媒介的攻击浪潮。而FLASHMINGO则为恶意软件分析师提供了一个灵活的框架,可以快速处理复杂的Flash攻击样本,而不会被复杂的执行环境和文件格式所困扰。

如果需要,你可以点此下载 FLASHMINGO工具


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法精解

算法精解

Kyle Loudon / 肖翔、陈舸 / 机械工业出版社 / 2012-8 / 79.00元

本书是数据结构和算法领域的经典之作,十余年来,畅销不衰!全书共分为三部分:第一部分首先介绍了数据结构和算法的概念,以及使用它们的原因和意义,然后讲解了数据结构和算法中最常用的技术——指针和递归,最后还介绍了算法的分析方法,旨在为读者学习这本书打下坚实的基础;第二部分对链表、栈、队列、集合、哈希表、堆、图等常用数据结构进行了深入阐述;第三部分对排序、搜索数值计算、数据压缩、数据加密、图算法、几何算法......一起来看看 《算法精解》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具