System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于原型依赖图的JavaScript恶意代码检测方法技术_技高网

一种基于原型依赖图的JavaScript恶意代码检测方法技术

技术编号:41355475 阅读:6 留言:0更新日期:2024-05-20 10:07
本专利提出一种基于原型依赖图的JavaScript恶意代码检测方法,在实现基本JavaScript恶意代码检测的同时,针对传统静态的检测方法因缺失语义信息导致的检测效率低下问题提出改进方案。使用原型依赖图表示代码并通过图神经网络提取图中节点和图结构信息。该实现过程主要包括,收集并划分数据,构建原型依赖图,图数据转换,图神经网络训练以及预测。具体涉及爬取数据集,在代码表示方法中加入原型信息构成原型依赖图,然后使用图剪枝算法进行剪枝,再使用FastText模型对图中的节点类型和边类型进行编码,将文本转换为向量,最后使用图神经网络提取节点特征信息和图结构信息,并根据神经网络输出的向量对样本进行分类。本专利可用于恶意代码检测领域。

【技术实现步骤摘要】


技术介绍

1、近几年来,javascript由于其在创建交互式动态网页方面的易用性和强大功能,被作为客户端编程语言广泛地应用于互联网网站的开发工作,但是这种程序语言在给开发工作带来便利性的同时,也造成了与javascript恶意代码有关的网络安全问题。攻击者利用javascript语言在web页面中嵌入恶意代码,达到窃取用户私人信息或财产等目的。

2、javascript恶意代码检测技术是目前受到广泛关注的一种检测网站中恶意代码的安全防御手段。基于动态分析的检测技术和基于静态分析的检测技术是目前针对javascript恶意代码检测技术研究的两个主要方向。动态分析方法往往利用蜜罐、沙盒等虚拟环境执行javascript代码,提取代码执行者的行为特征,记录并分析执行信息,找出其中蕴含恶意的典型行为特征以此来对代码进行分类。静态分析方法提取待检测代码的特征,将其与模型训练后得出的恶意特征进行匹配,匹配搜索待检代码中是否包含可疑关键字或片段。它还提取源代码、关键字符串和函数的语义结构,然后使用机器学习或深度学习构建检测模型。

3、动态分析可以更清楚地揭示恶意代码的行为,但分析环境的可识别性导致恶意代码能够通过检查环境来逃避检测。此外,动态分析的开销太高。因此,它不适合进行大规模分析。另一方面,静态分析消耗的资源更少,检测恶意代码简单快速,而且更具成本效益。然而传统的基于静态分析的检测方法由于对代码语义信息的不充分提取难以检测出混淆后的javascript恶意代码。


技术实现思路>

1、针对静态检测方法因缺失语义信息导致的检测效率低下问题,本专利提出了原型依赖图这样一种新的代码表示方法来充分表示代码语义信息。为了更好的提取原型依赖图中节点和图结构信息,使用图神经网络来进行特征提取,最终实现了一种新的javascript恶意代码检测方法。原型和原型链是javascript中对象以及继承实现的基础,本专利结合已有的代码表示方法,在其中加入原型和对象的信息,弥补现有代码表示的不足。然后对原型依赖图使用剪枝算法进行剪枝,再使用预训练的fasttext模型对图中的节点类型和边类型进行编码,将文本转换为向量,最后使用图神经网络提取节点特征信息和图的结构信息,并根据神经网络输出的向量对样本进行分类。

2、本专利提出的javascript原型依赖图,意在表示出代码的原型信息,弥补现有表示方法的语义缺失。下面将详细介绍原型依赖图的定义。

3、原型依赖图是一种图形表示,将抽象解析期间生成的所有javascript原型、对象、变量和树节点表示为节点,将它们的关系表示为边。这些边包括原型和对象、变量的关系(例如下述定义1和定义2),抽象语法树节点和对象、变量的关系(例如下述定义3和定义4)。原型依赖图的边定义如下:

4、定义1原型定义使用边——为对象节点到原型节点的边,表示对象节点对应的原型节点。

5、定义2原型属性查找边——为原型节点到变量的边,表示原型上由构造函数所构造的实例所共享的属性。

6、定义3变量定义使用边——为抽象语法树节点到变量的边,表示抽象语法树节点定义或使用了变量。

7、定义4对象查找边——为变量到对象节点的边,表示变量节点是某个对象节点的实例。

8、首先介绍与ast节点相关的边——变量定义使用。当构建变量定义边时需要同时考虑相关对象和原型的构建,如果变量为基础数据类型如数字、字符串、布尔值则变量将不会再指向对象,如果变量为引用数据类型如函数、对象时需要进一步构建对象查找边,原型定义边;当构建变量使用边时,不需要考虑对象和原型的构建,当变量为引用数据类型时该边将用于在抽象解析中重现属性查找。

9、对象查找边可以有多条,因为可以有多个变量名称指向同一个对象。例如,代码有两个变量a和b以及一个对象属性obj.v指向同一个对象。原型依赖图中有三个变量节点以及a、b和obj.v到对象节点的三个边,但只有一个对象节点代表这个对象,因此,所有三个对象查找边将在抽象解析期间解析为相同的对象节点。

10、原型定义使用边可以有条,因为可以有多个对象指向同一个原型。例如,代码中变量a和b是由同一个构造函数构造出来的对象,有a.domalicious()以及b.domalicious()两个函数调用,a和b都将使用同一个原型中的domalicious()方法。使用原型可以表示出代码中对象属性或对象方法的真实来源,描述实际运行javascript代码解析器时的数据调用。

11、原型属性查找边则为原型中构造函数所构造的对象所共享的所有属性,使得通过原型可以查找到对象定义时并没有显式定义的,挂载在原型上通过继承而得来的所有属性特征,也即表示原型链的信息。

12、本专利所述的基于原型依赖图的javascript恶意代码检测方法整体结构如图1所示,主要由五部分构成:

13、(1)样本集构建模块。样本集构建模块通过网络爬虫爬取良性代码的数据,从已有的公开数据集中获得恶意代码,然后对获得的恶意代码和良性代码数据集进行划分;

14、(2)原型依赖图生成模块。首先,将样本代码通过esprima转换成抽象语法树,取抽象语法树的json文件,将其转换成node节点树;其次,分别提取样本代码的控制流图和程序依赖图;再次,遍历整个节点数,分别将控制流图的控制信息和程序依赖图的数据流信息添加到相应的节点树中;最后,将上文定义的原型依赖信息加入到节点树中生成原型依赖图。

15、(3)图数据转换模块。首先,根据最大节点数对原型依赖图进行剪枝,剪除超过最大节点数的节点以及相连的边;其次,使用fasttext词嵌入模型将文本特征转换为向量形式;最后,则是基于所得到的向量以及图连接性信息构建图神经网络输入数据。

16、(4)图神经网络学习模块。使用加入了对边上特征进行提取的图注意力网络对上一步构建的图输入数据进行特征学习。

17、(5)预测与输出模块。使用均值聚合函数获得图级向量表示并输入到softmax层来预测样本的真实标签,并对结果进行输出显示。

18、本专利技术与现有技术相比,具有的有益效果是:

19、(1)javascript原型依赖图生成技术。针对现有的抽象表示方法都没有对代码中的原型调用关系进行建模,使得在进行恶意代码检测时丢失了原型关系所蕴含的特征,造成了代码语义信息提取不全面的这一问题,本文提出了原型依赖图这一代码表示方法。原型依赖图是将原型关系信息加入到javascript恶意代码检测的代码抽象表示中,并将其与其他代码抽象表示方法相结合的一种图表示方法。

20、(2)基于原型依赖图的图神经网络。传统的javascript恶意代码检测方法将图表示为一个序列,这导致关于图结构的大量信息丢失,为了同时考虑每个节点的属性特征以及整个图的结构特征,本专利使用了图神经网络来提取原型依赖图中的特征。该方法可以同时提取原型依赖图上的节点本文档来自技高网...

【技术保护点】

1.一种通过原型依赖图对JavaScript代码进行特征表示,实现对JavaScript恶意代码进行检测的方法,其特征在于:在对JavaScript代码进行抽象表示过程中,在表示中加入原型信息构成原型依赖图,通过图神经网络提取原型依赖图中节点和图结构信息,并根据神经网络输出的向量对样本进行分类。

2.根据权利要求1所述的方法,其特征在于,所述的JavaScript恶意代码检测方法流程包括构建原型依赖图,图数据转换,图神经网络训练以及预测。

3.根据权利要求2所述的原型依赖图的构建,其特征在于,将代码转换成抽象语法树的形式,再将抽象语法树转换成Node节点树,随后遍历节点树,分别将提取的控制流图的控制信息和提取的程序依赖图的数据流信息加入到节点树中,最后将定义的原型依赖信息加入到节点树中形成原型依赖图。

4.根据权利要求3所述的原型依赖图,其特征在于,原型依赖图是一种图形表示,将抽象解析期间生成的所有JavaScript原型、对象、变量和树节点表示为节点,将它们的关系表示为边。这些边包括原型和对象、变量的关系——原型定义使用边、原型属性查找边,抽象语法树节点和对象、变量的关系——对象查找边、变量定义使用边。

...

【技术特征摘要】

1.一种通过原型依赖图对javascript代码进行特征表示,实现对javascript恶意代码进行检测的方法,其特征在于:在对javascript代码进行抽象表示过程中,在表示中加入原型信息构成原型依赖图,通过图神经网络提取原型依赖图中节点和图结构信息,并根据神经网络输出的向量对样本进行分类。

2.根据权利要求1所述的方法,其特征在于,所述的javascript恶意代码检测方法流程包括构建原型依赖图,图数据转换,图神经网络训练以及预测。

3.根据权利要求2所述的原型依赖图的构建,其特征在于,将代码...

【专利技术属性】
技术研发人员:辛阳陈欣怡姚良威
申请(专利权)人:北京邮电大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1