当前位置: 首页 > 专利查询>四川大学专利>正文

一种基于语境分析的Web攻击检测方法技术

技术编号:28036239 阅读:36 留言:0更新日期:2021-04-09 23:18
本发明专利技术涉及一种基于语境分析的Web攻击检测方法,所述Web攻击检测方法包括:数据预处理步骤:根据Esprima对JavaScript代码的词法进行解析和语法分析,得到抽象语法树,并将每一行作为一个语法单元,进而将一个JavaScript代码文件解析成语法单元序列;特征提取步骤:使用动态词嵌入模型得到语法单元序列的语境表征,转换为具有真实上下文信息的动态词向量;对象分类步骤:根据TextCNN模型进行对语法单元进行分类。本发明专利技术的优点在于:充分利用代码信息,获取源代码解析成语法单元序列的详细信息。现有的技术只是提取代码的节点信息,但本发明专利技术充分利用了代码信息,可以获得较好的检测效果。

【技术实现步骤摘要】
一种基于语境分析的Web攻击检测方法
本专利技术涉及网络监测
,尤其涉及一种基于语境分析的Web攻击检测方法。
技术介绍
随着互联网对我们生活的不断渗透,人们已经越来越习惯于使用Web网站与Web应用,通过Web浏览新闻、消费购物、传递信息等等。这样的变化在是我们的生活更加方便的同时也带来了信息安全的隐患:某些攻击者在不法利益的驱使下,将攻击目标转向了Web网站。据Symantec信息安全公司发布的《2019年网络安全报告》显示,全球每天有数万网站受到黑客攻击,而JavaScript(JS)作为web开发中占据统治地位的编程语言,绝大多数的web攻击都是利用JS发起的。此外,越来越多的恶意JS代码使用了混淆技术以逃避检测。因此,如何高效检测出恶意JavaScript代码是预防web攻击的必要途径。目前已有大量相关研究工作对JS代码进行检测分析来解决web安全中的恶意代码问题。现有的检测方法可以分为两类:基于代码内容和结构的静态分析;基于执行结果的动态分析。与静态分析相比,动态分析方法往往需要更多的资源和执行时间。然而现有的静态分析方法都是基于静态词嵌入的语义分析,代码的二义性得不到解决,进而不能有效监测混淆代码。如基于语义分析的恶意JS代码检测方法(DOI:10.1016/J.COSE.2020.101764)和基于段落向量的恶意JS代码检测方法(DOI:10.1016/j.asoc.2019.105721)等。但是无论是基于语义分析还是段落向量的检测方法,都只利用代码的语义信息并使用静态词嵌入技术,不能从根本上解决静态分析时代码的二义性问题,这导致混淆的恶意代码难以检测,且现有的静态检测方法还存在由于对代码信息利用不足导致检测精确度过低的问题。因此,web攻击检测领域依旧需要一种能够准确高效检测混淆恶意代码的方法。
技术实现思路
本专利技术的目的在于克服现有技术的缺点,提供了一种基于语境分析的Web攻击检测方法,解决了现有静态检测方法存在的问题。本专利技术的目的通过以下技术方案来实现:一种基于语境分析的Web攻击检测方法,所述Web攻击检测方法包括:数据预处理步骤:根据Esprima对JavaScript代码的词法进行解析和语法分析,得到抽象语法树,并将每一行作为一个语法单元,进而将一个JavaScript代码文件解析成语法单元序列;特征提取步骤:使用动态词嵌入模型得到语法单元序列的语境表征,转换为具有真实上下文信息的动态词向量;对象分类步骤:根据TextCNN模型进行对语法单元进行分类。所述动态词嵌入模型由Word2Vec和两个双向长短期记忆循环神经网络组成,语法单元序列通过Word2Vec转换为静态词向量并将其输入到长短期记忆循环神经网络中,转换为具有真实上下文信息的动态词向量。所述特征提取步骤具体包括:将语法单元序列(u1,u2,…,uN)中每一个语法单元us输入到静态词嵌入模型Word2vec中,生成与之相对应的静态词向量xs,并将其作为动态词嵌入模型的输入;将静态词向量输入到动态词嵌入模型中的前向语言模型和后向语言模型,通过前向语言模型输出一个中间词向量通过后向语言模型输出一个中间词向量根据和计算xs、和三种不同的中间词向量在不同的权重加权下的叠加值。所述对象分类步骤具体包括:根据对n个动态词向量做连接操作,得到长度为n的动态词向量矩阵;使用滤波器扫描动态词向量矩阵,经过卷积核计算,激活函数激活后得到长度为h的特征图ti;通过滤波器沿着序列{x1:h,x2:h+1,…,xn-h+1:n}组成的动态词向量矩阵计算出多个特征图t=[t1,t2,…,tn-h+1],并采用最大池化方法对特诊图进行池化操作;通过TextCNN过滤器获得不同的特征,在Softmax层使用这些特征来计算概率分布;根据概率分布对语法单元进行分类。本专利技术具有以下优点:1、充分利用代码信息。获取源代码解析成语法单元序列的详细信息。现有的技术只是提取代码的节点信息,但本专利技术充分利用了代码信息,可以获得较好的检测效果。2、现有的基于静态词嵌入语义分析方法不能解决代码二义性的问题,而本专利技术使用基于动态词嵌入的语境分析方法。相比于语义分析,语境分析能有效捕捉代码的上下文语境特征,这就意味着相同的词在不同的语境下会得到不同的词向量表示,有利于静态分析时解决代码的二义性问题。3、考虑到一个恶意的JS文件中,恶意代码只是其中一部分。本专利技术采用的TextCNN模型能有效捕捉代码局部特征进行分类,进而提高准确率。附图说明图1为本专利技术的模型示意图;图2为本专利技术的动态词嵌入模型示意图图;图3为本专利技术的TextCNN模型示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下结合附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的保护范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。下面结合附图对本专利技术做进一步的描述。如图1所示,本专利技术涉及一种基于语境分析的Web攻击检测方法,以对恶意JavaScript代码检测为例,本方法的具体实现步骤包含以下3个阶段:数据预处理、特征提取、对象分类;具体包括如下内容:S1、数据预处理:Esprima是一个高效而强大的代码解析器,它可以完成对JavaScript代码的词法和语法分析。源代码通过Esprima解析成抽象语法树,将每一行作为一个语法单元。进而将一个JS文件解析成变长的语法单元序列。以JavaScript代码“vara=1”为示例,具体步骤如下:S11、通过Esprima进行代码解析,得到一个文本结果,这个文本结果就是抽象语法树。S12、提取生成文本文件(即抽象语法树)的每一行来作为语法单元。如果文本结果是24行文本,即得到了包含24个语法单元的语法单元序列。完成数据预处理后会得到带有详细信息的语法单元序列。S21、特征提取:使用动态词嵌入模型得到语法单元序列的语境表征。与静态词向量不同的是,动态词向量携带真实的上下文信息。如图2所示,在本专利技术中,动态词嵌入模型由Word2Vec和两个双向长短期记忆循环神经网络(Bi-directionalLongShort-TermMemor,Bi-LSTM)组成。整个模型包含一个前向语言模型和一个后向语言模型。一个语法序列通过Word2Vec转换为静态词向量并将其输入Bi-LSTM网络中,转换为具有真实上下文信息的动态词向量。具体步骤如下:S21、对于语法单本文档来自技高网
...

【技术保护点】
1.一种基于语境分析的Web攻击检测方法,其特征在于:所述Web攻击检测方法包括:/n数据预处理步骤:根据Esprima对JavaScript代码的词法进行解析和语法分析,得到抽象语法树,并将每一行作为一个语法单元,进而将一个JavaScript代码文件解析成语法单元序列;/n特征提取步骤:使用动态词嵌入模型得到语法单元序列的语境表征,转换为具有真实上下文信息的动态词向量;/n对象分类步骤:根据TextCNN模型进行对语法单元进行分类。/n

【技术特征摘要】
1.一种基于语境分析的Web攻击检测方法,其特征在于:所述Web攻击检测方法包括:
数据预处理步骤:根据Esprima对JavaScript代码的词法进行解析和语法分析,得到抽象语法树,并将每一行作为一个语法单元,进而将一个JavaScript代码文件解析成语法单元序列;
特征提取步骤:使用动态词嵌入模型得到语法单元序列的语境表征,转换为具有真实上下文信息的动态词向量;
对象分类步骤:根据TextCNN模型进行对语法单元进行分类。


2.根据权利要求1所述的一种基于语境分析的Web攻击检测方法,其特征在于:所述动态词嵌入模型由Word2Vec和两个双向长短期记忆循环神经网络组成,语法单元序列通过Word2Vec转换为静态词向量并将其输入到长短期记忆循环神经网络中,转换为具有真实上下文信息的动态词向量。


3.根据权利要求2所述的一种基于语境分析的Web攻击检测方法,其特征在于:所述特征提取步骤具体包括:
将语法单元序列(u1,u2,…,uN)中每一个语法单...

【专利技术属性】
技术研发人员:李涛黄云华李贝贝兰小龙王运鹏
申请(专利权)人:四川大学
类型:发明
国别省市:四川;51

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

1