CN103221960B - 恶意代码的检测方法及装置 - Google Patents
恶意代码的检测方法及装置 Download PDFInfo
- Publication number
- CN103221960B CN103221960B CN201280002026.9A CN201280002026A CN103221960B CN 103221960 B CN103221960 B CN 103221960B CN 201280002026 A CN201280002026 A CN 201280002026A CN 103221960 B CN103221960 B CN 103221960B
- Authority
- CN
- China
- Prior art keywords
- code
- javascript
- malicious
- scripted
- javascript scripted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Abstract
一种恶意代码的检测方法及装置,涉及通信安全领域,提高了对恶意JavaScript代码的检测准确率。包括:提取PDF文件中的JavaScript脚本代码;启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息的类型包括操作码和字符串变量;根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码。
Description
技术领域
本发明涉及通信安全技术领域,尤其涉及一种恶意代码的检测方法及装置。
背景技术
PDF(portaldocumentformat,便携文件格式)是一种电子文件格式。这种格式不受阅读软件、硬件以及操作系统的限制,可以在包括Windows、Linux和MacOS的任何平台中使用。JavaScript是一种广泛用于客户端网页开发的脚本语言,这种脚本语言能够实现的功能十分丰富。在PDF中嵌入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文件。
现有对PDF文件中脚本进行检测的方法有:
模拟执行环境来执行被检测的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脚本代码;启动预定的支持PDF标准的脚本解释器对所述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指令出现频率中的一种或多种的组合。
第三方面,提供了一种检测设备,包括存储器和处理器,其中:
所述存储器被配置存储代码;
所述处理器被配置读取所述存储器中存储的代码,执行上述第一方面、或第一方面的六种可能实现方式中任意一种提供的方法。
本发明实施例提供的一种恶意代码的检测方法及装置,通过启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程来获得所述JavaScript脚本代码对应的代码信息,并根据所述代码信息的类型对应的检测规则来检测所述JavaScript脚本代码是否为恶意代码,相比于现有技术能够比较准确地对携带在PDF文件中的恶意JavaScript代码进行检测。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种恶意代码的检测方法流程图;
图2为本发明实施例提供的另一种恶意代码的检测方法流程图;
图3为本发明实施例提供的另一种恶意代码的检测方法流程图;
图4为本发明实施例提供的另一种恶意代码的检测方法流程图;
图5为本发明实施例提供的一种恶意代码的检测装置的组成框图;
图6为本发明实施例提供的另一种恶意代码的检测装置的组成框图;
图7为本发明实施例提供的检测模块的组成框图;
图8为本发明实施例提供的另一种检测模块的组成框图;
图9为本发明实施例提供的另一种检测模块的组成框图;
图10为本发明实施例提供的一种检测设备的组成框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明一实施例提供了一种恶意代码的检测方法,该方法可以由一个检测设备来执行,如图1所示,包括:
101、提取PDF文件中的JavaScript脚本代码。
其中,所述JavaScript脚本嵌入在PDF文件中,可以实现PDF文件的显示增效功能,但也被攻击者和恶意代码恶意使用,用于利用PDF阅读器软件的漏洞,渗透入侵所在主机。待检测的该PDF文件可以来源于电子邮件的附件,网页内容等等,在这里不进行限定。
其中,所述提取PDF文件中的JavaScript脚本代码的实现方法具体可以包括:根据PDF文件的国际通用格式规范,解析PDF文件中JavaScript流的元素位置,并根据该JavaScript流所采用的压缩编码方法进行相应的解码,从而提取到PDF文件中包含的JavaScript代码。
102、启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息的类型包括操作码和字符串变量。
其中,所述预定的支持PDF标准(即支持PDF格式规范,能够解析以PDF格式规范生成的PDF文件)的脚本解释器,可以是PDF阅读器内嵌的脚本解释器,其中PDF阅读器可以为任意一种拥有内嵌JavaScript脚本代码解释引擎的PDF阅读器,例如,本发明实施例使用由Adobe公司提供的PDF阅读应用程序Acrobatreader,使用Acrobatreader内嵌的脚本解释器可以实现对目前绝大多数的JavaScript脚本代码进行解混淆。所述支持PDF标准的脚本解释器可以是所述检测设备的管理人员在检测之前预先配置的。
其中,所述代码信息是指本发明实施例中使用的支持PDF标准的脚本解释器对脚本代码解释并翻译后,提交给JavaScript虚拟机执行的信息。其中,JavaScript虚拟机是使用软件模拟的用于运行所有JavaScript代码的抽象计算机。在本实施例中,提交给JavaScript虚拟机执行的信息包含了脚本解释器在对脚本代码解释和翻译的过程中的不同阶段所输出的信息,至少可以包括以下两类:操作码和字符串变量。
其中,若代码信息的类型包括操作码,则所述操作码可以为机器使用的命令代码,典型操作码片断如下:
[207]resolve_globalr3,Array(id10)
[212]get_by_idr1,r3,prototype(id11)
[220]method_check
[221]get_by_idr0,r1,push(id12)
[229]movr2,Int32:0(k8)
[232]callr0,2,9
需要说明的是,虽然在本实施例中,为了表达清楚,在此使用了通用英文字符来对操作码进行举例说明,但实际过程中,操作码可以以二进制来表示。
其中,若代码信息的类型包括字符串变量,所述字符串变量可以为JavaScript脚本中定义的字符串变量,典型的存在形式如下:
varstr=“somevalue...”;
thisVar.replace(“Monday”,“Friday”);
需要说明的是,在恶意代码中,字符串变量的值本身也可能是经过编译的指令。例如,字符串变量thisVar.replace的值Monday就可以是经过Unicode编码的一段指令。
其中,所述根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息可以通过插桩注入的方法对解混淆进程进行监测以获得所述JavaScript脚本代码对应的代码信息,具体插桩注入的过程请参见后面附图4及对应的文字描述。并且,所述操作码和字符串变量这两种不同类型的参数是解混淆过程的不同阶段中会出现的中间参数,因而,通过监测解混淆进程的各个步骤就能够获取到操作码和字符串变量两种不同类型的参数。
103、根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码。
值得说明的是,基于代码信息类型的不同,本发明实施例提供的检测方法也不相同,根据代码信息的类型为操作码、代码信息的类型为字符串、以及代码信息的类型为操作码和字符串三种情况,所述步骤103根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码分别可以由以下三种检测方法实现,具体为:
第一种方法如图2所示,包括:
a1031、如果所述代码信息的类型为操作码,则在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码;若在已存储的恶意操作码特征库中匹配到所述操作码,则执行步骤a1032;若在已存储的恶意操作码特征库中未匹配到所述操作码,则执行步骤a1033。
a1032、确定所述JavaScript脚本代码为恶意代码。
a1033、确定所述JavaScript脚本代码不是恶意代码。
其中,所述恶意操作码特征库为PDF文件中的所述JavaScript脚本代码实施恶意漏洞利用所进行的操作码序列构成的模式库,典型针对CVE-2009-0927漏洞的特征模式实例如下:
getmethod_“getIcon”
getgvar“var_1”
call
第二种方法如图3所示,包括:
b1031、如果所述代码信息的类型为字符串变量,获取所述JavaScript脚本代码对应的字符串变量的长度;若所述字符串变量的长度位于第一区间,则执行步骤b1032;若所述字符串变量的长度位于第二区间,则执行步骤b1034。
b1032、获取所述字符串变量对应的第一特征参量。
b1033、根据栈溢出检测模型和所述第一特征参量,判断所述JavaScript脚本代码是否为恶意代码。
b1034、获取所述字符串变量对应的第二特征参量。
b1035、根据堆喷射检测模型和所述第二特征参量,判断所述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指令出现最小频率等。在实际检测过程中,当第一特征参量中的一个参数或多个参数超过栈溢出检测模型对应的阈值,则认定JavaScript脚本代码为恶意代码,否则认定JavaScript脚本代码不为恶意代码;当第二特征参量中的一个参数或多个参数超过栈溢出检测模型对应的阈值,则认定JavaScript脚本代码为恶意代码,否则认定JavaScript脚本代码不为恶意代码。
在上述第三种方法中,根据所述操作码对应的检测规则,检测所述JavaScript脚本代码的实现方法具体为:在已存储的恶意操作码特征库中匹配所述JavaScript脚本代码对应的操作码;若在已存储的恶意操作码特征库中匹配到所述操作码,则确定所述JavaScript脚本代码为恶意代码;若在已存储的恶意操作码特征库中未匹配到所述操作码,则确定所述JavaScript脚本代码不是恶意代码。
根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码的实现方式具体为获取所述JavaScript脚本代码对应的字符串变量的长度;若所述字符串变量的长度位于第三区间,则获取所述字符串变量对应的第三特征参量;根据栈溢出检测模型和所述第三特征参量,判断所述JavaScript脚本代码是否为恶意代码;若所述字符串变量的长度位于第四区间,则获取所述字符串变量对应的第四特征参量;根据堆喷射检测模型和所述第四特征参量,判断所述JavaScript脚本代码是否为恶意代码。
其中所述第三特征参量至少可以包括GetPC指令出现频率、花指令出现频率、是否包含已知脱壳代码指纹中的一种或多种的组合;所述第四特征参量至少可以包括字符串信息熵值、NOP指令出现频率中的一种或多种的组合。
值得说明的是,根据所述操作码对应的检测规则,检测所述JavaScript脚本代码可直接使用上述第一种方法,具体包括步骤a1031至步骤a1033,而根据所述字符串变量对应的检测规则,检测所述JavaScript脚本代码则可直接使用上述第二种方法,具体包括步骤b1031至步骤b1035。因此,在第三种方法中描述的第三区间可使用上述第二种方法中的第一区间的设置,第四区间可使用上述第二种方法中的第二区间的设置。栈溢出检测模型和堆喷射检测模型也可以相应使用第二种方法中的模型。
在本发明实施例中,在对PDF文件进行检测之前,还需要对预定的支持PDF标准的脚本解释器进行插桩注入处理,用以获取PDF文件中的JavaScript脚本代码对应的代码信息等,在本实施例中以PDF阅读器内嵌的脚本解释器为例进行说明,如图4所示,其具体流程为:
201、启动预定的PDF阅读器的应用程序进程。
202、将库文件插桩注入在预定的PDF阅读器内嵌的脚本解释器的解混淆进程中。
其中,所述库文件为预先写好的dll格式的文件,用于获取所述预定的PDF脚本解释器在解混淆JavaScript脚本代码进程中产生的被解混淆的JavaScript脚本代码对应的代码信息。将库文件插桩注入进程中就是将具有特定功能的dll文件的执行进程添加在一个当前正在运行的进程中,但不并不影响正在运行的进程的正常工作状态。
值得说明的是,插桩注入的位置需要根据预定的PDF阅读器本身提供的API来进行选择。例如,如果要获取JavaScript脚本代码对应的操作码,则需要获取到预定的PDF阅读器中能够输出操作码的API进行插桩注入才行。
203、对注入的库文件进行初始化运行。
以上步骤201至203的执行是为步骤102的执行的必要步骤,但是,步骤201至203只需要在启动预定的PDF阅读器的应用程序进程时执行一次即可,在后续对PDF文件进行检测的过程中并不需要再次执行。
进一步,值得说明的是,上述栈溢出检测模型和堆喷射检测模型需要在启动预定的PDF阅读器的应用程序进程之前建立,并且可以在后续对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获得的代码信息的类型对应的检测规则,检测所述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的部分依据;字符串信息熵是衡量字符串信息量大小的指标,如果字符串信息熵小于某一阀值,则可能存在堆喷射;NOP指令为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标准的脚本解释器,如PDF阅读器内嵌的脚本解释器,对所述JavaScript脚本代码运行的解混淆进程来获得所述JavaScript脚本代码对应的代码信息,并根据不同类型的代码信息对应的检测规则来检测所述JavaScript脚本代码是否为恶意代码,相比于现有技术不能有效地识别出通过PDF文件传播的恶意JavaScript脚本代码,能够准确地检测出PDF文件中的恶意JavaScript代码,提高了网络资源的安全性。
本发明实施例还提供了一种检测设备,可实现上述如图1至图4所示的方法步骤。
该设备如图10所示,包括处理器(processor)41和存储器42。存储器42可以包括随机存取存储器(RAM)等。所述存储器42被配置存储程序代码(code);所述处理器41被配置读取所述存储器中存储的程序代码,从而执行方法实施例中的各步骤。所述处理器41与所述存储器42通过总线进行通信。
所述存储器42还用于存储PDF文件中的JavaScript脚本代码和所述JavaScript脚本代码对应的代码信息。
所述处理器41,用于提取存储器42存储的PDF文件中的JavaScript脚本代码;启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息的类型包括操作码和字符串变量。
所述存储器42,还用于存储库文件。
可选的是,所述处理器41,还用于将所述存储器42存储的库文件插桩注入在所述支持PDF标准的脚本解释器,例如预定的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指令出现频率中的一种或多种的组合。
在本实施例中,检测设备通过监测预定的PDF阅读器内嵌的脚本解释器对所述JavaScript脚本代码运行的解混淆进程来获得所述JavaScript脚本代码对应的代码信息,并根据不同类型的代码信息对应的检测规则来检测所述JavaScript脚本代码是否为恶意代码,相比于现有技术不能有效地识别出通过PDF文件传播的恶意JavaScript脚本代码,能够准确地检测出待检测PDF文件中的恶意JavaScript代码,提高了网络资源的安全性。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种恶意代码的检测方法,其特征在于,包括:
提取便携文件格式PDF文件中的JavaScript脚本代码;
启动预定的支持PDF标准的脚本解释器对所述JavaScript脚本代码运行解混淆进程,并根据所述解混淆进程,获得所述JavaScript脚本代码对应的代码信息,所述代码信息是指所述支持PDF标准的脚本解释器对所述JavaScript脚本代码解混淆后,提交给JavaScript虚拟机执行的信息,包括所述脚本解释器在对脚本代码解混淆过程的不同阶段输出的不同类型的中间信息,所述代码信息的类型包括操作码和字符串变量;
根据所述代码信息的类型对应的检测规则,检测所述JavaScript脚本代码是否为恶意代码。
2.根据权利要求1所述的方法,其特征在于,在所述启动预定的支持PDF标准的脚本解释器对所述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脚本代码对应的代码信息,所述代码信息是指所述支持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任一所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2012/086302 WO2014089744A1 (zh) | 2012-12-10 | 2012-12-10 | 恶意代码的检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103221960A CN103221960A (zh) | 2013-07-24 |
CN103221960B true CN103221960B (zh) | 2016-05-25 |
Family
ID=48818191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280002026.9A Active CN103221960B (zh) | 2012-12-10 | 2012-12-10 | 恶意代码的检测方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103221960B (zh) |
WO (1) | WO2014089744A1 (zh) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902905B (zh) * | 2013-12-17 | 2017-02-15 | 哈尔滨安天科技股份有限公司 | 基于软件结构聚类的恶意代码生成器识别方法及系统 |
CN104134019A (zh) * | 2014-07-25 | 2014-11-05 | 北京奇虎科技有限公司 | 检测脚本病毒的方法和装置 |
CN104462986B (zh) * | 2014-11-28 | 2019-02-01 | 北京奇虎科技有限公司 | Pdf中触发漏洞威胁的检测方法及装置 |
CN104715195B (zh) * | 2015-03-12 | 2017-11-03 | 广东电网有限责任公司信息中心 | 基于动态插桩的恶意代码检测系统及方法 |
CN106156120B (zh) * | 2015-04-07 | 2020-02-28 | 阿里巴巴集团控股有限公司 | 对字符串进行分类的方法和装置 |
US10803165B2 (en) * | 2015-06-27 | 2020-10-13 | Mcafee, Llc | Detection of shellcode |
CN105117332B (zh) * | 2015-08-19 | 2018-08-14 | 电子科技大学 | 一种栈溢出位置的检测方法 |
CN105224873B (zh) * | 2015-11-17 | 2018-06-08 | 四川神琥科技有限公司 | 一种智能设备文件认证方法 |
CN105468972B (zh) * | 2015-11-17 | 2018-11-30 | 四川神琥科技有限公司 | 一种移动终端文件检测方法 |
CN105243327B (zh) * | 2015-11-17 | 2018-08-31 | 四川神琥科技有限公司 | 一种文件安全处理方法 |
CN106855925B (zh) * | 2015-12-09 | 2020-02-18 | 中国电信股份有限公司 | 堆喷射检测方法及装置 |
CN106897211A (zh) * | 2015-12-21 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 针对混淆脚本语言的定位方法和系统 |
CN107203707B (zh) * | 2016-03-16 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 一种实现程序代码混淆的方法和系统 |
CN105868630A (zh) * | 2016-03-24 | 2016-08-17 | 中国科学院信息工程研究所 | 恶意pdf文档检测方法 |
CN107292168A (zh) * | 2016-03-30 | 2017-10-24 | 阿里巴巴集团控股有限公司 | 检测程序代码的方法及装置、服务器 |
CN106096405B (zh) * | 2016-04-26 | 2019-07-05 | 浙江工业大学 | 一种基于Dalvik指令抽象的Android恶意代码检测方法 |
CN106022132A (zh) * | 2016-05-30 | 2016-10-12 | 南京邮电大学 | 一种基于动态内容分析的网页木马实时检测方法 |
CN108062474B (zh) * | 2016-11-08 | 2022-01-11 | 阿里巴巴集团控股有限公司 | 文件的检测方法及装置 |
CN108171055A (zh) * | 2016-12-08 | 2018-06-15 | 武汉安天信息技术有限责任公司 | 一种远控恶意代码行为触发方法及系统 |
WO2018115534A1 (es) | 2016-12-19 | 2018-06-28 | Telefonica Digital España, S.L.U. | Método y sistema para detectar programas maliciosos integrados en un documento electrónico |
CN106650449B (zh) * | 2016-12-29 | 2020-05-22 | 哈尔滨安天科技集团股份有限公司 | 一种基于变量名混淆程度的脚本启发式检测方法及系统 |
CN108664791B (zh) * | 2017-03-29 | 2023-05-16 | 腾讯科技(深圳)有限公司 | 一种超文本预处理器代码中的网页后门检测方法及装置 |
CN107609399A (zh) * | 2017-09-09 | 2018-01-19 | 北京工业大学 | 基于nin神经网络的恶意代码变种检测方法 |
CN108694042B (zh) * | 2018-06-15 | 2021-08-31 | 福州大学 | 网页中的JavaScript代码解混淆方法 |
CN109344615B (zh) * | 2018-07-27 | 2023-02-17 | 北京奇虎科技有限公司 | 一种检测恶意命令的方法及装置 |
CN109408810A (zh) * | 2018-09-28 | 2019-03-01 | 东巽科技(北京)有限公司 | 一种恶意pdf文档检测方法及装置 |
CN110866252A (zh) * | 2018-12-21 | 2020-03-06 | 北京安天网络安全技术有限公司 | 一种恶意代码检测方法、装置、电子设备及存储介质 |
CN112329012B (zh) * | 2019-07-19 | 2023-05-30 | 中国人民解放军战略支援部队信息工程大学 | 针对包含JavaScript的恶意PDF文档的检测方法及电子设备 |
CN110569032B (zh) * | 2019-09-16 | 2023-03-14 | 郑州昂视信息科技有限公司 | 脚本语言解释器应用标签裁决的方法及装置 |
CN110806980A (zh) * | 2019-11-04 | 2020-02-18 | 深信服科技股份有限公司 | 一种检测方法、装置、设备及存储介质 |
CN111368303B (zh) * | 2020-03-12 | 2023-12-29 | 深信服科技股份有限公司 | 一种PowerShell恶意脚本的检测方法及装置 |
CN111881047B (zh) * | 2020-07-30 | 2022-09-06 | 山石网科通信技术股份有限公司 | 混淆脚本的处理方法及装置 |
CN112231701A (zh) * | 2020-09-29 | 2021-01-15 | 广州威尔森信息科技有限公司 | Pdf文件处理方法及装置 |
CN112528282B (zh) * | 2020-12-14 | 2022-10-18 | 山东小葱数字科技有限公司 | 反混淆代码的方法、装置和电子设备 |
CN112613034B (zh) * | 2020-12-18 | 2022-12-02 | 北京中科网威信息技术有限公司 | 恶意文档检测方法及系统、电子设备及存储介质 |
CN114912114A (zh) * | 2022-05-11 | 2022-08-16 | 北京天融信网络安全技术有限公司 | 恶意pdf文档检测方法、装置、设备和介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1942431A1 (en) * | 2007-01-08 | 2008-07-09 | Apple Inc. | Software or other information integrity verification using variable block length and selection |
CN102043919A (zh) * | 2010-12-27 | 2011-05-04 | 北京安天电子设备有限公司 | 基于脚本虚拟机的漏洞通用检测方法和系统 |
CN102708320A (zh) * | 2012-05-04 | 2012-10-03 | 奇智软件(北京)有限公司 | 一种病毒apk的识别方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101359352B (zh) * | 2008-09-25 | 2010-08-25 | 中国人民解放军信息工程大学 | 分层协同的混淆后api调用行为发现及其恶意性判定方法 |
CN101482907A (zh) * | 2009-02-18 | 2009-07-15 | 中国科学技术大学 | 基于专家系统的主机恶意代码行为检测系统 |
CN102663284A (zh) * | 2012-03-21 | 2012-09-12 | 南京邮电大学 | 一种基于云计算的恶意代码识别方法 |
CN102663296B (zh) * | 2012-03-31 | 2015-01-07 | 杭州安恒信息技术有限公司 | 面向网页JavaScript恶意代码的智能检测方法 |
-
2012
- 2012-12-10 WO PCT/CN2012/086302 patent/WO2014089744A1/zh active Application Filing
- 2012-12-10 CN CN201280002026.9A patent/CN103221960B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1942431A1 (en) * | 2007-01-08 | 2008-07-09 | Apple Inc. | Software or other information integrity verification using variable block length and selection |
CN102043919A (zh) * | 2010-12-27 | 2011-05-04 | 北京安天电子设备有限公司 | 基于脚本虚拟机的漏洞通用检测方法和系统 |
CN102708320A (zh) * | 2012-05-04 | 2012-10-03 | 奇智软件(北京)有限公司 | 一种病毒apk的识别方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于内容的网页恶意代码检测的研究与实现;魏为;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120715;I139-426 第7-28页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103221960A (zh) | 2013-07-24 |
WO2014089744A1 (zh) | 2014-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103221960B (zh) | 恶意代码的检测方法及装置 | |
CN105068932B (zh) | 一种Android应用程序加壳的检测方法 | |
US20190132355A1 (en) | Malicious script detection | |
EP2426618B1 (en) | Information device, program, method for preventing execution of unauthorized program code, and computer readable recording medium | |
CN106649084A (zh) | 函数调用信息的获取方法及装置、测试设备 | |
CN104252613B (zh) | 一种虚拟物品获取方法、装置及终端 | |
US20140123283A1 (en) | Detection of heap spraying by flash with an actionscript emulator | |
CN104809391B (zh) | 缓冲区溢出攻击检测装置、方法和安全防护系统 | |
CN112738094B (zh) | 可扩展的网络安全漏洞监测方法、系统、终端及存储介质 | |
US20140122052A1 (en) | Detection of jit spraying by flash with an actionscript emulator | |
CN111753302A (zh) | 检测代码漏洞的方法、装置、计算机可读介质及电子设备 | |
US10671456B2 (en) | Method and device for acquiring application information | |
CN106687978A (zh) | 对栈破坏利用的抑制 | |
US20140123282A1 (en) | Unpacking flash exploits with an actionscript emulator | |
CN107066886A (zh) | 一种Android加固脱壳的检测方法 | |
CN105607990A (zh) | 一种空指针崩溃的挖掘方法及装置 | |
Deng et al. | A Pattern-Based Software Testing Framework for Exploitability Evaluation of Metadata Corruption Vulnerabilities | |
CN103714291A (zh) | 一种信息处理方法及电子设备 | |
CN109165509A (zh) | 软件实时可信度量的方法、设备、系统及存储介质 | |
CN114662097A (zh) | Csv文件注入攻击的检测方法和装置、电子设备和存储介质 | |
CN111835706B (zh) | 浏览器恶意扩展的检验方法、装置及计算机设备 | |
CN103853980A (zh) | 安全提示方法及装置 | |
CN114610577A (zh) | 一种目标资源的锁定方法、装置、设备和介质 | |
CN110737900B (zh) | 网页功能测试方法及装置、服务器和计算机可读存储介质 | |
CN110213200B (zh) | 一种风险行为拦截方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |