注意:以下说明适用于 Python3。
如果您需要在 Python2.7 上安装 FLASHMINGO,可以查看 releases 标签下的 1.0 版本。安装步骤基本相同。
安装 requirements.txt 中列出的 Python3 包。
您可以使用以下命令:pip3 install -r requirements.txt
如果您想使用反编译功能,则需要安装 Jython。Ubuntu/Debian 用户可执行 apt install jython
克隆项目或下载 zip 文件。
FLASHMINGO 是一个用于分析 SWF 文件的框架。该工具自动分类可疑的 Flash 文件,并引导进一步的分析过程,从而节省团队中的宝贵资源。您可以轻松地将 FLASHMINGO 的分析模块集成到您的工作流程中。
直到今天,取证调查人员和恶意软件分析师仍需处理可疑的 SWF 文件。如果历史重演,安全威胁甚至可能在 2020 年 Flash 生命周期结束后变得更加严重。系统将继续支持一种不再接收安全补丁更新的遗留文件格式。自动化是处理这一问题的最佳方式,而 FLASHMINGO 可以为您提供帮助。FLASHMINGO 是一个分析框架,可自动处理 SWF 文件,使您能够以最小的努力标记可疑的 Flash 样本并进行分析。它既可作为独立应用程序,也可作为功能强大的库,集成到各种分析工作流程中。用户可以通过自定义 Python 插件轻松扩展工具的功能。
FLASHMINGO 的设计以简洁为理念。它读取一个 SWF 文件,创建一个表示其内容和结构的对象(SWFObject)。之后,FLASHMINGO 运行一系列插件,这些插件作用于 SWFObject,并将它们的值返回给主程序。
下面是必要的 ASCII 艺术流程图:
+----------+
| |
+------------+----------->+ PLUGIN 1 +------------+
| | | | |
| | +----------+ |
| | |
| | +----------+ |
| | | | |
+---------+ | +----------->+ PLUGIN 2 +--------+ |
|SWF FILE +----------->+ FLASHMINGO | | | | |
+---------+ | | +----------+ | |
| | | |
| | | |
| | | |
| | +-----v---v-+
| | | |
| | | |
+-----+------+------------------------->+ SWFOBJECT |
^ | |
| | |
| +-----+-----+
| |
| |
| |
+---------------------------------------+
当在您自己的项目中将 FLASHMINGO 作为库使用时,您只需要处理两类对象:
SWFObject,表示样本Flashmingo 对象。这本质上充当了一个连接插件和 SWFObject 的框架。FLASHMINGO 插件存储在各自的目录中,位于……您猜对了:plugins
当 Flashmingo 对象被实例化时,它会遍历此目录并处理所有插件的清单。如果清单指示该插件处于活动状态,则将其注册以供后续使用。在代码层面,这意味着一个小的 plugin_info 字典被添加到 plugins 列表中。
插件通过 run_plugin API 调用,该 API 有两个参数:
SWFObject 实例可选地,大多数插件允许您传递自己的 用户数据。这取决于具体的插件(请阅读文档),通过一个例子可以更轻松地解释。
默认插件 SuspiciousNames 会在所有常量池中搜索包含可疑子字符串(例如:'overflow'、'spray'、'shell' 等)的字符串。插件中已经硬编码了一个常见子字符串的列表,因此可以直接使用。但是,您可以通过 names 参数传递自己定义的子字符串列表。
代码示例:
fm = Flashmingo()
print fm.run_plugin('DangerousAPIs', swf=swf)
print fm.run_plugin('SuspiciousNames', swf=swf, names=['spooky'])
FLASHMINGO 内置了一些有用的插件:
提供了一个模板插件,便于开发。 扩展 FLASHMINGO 非常简单。只需按照以下步骤操作:
run 方法您就可以开始使用了 :)
docs 目录以获取自动生成的文档$ pip install sphinxcontrib-napoleon
在设置 Sphinx 构建文档后,在 Sphinx 的 conf.py 文件中启用 napoleon:
在 conf.py 中,将 napoleon 添加到扩展列表中
extensions = ['sphinxcontrib.napoleon']
使用 sphinx-apidoc 构建您的 API 文档:
$ sphinx-apidoc -f -o docs/source projectdir
这将创建 .rst 文件供 Sphinx 处理
$ make html
就是这样!:)