专利名称:flash恶意文件检测方法及装置的制作方法
技术领域:
本申请涉及数据安全技术领域,特别是涉及一种flash恶意文件检测方法及装置。
背景技术:
Adobe flash player能够播放简短快速的多媒体动画、交互式动画以及飞行标志等各类图像文件,广泛应用于操作系统中的浏览器和一些移动设备上。因此,Adobe flash player也被一些恶意程序发布者利用其本身的漏洞,在flash文件中添加恶意文件,当用户播放这些flash文件时,就会自动下载可执行的恶意文件,随后会主动连接互联网络中指定的服务器,下载其他病毒、木马等恶意程序,最终造成计算机系统被完全控制,严重威胁到计算机用户的系统和信息安全。目前,针对flash文件常见的一种杀毒方法为计算flash文件唯一的MD5哈希值, 然后与预先收集的包含恶意文件的flash文件的MD5哈希值进行比较,如果能够匹配上,则说明该flash文件为恶意文件,不能匹配,则说明该flash文件为正常文件。当flash文件代码出现一点差异,也会导致MD5哈希值变化。那么,对于同一恶意文件,其发布者只要在其中添加一些无意义且不相同的代码,则可能导致MD5哈希值不同。那么在统计时无法对所有恶意文件的变种进行穷举,这就可以出现无法准确识别恶意flash文件的情况。或者即使能够穷举,也需要计算出大量的MD5哈希值,这无疑会增加工作量,降低了识别检测的效率。
发明内容
本申请所要解决的技术问题是提供一种flash恶意文件检测方法及装置,能够解决flash文件检测效率和精度低的问题。为了解决上述问题,本申请公开了一种flash恶意文件检测方法,包括以下步骤对flash文件进行解析,提取其中的虚拟机字节码;将所述虚拟机字节码与特征字节码进行匹配,若能够匹配,则统计所述虚拟机字节码出现的次数,若次数超过阈值,则确定所述flash文件为恶意文件。进一步地,对flash文件进行解析,提取其中的虚拟机字节码包括解析flash文件中的ActionScript相关的关键标签段;分析关键标签段的数据结构,逆向提取出其中的虚拟机字节码。进一步地,所述方法还包括确定特征字节码,具体过程包括基于flash文件的数据结构对恶意flash文件和正常flash文件进行逆向解析, 提取其中的虚拟机字节码;统计在恶意flash文件中出现概率大于或者等于正常值,但正常flash文件中不存在或出现概率小于正常值的虚拟机字节码;将所述统计的虚拟机字节码确定为特征字节码。
进一步地,所述将所述虚拟机字节码与特征字节码进行匹配,若能够匹配,则统计所述虚拟机字节码出现的次数包括若虚拟机字节码与其中一个特征字节码匹配,且出现的次数超过阈值,则停止后续与其他特征字节码的匹配;或若虚拟机字节码与其中一个特征字节码匹配,且出现的次数超过阈值,仍将虚拟机字节码与其余特征字节码继续匹配。进一步地,所述将flash文件确定为恶意文件之后还包括返回检测结果和/或对所述flash文件进行处理。进一步地,所述对所述flash文件进行处理包括以下一种或几种删除所述flash文件; 隔离所述flash文件;将所述flash文件标注为可疑文件;为所述flash文件设定安全等级。进一步地,所述将虚拟机字节码与特征字节码进行匹配以及统计虚拟机字节码出现的次通过判断函数实现,所述判断函数的参数为特征字节码,所述判断过程为将所述虚拟机字节码代入不同的判断函数,并与各判断函数中的参数进行匹配以及出现次数的统计。进一步地,所述虚拟机字节码包括字符串或整形串,所述特征字节码包括字符串或整形串,在提取所述虚拟机字节码后,将其中所有的字符串组成为一个数组,所有的整形串组成一个数组,将所述两个数组分别采用将字符串作为参数的判断函数以及采用整形串作为参数的判断函数进行判断。为了解决上述问题,本申请还公开了一种flash恶意文件检测装置,包括虚拟机字节码提取模块,用于对flash文件进行解析,提取其中的虚拟机字节码;判断模块,用于将所述虚拟机字节码与特征字节码进行匹配,若能够匹配,则统计所述虚拟机字节码出现的次数,若次数超过阈值,则确定所述flash文件为恶意文件。进一步地,所述虚拟机字节码提取模块包括解析单元,用于解析flash文件中的ActionScript相关的关键标签段;分析单元,用于分析关键标签段的数据结构,逆向提取出其中的虚拟机字节码。进一步地,所述装置还包括特征字节码确定模块,用于确定特征字节码,所述特征字节码确定模块包括解析单元,用于基于flash文件的数据结构对恶意flash文件和正常flash文件进行逆向解析,提取其中的虚拟机字节码;统计单元,用于统计在恶意flash文件中出现概率大于或者等于正常值,但正常 flash文件中不存在或出现概率小于正常值的虚拟机字节码,并将所述统计的虚拟机字节码确定为特征字节码。进一步地,所述装置还包括结果处理模块,用于将flash文件确定为恶意文件之后还包括返回检测结果和/ 或对所述flash文件进行处理。进一步地,所述结果处理模块对所述flash文件进行处理包括以下一种或几种
删除所述flash文件;隔离所述flash文件;将所述flash文件标注为可疑文件;为所述flash文件设定安全等级。进一步地,所述判断模块包括判断函数单元,采用判断函数进行判断,所述判断函数的参数为特征字节码,所述判断过程为将所述虚拟机字节码代入不同的判断函数,并与各判断函数中的参数进行匹配以及出现次数的统计。与现有技术相比,本申请具有以下优点本申请的flash恶意文件检测方法通过对于flash文件进行逆向解析,获取其中相对稳定的虚拟机字节码,并与恶意文件中提取出得虚拟机字节码进行比较来识别检测 flash文件。虚拟机字节码本身具有一定的意义,是flash文件的特征码,即使恶意文件中添加了其他无意义的代码,也不会影响其中的虚拟机字节码,因此通过大量搜集恶意文件, 提取出其中的虚拟机字节码后,即使这些恶意文件出现变种,也仍然能够准确识别检测,无需额外对恶意文件的变种进行穷举,提高了识别检测的精确度和效率。另外,即使有些恶意文件中的恶意代码为未知的,只要其包含有预先统计的恶意文件所包含的虚拟机字节码,就可以通过本申请的方法检测出,因此,本申请的flash恶意文件检测出了可以检测出已知的恶意文件,还可以在一定程度上检测出未知的恶意文件。进一步地,当虚拟机字节码为字符串或整形串时,通过预先分析恶意文件可能使用的加密方法,再将加密方法引入检测过程中,可以实时的对检测参数进行加密,从而保证即使从待检测的flash文件中提取的虚拟机字节码为加密后的数据,也可以精确的匹配上,提闻了检测的精准度。
图I是本申请的flash恶意文件检测方法实施例一的流程图;图2是本申请的flash恶意文件检测装置实施例一的结构示意图。
具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。参照图1,示出本申请的flash恶意文件检测方法实施例一,包括以下步骤步骤101,对flash文件进行解析,提取其中的虚拟机字节码。flash文件是按照标签(Tag)结构组成,flash里面的一巾贞是由一些包含图形数据的标签和一些包含音频数据的标签构成的,同时也有包含ActionScript代码标签。 ActionScript动作脚本是遵循ECMAscript第四版的Adobe Flash Player运行时环境的编程语言,它在flash内容和应用程序中实现交互性、数据处理以及其他功能。Adobe Flash Player内置了一个AVM虚拟机,AVM虚拟机会将flash文件里面的ActionScript字节码 (ActionScript Bytecode)根据不同的平台转成相应的指令再运行。在对flash文件进行解析,提取其中的虚拟机字节码优选采用如下方式解析flash文件中的ActionScript相关的关键标签段;分析关键标签段的数据结构,按照官方文档格式逆向提取出其中的虚拟机字节码(Adobe AVM ByteCode) 0可以理解,还可以采用其他方式,例如从flash文件中相关位置读取。常见的虚拟机字节码包括字符串和整形串, 可以理解,如果需要还可以提取出其他类型的字节码,本申请对此并不限制。步骤102,将所述虚拟机字节码与特征字节码进行匹配,若能够匹配,则统计所述虚拟机字节码出现的次数,若次数超过阈值,则确定所述flash文件为恶意文件。其中,特征字节码通过预先收集的大量恶意flash文件,并对其中的数据进行分析,然后与正常flash文件进行比较得出,具体的确定过程包括以下步骤基于flash文件的数据结构对恶意flash文件和正常flash文件进行逆向解析, 提取其中的虚拟机字节码;统计在恶意flash文件中出现概率大于或者等于正常值,但正常flash文件中不存在或出现概率小于正常值的虚拟机字节码;将所述统计的虚拟机字节码确定为特征字节码。其中,正常值可以是基于大量数据确定一个经验值。优选地,虚拟机字节码与特征字节码的匹配以及虚拟机字节码出现次数的统计可以通过系统自动实现。例如,在确定预订参数后,可以针对每一个预订参数以及阈值编写对应代码,在判断时,只需要通过利用这些代码去实现匹配,并统计虚拟机字节码在flash文件中出现的次数,然后与阈值进行比较既可实现。即,将所有预订参数视为恶意flash文件的一系列强特征,并添加其他条件作为判断规则,依照判断规则对虚拟机字节码进行判断, 若符合任一判断规则对应的条件,则认为flash文件包含恶意flash文件才有的强特征,即认为flash文件为恶意文件。有些虚拟机字节码虽然能够跟特征字节码匹配上,这说明这些虚拟机字节码是恶意文件中常见的字节码,但是在正常文件中也可能存在,只是出现概率较低,因此,通过设定阈值的方式,可以避免出现误判,避免将正常文件视为恶意文件。下面结合具体实例对前述方法进行详细说明。假设在预先对恶意flash文件统计时确定的特征字节码包括字符串和整形串,一个特征字节码对应一个判断函数,且该特征字节码作为该判断函数的参数。所有字符串对应的判断函数为一个组合,所有整形串对应的判断函数为一个组合。当需要进行恶意flash文件检测时,首先从待检测的flash文件中提取出虚拟机字节码,并将其中的所有字符串组合为一个数组,所有整形串组合为一个数组。将字符串数组中的每一个字符串代入所有字符串对应的判断函数进行判断。将整形串数组中的每一个整形串代入所有整形串对应的判断函数进行判断。判断过程如前述实施例的步骤102。可以理解,当待检测的flash文件中提取的虚拟机字节码中只要有一个字符串或整形串能够与一个判断函数中的参数匹配,且出现次数大于阈值,则认为该flash文件为恶意文件。此时,可以停止判断,并将结果返回,供用户选取后续处理方式,也可以直接删除该恶意文件。优选地,为了提高检测的精准性,还可以继续将其他字符串或整形串代入其他判断函数进行判断。优选地,因为有些恶意文件会对其中的字符串或整形串进行加密,本申请在确定特征字节码的同时,还可以预先分析恶意文件可能使用的加密方法,并将加密方法同时引入判断函数中,使一个特征字节码以及该特征字节码经过加密后的数据都作为一个判断函数的参数。当进行检测时,只要待检测的flash文件中提取的字符串或整形串能够与其中一个参数,便认为满足该判断函数的条件。因此,即使从待检测的flash文件中提取的字符串或整形串为加密后的数据,也可以精确的匹配上,提高了检测的精准度。下面结合具体判断函数对前述判断过程进行详细说明。实例一假设预先分析得出在正常的flash文件出现int类型的“0x90909090” 这一个特征字节码的情况基本不存在,而恶意的flash文件中由于有特殊的代码编写需求,出现该特征字节码的次数很会多,那么此时可以将“0x90909090”作为参数,并设定出现
次数的阈值,编写如下的判断函数
class QHFF0001(QHFFBaseRule): def—init——(self):
self.nop_0x90—hit—count = 0 def accept—write—int(self, int—value): if int—value == 0x90909090:
self.nop_0x90—hit—count += I def finalcheck(self):
if self.nop_0x90_hit_count >= 2: self.rulehitQ该段源代码统计一个待检测的flash文件虚拟机字节码中0x90909090的int类型参数出现的次数,当此类参数出现超过一个阀值,将会匹配到一个虚拟机字节码特征,则认为该待检测的flash文件为恶意文件。实例二,恶意flash文件中的关键字符串经常通过XOR(异或)加密方式加密,那
么可以将加密方式添加到判断函数中来实现判断,编写的具体判断函数如下class QHFF0003(QHFFBaseRule): def—init——(self):
self.intstring =[] self.shellcode =[]
self.ids—str = r'"cmd.exe /C FOR /R "%USERPROFILE%\Local SettingsMemporary Internet Files\" %i IN (newsvine*.jp2) DO ((cmd.exe "/c del /s %temp%\svchost.exe && copy "%i" %temp%\svchost.exe /y && cmd.exe /c start %temp%\svchost.exe"))"'
def accept—write—int(self, int—value): self. int_string.append(int—value)
def finalcheck(self):
for i in self.int string:
self.shellcode.append( ("%-08x" % i).replace(' ', ')) shellcode = " .j oin(self. shellcode)
for n in range(256): xorstr ="
for byte in self.ids str:
xor str += "%02x" % (n A ord(byte))
if shellcode.find( xor str ) > -I:
self.rule_hit()该段源代码将一段执行恶意命令的字符串转变为256组XOR(异或)加密字符串, 能智能匹配出恶意flash文件常出现的经过加密的恶意命令,只要该恶意命令满足256组字符串中任一一个,则可以判断出该flash文件为恶意文件,提高了检测结果的准确性。不会因为是否加密而出现误判的情况,同时,一个判断函数便可以实现,无需添加多个函数进行多次判断,可以节省检测时间以及空间。参照图2,示出本申请的一种flash恶意文件检测装置实施例一,包括虚拟机字节码提取模块10和判断模块20。
9
虚拟机字节码提取模块10,用于对flash文件进行解析,提取其中的虚拟机字节码。优选地,虚拟机字节码提取模块包括解析单元和分析单元。解析单元,用于解析flash 文件中的ActionScript相关的关键标签段。分析单元,用于分析关键标签段的数据结构, 逆向提取出其中的虚拟机字节码。判断模块20,用于将所述虚拟机字节码与特征字节码进行匹配,若能够匹配,则统计所述虚拟机字节码出现的次数,若次数超过阈值,则确定所述flash文件为恶意文件。优选地,判断模块包括判断函数单元,采用判断函数进行判断,所述判断函数的参数为特征字节码,所述判断过程为将所述虚拟机字节码代入不同的判断函数,并与各判断函数中的参数进行匹配以及出现次数的统计。优选地,该flash恶意文件检测装置还包括特征字节码确定模块,用于确定特征字节码。其中,特征字节码确定模块包括解析单元和统计单元。解析单元,用于基于flash 文件的数据结构对恶意flash文件和正常flash文件进行逆向解析,提取其中的虚拟机字节码。统计单元,用于统计在恶意flash文件中出现概率大于或者等于正常值,但正常 flash文件中不存在或出现概率小于正常值的虚拟机字节码,并将所述统计的虚拟机字节码确定为特征字节码。优选地,该flash恶意文件检测装置还包括结果处理模块,用于将flash文件确定为恶意文件之后还包括返回检测结果和/或对所述flash文件进行处理。其中,对flash 文件进行处理包括以下一种或几种删除flash文件、隔离flash文件、将flash文件标注为可疑文件以及为flash文件设定安全等级。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上对本申请所提供的flash恶意文件检测方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想, 在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
权利要求
1.一种flash恶意文件检测方法,其特征在于,包括以下步骤对flash文件进行解析,提取其中的虚拟机字节码;将所述虚拟机字节码与特征字节码进行匹配,若能够匹配,则统计所述虚拟机字节码出现的次数,若次数超过阈值,则确定所述flash文件为恶意文件。
2.如权利要求I所述的flash恶意文件检测方法,其特征在于,对flash文件进行解析,提取其中的虚拟机字节码包括解析flash文件中的ActionScript相关的关键标签段;分析关键标签段的数据结构,逆向提取出其中的虚拟机字节码。
3.如权利要求I所述的flash恶意文件检测方法,其特征在于,所述方法还包括确定特征字节码,具体过程包括基于flash文件的数据结构对恶意flash文件和正常flash文件进行逆向解析,提取其中的虚拟机字节码;统计在恶意flash文件中出现概率大于或者等于正常值,但正常flash文件中不存在或出现概率小于正常值的虚拟机字节码;将所述统计的虚拟机字节码确定为特征字节码。
4.如权利要求I所述的flash恶意文件检测方法,其特征在于,所述将所述虚拟机字节码与特征字节码进行匹配,若能够匹配,则统计所述虚拟机字节码出现的次数包括若虚拟机字节码与其中一个特征字节码匹配,且出现的次数超过阈值,则停止后续与其他特征字节码的匹配;或若虚拟机字节码与其中一个特征字节码匹配,且出现的次数超过阈值,仍将虚拟机字节码与其余特征字节码继续匹配。
5.如权利要求I所述的flash恶意文件检测方法,其特征在于,所述将flash文件确定为恶意文件之后还包括返回检测结果和/或对所述flash文件进行处理。
6.如权利要求5所述的flash恶意文件检测方法,其特征在于,所述对所述flash文件进行处理包括以下一种或几种删除所述flash文件;隔离所述flash文件;将所述flash文件标注为可疑文件;为所述flash文件设定安全等级。
7.如权利要求I至6任一项所述的flash恶意文件检测方法,其特征在于,所述将虚拟机字节码与特征字节码进行匹配以及统计虚拟机字节码出现的次通过判断函数实现,所述判断函数的参数为特征字节码,所述判断过程为将所述虚拟机字节码代入不同的判断函数,并与各判断函数中的参数进行匹配以及出现次数的统计。
8.如权利要求7所述的flash恶意文件检测方法,其特征在于,所述虚拟机字节码包括字符串或整形串,所述特征字节码包括字符串或整形串,在提取所述虚拟机字节码后,将其中所有的字符串组成为一个数组,所有的整形串组成一个数组,将所述两个数组分别采用将字符串作为参数的判断函数以及采用整形串作为参数的判断函数进行判断。
9.一种flash恶意文件检测装置,其特征在于,包括虚拟机字节码提取模块,用于对flash文件进行解析,提取其中的虚拟机字节码;判断模块,用于将所述虚拟机字节码与特征字节码进行匹配,若能够匹配,则统计所述虚拟机字节码出现的次数,若次数超过阈值,则确定所述flash文件为恶意文件。
10.如权利要求9所述的flash恶意文件检测装置,其特征在于,所述虚拟机字节码提取模块包括解析单元,用于解析flash文件中的ActionScript相关的关键标签段;分析单元,用于分析关键标签段的数据结构,逆向提取出其中的虚拟机字节码。
11.如权利要求9所述的flash恶意文件检测装置,其特征在于,所述装置还包括特征字节码确定模块,用于确定特征字节码,所述特征字节码确定模块包括解析单元,用于基于flash文件的数据结构对恶意flash文件和正常flash文件进行逆向解析,提取其中的虚拟机字节码;统计单元,用于统计在恶意flash文件中出现概率大于或者等于正常值,但正常flash 文件中不存在或出现概率小于正常值的虚拟机字节码,并将所述统计的虚拟机字节码确定为特征字节码。
12.如权利要求9所述的flash恶意文件检测装置,其特征在于,所述装置还包括 结果处理模块,用于将flash文件确定为恶意文件之后还包括返回检测结果和/或对所述flash文件进行处理。
13.如权利要求12所述的flash恶意文件检测装置,其特征在于,所述结果处理模块对所述flash文件进行处理包括以下一种或几种删除所述flash文件;隔离所述flash文件;将所述flash文件标注为可疑文件;为所述flash文件设定安全等级。
14.如权利要求9至13任一项所述的flash恶意文件检测装置,其特征在于,所述判断模块包括判断函数单元,采用判断函数进行判断,所述判断函数的参数为特征字节码,所述判断过程为将所述虚拟机字节码代入不同的判断函数,并与各判断函数中的参数进行匹配以及出现次数的统计。
全文摘要
本申请提供了一种flash恶意文件检测方法,包括以下步骤对flash文件进行解析,提取其中的虚拟机字节码;将所述虚拟机字节码与特征字节码进行匹配,若能够匹配,则统计所述虚拟机字节码出现的次数,若次数超过阈值,则确定所述flash文件为恶意文件。本申请还提供了一种实现前述方法的flash恶意文件检测装置。本申请的一种flash恶意文件检测方法及装置,具有较高的检测效率和精度。
文档编号G06F21/00GK102592080SQ201110442268
公开日2012年7月18日 申请日期2011年12月26日 优先权日2011年12月26日
发明者宋申雷, 张聪 申请人:北京奇虎科技有限公司