恶意代码的检测方法及装置的制作方法

文档序号:6397037阅读:161来源:国知局
专利名称:恶意代码的检测方法及装置的制作方法
技术领域
本发明涉及通信安全技术领域,尤其涉及一种恶意代码的检测方法及装置。
背景技术
PDF (portal document format,便携文件格式)是一种电子文件格式。这种格式不受阅读软件、硬件以及操作系统的限制,可以在包括Windows、Linux和Mac OS的任何平台中使用。JavaScript是一种广泛用于客户端网页开发的脚本语言,这种脚本语言能够实现的功能十分丰富。在F1DF中嵌入JavaScript脚本语言对于实现PDF文件的交互特性十分重要,譬如动态内容的呈现、表格和3D界面等等。恶意JavaScript脚本程序是恶意攻击代码中的一个新型病毒,对软件系统增加、改变或删除部分脚本,以制造危害或者破坏计算机系统功能和网络的完整性、保密性、可用性等为目的。它通常由一段JavaScript脚本语言编写而成,恶意JavaScript脚本程序书写形式灵活化,易通过各种代码混淆技术产生变种,当前的反病毒技术很难达到对它的控制及防护能力。恶意JavaScript脚本的传播通常是通过浏览器、局域网共享、即时聊天和Email为载体实现的。近年来,随着PDF漏洞利用技术的日益成熟,越来越多的恶意JavaScript被放在了 PDF文件里。代码混淆,顾名思义是一种人为刻意地使脚本代码显得杂乱难懂的技术。在许多商业软件中,为了保护版权开发者可能将代码进行混淆从而给逆向工程师增添困难。在恶意脚本中,混淆的使用则是为了躲过杀毒软件和防火墙中的病毒特征库扫描,并给人工的恶意攻击代码分析制造麻烦。相比于网页中的恶意JavaScript脚本,PDF中的恶意脚本在混淆上更多地利用了PDF标准里的一些特性。如在文件的定义中使用字母和数字的十六进制码来代替相应文字,使用PDF流对象来对某些含有JavaScript脚本的对象进行隐藏和使用PDF流对象中的编码嵌套功能用多种编码方法处理JavaScript脚本。现有浏览器端的许多解混淆工具无法对采用上述混淆方法进行混淆的JavaScript脚本进行解混淆,因此促使了恶意脚本通过PDF文件传播攻击,常见的攻击方式包括网页中包含恶意PDF文件、定向钓鱼邮件中包含恶意PDF文件附件等,其中恶意PDF文件是指携带恶意JavaScript脚本的PDF文件。现有对I3DF文件中脚本进行检测的方法有:模拟执行环境来执行被检测的PDF文件,通过模拟被检测的PDF文件在正常的系统操作环境中的行为,来检测文件执行时的调用等一系列操作,从而发现恶意行为。但这种方法对于常见的JavaScript的欺骗隐藏手段,例如某个PDF文件中的JavaScript脚本只在特定时段或依赖特定的插件才会呈现恶意行为的设置,就无法检测到此类恶意行为。发明人在实现本发明的过程中发现,现有技术至少存在如下问题:不能对携带在PDF文件中的恶意JavaScript代码,特别是通过混淆的方式携带在PDF文件中的恶意JavaScript代码进行准确的检测。

发明内容
本发明实施例提供一种恶意代码的检测方法及装置,能够提高对携带在PDF文件中的恶意JavaScript代码的检测准确性。为达到上述目的,本发明的实施例采用如下技术方案:第一方面,提供了一种恶意代码的检测方法,包括:提取PDF文件中的JavaScript脚本代码;启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息的类型包括操作码和字符串变量;根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码。在第一方面的第一种可能实现方式中,在所述启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程之前,还包括:将库文件插桩注入在所述脚本解释器的解混淆进程中,所述库文件用于获取所述脚本解释器在解混淆JavaScript脚本代码进程中产生的被解混淆JavaScript脚本代码对应的代码信息。结合第一方面以及第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,如果所述代码信息的类型为操作码,则所述根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码包括:在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码;若在已存储的恶意操作码特征库中匹配到所述操作码,则确定所述JavaScript脚本代码为恶意代码;若在已存储的恶意操作码特征库中未匹配到所述操作码,则确定所述JavaScript脚本代码不是恶意代码。结合第一方面以及第一方面的第一种可能实现方式,在第一方面的第三种可能实现方式中,如果所述代码信息的类型为字符串变量,则所述根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码包括:获取所述JavaScript脚本代码对应的字符串变量的长度;若所述字符串变量的长度位于第一区间,则获取所述字符串变量对应的第一特征参量;根据栈溢出检测模型和所述第一特征参量,判断所述JavaScript脚本代码是否为恶意代码;若所述字符串变量的长度位于第二区间,则获取所述字符串变量对应的第二特征参量;根据堆喷射检测模型和所述第二特征参量,判断所述JavaScript脚本代码是否为恶意代码。结合第一方面的第三种可能实现方式,在第一方面的第四种可能实现方式中,所述第一特征参量包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第二特征参量包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。
结合第一方面以及第一方面的第一种可能实现方式,在第一方面的第五种可能实现方式中,如果所述代码信息的类型为操作码和字符串,则所述根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码包括:根据所述操作码对应的检测规则,检测所述JavaScript脚本代码;以及,根据所述字符串对应的检测规则,检测所述JavaScript脚本代码;当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码为恶意代码,或根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码为恶意代码时,则确定所述JavaScript脚本代码为恶意代码;当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码不为恶意代码,且根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码不为恶意代码时,则确定所述JavaScript脚本代码不为恶意代码;其中,所述根据所述操作码对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码包括:在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码;若在已存储的恶意操作码特征库中匹配到所述操作码,则确定所述JavaScript脚本代码为恶意代码;若在已存储的恶意操作码特征库中未匹配到所述操作码,则确定所述JavaScript脚本代码不是恶意代码;所述根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码包括:获取所述JavaScript脚本代码对应的字符串变量的长度;若所述字符串变量的长度位于第三区间,则获取所述字符串变量对应的第三特征参量;根据栈溢出检测模型和所述第三特征参量,判断所述JavaScript脚本代码是否为恶意代码;若所述字符串变量的长度位于第四区间,则获取所述字符串变量对应的第四特征参量;根据堆喷射检测模型和所述第四特征参量,判断所述JavaScript脚本代码是否为恶意代码。结合第一方面的第五种可能实现方式,在第一方面的第六种可能实现方式中,所述第三特征参量包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第四特征参量包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。第二方面,提供了一种恶意代码的检测装置,包括:解混淆模块,用于提取PDF文件中的JavaScript脚本代码;启动预定的支持HF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息的类型包括操作码和字符
串变量;检测模块,用于根据所述解混淆模块获得的代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码。在第二方面的第一种可能实现方式中,所述装置还包括:插桩注入模块,用于将库文件插桩注入在所述脚本解释器对所述JavaScript脚本代码运行的解混淆进程中,所述库文件用于获取所述脚本解释器在解混淆JavaScript脚本代码进程中产生的被解混淆JavaScript脚本代码对应的代码信息。
结合第二方面以及第一方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,所述检测模块包括:第一匹配单元,用于如果所述代码信息的类型为操作码,在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码;第一确定单元,用于在所述第一匹配单元在已存储的恶意操作码特征库中匹配到所述操作码时,确定所述JavaScript脚本代码为恶意代码;以及用于在所述第一匹配单元在已存储的恶意操作码特征库中未匹配到所述操作码时,确定所述JavaScript脚本代码不是恶意代码。结合第二方面的第二种可能实现方式,在第二方面的第三种可能实现方式中,所述检测模块包括:第一获取单元,用于如果所述代码信息的类型为字符串变量,获取所述JavaScript脚本代码对应的字符串变量的长度;第一判断单元,用于在所述第一获取单元获取的字符串变量的长度位于第一区间时,则获取所述字符串变量对应的第一特征参量;根据栈溢出检测模型和所述第一特征参量,判断所述JavaScript脚本代码是否为恶意代码;以及用于在所述第一获取单元获取的字符串变量的长度位于第二区间时,则获取所述字符串变量对应的第二特征参量;根据堆喷射检测模型和所述第二特征参量,判断所述JavaScript脚本代码是否为恶意代码。结合第二方面以及第一方面的第一种可能实现方式,在第二方面的第四种可能实现方式中,所述第一特征参量包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第二特征参量包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。结合第二方面的第四种可能实现方式,在第二方面第五种可能实现方式中,所述检测模块具体用于如果所述代码信息的类型为操作码和字符串变量,根据所述操作码对应的检测规则,检测所述JavaScript脚本代码;以及,根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码;以及,用于当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码为恶意代码或根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码为恶意代码时,确定所述JavaScript脚本代码为恶意代码;以及,用于当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码不为恶意代码且根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码不为恶意代码时,确定所述JavaScript脚本代码不为恶意代码; 所述检测模块进一步包括:第二匹配单元,用于在已存储的恶意操作码中匹配所述JavaScript脚本代码对应的操作码;第二确定单元,用于在所述第二匹配单元确定在已存储的恶意操作码特征库中匹配到所述操作码时,确定所述JavaScript脚本代码为恶意代码;以及用于在所述第二匹配单元确定在已存储的恶意操作码特征库中未匹配到所述操作码时,确定所述JavaScript脚本代码不是恶意代码;所述检测模块进一步还包括:
第二获取单元,用于获取所述JavaScript脚本代码对应的字符串变量的长度;第二判断单元,用于在所述第二获取单元获取的所述字符串变量的长度位于第三区间,则获取所述字符串变量对应的第三特征参量;根据栈溢出检测模型和所述第三特征参量,判断所述JavaScript脚本代码是否为恶意代码;以及用于在所述第二获取单元获取的所述字符串变量的长度位于第四区间时,获取所述字符串变量对应的第四特征参量;根据堆喷射检测模型和所述第四特征参量,判断所述JavaScript脚本代码是否为恶意代码。结合第二方面的第五种可能实现方式,在第二方面的第六种可能实现方式中,所述第三特征参量包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第四特征参量包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。第三方面,提供了一种检测设备,包括存储器和处理器,其中:所述存储器被配置存储代码;所述处理器被配置读取所述存储器中存储的代码,执行上述第一方面、或第一方面的六种可能实现方式中任意一种提供的方法。本发明实施例提供的一种恶意代码的检测方法及装置,通过启动预定的支持TOF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程来获得所述JavaScript脚本代码对应的代码信息,并根据所述代码信息的类型对应的检测规则来检测所述JavaScript脚本代码是否为恶意代码,相比于现有技术能够比较准确地对携带在PDF文件中的恶意JavaScript代码进行检测。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种恶意代码的检测方法流程图;图2为本发明实施例提供的另一种恶意代码的检测方法流程图;图3为本发明实施例提供的另一种恶意代码的检测方法流程图;图4为本发明实施例提供的另一种恶意代码的检测方法流程图;图5为本发明实施例提供的一种恶意代码的检测装置的组成框图;图6为本发明实施例提供的另一种恶意代码的检测装置的组成框图;图7为本发明实施例提供的检测模块的组成框图;图8为本发明实施例提供的另一种检测模块的组成框图;图9为本发明实施例提供的另一种检测模块的组成框图;图10为本发明实施例提供的一种检测设备的组成框图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明一实施例提供了一种恶意代码的检测方法,该方法可以由一个检测设备来执行,如图1所示,包括:101、提取PDF文件中的JavaScript脚本代码。其中,所述JavaScript脚本嵌入在PDF文件中,可以实现PDF文件的显示增效功能,但也被攻击者和恶意代码恶意使用,用于利用TOF阅读器软件的漏洞,渗透入侵所在主机。待检测的该PDF文件可以来源于电子邮件的附件,网页内容等等,在这里不进行限定。其中,所述提取PDF文件中的JavaScript脚本代码的实现方法具体可以包括:根据PDF文件的国际通用格式规范,解析PDF文件中JavaScript流的元素位置,并根据该JavaScript流所采用的压缩编码方法进行相应的解码,从而提取到PDF文件中包含的JavaScript 代石马。102、启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息的类型包括操作码和字符串变量。其中,所述预定的支持PDF标准(即支持PDF格式规范,能够解析以PDF格式规范生成的PDF文件)的脚本解释器,可以是PDF阅读器内嵌的脚本解释器,其中PDF阅读器可以为任意一种拥有内嵌JavaScript脚本代码解释引擎的TOF阅读器,例如,本发明实施例使用由Adobe公司提供的PDF阅读应用程序Acrobat reader,使用Acrobat reader内嵌的脚本解释器可以实现对目前绝大多数的JavaScript脚本代码进行解混淆。所述支持TOF标准的脚本解释器可以是所述检测设备的管理人员在检测之前预先配置的。其中,所述代码信息是指本发明实施例中使用的支持PDF标准的脚本解释器对脚本代码解释并翻译后,提交给JavaScript虚拟机执行的信息。其中,JavaScript虚拟机是使用软件模拟的用于运行所有JavaScript代码的抽象计算机。在本实施例中,提交给JavaScript虚拟机执行的信息包含了脚本解释器在对脚本代码解释和翻译的过程中的不同阶段所输出的信息,至少可以包括以下两类:操作码和字符串变量。其中,若代码信息的类型包括操作码,则所述操作码可以为机器使用的命令代码,典型操作码片断如下:[207]resolve_global r3, Array(iidlO)[212]get_by_id rl, r3,prototype(iidll)[220]method_check[221]get_by_id rO, rl, push(iidl2)[229]moV r2, Int32:0 (ik8)[232]call r0,2,9需要说明的是,虽然在本实施例中,为了表达清楚,在此使用了通用英文字符来对操作码进行举例说明,但实际过程中,操作码可以以二进制来表示。其中,若代码信息的类型包括字符串变量,所述字符串变量可以为JavaScript脚本中定义的字符串变量,典型的存在形式如下:var str = “some value...” ;
thisVar.replace ( “Monday”,“Friday,,);需要说明的是,在恶意代码中,字符串变量的值本身也可能是经过编译的指令。例如,字符串变量thisVar.replace的值Monday就可以是经过Unicode编码的一段指令。其中,所述根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息可以通过插桩注入的方法对解混淆进程进行监测以获得所述JavaScript脚本代码对应的代码信息,具体插桩注入的过程请参见后面附图4及对应的文字描述。并且,所述操作码和字符串变量这两种不同类型的参数是解混淆过程的不同阶段中会出现的中间参数,因而,通过监测解混淆进程的各个步骤就能够获取到操作码和字符串变量两种不同类型的参数。103、根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码。值得说明的是,基于代码信息类型的不同,本发明实施例提供的检测方法也不相同,根据代码信息的类型为操作码、代码信息的类型为字符串、以及代码信息的类型为操作码和字符串三种情况,所述步骤103根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码分别可以由以下三种检测方法实现,具体为:第一种方法如图2所示,包括:al031、如果所述代码信息的类型为操作码,则在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码;若在已存储的恶意操作码特征库中匹配到所述操作码,则执行步骤al032 ;若在已存储的恶意操作码特征库中未匹配到所述操作码,则执行步骤al033。al032、确定所述JavaScript脚本代码为恶意代码。al033、确定所述JavaScript脚本代码不是恶意代码。其中,所述恶意操作码特征库为PDF文件中的所述JavaScript脚本代码实施恶意漏洞利用所进行的操作码序列构成的模式库,典型针对CVE-2009-0927漏洞的特征模式实例如下:getmethod_ “getlcon”getgvar “var_l,,call第二种方法如图3所示,包括:bl031、如果所述代码信息的类型为字符串变量,获取所述JavaScript脚本代码对应的字符串变量的长度;若所述字符串变量的长度位于第一区间,则执行步骤bl032 ;若所述字符串变量的长度位于第二区间,则执行步骤bl034。bl032、获取所述字符串变量对应的第一特征参量。bl033、根据栈溢出检测模型和所述第一特征参量,判断所述JavaScript脚本代码是否为恶意代码。bl034、获取所述字符串变量对应的第二特征参量。bl035、根据堆喷射检测模型和所述第二特征参量,判断所述JavaScript脚本代码是否为恶意代码。第三种方法:如果所述代码信息的类型为操作码和字符串变量,根据所述操作码对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码;以及,根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码。当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码为恶意代码;或根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码为恶意代码时,则确定所述JavaScript脚本代码为恶意代码;当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码不为恶意代码,且根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码不为恶意代码时,则确定所述JavaScript脚本代码不为恶意代码。在上述第一种方法中,所述已存储的恶意操作码特征库均为本发明所处技术领域中已确认具有恶意行为的JavaScript脚本代码对应的操作码对应的特征,这些特征的来源可以为各个权威机构公开的恶意操作码特征等。在本发明实施例中,已存储的恶意操作码特征库并不是固定不变的,可以根据需要按照一定周期进行更新。在上述第二种方法中,第一区间和第二区间为分别针对栈溢出、堆喷射两种恶意代码攻击方式设置的,其设置方法可以参照经验值,一般情况下,第一区间可设置为32-64K字节,第二区间可设置为大于64K字节。在上述第二种方法中,所述第一特征参量至少可以包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第二特征参量至少可以包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。GetPC指令是指Shellcode中用于定位自身虚拟地址的指令;花指令是用于干扰反汇编引擎正确实现反汇编的代码;字符串中出现GetPC指令和花指令的频率可作为字符串中是否存在shellcode的部分依据;脱壳代码指纹是指加壳shellcode在执行时总会自行脱壳,这些脱壳代码的特征即为脱壳代码指纹,该指纹的存在可作为存在shellcode的部分依据;字符串信息熵是衡量字符串信息量大小的指标,如果字符串信息熵小于某一阀值,则可能存在堆喷射;NOP指令为CPU空操作指令,当串中包含大量NOP指令时,则该段NOP指令可能为堆喷射shellcode 的前导代码(Slidge)。其中,所述字符串变量对应的第一特征参量的获取可以利用GetPC指令匹配来识别出字符串变量中包含GetPC类指令的频率,利用花指令匹配来识别出字符串变量中包含花指令的频率,利用脱壳代码器指纹匹配来识别出字符串变量中是否包含已知脱壳代码指纹;所述字符串变量对应的第二特征参量的获取可以利用通用的信息熵值计算公式计算得出字符串变量的信息熵值,并以其偏离统计平均信息熵值的程度确定其异常度,利用NOP指令匹配来识别出字符串中包含NOP指令的频率。在上述第二种方法中,栈溢出检测模型和堆喷射检测模型都是预先训练好的,栈溢出检测模型可选择GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹为特征向量,并使用标准数据集进行训练,得到栈溢出检测模型对应的阈值,例如,GetPC指令出现最低频率、花指令出现最低频率、包含已知脱壳代码指纹等。堆喷射检测模型可选择信息熵值、NOP指令出现频率为特征向量,并使用标准数据集进行训练,得到堆喷射检测模型对应的阈值,例如,信息熵最小值、NOP指令出现最小频率等。在实际检测过程中,当第一特征参量中的一个参数或多个参数超过栈溢出检测模型对应的阈值,贝1J认定JavaScript脚本代码为恶意代码,否则认定JavaScript脚本代码不为恶意代码;当第二特征参量中的一个参数或多个参数超过栈溢出检测模型对应的阈值,则认定JavaScript脚本代码为恶意代码,否则认定JavaScript脚本代码不为恶意代码。
在上述第三种方法中,根据所述操作码对应的检测规则,检测所述JavaScript脚本代码的实现方法具体为:在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码;若在已存储的恶意操作码特征库中匹配到所述操作码,则确定所述JavaScript脚本代码为恶意代码;若在已存储的恶意操作码特征库中未匹配到所述操作码,则确定所述JavaScript脚本代码不是恶意代码。根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码的实现方式具体为获取所述JavaScript脚本代码对应的字符串变量的长度;若所述字符串变量的长度位于第三区间,贝1J获取所述字符串变量对应的第三特征参量;根据栈溢出检测模型和所述第三特征参量,判断所述JavaScript脚本代码是否为恶意代码;若所述字符串变量的长度位于第四区间,则获取所述字符串变量对应的第四特征参量;根据堆喷射检测模型和所述第四特征参量,判断所述JavaScript脚本代码是否为恶意代码。其中所述第三特征参量至少可以包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第四特征参量至少可以包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。值得说明的是,根据所述操作码对应的检测规则,检测所述JavaScript脚本代码可直接使用上述第一种方法,具体包括步骤al031至步骤al033,而根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码则可直接使用上述第二种方法,具体包括步骤bl031至步骤bl035。因此,在第三种方法中描述的第三区间可使用上述第二种方法中的第一区间的设置,第四区间可使用上述第二种方法中的第二区间的设置。栈溢出检测模型和堆喷射检测模型也可以相应使用第二种方法中的模型。在本发明实施例中,在对PDF文件进行检测之前,还需要对预定的支持PDF标准的脚本解释器进行插桩注入处理,用以获取PDF文件中的JavaScript脚本代码对应的代码信息等,在本实施例中以TOF阅读器内嵌的脚本解释器为例进行说明,如图4所示,其具体流程为:201、启动预定的PDF阅读器的应用程序进程。202、将库文件插桩注入在预定的TOF阅读器内嵌的脚本解释器的解混淆进程中。其中,所述库文件为预先写好的dll格式的文件,用于获取所述预定的PDF脚本解释器在解混淆JavaScript脚本代码进程中产生的被解混淆的JavaScript脚本代码对应的代码信息。将库文件插桩注入进程中就是将具有特定功能的dll文件的执行进程添加在一个当前正在运行的进程中,但不并不影响正在运行的进程的正常工作状态。值得说明的是,插桩注入的位置需要根据预定的TOF阅读器本身提供的API来进行选择。例如,如果要获取JavaScript脚本代码对应的操作码,则需要获取到预定的HF阅读器中能够输出操作码的API进行插桩注入才行。203、对注入的库文件进行初始化运行。以上步骤201至203的执行是为步骤102的执行的必要步骤,但是,步骤201至203只需要在启动预定的PDF阅读器的应用程序进程时执行一次即可,在后续对TOF文件进行检测的过程中并不需要再次执行。进一步,值得说明的是,上述栈溢出检测模型和堆喷射检测模型需要在启动预定的HF阅读器的应用程序进程之前建立,并且可以在后续对PDF文件进行检测的过程中一直使用。另外,值得说明的是,在执行步骤103之后,若确定所述JavaScript脚本代码为恶意代码,还可以获取JavaScript脚本代码对应的明文代码,并将恶意代码的检测报告和明文代码进行关联,例如,JavaScript脚本代码对应的操作码为恶意操作码则在明文代码中与所述恶意操作码对应的位置进行标示,用以方便技术人员进行研究和整合。其中,明文代码的获取方法与确定所述JavaScript脚本代码对应的代码信息的实现方法相同,在本实施例中,通过监测预定的支持PDF标准的脚本解释器,如PDF阅读器内嵌的脚本解释器,对所述JavaScript脚本代码运行的解混淆进程来获得所述JavaScript脚本代码对应的代码信息,并根据不同类型的代码信息对应的检测规则来检测所述JavaScript脚本代码是否为恶意代码,相比于现有技术不能有效地识别出通过PDF文件传播的恶意JavaScript脚本代码,能够准确地检测出PDF文件中的恶意JavaScript代码,提高了网络资源的安全性。本发明实施例还提供了一种恶意代码的检测装置,可实现上述如图1至图4所示的方法步骤。该装置如图5所示,包括:解混淆模块31,用于提取PDF文件中的JavaScript脚本代码;启动预定的支持PDF标准的脚本解释器,如PDF阅读器内嵌的脚本解释器,对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息的类型包括操作码和/或字符串变量。检测模块32,用于根据所述解混淆模块31获得的代码信息的类型对应的检测规贝lj,检测所述JavaScript脚本代码是否为恶意代码。可选的是,如图6所示,所述装置还包括:插桩注入模块33,用于将库文件插桩注入在所述脚本解释器对所述JavaScript脚本代码运行的解混淆进程中,所述库文件用于获取所述脚本解释器在解混淆JavaScript脚本代码进程中产生的被解混淆的JavaScript脚本代码对应的代码信息。可选的是,如图7所示,所述检测模块32包括:第一匹配单元321,用于如果所述代码信息的类型为操作码,在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码。第一确定单元322,用于在所述第一匹配单元321在已存储的恶意操作码特征库中匹配到所述操作码时,确定所述JavaScript脚本代码为恶意代码;以及用于在所述第一匹配单元321在已存储的恶意操作码特征库中未匹配到所述操作码时,确定所述JavaScript脚本代码不是恶意代码。可选的是,如图8所示,所述检测模块32包括:第一获取单元323,用于如果确定所述代码信息的类型为字符串变量,获取所述JavaScript脚本代码对应的字符串变量的长度。第一判断单元324,用于在所述第一获取单元323获取的字符串变量的长度位于第一区间时,则获取所述字符串变量对应的第一特征参量;根据栈溢出检测模型和所述第一特征参量,判断所述JavaScript脚本代码是否为恶意代码;以及用于在所述第一获取单元323获取的字符串变量的长度位于第二区间时,则获取所述字符串变量对应的第二特征参量;根据堆喷射检测模型和所述第二特征参量,判断所述JavaScript脚本代码是否为恶意代码。可选的是,所述第一特征参量至少可以包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第二特征参量至少可以包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。GetPC指令是指Shellcode中用于定位自身虚拟地址的指令;花指令是用于干扰反汇编引擎正确实现反汇编的代码;字符串中出现GetPC指令和花指令的频率可作为字符串中是否存在shellcode的部分依据;脱壳代码指纹是指加壳shellcode在执行时总会自行脱壳,这些脱壳代码的特征即为脱壳代码指纹,该指纹的存在可作为存在shellcode的部分依据;字符串信息熵是衡量字符串信息量大小的指标,如果字符串信息熵小于某一阀值,则可能存在堆喷射;Ν0Ρ指令为CPU空操作指令,当串中包含大量NOP指令时,则该段NOP指令可能为堆喷射shellcode的前导代码(Slidge) ο可选的是,所述检测模块32具体用于如果所述代码信息的类型为操作码和字符串变量,根据所述操作码对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码;以及,根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码。以及,用于当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码为恶意代码或根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码为恶意代码时,确定所述JavaScript脚本代码为恶意代码。以及,用于当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码不为恶意代码且根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码不为恶意代码时,确定所述JavaScript脚本代码不为恶意代码;如图9所示,所述检测模块32进一步包括:第二匹配单元325,用于在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码。第二确定单元326,用于在所述第二匹配单元325确定在已存储的恶意操作码特征库中匹配到所述操作码时,确定所述JavaScript脚本代码为恶意代码;以及用于在所述第二匹配单元325确定在已存储的恶意操作码特征库中未匹配到所述操作码时,确定所述JavaScript脚本代码不是恶意代码。如图9所示,所述检测模块进一步还可以包括:第二获取单元327,用于获取所述JavaScript脚本代码对应的字符串变量的长度。第二判断单元328,用于在所述第二获取单元327获取的所述字符串变量的长度位于第三区间,则获取所述字符串变量对应的第三特征参量;根据栈溢出检测模型和所述第三特征参量,判断所述JavaScript脚本代码是否为恶意代码;以及用于在所述第二获取单元327获取的所述字符串变量的长度位于第四区间时,获取所述字符串变量对应的第四特征参量;根据堆喷射检测模型和所述第四特征参量,判断所述JavaScript脚本代码是否为恶意代码。可选的是,所述 第三特征参量至少可以包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第四特征参量至少可以包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。在本实施例中,恶意代码的检测装置通过监测预定的支持PDF标准的脚本解释器,如TOF阅读器内嵌的脚本解释器,对所述JavaScript脚本代码运行的解混淆进程来获得所述JavaScript脚本代码对应的代码信息,并根据不同类型的代码信息对应的检测规则来检测所述JavaScript脚本代码是否为恶意代码,相比于现有技术不能有效地识别出通过PDF文件传播的恶意JavaScript脚本代码,能够准确地检测出PDF文件中的恶意JavaScript代码,提高了网络资源的安全性。本发明实施例还提供了一种检测设备,可实现上述如图1至图4所示的方法步骤。该设备如图10所示,包括处理器(processor)41和存储器42。存储器42可以包括随机存取存储器(RAM)等。所述存储器42被配置存储程序代码(code);所述处理器41被配置读取所述存储器中存储的程序代码,从而执行方法实施例中的各步骤。所述处理器41与所述存储器42通过总线进行通信。所述存储器42还用于存储F1DF文件中的JavaScript脚本代码和所述JavaScript脚本代码对应的代码信息。所述处理器41,用于提取存储器42存储的PDF文件中的JavaScript脚本代码;启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息的类型包括操作码和字符串变量。所述存储器42,还用于存储库文件。可选的是,所述处理器41,还用于将所述存储器42存储的库文件插桩注入在所述支持TOF标准的脚本解释器,例如预定的PDF阅读器内嵌的脚本解释器,对所述JavaScript脚本代码运行的解混淆进程中,所述库文件用于获取所述脚本解释器在解混淆JavaScript脚本代码进程中产生的被解混淆的JavaScript脚本代码对应的代码信息。可选的是,所述处理器41,用于如果所述存储器42存储的所述代码信息的类型为操作码,在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码;若在已存储的恶意操作码特征库中匹配到所述操作码,则确定所述JavaScript脚本代码为恶意代码;若在已存储的恶意操作码特征库中未匹配到所述操作码,则确定所述JavaScript脚本代码不是恶意代码。所述存储器42,用于存储恶意操作码特征库。可选的是,所述处理器41,用于如果所述存储器42存储的所述代码信息的类型为字符串变量时,获取所述JavaScript脚本代码对应的字符串变量的长度;若所述字符串变量的长度位于第一区间,则获取所述字符串变量对应的第一特征参量;根据栈溢出检测模型和所述第一特征参量,判断所述JavaScript脚本代码是否为恶意代码;若所述字符串变量的长度位于第二区间,则获取所述字符串变量对应的第二特征参量;根据堆喷射检测模型和所述第二特征参量,判断所述JavaScript脚本代码是否为恶意代码。所述存储器42,用于存储所述JavaScript脚本代码对应的字符串的长度、第一特征参量、第二特征参量、第一区间、第二区间、栈溢出检测模型、堆喷射检测模型。其中,所述第一特征参量至少可以包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第二特征参量至少可以包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。可选的是,所述处理器41,用于如果所述存储器42存储的所述代码信息的类型为操作码和字符串变量,根据所述操作码对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码;以及,根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码;当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码为恶意代码,或根据所述字符串对应的检测规则,确定所述JavaScript脚本代码为恶意代码时,确定所述JavaScript脚本代码为恶意代码;当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码不为恶意代码,且根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码不为恶意代码时,确定所述JavaScript脚本代码不为恶意代码。进一步的,所述处理器41根据所述操作码对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码的实现方法具体包括:在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码;若在已存储的恶意操作码特征库中匹配到所述操作码,则确定所述JavaScript脚本代码为恶意代码;若在已存储的恶意操作码特征库中未匹配到所述操作码,则确定所述JavaScript脚本代码不是恶意代码;所述处理器41根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码的实现方法具体包括:获取所述JavaScript脚本代码对应的字符串变量的长度;若所述字符串变量的长度位于第三区间,则获取所述字符串变量对应的第三特征参量;根据栈溢出检测模型和所述第三特征参量,判断所述JavaScript脚本代码是否为恶意代码;若所述字符串变量的长度位于第四区间,则获取所述字符串变量对应的第四特征参量;根据堆喷射检测模型和所述第四特征参量,判断所述JavaScript脚本代码是否为恶意代码。可选地,所述第三特征参量至少可以包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第四特征参量至少可以包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。在本实施例中,检测设备通过监测预定的TOF阅读器内嵌的脚本解释器对所述JavaScript脚本代码运行的解混淆进程来获得所述JavaScript脚本代码对应的代码信息,并根据不同类型的代码信息对应的检测规则来检测所述JavaScript脚本代码是否为恶意代码,相比于现有技术不能有效地识别出通过PDF文件传播的恶意JavaScript脚本代码,能够准确地检测出待检测PDF文件中的恶意JavaScript代码,提高了网络资源的安全性。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
权利要求
1.一种恶意代码的检测方法,其特征在于,包括: 提取便携文件格式PDF文件中的JavaScript脚本代码; 启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息的类型包括操作码和字符串变量; 根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码。
2.根据权利要求1所述的方法,其特征在于,在所述启动预定的支持TOF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程之前,还包括: 将库文件插桩注入在所述脚本解释器对所述JavaScript脚本代码运行的解混淆进程中,所述库文件用于获取所述脚本解释器在解混淆JavaScript脚本代码进程中产生的被解混淆JavaScript脚本代码对应的代码信息。
3.根据权利要求1或2所述的方法,其特征在于,如果所述代码信息的类型为操作码,则所述根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码包括: 在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码; 若在已存储的恶意操作码特征库中匹配到所述操作码,则确定所述JavaScript脚本代码为恶意代码; 若在已存储的恶意操作码特征库中未匹配到所述操作码,则确定所述JavaScript脚本代码不是恶意代码。
4.根据权利要求1或2所述的方法,其特征在于,如果所述代码信息的类型为字符串变量,则所述根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码包括: 获取所述JavaScript脚本代码对应的字符串变量的长度; 若所述字符串变量的长度位于第一区间,则获取所述字符串变量对应的第一特征参量;根据栈溢出检测模型和所述第一特征参量,判断所述JavaScript脚本代码是否为恶意代码; 若所述字符串变量的长度位于第二区间,则获取所述字符串变量对应的第二特征参量;根据堆喷射检测模型和所述第二特征参量,判断所述JavaScript脚本代码是否为恶意代码。
5.根据权利要求4所述的方法,其特征在于,所述第一特征参量包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第二特征参量包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。
6.根据权利要求1或2所述的方法,其特征在于,如果所述代码信息的类型为操作码和字符串,则所述根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码包括: 根据所述操作码对应的检测规则,检测所述JavaScript脚本代码;以及, 根据所述字符串对应的检测规则,检测所述JavaScript脚本代码; 当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码为恶意代码,或根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码为恶意代码时,则确定所述JavaScript脚本代码为恶意代码; 当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码不为恶意代码,且根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码不为恶意代码时,则确定所述JavaScript脚本代码不为恶意代码; 其中,所述根据所述操作码对应的检测规则,检测所述JavaScript脚本代码包括: 在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码;若在已存储的恶意操作码特征库中匹配到所述操作码,则确定所述JavaScript脚本代码为恶意代码;若在已存储的恶意操作码特征库中未匹配到所述操作码,则确定所述JavaScript脚本代码不是恶意代码; 所述根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码包括: 获取所述JavaScript脚本代码对应的字符串变量的长度;若所述字符串变量的长度位于第三区间,则获取所述字符串变量对应的第三特征参量;根据栈溢出检测模型和所述第三特征参量,判断所述JavaScript脚本代码是否为恶意代码;若所述字符串变量的长度位于第四区间,则获取所述字符串变量对应的第四特征参量;根据堆喷射检测模型和所述第四特征参量,判断所述JavaScript脚本代码是否为恶意代码。
7.根据权利要求6所述的方法,其特征在于,所述第三特征参量包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第四特征参量包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。
8.—种恶意代码的检测装置,其特征在于,包括: 解混淆模块,用于提取PDF文件中的JavaScript脚本代码;启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息的类型包括操作码和字符串变量; 检测模块,用于根据所述解混淆模块获得的代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括: 插桩注入模块,用于将库文件插桩注入在所述脚本解释器对所述JavaScript脚本代码运行的解混淆进程中,所述库文件用于获取所述脚本解释器在解混淆JavaScript脚本代码进程中产生的被解混淆JavaScript脚本代码对应的代码信息。
10.根据权利要求8或9所述的装置,其特征在于,则所述检测模块包括: 第一匹配单元,用于如果所述代码信息的类型为操作码,在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码; 第一确定单元,用于在所述第一匹配单元在已存储的恶意操作码特征库中匹配到所述操作码时,确定所述JavaScript脚本代码为恶意代码;以及用于在所述第一匹配单元在已存储的恶意操作码特征库中未匹配到所述操作码时,确定所述JavaScript脚本代码不是恶意代码。
11.根据权利要求8或9所述的装置,其特征在于,则所述检测模块包括: 第一获取单元,用于如果所述代码信息的类型为字符串变量,获取所述JavaScript脚本代码对应的字符串变量的长度; 第一判断单元,用于在所述第一获取单元获取的字符串变量的长度位于第一区间时,则获取所述字符串变量对应的第一特征参量;根据栈溢出检测模型和所述第一特征参量,判断所述JavaScript脚本代码是否为恶意代码;以及用于在所述第一获取单元获取的字符串变量的长度位于第二区间时,则获取所述字符串变量对应的第二特征参量;根据堆喷射检测模型和所述第二特征参量,判断所述JavaScript脚本代码是否为恶意代码。
12.根据权利要求11所述的装置,其特征在于,所述第一特征参量包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第二特征参量包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。
13.根据权利要求8或9所述的装置,其特征在于,所述检测模块具体用于如果所述代码信息的类型为操作码和字符串变量,根据所述操作码对应的检测规则,检测所述JavaScript脚本代码;以及,根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码; 以及,用于当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码为恶意代码或根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码为恶意代码时,确定所述JavaScript脚本代码为恶意代码; 以及,用于当根据所述操作码对应的检测规则,确定所述JavaScript脚本代码不为恶意代码且根据所述字符串变量对应的检测规则,确定所述JavaScript脚本代码不为恶意代码时,确定所述JavaScript脚本代码不为恶意代码; 所述检测模块进一步包括: 第二匹配单元,用于在已存储的恶意操作码中匹配所述JavaScript脚本代码对应的操作码; 第二确定单元,用于在所述第二匹配单元确定在已存储的恶意操作码特征库中匹配到所述操作码时,确定所述JavaScript脚本代码为恶意代码;以及用于在所述第二匹配单元确定在已存储的恶意操作码特征库中未匹配到所述操作码时,确定所述JavaScript脚本代码不是恶意代码; 所述检测模块进一步还包括: 第二获取单元,用于获取所述JavaScript脚本代码对应的字符串变量的长度; 第二判断单元,用于在所述第二获取单元获取的所述字符串变量的长度位于第三区间,则获取所述字符串变量对应的第三特征参量;根据栈溢出检测模型和所述第三特征参量,判断所述JavaScript脚本代码是否为恶意代码;以及用于在所述第二获取单元获取的所述字符串变量的长度位于第四区间时,获取所述字符串变量对应的第四特征参量;根据堆喷射检测模型和所述第四特征参量,判断所述JavaScript脚本代码是否为恶意代码。
14.根据权利要求13所述的装置,其特征在于,所述第三特征参量包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第四特征参量包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。
15.一种检测设备, 其特征在于,包括存储器和处理器,其中: 所述存储器被配置存储代码; 所述处理器被配置读取所述存储器中存储的代码,执行如权利要求1至7任一所述的方法。
全文摘要
一种恶意代码的检测方法及装置,涉及通信安全领域,提高了对恶意JavaScript代码的检测准确率。包括提取PDF文件中的JavaScript脚本代码;启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息的类型包括操作码和字符串变量;根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码。
文档编号G06F21/56GK103221960SQ201280002026
公开日2013年7月24日 申请日期2012年12月10日 优先权日2012年12月10日
发明者诸葛建伟, 钱晓斌, 侯永干, 富键, 陆恂, 王若愚 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1