CN112507337A - 基于语义分析的恶意JavaScript代码检测模型的实现方法 - Google Patents

基于语义分析的恶意JavaScript代码检测模型的实现方法 Download PDF

Info

Publication number
CN112507337A
CN112507337A CN202011504521.2A CN202011504521A CN112507337A CN 112507337 A CN112507337 A CN 112507337A CN 202011504521 A CN202011504521 A CN 202011504521A CN 112507337 A CN112507337 A CN 112507337A
Authority
CN
China
Prior art keywords
layer
model
training
semantic analysis
word
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.)
Pending
Application number
CN202011504521.2A
Other languages
English (en)
Inventor
张余平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Changhong Electric Co Ltd
Original Assignee
Sichuan Changhong Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan Changhong Electric Co Ltd filed Critical Sichuan Changhong Electric Co Ltd
Priority to CN202011504521.2A priority Critical patent/CN112507337A/zh
Publication of CN112507337A publication Critical patent/CN112507337A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Virology (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于语义分析的恶意JavaScript代码检测模型的实现方法,包括从JavaScript源代码生成一个抽象语法树,然后将其转换为语法单元序列,再将快速文本算法引入到词向量的训练中,将语法单元序列表示为词向量,通过注意机制将其输入Bi‑LSTM网络,进行模型训练,从而得到最终的恶意代码检测模型。本发明的技术方案可实现在保证较高的检测精度的同时提升检测效率。

Description

基于语义分析的恶意JavaScript代码检测模型的实现方法
技术领域
本发明涉及自然语言和代码检测技术领域,特别涉及一种基于语义分析的恶意JavaScript代码检测模型的实现方法。
背景技术
Web开发技术经历了巨大的发展,JavaScript的创建极大地丰富了客户端的交互能力。然而,攻击者利用JavaScript语言的动态特性将恶意代码嵌入到网页中,以达到驱动下载、重定向等目的。传统的基于静态特征检测的方法很难检测出混淆后的恶意代码,基于动态分析的方法虽然检测精度精度较高但是过多的计算导致检测效率较低。
发明内容
本发明的目的是克服上述背景技术中不足,提供一种基于语义分析的恶意JavaScript代码检测模型的实现方法,可实现在保证较高的检测精度的同时,提升检测效率。
为了达到上述的技术效果,本发明采取以下技术方案:
一种基于语义分析的恶意JavaScript代码检测模型的实现方法,其特征在于,包括从JavaScript源代码生成一个抽象语法树,然后将其转换为语法单元序列,再将快速文本算法引入到词向量的训练中,将语法单元序列表示为词向量,通过注意机制将其输入Bi-LSTM网络,进行模型训练,从而得到最终的恶意代码检测模型,即本方案中,先将样本解析为一个抽象语法树,然后以深度第一的方式遍历抽象语法树的节点,得到语法单元序列,接着再使用快速文本模型训练语法单元序列来生成词向量。最后,将样本语法单元序列对应的词向量输入到深度学习模型中,该模型可以分析和检测恶意JavaScript代码。
进一步地,包括以下步骤:
步骤1.收集样本,按一定比例拆分为训练集、测试集数据;
步骤2.将收集到的javaScript代码片段处理成抽象语法树,并将其转换成语法单元序列;
步骤3.将快速文本算法引入到词向量的训练中,将语法单元序列表示为词向量,通过注意机制将其输入Bi-LSTM网络,进行模型训练;
步骤4.利用测试集数据进行模型性能检测。
进一步地,所述步骤2中具体是采用语义分析的方法将源代码解析为抽象语法树,在生成抽象语法树后,并遍历抽象语法树提取语法单元序列作为代码的特征。
进一步地,所述步骤3中在提取语法单元序列后,具体利用文本分类技术对序列进行识别,并通过快速文本算法,将语法单元序列转换成词向量。
进一步地,所述Bi-LSTM网络为Bi-LSTM双向深度学习网络。
进一步地,所述步骤3中进行模型训练时,输入层是提取的语法单元序列,对词向量进行训练后,得到每个句法单元的词向量表示,然后将词向量输入到Bi-LSTM网络中,该层的输出作为注意层的输入。
进一步地,模型训练的具体步骤包括:
S1.将词向量输入到编码器Encoder中,将输入的第i个字段令牌yi作为编码器第i步的输入,其双向LSTM在第i步产生两个相反的隐藏层状态
Figure BDA0002844487330000021
Figure BDA0002844487330000022
在每一步中连接正反反向的隐藏层状态得到每一步的编码状态hi
Figure BDA0002844487330000031
S2.在解码器端Decoder;将训练阶段时表格数据元依次输入,即测试阶段时时上一步的生成词,在时间步t得到解码状态st;使用hi和st得到该时间步原文第i个词注意力权重:
Figure BDA0002844487330000032
其中,vT,Wh,Ws和battn是模型需要学习的参数,得到的at是编码器的输入文本上的一个概率分布即注意力分布;
S3.将该词对应的隐藏层状态hi与注意力权重相乘并且求和,得到上下文向量
Figure BDA0002844487330000033
Figure BDA0002844487330000034
S4.使用softmax函数计算属于每个类的序列的概率分布:
Figure BDA0002844487330000035
其中,ws和b是分类器的学习参数;
S5.采用四层的网络结构来构建BiLSTM模型;
S6.对构建出BiLSTM模型的模型参数进行更新。
进一步地,所述BiLSTM模型的第一层为输入层,第二层为BiLSTM层,通过双向记忆性来学习文本的上下文关系的概率分布;第三层为正则层,增加了Dropout操作,用于训练精简网络,防止过拟合;第四层为全连接层,增加了一个线性操作,激活函数用的网络sigmoid,用于通过全连接层的矩阵运算将矩阵转换成2维输出即2分类,然后通过sigmoid获取最后的二分类的概率分布。
进一步地,所述步骤S6包括:
S6.1.通过交叉熵计算模型类别输出和真实类别的误差即损失;
S6.2.通过adam优化器对损失部分进行优化;
S6.3.通过随机梯度下降法寻找损失最小的点,并通过求导更新模型参数;
S6.4.循环上述步骤直至数据训练完成。
进一步地,所述步骤4中具体是使用五倍交叉验证方法进行模型性能验证。
本发明与现有技术相比,具有以下的有益效果:
本发明的基于语义分析的恶意JavaScript代码检测模型的实现方法,实现了提供一种基于语义分析的恶意JavaScript代码检测模型,通过检测,显示本模型能高效且较高精度地检测出恶意代码片段,为现有的恶意代码检测领域提出一种可行的解决方案。
附图说明
图1是本发明的javaScript恶意代码检测模型流程示意图。
图2是本发明的针对恶意javaScript代码检测框架模型的示意图。
图3是本发明的生成abstrct语法树及提取语法节点并将其可视化到树形图中的流程示意图。
图4是本发明的一个实施例的语法单元序列示意图。
具体实施方式
下面结合本发明的实施例对本发明作进一步的阐述和说明。
实施例:
实施例一:
目前,传统的基于静态特征检测的方法很难检测出混淆后的恶意代码,基于动态分析的方法虽然检测精度较高但是过多的计算导致检测效率较低,为了优化上诉问题,本实施例提出了一种基于语义分析的静态检测模型,该模型首先从JavaScript源代码生成一个抽象语法树,然后自动将其转换为语法单元序列,将快速文本算法引入到词向量的训练中,将语法单元序列表示为词向量,通过注意机制将其输入Bi-LSTM网络,进行模型训练,得到最终的恶意代码检测模型,该模型在确保较高的检测精度的同时,也大大提升了检测的效率。
具体的,如图1及图2所示,本实施例的基于语义分析的恶意JavaScript代码检测模型的实现方法具体包括以下步骤:
步骤1.收集样本,按一定比例拆分为训练集、测试集数据。
本实施例中,模型具体是在Ubuntu上构建的,在用JavaScript语言编写的NodeJS中开发了样本准备和语法单元序列提取,并用Python语言实现了词向量的训练和建模过程。
收集样本时,具体使用Python语言编写爬虫用例,本实施例中,通过爬取Alexa的前20网站,再清洗后收集了21700个正常样本;样本来自Github(HynekPetrak,2017年)和Curtsinger等人的公开数据。经过清洗和预处理后共计50 000。在这些恶意样本中,有942个样本来自Curtsinger等,都使用模糊处理技术,其余的都是从GithubHynekPetrak(2017)中随机抽取的,最后将收集到的数据,按照80%、20%的比例分为训练集和测试集数据。
步骤2.将收集到的javaScript代码片段处理成抽象语法树,并将其转换成语法单元序列。
具体的,本实施例中,采用语义分析的方法将源代码解析为抽象语法树(AST),并遍历抽象语法树提取语法单元序列作为代码的特征。Esprima是一个高性能JavaScript解析器。通过将javaScript语句输入该解析器,得到69个不同类型的节点,包括程序类型节点、语句类型节点、表达式类型节点、声明类型节点和模式类型节点等。一个节点代表一个基础的语法单元,不同的代码片段被映射到不同类型的节点中,生成不同的抽象树节点语法单元。
抽象语法树是源代码抽象语法结构的树表示,对于特定编程语言的源代码,源代码中的语句通过构造语法树映射到树的每个节点,语法树是语义分析中的重要组成部分,在语义分析中占有重要地位。本模型是针对语义分析的静态检测模型,所以生成高质量的语法树在很大程度上决定了模型训练的优劣。通过对比目前流行的几种代码解析器的性能和优劣势,本方案中采用了更加适用的Esprima解析器。
Esprima是一个高性能JavaScript解析器。通过将javaScript语句输入该解析器,得到69个不同类型的节点,包括程序类型节点、语句类型节点、表达式类型节点、声明类型节点和模式类型节点等,一个节点代表一个基础的语法单元,不同的代码片段被映射到不同类型的节点中,生成不同的抽象树节点语法单元。
本实施例中具体的实现步骤如下:首先在命令行终端使用命令:npm installesprima安装Esprima开发依赖包,然后在页面中使用var esprima=require(‘esprima’)引入esprima对象,通过esprima中所封装的方法esprima.tokenize(program)和esprima.parseScript(program)来进行代码分词和生成代码抽象语法树(其中program代表所需分词的对象代码),最后在生成代码抽象语法树后,通过深度遍历抽象语法树来生成语法单元序列。
通过深度遍历抽象语法树的节点,可以最终获得语法单元序列文本,以供后续训练。如图4所示为生成的语法单元序列的一个例子:在这些语法节点中,Program是根节点,VariableDeclaration代表变量声明,VariableDeclarator是变量声明的描述,identifier是用来命名变量的名称,CallExpression是函数调用表达式,它表示func(“hello”)之类的语句。MemberExpression是表示引用对象成员的成员表达式节点。Literal表示一个文本值,可以是字符串、布尔值、数字、null或正则表达式等。
步骤3.将快速文本算法引入到词向量的训练中,将语法单元序列表示为词向量,通过注意机制将其输入Bi-LSTM网络,进行模型训练。
本实施例中,采用快速文本模型对语法单元序列进行词向量训练。快速文本模型通过子词有效地学习单词信息,在训练词向量方面取得了很好的效果。实验表明,FastText模型比Word2Vec更适合作为论文的语料库,这可以提高模型的分类性能。FastText词向量模型是基于Word2Vec词向量模型的扩展。Word2Vec模型忽略了单词的内部结构,而FastText使用子词信息,将每个单词表示成一个字符级的n-gram单词包,单词的词向量表示与每个n-gram字符相关联。通过引用快速文本算法,将语法单元序列转换成词向量,然后带入到模型中进行最终的检测模型训练。
具体实施时,在提取语法单元序列后,首先是利用文本分类技术对序列进行识别。在这个过程中,需要将序列转换成模型可以处理的内容,即词向量。词向量模型训练的结果在很大程度上决定了深度学习模型的有效性。因此,对于本方案中的语料库,需要找出哪种类型的词向量模型更适合。
由于JavaScript的同类语法单元有相似的词组,如图3所示的声明类和表达式类。句法单元的内部结构可以通过当前节点的语义来反映,在训练词向量时应考虑到这一点。因此,本方案中提出了基于快速文本模型的语法单元序列词向量训练方法。
FastText词向量模型是基于Word2Vec词向量模型的扩展。Word2Vec模型忽略了单词的内部结构,而FastText使用子词信息,将每个单词表示成一个字符级的n-gram单词包,单词的词向量表示与每个n-gram字符相关联。但是,由于fastText模型在选取n-gram大小是从3-gram到6-gram,这样做对于一些长度较长的罕见代码起到较好预测作用,然而对于常见代码,由于代码本身不长,如果选择3-gram到6-gram分解时,会造成更多噪声数据。如代码“act”和“action”,3-gram仅有“〈ac”和“act”是相同,而对于5-gram,代码“act”就没有,因此,在共同部分较短情况下,产生出来噪声数量和共同部分序列数量比往往偏大,使得在初始化时两者间的距离偏离较远。其次,使用前后缀标记符“〈”和“〉”会产生效果相同序列却有不同向量表示,如代码“act”3-gram序列“act”,而4-gram中“〈act”,这两者含义一样,但却被赋予不同向量。再次,fastText模型在处理词组时,采用预先设定阈值来判断是否满足词组情况,且在n-gram分解中包含词组中空格等无关字符,显然不能很好解决词组问题预测等情况。
鉴于fastText模型缺陷并针对本发明内容,本发明在实现的同时对该词向量模型进行了一些改进。由于生成的语法单元序列中的单元都是语法树的各个节点,各个节点的名称都是固定的代码,所以不会出现长度较长的罕见代码。所以为了减少噪声数据,本发明在选取n-gram方面,主要选择2-gram、3-gram和4-gram进行训练,以此解决常见单词中由于过多n-gram而造成较多噪声数据。同时,在模型中去除fastText中单词前缀“〈”和后缀“〉”标记符,解决相同含义序列而被赋予不同初始向量问题。
本方案中,通过改进快速文本算法,将语法单元序列转换成词向量,训练出的词向量包含待处理文本中的词在海量数据中的语义信息,通过词向量能够更好的表征待处理文本中的词的信息,然后带入到模型中进行最终的检测模型训练。
具体的,在选择深度学习算法时,需要考虑输入数据集的特性。语法单元序列最明显的特征之一就是它是连续的。为了使用语法单元序列进行可靠的分类,一个能够挖掘序列关系的深度学习网络显得至关重要。因此,本发明选择LSTM网络模型来训练代码的语法单元序列。为了保证序列上下文的充分利用,本发明采用Bi-LSTM双向深度学习网络。
通常恶意JavaScript代码通常会将多种混淆技术混合在一起。然而,普通的JavaScript代码使用较少的模糊处理技术,因此可以将其作为区分这两种类别的标准。由于语法单元序列代表了JavaScript源代码的语义信息和词向量隐含的源代码位置信息,因此序列的上下文信息是准确检测恶意JavaScript代码的关键,所以利用Bi-LSTM双向深度学习网络能大大提升检测的精度。
模型训练时:输入层是提取的语法单元序列。对词向量进行训练后,得到每个句法单元的词向量表示。然后将词向量输入到Bi-LSTM网络中,该层的输出将作为注意层的输入。由于循环神经网络每次输入是一个固定时间序列的长度,也就是每次输入的数据长度都是固定不变的。可以预设固定的数据长度,由于数据集中可能存在较多的不满足预设数据长度的短文本,为了保持所有的输入序列长度一致,不足预设数据长度的我们用0做填充到预设数据长度。
然后将这些词向量输入到编码器(Encoder)中,Encoder端是一个双向的LSTM,这个双向的LSTM可以捕获原文本的长距离依赖关系以及位置信息,将输入的第i个字段令牌yi作为编码器第i步的输入,其双向LSTM再第i步产生两个相反的隐藏层状态
Figure BDA0002844487330000091
Figure BDA0002844487330000101
在每一步中连接正反反向的隐藏层状态得到每一步的编码状态hi
Figure BDA0002844487330000102
在解码器端,解码器(Decoder)是一个单向的LSTM,训练阶段时表格数据元依次输入(测试阶段时时上一步的生成词),在时间步t得到解码状态st。使用hi和st得到该时间步原文第i个词注意力权重:
Figure BDA0002844487330000103
其中,vT,Wh,Ws和battn是模型需要学习的参数,得到的at是编码器的输入文本上的一个概率分布即注意力分布。
由上式可知,其注意力分布由编码器隐藏层状态hi,解码器隐藏层状态st共同决定。每一个词都对应一个概率值可以理解该词所获取的注意力权重,将该词对应的隐藏层状态hi与注意力权重相乘并且求和,得到上下文向量
Figure BDA0002844487330000104
Figure BDA0002844487330000105
最后,使用softmax函数计算属于每个类的序列的概率分布,如下所示:
Figure BDA0002844487330000106
其中,ws和b是分类器的学习参数。
实际使用中,可以将输入序列记做X列表,设定1表示正常代码、0表示恶意代码,把词向量对应的情感标注记做Y列表。将X列表、Y列表作为输入。
具体的,本实施例中,采用四层的网络结构来构建BiLSTM模型。其中,第一层为输入层;第二层为BiLSTM层,主要利用双向记忆性来学习文本的上下文关系的概率分布;第三层为正则层,正则层增加了Dropout操作,用于训练精简网络,防止过拟合;第四层为全连接层,在全连接层增加了一个线性操作,激活函数用的网络(sigmoid),用于通过全连接层的矩阵运算将矩阵转换成2维输出即2分类,然后通过sigmoid获取最后的二分类的概率分布。
然后需要对构建出BiLSTM模型的模型参数进行更新。本实施例中,主要是通过交叉熵计算模型类别输出和真实类别的误差,即损失。然后通过adam优化器对损失部分进行优化,通过随机梯度下降法寻找损失最小的点,并通过求导更新模型参数,循环多次直至数据训练完成。
步骤4.利用测试集数据进行模型性能检测。
本实施例中具体为使用五倍交叉验证方法进行模型性能验证。验证结果表明,该模型能有效地检测出混淆的恶意JavaScript代码,提高了检测速度,检测精度为0.977,召回率为0.9。
综上可知,本实施例的模型在确保较高的检测精度的同时,也大大提升了检测的效率。
实施例二
本实施例中公开了一种计算机设备,该计算机设备可以是服务器,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储基于语义分析的恶意JavaScript代码检测模型的实现方法中涉及到的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现基于语义分析的恶意JavaScript代码检测模型的实现方法。
在另一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例一中基于语义分析的恶意JavaScript代码检测模型的实现方法的步骤。为避免重复,这里不再赘述。
在另一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例一中基于语义分析的恶意JavaScript代码检测模型的实现方法的步骤。为避免重复,这里不再赘述。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

Claims (10)

1.一种基于语义分析的恶意JavaScript代码检测模型的实现方法,其特征在于,包括从JavaScript源代码生成一个抽象语法树,然后将其转换为语法单元序列,再将快速文本算法引入到词向量的训练中,将语法单元序列表示为词向量,通过注意机制将其输入Bi-LSTM网络,进行模型训练,从而得到最终的恶意代码检测模型。
2.根据权利要求1所述的一种基于语义分析的恶意JavaScript代码检测模型的实现方法,其特征在于,包括以下步骤:
步骤1.收集样本,按一定比例拆分为训练集、测试集数据;
步骤2.将收集到的javaScript代码片段处理成抽象语法树,并将其转换成语法单元序列;
步骤3.将快速文本算法引入到词向量的训练中,将语法单元序列表示为词向量,通过注意机制将其输入Bi-LSTM网络,进行模型训练;
步骤4.利用测试集数据进行模型性能检测。
3.根据权利要求2所述的一种基于语义分析的恶意JavaScript代码检测模型的实现方法,其特征在于,所述步骤2中具体是采用语义分析的方法将源代码解析为抽象语法树,在生成抽象语法树后,并遍历抽象语法树提取语法单元序列作为代码的特征。
4.根据权利要求2所述的一种基于语义分析的恶意JavaScript代码检测模型的实现方法,其特征在于,所述步骤3中在提取语法单元序列后,具体利用文本分类技术对序列进行识别,并通过快速文本算法,将语法单元序列转换成词向量。
5.根据权利要求2所述的一种基于语义分析的恶意JavaScript代码检测模型的实现方法,其特征在于,所述Bi-LSTM网络为Bi-LSTM双向深度学习网络。
6.根据权利要求5所述的一种基于语义分析的恶意JavaScript代码检测模型的实现方法,其特征在于,所述步骤3中进行模型训练时,输入层是提取的语法单元序列,对词向量进行训练后,得到每个句法单元的词向量表示,然后将词向量输入到Bi-LSTM网络中,该层的输出作为注意层的输入。
7.根据权利要求6所述的一种基于语义分析的恶意JavaScript代码检测模型的实现方法,其特征在于,模型训练的具体步骤包括:
S1.将词向量输入到编码器Encoder中,将输入的第i个字段令牌yi作为编码器第i步的输入,其双向LSTM在第i步产生两个相反的隐藏层状态
Figure FDA0002844487320000021
Figure FDA0002844487320000022
在每一步中连接正反反向的隐藏层状态得到每一步的编码状态hi
Figure FDA0002844487320000023
S2.在解码器端Decoder;将训练阶段时表格数据元依次输入,即测试阶段时时上一步的生成词,在时间步t得到解码状态st;使用hi和st得到该时间步原文第i个词注意力权重:
Figure FDA0002844487320000024
at=softmax(et);
其中,vT,Wh,Ws和battn是模型需要学习的参数,得到的at是编码器的输入文本上的一个概率分布即注意力分布;
S3.将该词对应的隐藏层状态hi与注意力权重相乘并且求和,得到上下文向量
Figure FDA0002844487320000031
Figure FDA0002844487320000032
S4.使用softmax函数计算属于每个类的序列的概率分布:
Figure FDA0002844487320000033
其中,ws和b是分类器的学习参数;
S5.采用四层的网络结构来构建BiLSTM模型;
S6.对构建出BiLSTM模型的模型参数进行更新。
8.根据权利要求7所述的一种基于语义分析的恶意JavaScript代码检测模型的实现方法,其特征在于,所述BiLSTM模型的第一层为输入层,第二层为BiLSTM层,通过双向记忆性来学习文本的上下文关系的概率分布;第三层为正则层,增加了Dropout操作,用于训练精简网络,防止过拟合;第四层为全连接层,增加了一个线性操作,激活函数用的网络sigmoid,用于通过全连接层的矩阵运算将矩阵转换成2维输出即2分类,然后通过sigmoid获取最后的二分类的概率分布。
9.根据权利要求7所述的一种基于语义分析的恶意JavaScript代码检测模型的实现方法,其特征在于,所述步骤S6包括:
S6.1.通过交叉熵计算模型类别输出和真实类别的误差即损失;
S6.2.通过adam优化器对损失部分进行优化;
S6.3.通过随机梯度下降法寻找损失最小的点,并通过求导更新模型参数;
S6.4.循环上述步骤直至数据训练完成。
10.根据权利要求7所述的一种基于语义分析的恶意JavaScript代码检测模型的实现方法,其特征在于,所述步骤4中具体是使用五倍交叉验证方法进行模型性能验证。
CN202011504521.2A 2020-12-18 2020-12-18 基于语义分析的恶意JavaScript代码检测模型的实现方法 Pending CN112507337A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011504521.2A CN112507337A (zh) 2020-12-18 2020-12-18 基于语义分析的恶意JavaScript代码检测模型的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011504521.2A CN112507337A (zh) 2020-12-18 2020-12-18 基于语义分析的恶意JavaScript代码检测模型的实现方法

Publications (1)

Publication Number Publication Date
CN112507337A true CN112507337A (zh) 2021-03-16

Family

ID=74921716

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011504521.2A Pending CN112507337A (zh) 2020-12-18 2020-12-18 基于语义分析的恶意JavaScript代码检测模型的实现方法

Country Status (1)

Country Link
CN (1) CN112507337A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113239354A (zh) * 2021-04-30 2021-08-10 武汉科技大学 一种基于循环神经网络的恶意代码检测方法及系统
CN113609246A (zh) * 2021-08-04 2021-11-05 上海犇众信息技术有限公司 一种网页相似性检测方法及系统
CN113656066A (zh) * 2021-08-16 2021-11-16 南京航空航天大学 一种基于特征对齐的克隆代码检测方法
CN115577363A (zh) * 2022-09-15 2023-01-06 华北电力科学研究院有限责任公司 恶意代码反序列化利用链的检测方法及装置
CN115795487A (zh) * 2023-02-07 2023-03-14 深圳开源互联网安全技术有限公司 漏洞检测方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108712448A (zh) * 2018-07-09 2018-10-26 四川大学 一种基于动态污点分析的注入式攻击检测模型
CN110233849A (zh) * 2019-06-20 2019-09-13 电子科技大学 网络安全态势分析的方法及系统
CN110929516A (zh) * 2019-11-22 2020-03-27 新华网股份有限公司 文本的情感分析方法、装置、电子设备及可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108712448A (zh) * 2018-07-09 2018-10-26 四川大学 一种基于动态污点分析的注入式攻击检测模型
CN110233849A (zh) * 2019-06-20 2019-09-13 电子科技大学 网络安全态势分析的方法及系统
CN110929516A (zh) * 2019-11-22 2020-03-27 新华网股份有限公司 文本的情感分析方法、装置、电子设备及可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
YONG FANG等: "《Detecting malicious JavaScript code based on semantic analysis》", 《COMPUTERS & SECURITY》 *
邱瑶瑶等: "基于语义分析的恶意JavaScript代码检测方法", 《四川大学学报( 自然科学版)》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113239354A (zh) * 2021-04-30 2021-08-10 武汉科技大学 一种基于循环神经网络的恶意代码检测方法及系统
CN113609246A (zh) * 2021-08-04 2021-11-05 上海犇众信息技术有限公司 一种网页相似性检测方法及系统
CN113609246B (zh) * 2021-08-04 2024-04-12 奇安盘古(上海)信息技术有限公司 一种网页相似性检测方法及系统
CN113656066A (zh) * 2021-08-16 2021-11-16 南京航空航天大学 一种基于特征对齐的克隆代码检测方法
CN115577363A (zh) * 2022-09-15 2023-01-06 华北电力科学研究院有限责任公司 恶意代码反序列化利用链的检测方法及装置
CN115795487A (zh) * 2023-02-07 2023-03-14 深圳开源互联网安全技术有限公司 漏洞检测方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN111738004B (zh) 一种命名实体识别模型的训练方法及命名实体识别的方法
CN106502985B (zh) 一种用于生成标题的神经网络建模方法及装置
CN112507337A (zh) 基于语义分析的恶意JavaScript代码检测模型的实现方法
US9830315B1 (en) Sequence-based structured prediction for semantic parsing
CN112215013B (zh) 一种基于深度学习的克隆代码语义检测方法
CN104615589A (zh) 训练命名实体识别模型的方法、命名实体识别方法及装置
CN113255320A (zh) 基于句法树和图注意力机制的实体关系抽取方法及装置
CN106611055A (zh) 基于层叠式神经网络的中文模糊限制信息范围检测方法
CN111680494A (zh) 相似文本的生成方法及装置
CN112069831A (zh) 基于bert模型和增强混合神经网络的不实信息检测方法
CN113822054A (zh) 基于数据增强的中文语法纠错方法及装置
CN112528653B (zh) 短文本实体识别方法和系统
CN113657123A (zh) 基于目标模板指导和关系头编码的蒙语方面级情感分析方法
CN111368542A (zh) 一种基于递归神经网络的文本语言关联抽取方法和系统
CN110347802A (zh) 一种文本分析方法及装置
CN115759119B (zh) 一种金融文本情感分析方法、系统、介质和设备
CN116661805A (zh) 代码表示的生成方法和装置、存储介质及电子设备
CN112633007A (zh) 一种语义理解模型构建方法及装置、语义理解方法及装置
CN114742069A (zh) 一种代码相似度检测方法及装置
CN115718792A (zh) 一种基于自然语义处理和深度学习的敏感信息提取方法
CN109815497B (zh) 基于句法依存的人物属性抽取方法
CN117828024A (zh) 一种插件检索方法、装置、存储介质及设备
CN117370980A (zh) 恶意代码检测模型生成及检测方法、装置、设备及介质
CN113568969A (zh) 信息抽取方法、装置、设备以及计算机可读存储介质
CN111104520B (zh) 一种基于人物身份的人物实体链接方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210316