面向网页JavaScript恶意代码的智能检测方法

文档序号:6363964阅读:806来源:国知局
专利名称:面向网页JavaScript恶意代码的智能检测方法
技术领域
本发明涉及一种JavaScript恶意代码智能检测方法。
背景技术
恶意代码是威胁计算机安全的重要形式之一,本质上是一段计算机代码或者程序(一段指令),这段代码可以按照攻击者的意愿执行一系列包含恶意企图的操作;代码的形式可能是可执行代码性 指令、脚本语言、字处理宏语言或者其他类型。典型的恶意代码包括病毒、蠕虫和特洛伊木马。本发明研究的对象是可嵌在网页中的JavaScript脚本,是一种基于对象和事件驱动的客户端脚本语言。JavaScript使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页可以包含更多活跃的元素和更加精彩的内容,但是也使得黑客们更容易编写和运行恶意代码,例如能从网络中自动加载其他的恶意脚本,能操作页面Document对象,操作用户看见的HTML界面,能获取或向用户请求输入有价值的账号密码等数据,并发送数据请求到世界上任何地方的服务器。同时,黑客还可以使用JavaScript来攻击浏览器的漏洞,这种攻击可能导致浏览器崩溃、内存泄露等等。面对这些安全问题,亟需对JavaScript的安全问题进行深入研究,提高对JavaScript的恶意脚本的检测能力,保障互联网应用的安全。恶意代码检测技术已经成为信息安全领域的一个重要方向,并且已经取得了非常多的研究成果。恶意代码的检测技术根据采用分析对象的不同主要分静态检测和动态检测两种,静态检测是对代码的文本特征进行分析,动态检测则是对代码执行行为的分析。静态检测的典型方法是基于签名的检测技术,主要基于模式匹配的思想,为每种已知恶意代码产生一个唯一的签名特征标记来创建恶意代码库。这些签名特征是由行业专家分析病毒样本,进行手工提取,一个签名标志一个特定恶意代码的独特性质。基于签名方法的实现步骤如下(I)采集已知恶意代码样本;(2)在恶意代码样本中,抽取恶意代码签名特征;(3)将签名纳入恶意代码数据库;(4)检测文件。若待检文件中含有恶意代码库中的签名,即判断此文件是恶意代码或者已被恶意代码感染。基于签名方法是目前最方便、应用最广的检测方法,很多商业的杀毒产品都是采用这种技术。其优点是检测速度快,病毒库中已有的恶意代码,能够准确检测出来,误报率较低。缺点是对新出现的病毒无能为力,必须不断更新版本,向病毒库中添加新病毒的特征。动态检测的典型方法是基于行为的检测技术,一般需要动态执行代码或者虚拟执行代码,利用病毒的特有行为特征来监测病毒。通过对病毒多年的研究,发现有一些行为是恶意代码的共同行为,而且非常特殊,正常代码中很少包含这些行为。一些典型的恶意行为特征如下(I)抢占INT 13H号中断。引导型病毒会攻击Boot扇区或主引导扇区,并在其中放置病毒所需的代码,系统启动时,Boot扇区或主引导扇区会执行INT 13H功能,病毒代码就会被加载。(2)修改系统内存总量。病毒为了完成感染与破坏等特定功能,将减少系统内存总量,使系统及其它应用程序不能占据其空间,而使自身常驻在内存中。(3)对特定文件执行写操作。由于病毒是依附而生,那么在病毒执行时,就要将自身代码附加在被感染文件之中,使得被感染文件有异常的写操作。(4)监测系统调用序列。系统调用是用户应用程序与操作系统的唯一接口,某些系统调用序列可以体现某种程度的恶意语义。
因此,基于行为的检测方法可以检测出一些新出现的未知病毒,其研究的难点在于提取恶意行为特征,并且系统开销较大。综上所述,静态检测效率高,但是无法检测新的恶意代码;动态检测技术能检测新的恶意代码,但是效率不高,行为特征提取难度大,可操作性差。有鉴于此,研究人员关注如何高效地自动检测新出现的恶意代码,自动分类器的方法就成为反病毒领域中的一种热点技术。实际上,随着数据挖掘技术的应用推广,将数据挖掘技术应用到恶意代码检测已取得了不错的实验效果。目前,基于数据挖掘和机器学习的恶意代码检测开始得到越来越多地关注,已成为一个新的研究热点。然而,虽然机器学习方法应用于恶意代码检测领域已取得了较多研究成果,但目前研究的主要对象主要集中对Windows系统的可执行文件,对于当前以JavaScript脚本为代表的传播速度最快的网页恶意代码检测还缺少深入研究。事实上,代码混淆技术已被越来越多地应用到JavaScript脚本编写中,例如代码压缩、替代、重组、冗余干扰及加密等等,通过特殊的混淆技术生成的脚本往往可以成功逃避基于特征码的静态检测工具的检测。因此,研究静态检测技术和动态检测技术相融合的新的高效的JavaScript恶意脚本检测方法将是一种趋势。

发明内容
本发明要解决的技术问题是,针对JavaScript恶意脚本普遍存在的代码混淆现象,为了克服静态检测技术无法检测新的恶意代码的缺点,并解决动态行为检测技术存在的效率较低且特征提取较难等问题,提供一种基于可更新的优选样本、无需静态代码特征码和动态行为特征码、可检测新的恶意代码、通用健壮的新型智能检测方法。本发明解决其技术问题所采用的技术方案是提供一种面向网页JavaScript恶意代码的智能检测方法,该方法包括优选样本、安全检测、更新优选三个过程,具体为优选样本利用N-gram语言统计方法和机器学习算法KNN,通过对JavaScript脚本训练库中的JavaScript脚本进行机器学习,生成用于安全检测的JavaScript检测样本库;安全检测针对待检测的网页URL提取JavaScript脚本,基于优选样本过程建立的JavaScript检测样本库,通过KNN分类算法检测指定的网页是否包含JavaScript恶意代码;更新优选统计安全检测的正确率,若检测精度保持在设定的范围内,则可持续启用经优选的JavaScript检测样本库执行安全检测;否则若检测精度下降超出预定范围,则将所有已完成检测并导致检测精度下降的JavaScript脚本置入JavaScript脚本训练库中,重新进行优选样本得到更新的检测样本库;该过程中,保持优选的检测样本库数量不变以保障安全检测的效率。本发明中,所述JavaScript检测样本库包括恶意代码N-gram样本和良性代码N-gram 样本。本发明中,在所述优选样本的过程中,通过对训练脚本的分析确定如下参数P,JavaScript安全检测的正确率;N,N-gram大小参数,Nf, N-gram频率统计阈值,即代表在JavaScript脚本训练库中出现频率最高的前Nf个N-gram ;N° ,代表优选的检测样本库中的恶意样本和良性样本的总数量。具体包括如下步骤(I)采集当前具有代表性的JavaScript恶意脚本和良性脚本,形成达到万级数量的脚本训练库;(2)采用Google的开源JavaScript解析引擎V8,编译JavaScript脚本得到V8机器码,并进一步提取机器码的操作序列;(3)以操作函数为基本单位,计算每一个恶意训练脚本和良性训练脚本的操作序列N-gram,并保存频率最高的前Nf个N-gram ;记JavaScript脚本训练库中的恶意脚本和良性脚本的数量分别为nm和nb,训练脚本总量即为n = nm+nb ;将计算得到的每个训练脚本的 Nf 个 N-gram 集合记为(i = 1,2,... , nm)和X/6 (i = 1,2,... , nb),每个 N-gram 出现的频率值分别记为(i = 1,2,…,nm)和作X (i = 1,2,…,nb),这里对不在集合^广或贫6中的N-gram s',即V名# U#,令_/; = = 0,i = 1,2, ,nm;(4)选择KNN分类器(取K = i),分类算法描述如下计算待分类JavaScript脚本机器码操作序列的前Nf个N-gram,记为集合Sf,每个N-gram出现的频率值记为f (s),
s e Sf;求出满足
权利要求
1.一种面向网页JavaScript恶意代码的智能检测方法,其特征在于,该方法包括优选样本、安全检测、更新优选三个过程,具体为优选样本利用N-gram语言统计方法和机器学习算法KNN,通过对JavaScript脚本训练库中的JavaScript脚本进行机器学习,生成用于安全检测的JavaScript检测样本库;安全检测针对待检测的网页URL提取JavaScript脚本,基于优选样本过程建立的JavaScript检测样本库,通过KNN分类算法检测指定的网页是否包含JavaScript恶意代码; 更新优选统计安全检测的正确率,若检测精度保持在设定的范围内,则持续启用经优选的JavaScript检测样本库执行安全检测;若检测精度下降超出预定范围,则将所有已完成检测并导致检测精度下降的JavaScript脚本置入JavaScript脚本训练库中,重新进行优选样本并得到更新的JavaScript检测样本库;该过程中,保持优选的检测样本库数量不变以保障安全检测的效率。
2.根据权利要求I所述的方法,其特征在于,所述JavaScript检测样本库包括恶意代码N-gram样本和良性代码N-gram样本。
3.根据权利要求I所述的方法,其特征在于,在所述优选样本的过程中,通过对训练脚本的分析确定如下参数P,即JavaScript安全检测的正确率;N,即N-gram大小参数;Nf,即N-gram频率统计阈值,代表在JavaScript脚本训练库中出现频率最高的前Nf个N-gram ;N°,即代表优选的JavaScript检测样本库中的恶意样本和良性样本的数量; 优选样本的具体包括如下步骤 (1)采集当前具有代表性的JavaScript恶意脚本和良性脚本,形成达到万级数量的JavaScript脚本训练库; (2)采用Google的开源JavaScript解析引擎V8,编译JavaScript脚本得到V8机器码,并进一步提取机器码的操作序列; (3)以操作函数为基本单位,计算JavaScript脚本训练库中每一个恶意脚本和良性脚本的机器码操作序列的N-gram,并保存出现频率最高的前Nf个N-gram ; 记恶意和良性脚本数量分别为nm和nb,脚本总量为n = nm+nb ;将计算得到的每个脚本的 Nf 个 N-gram 集合记为(i = 1,2,... , nm)和X/6 (i = 1,2,... , nb),每个 N-gram 出现的频率值分别记为(i = l,2,...,nm)和f⑷#矿(i = 1,2,· · ·,nb),这里对不在集合 ^广或# 中的 N-gram s',即V 名 # U#,规定 _/; = f(V) = O,i = 1,2,· · ·,nm; (4)选择KNN分类器(取K= I),分类算法描述如下计算待分类JavaScript脚本机器码操作序列的前Nf个N-gram,记为集合Sf,每个N-gram出现的频率值记为f (s), s e Sf ;求出满足
4.根据权利要求I所述的方法,其特征在于,在所述安全检测过程中,包括如下步骤 (1)根据指定的网页URL,提取内嵌的JavaScript代码作为待检测脚本; (2)执行Google的JavaScript解析引擎V8获得JavaScript机器码,并进一步提取操作序列; (3)计算待检测脚本操作序列的前Nf个N-gram,记N-gram集合为Sf,每个N-gram的出现频率值记为f (s),s e Sf5 (4)利用K= I的KNN分类算法检测Sf是否为恶意脚本的N-gram,基本过程如下 计算
5.根据权利要求I所述的方法,其特征在于,在所述更新优选过程中,包括如下步骤 (1)记录每次安全检测发生错误(漏报或误报)时的JavaScript脚本,并先将其N-gram直接添加到已经优选的JavaScript检测样本库中; (2)累计每次安全检测后的错误率Pf,当Pf>2 (I-P)时,将1/个检测错误脚本全部加入到既有的η个脚本训练库中,JavaScript脚本训练库大小n = n+nf,执行优选样本过程,重新获得N。个大小的JavaScript检测样本库,以便保持正确率P以及分类算法执行效率不下降; (3)若步骤(2)中的Pf> 2 (I-P)不成立,则重复执行步骤(I)。
全文摘要
本发明涉及网络安全技术,旨在提供一种面向网页JavaScript恶意代码的智能检测方法。该该方法包括优选样本、安全检测、更新优选三个过程。本发明通过静态检测和动态检测有效混合的高效方法,将经典的N-gram统计模型和KNN分类器有效融合,通过建立JavaScript机器码操作序列的N-gram特征可实现对代码的动态行为分析,通过优选KNN分类器所依赖的样本可大大提高静态分类检测的效率。所提出的智能检测方法独具操作性,即优选样本可确保分类效率不会随着训练脚本库的增大而降低,安全检测可确保基于优选样本执行高效的智能检测,更新优选则可确保智能检测的精度不会随新的恶意脚本的增加而下降。具备更好的检测新恶意脚本的能力以及持续工作产生的动态优化调整能力。
文档编号G06F21/00GK102663296SQ20121009270
公开日2012年9月12日 申请日期2012年3月31日 优先权日2012年3月31日
发明者范渊, 陈铁明 申请人:杭州安恒信息技术有限公司, 陈铁明
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1