MySQL存储swf文件_Swf Decrypt详解

本文详细介绍了如何分析和解密使用doswf和secure swf加密的SWF文件,以提高恶意代码检测效率。通过分析加密流程和解密关键代码,展示了如何静态地反混淆和解密SWF,从而能够检测到最核心的恶意代码部分。此外,还分享了解密旧版doswf的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.2cto.com/Article/201507/414477.html

攻击在持续,攻击的技术在演进。防御者需要持续的跟进研究和投入。最近Flash 0day频繁出现,将我们更多的目光集中到flash上。

Flash作为脚本语言,可以编译,不少的恶意flash文件通过各种加密、混淆、动态解密来对抗人工分析和引擎检测。通过动态执行,常见的动态解密的swf都可以解决。不过遇到很多条件判断、环境依赖的限制,往往又无法稳定dump出解密的swf文件和关键的数据(shellcode)。如果能在静态的方法对混淆、加密的swf文件直接进行反混淆、反编译,则将能有效提升检测效果。

市面上可以对swf进行加密的软件很多,如swfencrypt、doswf、secureswf、dcomsoft等,我们这次对doswf以及secureswf进行简单的分析,与各位小伙伴分享。

恶意的SWF常常通过doswf加密和secure swf混淆,真正利用的部分被加密、混淆,通过研究doswf的加密方式以及secureswf的混淆方式,可以直接通过静态的方法进行相应的解密和反混淆,直接检测最核心的恶意代码部分,有效提升引擎检测率。(用户可使用文件B超系统 http://b-chao.com 和云盾-星云APT检测产品享受到我们的技术成果)

doswf是国人开发的一款flash加密混淆软件,从官网可以看出该软件已经停止了开发,当前最新版本为5.4.3。

我们对比了版本4.9.7和最新版本之间加密效果的区别,发现两者相差不大,在介绍完整体的加密流程之后,再将它们之间的差异展示出来。

Crypt Flow

经过doswf加密的swf文件,都存在DefineBinaryData的tag,因为原始swf文件将会存放在这个二进制数据中,二进制数据经过解密后通过loadbytes进行加载。

09c323f2a0b391164616325091104560.gif

d6eee0b1c554703b8fcf8934d525e779.png

这个二进制数据的头部结构如下(B标示字节):

09c323f2a0b391164616325091104560.gif

88e6961ed9fad03b9be701e41f921b48.png

原始swf文件从起始以offset为步长,每次对block_sz的块进行处理,块中的数据并不是逐一字节处理的,而是依据一个特定值跳跃处理,在整个文件处理完成后进行压缩,压缩后的数据再加上上面的头部信息就形成了完整的二进制数据了。

上面的描述简化了一些不重要的因素,如doswf加密时还会嵌入两个额外的swf文件,所以当解密二进制数据后,会发现解密后的数据中包含三个swf,这时只要根据硬编码特征”FWS”、”CWS”就可以将所有包含的swf文件完整dump出来。

关键解密代码:

09c323f2a0b391164616325091104560.gif

70ede9fdd66aac30bd9d1cc71adba9e2.png

版本4.9.7和最新版本解密代码的差异:

09c323f2a0b391164616325091104560.gif

f8c9a09ae97b85354a9d8ba5ca442a0c.png

可以看到,差异在于头字节结构的几个值得获取、大小端以及跳跃值的不同。

我们拿CVE-2012-0779样本(md5:2b98d285c8b581855d59ac368956ee78)进行测试,这是一个doswf4.9.7版本加壳的样本:

09c323f2a0b391164616325091104560.gif

2bd9122206eb68e614c033634574671b.png

检测dump出的数据,可以发现里面包含有三个swf文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值