CN115688108B - 一种webshell静态检测方法及系统 - Google Patents

一种webshell静态检测方法及系统 Download PDF

Info

Publication number
CN115688108B
CN115688108B CN202310005150.0A CN202310005150A CN115688108B CN 115688108 B CN115688108 B CN 115688108B CN 202310005150 A CN202310005150 A CN 202310005150A CN 115688108 B CN115688108 B CN 115688108B
Authority
CN
China
Prior art keywords
data set
webshell
sequence
graph
script
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
Application number
CN202310005150.0A
Other languages
English (en)
Other versions
CN115688108A (zh
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.)
Beijing ThreatBook Technology Co Ltd
Original Assignee
Beijing ThreatBook Technology 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 Beijing ThreatBook Technology Co Ltd filed Critical Beijing ThreatBook Technology Co Ltd
Priority to CN202310005150.0A priority Critical patent/CN115688108B/zh
Publication of CN115688108A publication Critical patent/CN115688108A/zh
Application granted granted Critical
Publication of CN115688108B publication Critical patent/CN115688108B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本申请实施例提供一种webshell静态检测方法及系统,涉及网络安全技术领域。该webshell静态检测方法包括:获取待训练脚本数据集;对待训练脚本数据集进行抽取处理,获得抽象语法树数据集和opcode序列数据集;对抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据;对opcode序列数据集进行数据处理,获得序列向量数据;对图向量数据和序列向量数据进行拼接并输入到预设二分类器中训练,获得检测模型;基于检测模型对待识别脚本进行检测,获得webshell静态检测结果。该webshell静态检测方法可以实现提高webshell的检测效率和检测准确性的技术效果。

Description

一种webshell静态检测方法及系统
技术领域
本申请涉及网络安全技术领域,具体而言,涉及一种webshell静态检测方法及系统。
背景技术
目前,webshell是黑客经常使用的一种恶意脚本,其目的是获得服务器的执行操作权限,常见的webshell编写语言有asp、jsp和php。比如执行系统命令、窃取用户数据、删除web页面、修改主页等,其危害不言而喻。黑客通常利用常见的漏洞,如SQL注入、远程文件包含(RFI,Remote File Inclusion)、FTP,甚至使用跨站点脚本攻击(XSS,Cross SiteScript Attack)等方式作为社会工程攻击的一部分,最终达到控制网站服务器的目的。根据webshell攻击过程有很多检测手段,而静态检测webshell脚本是应用最广且最有价值的检测方法。然而webshell攻击者会利用脚本语言的特性,绕过检测,使得检测有一定难度。
现有技术中,一种是基于抽象语法树的提取特征的机器学习检测方法,该技术实现的基本原理是:抽取代码脚本的抽象语法树(AST,Abstract Syntax Tree)以及文本特征,通过机器学习模型进行训练得到检测模型。第二种是解析脚本得到脚本的opcode序列,通过深度学习方法对序列进行时序分析训练得到检测模型。但是,第一类技术方案通过语法树和文本抽取特征,例如函数、字符串,但所有特征都是独立抽取的,没有注重函数与函数、与变量之间的关系,从而模型无法从代码底层的调用逻辑区别恶意脚本和正常脚本的,因此该检测方法有一定局限性;第二类技术方案通过opcode序列特征训练模型,opcode是比语法树更低一层级的反应代码执行的操作序列,表示的是脚本执行所调用的操作单元。但opcode序列较为抽象且不包含操作对象,而操作对象是决定逻辑恶意与否的关键信息,因此该检测方法也有一定局限性。即无论是第一类技术方案或第二类技术方案,均存在检测准确性低的问题。
发明内容
本申请实施例的目的在于提供一种webshell静态检测方法、系统、电子设备及计算机可读存储介质,可以实现提高webshell的检测效率和检测准确性的技术效果。
第一方面,本申请实施例提供了一种webshell静态检测方法,包括:
获取待训练脚本数据集,所述脚本数据集包括正常脚本和webshell恶意脚本,且所述正常脚本和所述webshell恶意脚本的语言一致;
对所述待训练脚本数据集进行抽取处理,获得抽象语法树数据集和opcode序列数据集;
对所述抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据;
对所述opcode序列数据集进行数据处理,获得序列向量数据;
对所述图向量数据和所述序列向量数据进行拼接并输入到预设二分类器中训练,获得检测模型;
基于所述检测模型对待识别脚本进行检测,获得webshell静态检测结果。
在上述实现过程中,该webshell静态检测方法通过解析待训练脚本数据集,获得抽象语法树数据集和opcode序列数据集,抽象语法树数据集通过图神经网络获得图向量数据,通过opcode序列数据集获得序列向量数据,基于图向量数据和序列向量数据进行拼接并输入到预设二分类器中训练,最终获得webshell的检测模型;从而,通过图向量数据和序列向量数据的拼接,抽象语法树和opcode序列两个数据源包含了程序最为底层的运行逻辑关系,并且抽象语法树和opcode序列两种较为底层的数据特征具有一定的相关性,结合二者训练,可以有效提高检测效率和检测准确性;同时,从抽象语法树和opcode序列两个维度数据出发获得更有效的操作信息,可以覆盖更多的检测场景;从而,该webshell静态检测方法可以实现提高webshell的检测效率和检测准确性的技术效果。
进一步地,在对所述抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据的步骤之前,所述方法还包括:
遍历所述抽象语法树数据集中的节点和边,并对遍历到的节点和边基于预设节点属性、预设边属性进行编码,构建邻接矩阵。
在上述实现过程中,可以通过遍历工具对抽象语法树数据集进行遍历,基于节点属性、边属性并对遍历到的节点和边进行编码,构建一个完整的邻接矩阵。
进一步地,在遍历所述抽象语法树数据集中的节点和边,并对遍历到的节点和边基于预设节点属性、预设边属性进行编码,构建邻接矩阵的步骤之后,所述方法还包括:
通过程序控制流图对所述邻接矩阵进行剪枝处理,生成简化邻接矩阵。
在上述实现过程中,使用程序控制流图对邻接矩阵进行剪枝处理,从而在邻接矩阵的基础上,对无意义的程序流进行剪枝,有效降低邻接矩阵的图复杂度,从而提高检测效率。
进一步地,对所述抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据的步骤,包括:
基于图注意力机制的图神经网络对所述简化邻接矩阵进行图表示学习,获得图向量数据。
进一步地,在对所述opcode序列数据集进行数据处理,获得序列向量数据的步骤之前,所述方法还包括:
对所述opcode序列数据集进行编码并截取补齐,获得预处理opcode序列数据集。
进一步地,对所述opcode序列数据集进行数据处理,获得序列向量数据的步骤,包括:
基于注意力机制的神经网络对所述预处理opcode序列数据集进行序列表征学习,获得序列向量数据。
在上述实现过程中,通过带有自注意力机制的深度学习算法(图注意力机制的图神经网络、注意力机制的神经网络),可以更好的学习到抽象语法树、opcode序列两个维度数据的相关性,提高检测效果。
第二方面,本申请实施例提供了一种webshell静态检测系统,包括:
获取模块,用于获取待训练脚本数据集,所述脚本数据集包括正常脚本和webshell恶意脚本,且所述正常脚本和所述webshell恶意脚本的语言一致;
抽取模块,用于对所述待训练脚本数据集进行抽取处理,获得抽象语法树数据集和opcode序列数据集;
图向量模块,用于对所述抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据;
序列向量模块,用于对所述opcode序列数据集进行数据处理,获得序列向量数据;
检测模型模块,用于对所述图向量数据和所述序列向量数据进行拼接并输入到预设二分类器中训练,获得检测模型;
检测模块,用于基于所述检测模型对待识别脚本进行检测,获得webshell静态检测结果。
进一步地,所述webshell静态检测系统还包括:
邻接矩阵模块,用于遍历所述抽象语法树数据集中的节点和边,并对遍历到的节点和边基于预设节点属性、预设边属性进行编码,构建邻接矩阵。
进一步地,所述webshell静态检测系统还包括:简化模块,用于通过程序控制流图对所述邻接矩阵进行剪枝处理,生成简化邻接矩阵。
进一步地,所述图向量模块具体用于:基于图注意力机制的图神经网络对所述简化邻接矩阵进行图表示学习,获得图向量数据。
进一步地,所述webshell静态检测系统还包括:序列编码模块,用于对所述opcode序列数据集进行编码并截取补齐,获得预处理opcode序列数据集。
进一步地,所述序列向量模块具体用于:基于注意力机制的神经网络对所述预处理opcode序列数据集进行序列表征学习,获得序列向量数据。
第三方面,本申请实施例提供的一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法的步骤。
第四方面,本申请实施例提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面任一项所述的方法。
第五方面,本申请实施例提供的一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面任一项所述的方法。
本申请公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本申请公开的上述技术即可得知。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种webshell静态检测方法的流程示意图;
图2为本申请实施例提供的另一种webshell静态检测方法的流程示意图;
图3为本申请实施例提供的webshell静态检测系统的结构框图;
图4为本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本申请实施例的目的在于提供一种webshell静态检测方法、系统、电子设备及计算机可读存储介质,可以应用于webshell的检测中;该webshell静态检测方法通过解析待训练脚本数据集,获得抽象语法树数据集和opcode序列数据集,抽象语法树数据集通过图神经网络获得图向量数据,通过opcode序列数据集获得序列向量数据,基于图向量数据和序列向量数据进行拼接并输入到预设二分类器中训练,最终获得webshell的检测模型;从而,通过图向量数据和序列向量数据的拼接,抽象语法树和opcode序列两个数据源包含了程序最为底层的运行逻辑关系,并且抽象语法树和opcode序列两种较为底层的数据特征具有一定的相关性,结合二者训练,可以有效提高检测效率和检测准确性;同时,从抽象语法树和opcode序列两个维度数据出发获得更有效的操作信息,可以覆盖更多的检测场景;从而,该webshell静态检测方法可以实现提高webshell的检测效率和检测准确性的技术效果。
请参见图1,图1为本申请实施例提供的一种webshell静态检测方法的流程示意图,该webshell静态检测方法包括如下步骤:
S100:获取待训练脚本数据集,脚本数据集包括正常脚本和webshell恶意脚本,且正常脚本和webshell恶意脚本的语言一致。
示例性地,待训练脚本数据集中包括两类脚本:正常脚本和webshell恶意脚本;其中,正常脚本和webshell恶意脚本需要保持语言一致,即正常脚本和webshell恶意脚本使用同一种编程语言进行编写。
S200:对待训练脚本数据集进行抽取处理,获得抽象语法树数据集和opcode序列数据集。
示例性地,基于待训练脚本数据集进行抽取,获得抽象语法树数据集和opcode序列数据集,从而结合待训练脚本数据集中的脚本代码的抽象语法树和opcode序列两种维度数据构建深度学习模型(检测模型)。
可选地,可以使用开源工具(如php_paer)抽取待训练脚本数据集对应的抽象语法树和opcode序列。
S300:对抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据。
S400:对opcode序列数据集进行数据处理,获得序列向量数据;
S500:对图向量数据和序列向量数据进行拼接并输入到预设二分类器中训练,获得检测模型。
示例性地,通过拼接图向量数据和序列向量数据两个向量,并输入到预设二分类器中训练得到检测模型,从而结合脚本代码的抽象语法树和opcode序列两种维度数据构建深度学习模型;由于图向量数据和序列向量数据两个数据源包含了程序最为底层的运行逻辑关系,且图向量数据和序列向量数据具有相关性,通过图向量数据和序列向量数据两者的结合,可以有效提高检测效率和检测准确性。
S600:基于检测模型对待识别脚本进行检测,获得webshell静态检测结果。
示例性地,该webshell静态检测方法通过解析待训练脚本数据集,获得抽象语法树数据集和opcode序列数据集,抽象语法树数据集通过图神经网络获得图向量数据,通过opcode序列数据集获得序列向量数据,基于图向量数据和序列向量数据进行拼接并输入到预设二分类器中训练,最终获得webshell的检测模型;从而,通过图向量数据和序列向量数据的拼接,抽象语法树和opcode序列两个数据源包含了程序最为底层的运行逻辑关系,并且抽象语法树和opcode序列两种较为底层的数据特征具有一定的相关性,结合二者训练,可以有效提高检测效率和检测准确性;同时,从抽象语法树和opcode序列两个维度数据出发获得更有效的操作信息,可以覆盖更多的检测场景;从而,该webshell静态检测方法可以实现提高webshell的检测效率和检测准确性的技术效果。
请参见图2,图2为本申请实施例提供的另一种webshell静态检测方法的流程示意图。
示例性地,在S300:对抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据的步骤之前,方法还包括:
S210:遍历抽象语法树数据集中的节点和边,并对遍历到的节点和边基于预设节点属性、预设边属性进行编码,构建邻接矩阵。
示例性地,可以通过遍历工具对抽象语法树数据集进行遍历,基于节点属性、边属性并对遍历到的节点和边进行编码,构建一个完整的邻接矩阵(即图数据集)。
示例性地,在S210:遍历抽象语法树数据集中的节点和边,并对遍历到的节点和边基于预设节点属性、预设边属性进行编码,构建邻接矩阵的步骤之后,方法还包括:
S220:通过程序控制流图对邻接矩阵进行剪枝处理,生成简化邻接矩阵。
示例性地,使用程序控制流图对邻接矩阵进行剪枝处理,从而在邻接矩阵的基础上,对无意义的程序流进行剪枝,有效降低邻接矩阵的图复杂度,从而提高检测效率。
示例性地,S300:对抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据的步骤,包括:
S301:基于图注意力机制的图神经网络对简化邻接矩阵进行图表示学习,获得图向量数据。
示例性地,在S400:对opcode序列数据集进行数据处理,获得序列向量数据的步骤之前,方法还包括:
S310:对opcode序列数据集进行编码并截取补齐,获得预处理opcode序列数据集。
示例性地,S400:对opcode序列数据集进行数据处理,获得序列向量数据的步骤,包括:
S401:基于注意力机制的神经网络对预处理opcode序列数据集进行序列表征学习,获得序列向量数据。
示例性地,通过带有自注意力机制的深度学习算法(图注意力机制的图神经网络、注意力机制的神经网络),可以更好的学习到抽象语法树、opcode序列两个维度数据的相关性,提高检测效果。
示例性地,现有技术对webshell脚本检测并不注重代码各个变量、函数的调用关系,这样的缺陷主要在于无法从代码底层逻辑检测恶意脚本,容易造成检测误报和检测逃逸,以及单从opcode序列无法获得更有效的操作信息,无法覆盖更多检测场景;本申请实施例提供的webshell静态检测方法,结合了抽象语法树数据集和opcode序列数据集两种维度特征,可以实现从代码的底层调用逻辑检测脚本。
在一些实施场景中,结合图1至图2所示的webshell静态检测方法,其具体应用流程步骤示例如下:
一、数据准备:
准备同种语言的恶意样本和正常样本数据集,本实例以PHP脚本为例;
二、使用开源工具解析抽象语法树:
本实例针对的是php语言,php-paser是抽象语法树提取的常规开源工具;如对于一段php代码:
1.<php
2.function test($foo)
3.{
4.   var_dump($foo)
5.};
使用php-paser抽取其抽象语法树(AST)如下:
1.array(
2.    0:Stmt_Function(
3.        byRef: false
4.        name: Identifier(
5.            name: test
6.        )
7.        params: array(
8.            0: Param(
9.                 type: null
10.                byRef: false
11.                variadic: false
12.                var: Expr_Variable(
13.                    name: foo
14.                )
15.                default: null
16.           )
17.       )
18.       returnType: null
19.       stmts: array(
20.            0: Stmt_Expression(
21.                expr: Expr_FuncCall(
22.                    name: Name(
23.                        parts: array(
24.                            0: var_dump
25.                        )
26.                    )
27.                    args: array(
28.                        0: Arg(
29.                            value: Expr_Variable(
30.                                name: foo
31.                            )
32.                            byRef: false
33.                            unpack: false
34.                        )
35.                    )
36.                )
37.            )
38.       )
39.   )
40.);
三、如PhpParserNodeStmt 是语句(statement)节点,PhpParserNodeExpr 是表达式(expression)节点,PhpParserNodeScalar 标量(Scalar)节点;通过不同节点类获得该类的信息。我们使用工具历边所有节点和边,定义节点类型、边类型并编码,构建一个完整的邻接矩阵m1。
四、利用工具生成改程序的程序控制流图,使用控制流图对原始图m1进行剪枝:
如对于一个具有包含多种执行流程的程序:
1.<php
2.$a=2;
3.if($a > 1){
4.  echo "$a > 1";
5.}
6.else {
7.  echo "$a <= 1"
8.};
在抽取其抽象语法树(AST)后,使用PHP-CFG工具抽取其控制流图,从而在邻接矩阵m1的基础上,对无意义的程序流进行剪枝,降低图的复杂度。
五、安装php-vld扩展组件,使用该组件抽取php opcode序列:
1.//命令行获取opcode
2.php -dvld.activate=1 -dvld.execute=0 test.php;
以及:
1.[root@localhost html]# /usr/local/php/bin/php -dvld.active=1hello.php
2.Branch analysis from position: 0
3.Return found
4.filename: /var/www/html/hello.php
5.function name: (null)
6.number of ops: 6
7.compiled vars: !0 = $a
8.line # op fetch ext return operands
9.-------------------------------------------------------------------
10. 2   0 ECHO                           'Hello+world'
11. 3   1 ADD                       ~0   1, 1
12.     2 ASSIGN                         !0, ~0
13. 4   3 ECHO                           !0
14. 6   4 RETURN                         1
15.     5* ZEND_HANDLE_EXCEPTION
16.Hello world2;
本实例使用python脚本调用该命令抽取opcode序列:
1.def get_opcode(file_name):
2.try:
3.# output = subprocess.check_output(['php.exe', '-dvld.active=1', '-dvld.execute=0', file_name], stderr=subprocess.STDOUT)
4. output = subprocess.run("php.exe -dvld.active=1 -dvld.execute=0 %s" % file_name,shell=True,stderr=subprocess.PIPE,encoding="utf-8")
5. sent = re.findall(r'\s(\b[A-Z_]+\b)\s', output.stderr)
6. return sent
7. except:
8.return None;
对序列进行编码,截取合适长度(一般以数据集90%长度截取);
六、使用带有图注意力机制的图神经网络对第4步的图数据集(邻接矩阵)进行图表示学习,该方法属于图神经网络的一种常规方法,细节不再进行赘述。
七、使用带有注意力机制的神经网络对第5步的序列数据集进行序列表征学习,该方法属于深度学习的一种常规方法,细节不在进行赘述。
八、将第六、七步的表征向量进行拼接进入到新的神经网络分类器中,以样本恶意与否为标签,使用交叉熵损失函数进行训练得到最终检测模型。
综上所述,本申请实施例提供的webshell静态检测方法,结合脚本代码的抽象语法树和opcode序列两种维度数据构建深度学习模型,由于两个数据源包含了程序最为底层的运行逻辑关系,并且两种较为底层的数据特征具有一定的相关性,可以结合起来训练提高检测效率;同时,在模型选择上也都使用了带有自注意力机制的深度学习算法,可以更好的学习到两个维度数据的相关性,提高检测效果。相比于现有方案,本申请实施例提供的webshell静态检测方法,至少具备以下有益效果:
(1)相较于常规的人工提取特征检测思路,本发明能够更全面的利用抽象语法树信息,使用图神经网络学习到代码底层的运行逻辑;
(2)使用了程序控制流图进行剪枝,降低了原始抽象语法树的复杂度,提高检测效率;
(3)将抽象语法树和opcode序列的表征信息结合起来,认为两者表达了代码最低层的运行逻辑,有一定的交互性可以更好的提高模型能力。
请参见图3,图3为本申请实施例提供的webshell静态检测系统的结构框图,该webshell静态检测系统包括:
获取模块100,用于获取待训练脚本数据集,脚本数据集包括正常脚本和webshell恶意脚本,且正常脚本和webshell恶意脚本的语言一致;
抽取模块200,用于对待训练脚本数据集进行抽取处理,获得抽象语法树数据集和opcode序列数据集;
图向量模块300,用于对抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据;
序列向量模块400,用于对opcode序列数据集进行数据处理,获得序列向量数据;
检测模型模块500,用于对图向量数据和序列向量数据进行拼接并输入到预设二分类器中训练,获得检测模型;
检测模块600,用于基于检测模型对待识别脚本进行检测,获得webshell静态检测结果。
示例性地,webshell静态检测系统还包括:
邻接矩阵模块,用于遍历抽象语法树数据集中的节点和边,并对遍历到的节点和边基于预设节点属性、预设边属性进行编码,构建邻接矩阵。
示例性地,webshell静态检测系统还包括:简化模块,用于通过程序控制流图对邻接矩阵进行剪枝处理,生成简化邻接矩阵。
示例性地,图向量模块300具体用于:基于图注意力机制的图神经网络对简化邻接矩阵进行图表示学习,获得图向量数据。
示例性地,webshell静态检测系统还包括:序列编码模块,用于对opcode序列数据集进行编码并截取补齐,获得预处理opcode序列数据集。
示例性地,序列向量模块400具体用于:基于注意力机制的神经网络对预处理opcode序列数据集进行序列表征学习,获得序列向量数据。
需要注意的是,本申请实施例提供的webshell静态检测系统与图1至图2所述的方法实施例相对应,为避免重复,此处不在赘述。
本申请还提供一种电子设备,请参见图4,图4为本申请实施例提供的一种电子设备的结构框图。电子设备可以包括处理器510、通信接口520、存储器530和至少一个通信总线540。其中,通信总线540用于实现这些组件直接的连接通信。其中,本申请实施例中电子设备的通信接口520用于与其他节点设备进行信令或数据的通信。处理器510可以是一种集成电路芯片,具有信号的处理能力。
上述的处理器510可以是通用处理器,包括中央处理器(CPU,Central ProcessingUnit)、网络处理器(NP,Network Processor)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器510也可以是任何常规的处理器等。
存储器530可以是,但不限于,随机存取存储器(RAM,Random Access Memory),只读存储器(ROM,Read Only Memory),可编程只读存储器(PROM ,Programmable Read-OnlyMemory),可擦除只读存储器(EPROM ,Erasable Programmable Read-Only Memory),电可擦除只读存储器(EEPROM ,Electric Erasable Programmable Read-Only Memory)等。存储器530中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器510执行时,电子设备可以执行上述图1至图2方法实施例涉及的各个步骤。
可选地,电子设备还可以包括存储控制器、输入输出单元。
所述存储器530、存储控制器、处理器510、外设接口、输入输出单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线540实现电性连接。所述处理器510用于执行存储器530中存储的可执行模块,例如电子设备包括的软件功能模块或计算机程序。
输入输出单元用于提供给用户创建任务以及为该任务创建启动可选时段或预设执行时间以实现用户与服务器的交互。所述输入输出单元可以是,但不限于,鼠标和键盘等。
可以理解,图4所示的结构仅为示意,所述电子设备还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。
本申请实施例还提供一种存储介质,所述存储介质上存储有指令,当所述指令在计算机上运行时,所述计算机程序被处理器执行时实现方法实施例所述的方法,为避免重复,此处不再赘述。
本申请还提供一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行方法实施例所述的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (7)

1.一种webshell静态检测方法,其特征在于,包括:
获取待训练脚本数据集,所述脚本数据集包括正常脚本和webshell恶意脚本,且所述正常脚本和所述webshell恶意脚本的语言一致;
对所述待训练脚本数据集进行抽取处理,获得抽象语法树数据集和opcode序列数据集;
对所述抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据;
对所述opcode序列数据集进行数据处理,获得序列向量数据;
对所述图向量数据和所述序列向量数据进行拼接并输入到预设二分类器中训练,获得检测模型;
基于所述检测模型对待识别脚本进行检测,获得webshell静态检测结果;
在对所述抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据的步骤之前,所述方法还包括:
遍历所述抽象语法树数据集中的节点和边,并对遍历到的节点和边基于预设节点属性、预设边属性进行编码,构建邻接矩阵;
在对所述opcode序列数据集进行数据处理,获得序列向量数据的步骤之前,所述方法还包括:
对所述opcode序列数据集进行编码并截取补齐,获得预处理opcode序列数据集。
2.根据权利要求1所述的webshell静态检测方法,其特征在于,在遍历所述抽象语法树数据集中的节点和边,并对遍历到的节点和边基于预设节点属性、预设边属性进行编码,构建邻接矩阵的步骤之后,所述方法还包括:
通过程序控制流图对所述邻接矩阵进行剪枝处理,生成简化邻接矩阵。
3.根据权利要求2所述的webshell静态检测方法,其特征在于,对所述抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据的步骤,包括:
基于图注意力机制的图神经网络对所述简化邻接矩阵进行图表示学习,获得图向量数据。
4.根据权利要求1所述的webshell静态检测方法,其特征在于,对所述opcode序列数据集进行数据处理,获得序列向量数据的步骤,包括:
基于注意力机制的神经网络对所述预处理opcode序列数据集进行序列表征学习,获得序列向量数据。
5.一种webshell静态检测系统,其特征在于,包括:
获取模块,用于获取待训练脚本数据集,所述脚本数据集包括正常脚本和webshell恶意脚本,且所述正常脚本和所述webshell恶意脚本的语言一致;
抽取模块,用于对所述待训练脚本数据集进行抽取处理,获得抽象语法树数据集和opcode序列数据集;
图向量模块,用于对所述抽象语法树数据集进行数据处理,通过图神经网络获得图向量数据;
序列向量模块,用于对所述opcode序列数据集进行数据处理,获得序列向量数据;
检测模型模块,用于对所述图向量数据和所述序列向量数据进行拼接并输入到预设二分类器中训练,获得检测模型;
检测模块,用于基于所述检测模型对待识别脚本进行检测,获得webshell静态检测结果;
所述webshell静态检测系统还包括:
邻接矩阵模块,用于遍历所述抽象语法树数据集中的节点和边,并对遍历到的节点和边基于预设节点属性、预设边属性进行编码,构建邻接矩阵;
序列编码模块,用于对opcode序列数据集进行编码并截取补齐,获得预处理opcode序列数据集。
6.一种电子设备,其特征在于,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述的webshell静态检测方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1至4任一项所述的webshell静态检测方法。
CN202310005150.0A 2023-01-04 2023-01-04 一种webshell静态检测方法及系统 Active CN115688108B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310005150.0A CN115688108B (zh) 2023-01-04 2023-01-04 一种webshell静态检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310005150.0A CN115688108B (zh) 2023-01-04 2023-01-04 一种webshell静态检测方法及系统

Publications (2)

Publication Number Publication Date
CN115688108A CN115688108A (zh) 2023-02-03
CN115688108B true CN115688108B (zh) 2023-04-21

Family

ID=85057004

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310005150.0A Active CN115688108B (zh) 2023-01-04 2023-01-04 一种webshell静态检测方法及系统

Country Status (1)

Country Link
CN (1) CN115688108B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116611065B (zh) * 2023-05-25 2024-03-01 北京百度网讯科技有限公司 脚本的检测方法、深度学习模型的训练方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7581212B2 (en) * 2004-01-13 2009-08-25 Symphony Services Corp. Method and system for conversion of automation test scripts into abstract test case representation with persistence
CN113190849B (zh) * 2021-04-28 2023-03-03 重庆邮电大学 Webshell脚本检测方法、装置、电子设备及存储介质
CN113239357B (zh) * 2021-07-13 2021-09-10 中国人民解放军国防科技大学 一种Webshell检测方法、存储介质及系统

Also Published As

Publication number Publication date
CN115688108A (zh) 2023-02-03

Similar Documents

Publication Publication Date Title
CN111639344B (zh) 一种基于神经网络的漏洞检测方法及装置
CN107885999B (zh) 一种基于深度学习的漏洞检测方法及系统
Kang et al. Assessing the generalizability of code2vec token embeddings
Li et al. Deeppayload: Black-box backdoor attack on deep learning models through neural payload injection
CN109033764B (zh) 反混淆处理方法及终端、计算机设备
CN113190849B (zh) Webshell脚本检测方法、装置、电子设备及存储介质
CN109492355B (zh) 一种基于深度学习的软件抗分析方法和系统
CN112579469A (zh) 一种源代码缺陷检测方法与装置
CN112685738B (zh) 一种基于多级投票机制的恶意混淆脚本静态检测方法
CN115688108B (zh) 一种webshell静态检测方法及系统
CN103559447A (zh) 一种基于病毒样本特征的检测方法、检测装置及检测系统
JP4951416B2 (ja) プログラム検証方法、プログラム検証装置
CN114911711A (zh) 一种代码缺陷分析方法、装置、电子设备及存储介质
EP3379443A1 (en) Method and computer device to deobfuscate a source code
CN112688966A (zh) webshell检测方法、装置、介质和设备
CN110610088A (zh) 一种基于php的webshell检测方法
CN109902487B (zh) 基于应用行为的Android应用恶意性检测方法
KR20210045122A (ko) 기호 실행을 사용하는 소프트웨어 테스트 입력 생성 장치 및 방법
CN113971284B (zh) 基于JavaScript的恶意网页检测方法、设备及计算机可读存储介质
CN114626061A (zh) 网页木马检测的方法、装置、电子设备及介质
US10394698B2 (en) Javascript path enumeration
CN116401670A (zh) 一种无源码场景下的漏洞补丁存在性检测方法及系统
CN111475812B (zh) 一种基于数据可执行特征的网页后门检测方法与系统
Utkin et al. Evaluating the impact of source code parsers on ML4SE models
Wrench et al. Detecting derivative malware samples using deobfuscation-assisted similarity analysis

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
GR01 Patent grant
GR01 Patent grant