CN115577361A - 一种改进的基于图神经网络的PHP Web shell检测方法 - Google Patents

一种改进的基于图神经网络的PHP Web shell检测方法 Download PDF

Info

Publication number
CN115577361A
CN115577361A CN202211577262.5A CN202211577262A CN115577361A CN 115577361 A CN115577361 A CN 115577361A CN 202211577262 A CN202211577262 A CN 202211577262A CN 115577361 A CN115577361 A CN 115577361A
Authority
CN
China
Prior art keywords
php
web shell
shell detection
neural network
opcode
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.)
Granted
Application number
CN202211577262.5A
Other languages
English (en)
Other versions
CN115577361B (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.)
Sichuan University
Original Assignee
Sichuan University
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 University filed Critical Sichuan University
Priority to CN202211577262.5A priority Critical patent/CN115577361B/zh
Publication of CN115577361A publication Critical patent/CN115577361A/zh
Application granted granted Critical
Publication of CN115577361B publication Critical patent/CN115577361B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种改进的基于图神经网络的PHP Web shell检测方法,包括下述步骤:搭建PHP Web shell检测模型,得到PHP样本源文件的Opcode,使用Word2vec对其进行词向量化,并使用Opcode构造控制流图,进而将其输入门控图神经网络学习节点特征,并依次通过两层一维卷积层、Flatten层及全连接层,最终使用激活函数输出检测结果;从网络中获取样本,划分样本为训练集和测试集,并将其输入到PHP Web shell检测模型进行训练,得到目标PHP Web shell检测模型;利用目标PHP Web shell检测模型进行PHP代码的检测;结合操作码不会被注释和一些混淆机制影响的优点和控制流图对程序控制流信息准确表达的特性,解决了过去研究中粗粒度处理PHP代码信息的问题。

Description

一种改进的基于图神经网络的PHP Web shell检测方法
技术领域
本发明涉及Web安全、Web shell检测技术等领域,具体的说,是一种改进的基于图神经网络的PHP Web shell检测方法。
背景技术
Webshell是由Web脚本语言编写的恶意代码,是目前攻击者最常用的Web攻击手段之一,已经成为互联网安全的主要威胁。由于注入漏洞,Web服务器成为目前网络安全攻击中最常见的攻击目标。在过去的几年中,注入漏洞在OWASP的前十位中名列前茅。攻击者利用注入漏洞等将Webshell上传到Web服务器,使其可以长期进行远程命令执行、操作机密数据和入侵Web服务器。根据国家互联网应急中心(CNCERT/CC)每周发布的安全报告显示,每周的境内被植入后门的网站数量几乎都在增加。Webshell还被应用于高级持续性威胁(APT)和一些犯罪集团、威胁组织中,导致的重大网络安全事件给个人、企业和国家造成了极大的损失。
Webshell产生的重大影响引起了业界与学术界的广泛关注,研究者们对Webshell的检测方法进行了大量的努力与尝试。目前针对恶意Webshell的传统检测方法分为静态检测和动态检测两类。静态检测方法主要对恶意Webshell的文本内容进行分析,通常利用特征匹配、统计特征阈值等方式进行检测。动态检测是一种检测恶意Webshell执行过程特征的方法,往往需要实时分析以及对大量的通信流量等进行检测。然而攻击者可以通过对函数隐藏和字符串编码等操作绕过这些传统的基于规则的检测方法。为了弥补这一缺陷,研究者们将机器学习技术应用到恶意Web shell的检测当中。相较于之前传统的检测方法,机器学习方法的检测效果有了不错的表现。但目前这些研究方法存在以下不足:
1)仍然依赖于人工提取特征,对专家能力和先验知识的要求很高,无法识别混淆或新型的Webshell,且会消耗大量的人力和时间,随着知识库的增加,还会导致检测速度变慢,具有很强的局限性;
2)缺乏对于Webshell代码语义信息的考虑,当攻击者通过例如打乱代码顺序、插入无用代码和变量等方式编写Web shell时,将很容易逃避检测,从而导致对混淆样本检测的能力较弱。
发明内容
本发明的目的在于提供一种改进的基于图神经网络的PHP Web shell检测方法,采用基于Opcode的控制流图提取方法,从PHPWebshell源代码的Opcode中提取出的控制流图对源代码的图结构信息进行表达和描述;利用改进的基于门控图神经网络的PHPWebshell检测模型,结合Opcode不受注释和一些混淆机制所影响的特点,将基于Opcode提取的控制流图输入神经网络,同时由于图神经网络能够避免图数据压缩到向量空间时丢失的结构信息,本发明提出的检测模型能够大幅度提升对混淆样本的检测能力。
本发明通过下述技术方案实现:一种改进的基于图神经网络的PHP Web shell检测方法,包括下述步骤:
1)搭建PHP Web shell检测模型,得到PHP样本源文件的Opcode,使用Word2vec对其进行词向量化,并使用Opcode构造控制流图,进而将其输入门控图神经网络学习节点特征,并依次通过两层一维卷积层、Flatten层及全连接层,最终使用激活函数输出检测结果;
2)从网络中获取样本,划分样本为训练集和测试集,并将其输入到PHP Web shell检测模型进行训练,得到目标PHP Web shell检测模型;
3)利用目标PHP Web shell检测模型进行PHP代码的检测。
进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述步骤1)包括下述具体步骤:
1.1)使用phpvld扩展获得PHP样本源文件的Opcode,并使用Word2vec模型对Opcode进行词向量化,向量的维度为所得到的不重复的Opcode的个数;
1.2)根据基本块的构造规则和添加控制流边的规则,使用Opcode构造控制流图;
1.3)将构造好的控制流图输入到门控图神经网络中,利用门控递归图层来学习节点特征;
1.4)将节点特征继续输入到两个具有最大池化层的一维卷积层,进行图级任务相关的特征学习,同时改善出现过拟合的现象;
1.5)将步骤1.4)的输出结果输入到Flatten层中压平,进行多维的输入一维化;
1.6)将Flatten层的输出结果输入到全连接层,使用dropout算法减少冗余,增加各个特征之间的正交性,可以比较有效地缓解过拟合的发生;
1.7)使用Sigmoid激活函数输出最终分类结果,完成PHP Web shell检测模型的搭建。
进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述基本块的构造规则包括:
规则A:程序的第一条指令是入口;
规则B:每个基本块有且只有一个入口和一个出口;
规则C:任何跳转指令后面的指令是新的基本块的入口。
进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述添加控制流边的规则包括:
规则a:从一个基本块的末尾到另一个基本块的起始存在一个有条件或无条件的跳转;
规则b:后一个基本块紧跟着前一个基本块的原始指令顺序;初始的一个基本块以一个无条件跳转结尾。
进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述控制流图包括皆为多维数组结构的节点信息和边信息,其中,节点信息包括PHP代码行数、Opcode索引号、Opcode名、Opcode名对应的操作的变量位置,与该Opcode关联的额外数据,返回到的Opcode索引号,具体操作值;边信息表示哪些基本块之间相互连接。
进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述利用门控递归图层来学习节点特征,具体为:使用门控循环单元来更新节点状态,且节点状态更新函数为:
Figure 100002_DEST_PATH_IMAGE002
其中,t代表某一时刻,v代表某一节点,u代表该节点的邻居节点,
Figure 100002_DEST_PATH_IMAGE004
代表该节点vt时刻的隐藏状态,
Figure 100002_DEST_PATH_IMAGE006
代表相邻边的权重;即,每个节点vt+1时刻的隐藏状态依赖于t时刻该节点的隐藏状态及其邻居节点u的信息。
进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:两个具有最大池化层的一维卷积层的卷积核大小分别为5*5和3*3,卷积核数量分别为20和10,池化层采样窗口设置为2。
进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述Sigmoid激活函数具体为:
Figure 100002_DEST_PATH_IMAGE008
其中,当x趋近于负无穷时,f(x)趋近于0;当x趋近于正无穷时,f(x)趋近于1;当x=0时,f(x)=1/2。
进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述步骤2)包括下述具体步骤:
2.1)从网络中获取相同数量的PHP良性样本和恶意Webshell样本;
2.2)将步骤2.1)所获得的两种样本按照同比例混合后按照4:1的比例划分训练集与测试集;
2.3)将训练集和测试集输入到已构建好的PHP Web shell检测模型中进行训练;
2.4)训练完成后,得到目标PHP Web shell检测模型。
进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述步骤3)包括下述步骤:
3.1)将待检测PHP代码输入到目标PHP Web shell检测模型中进行检测;
3.2)根据输出结果判定待检测PHP代码是否为恶意Webshell。
本发明与现有技术相比,具有以下优点及有益效果:
本发明提出了一种基于Opcode的控制流图提取方法,结合操作码不会被注释和一些混淆机制影响的优点和控制流图对程序控制流信息准确表达的特性,解决了过去研究中粗粒度处理PHP代码信息的问题,通过图结构对代码进行信息表达,可以细致完整地得到代码中的控制流信息,能够准确有效地描述程序的执行行为。
本发明提出了一种改进的基于门控图神经网络的PHPWebshell检测模型,利用从Opcode中提取出的控制流图作为特征输入到神经网络中对模型进行训练,很大程度地提高了检测混淆Webshell样本的准确率。
目前研究中缺乏对于PHPWebshell源代码的语义信息以及代码的执行顺序的考虑,只将其视为与自然语言类似的平面序列,忽略了源代码比自然语言更具有结构性和逻辑性的特点,无法准确地描述Web Shell的执行行为,从而导致使用混淆方式编写的Webshell容易成功逃避检测。针对此问题,本发明提出了一种基于Opcode的控制流图提取方法,通过从PHPWebshell源代码的Opcode中提取出的控制流图对源代码的图结构信息进行表达和描述。
现有的PHPWebshell检测方法在混淆Webshell(混淆Webshell:如通过打乱代码顺序、插入无用代码和变量等混淆方式生成的Webshell)检测上的效果不理想,为解决的如何减少PHPWebshell混淆绕过等方式对检测模型的影响,本发明采用改进的基于门控图神经网络的PHPWebshell检测模型,结合Opcode不受注释和一些混淆机制所影响的特点,将基于Opcode提取的控制流图输入神经网络,同时由于图神经网络能够避免图数据压缩到向量空间时丢失的结构信息,本发明提出的PHPWebshell检测模型能够大幅度提升对混淆样本的检测能力。
由于Opcode是PHP代码在编译与执行之间的一种中间表示,它不会被注释和一些混淆机制所影响,可以将代码内部的操作详细地表示出来,因此本发明选择使用Opcode对PHPWebshell检测进行研究。控制流图中包含着程序完整的执行顺序等信息,可以准确地反映出程序的执行过程。
图结构数据相较于顺序数据而言是程序语义的一种更自然的表现,图神经网络模型可以直接接受图结构数据作为输入,能够避免结构图数据压缩到向量空间时丢失的结构信息,因此,图神经网络模型更适合处理图结构数据。为此,本发明提出了一种改进的基于门控图神经网络的PHPWebshell检测模型,将从Opcode中提取出的控制流图结构输入到图神经网络中进行训练,得到本发明的训练模型(目标PHP Web shell检测模型)。
附图说明
图1为本发明所述PHP Web shell检测模型示意图。
图2为本发明所述PHP Web shell检测模型训练流程图。
图3为本发明所述PHP代码检测流程。
图4为通过Flatten层将多维输入一维化的示意图。
图5为一个标准的全连接神经网络示意图。
图6为图5应用dropout算法后的神经网络示意图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。因此,以下对在附图中提供的本发明的实施方式的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
名词解释:
Opcode:Opcode是PHP代码在编译与执行之间的一种中间表示,它不会被注释和一些混淆机制所影响,可以将代码内部的操作详细地表示出来。
控制流图:控制流图中包含着程序完整的执行顺序等信息,可以准确地反映出程序的执行过程。
Word2vec模型:Word2vec是一种词向量模型,它可以将单词转换成向量形式,计算出向量空间上的相似度。
基本块:指程序顺序执行的语句序列。
门控递归图层:包含一个GRU(Gated Recurrent Unit,门控循环单元),用于更新节点状态,包含一个重置门和一个更新门。
卷积层:由若干卷积单元组成,用于提取输入的不同特征。
最大池化层:对卷积层所提取的信息做进一步降维,减少计算量,同时改善过拟合现象。
Flatten层:Flatten层用于扁平参数,将多维的输入一维化,常用在从卷积层到全连接层的过渡,如图4所示,以Flatten层将一个3*3的矩阵向量转换成9*1的一维向量为例。
全连接层:通过权值矩阵整合卷积层或池化层中具有类别区分性的局部信息。
dropout算法:在深度学习网络的训练过程中,对一个标准的全连接神经网络(如图5所示)单元按照一定的概率将其暂时从网络中丢弃,同时移除该单元的输入与输出,使得训练阶段中神经网络变“瘦”,应用后如图6所示,可以避免神经网络结构过于复杂,从而较有效地缓解过拟合的发生。
Sigmoid激活函数:在神经网络中常被用作阈值函数,可以将变量映射到0与1之间。其具体公式为:
Figure DEST_PATH_IMAGE008A
其中,当x趋近于负无穷时,f(x)趋近于0;当x趋近于正无穷时,f(x)趋近于1;当x=0时,f(x)=1/2。
PHP Web shell检测模型与目标PHP Web shell检测模型两者结构相同,其区别为,后者是将前者通过训练集和测试集训练好后的模型结构,其中训练集和测试集皆由相同数量的PHP良性样本和恶意PHPWebshell样本构成,而训练集内两种样本总量与测试集内两种样本总量的比值为4:1。
实施例1:
本发明设计出一种改进的基于图神经网络的PHP Web shell检测方法,采用基于Opcode的控制流图提取方法,从PHPWebshell源代码的Opcode中提取出的控制流图对源代码的图结构信息进行表达和描述;利用改进的基于门控图神经网络的PHPWebshell检测模型,结合Opcode不受注释和一些混淆机制所影响的特点,将基于Opcode提取的控制流图输入神经网络,同时由于图神经网络能够避免图数据压缩到向量空间时丢失的结构信息,本发明提出的检测模型能够大幅度提升对混淆样本的检测能力,如图1~3所示,包括下述步骤:
1)搭建PHP Web shell检测模型,得到PHP样本源文件的Opcode,使用Word2vec对其进行词向量化,并使用Opcode构造控制流图,进而将其输入门控图神经网络学习节点特征,并依次通过两层一维卷积层、Flatten层及全连接层,最终使用激活函数输出检测结果;
2)从网络中获取样本,划分样本为训练集和测试集,并将其输入到PHP Web shell检测模型进行训练,得到目标PHP Web shell检测模型;
3)利用目标PHP Web shell检测模型进行PHP代码的检测。
实施例2:
本实施例是在上述实施例的基础上进一步优化,与前述技术方案相同之处在此不再赘述,如图1~图3所示,进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述步骤1)包括下述具体步骤:
1.1)使用phpvld扩展获得PHP样本源文件的Opcode,并使用Word2vec模型对Opcode进行词向量化,向量的维度为所得到的不重复的Opcode的个数;例如,使用“php -dvld.active=1 ./test.php”语句即可从test.php中获取到其Opcode,利用Word2vec模型的get_vector()函数可以获得每个Opcode的词向量化结果;
1.2)根据基本块的构造规则和添加控制流边的规则,使用Opcode构造控制流图;
1.3)将构造好的控制流图输入到门控图神经网络中,利用门控递归图层来学习节点特征;
1.4)将节点特征继续输入到两个具有最大池化层(Max_pooling)的一维卷积层(Conv1d),进行图级任务相关的特征学习,同时改善出现过拟合的现象;
1.5)将步骤1.4)的输出结果输入到Flatten层中压平,进行多维的输入一维化;
1.6)将Flatten层的输出结果输入到全连接层,使用dropout算法减少冗余,增加各个特征之间的正交性,可以比较有效地缓解过拟合的发生;
1.7)使用Sigmoid激活函数输出最终分类结果,良性PHP样本输出结果为0,恶意Webshell样本输出结果为1,完成PHP Web shell检测模型的搭建。
实施例3:
本实施例是在上述任一实施例的基础上进一步优化,与前述技术方案相同之处在此不再赘述,如图1~图3所示,进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述基本块的构造规则包括:
规则A:程序的第一条指令是入口;
规则B:每个基本块有且只有一个入口和一个出口;
规则C:任何跳转指令后面的指令是新的基本块的入口。
实施例4:
本实施例是在上述任一实施例的基础上进一步优化,与前述技术方案相同之处在此不再赘述,如图1~图3所示,进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述添加控制流边的规则包括:
规则a:从一个基本块的末尾到另一个基本块的起始存在一个有条件或无条件的跳转;
规则b:后一个基本块紧跟着前一个基本块的原始指令顺序;初始的一个基本块以一个无条件跳转结尾。
实施例5:
本实施例是在上述任一实施例的基础上进一步优化,与前述技术方案相同之处在此不再赘述,如图1~图3所示,进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:一个PHP文件中包含多个小的控制流图,而每个构造好的所述控制流图包括皆为多维数组结构的节点信息和边信息,其中,节点信息包括PHP代码行数、Opcode索引号、Opcode名、Opcode名对应的操作的变量位置,与该Opcode关联的额外数据,返回到的Opcode索引号,具体操作值,这些节点信息均通过使用phpvld扩展输出得到;边信息表示哪些基本块之间相互连接。
实施例6:
本实施例是在上述任一实施例的基础上进一步优化,与前述技术方案相同之处在此不再赘述,如图1~图3所示,进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述利用门控递归图层来学习节点特征,具体为:使用门控循环单元来更新节点状态,且节点状态更新函数为:
Figure DEST_PATH_IMAGE002A
其中,t代表某一时刻,v代表某一节点,u代表该节点的邻居节点,
Figure DEST_PATH_IMAGE004A
代表该节点vt时刻的隐藏状态,
Figure DEST_PATH_IMAGE006A
代表相邻边的权重;即,每个节点vt+1时刻的隐藏状态依赖于t时刻该节点的隐藏状态及其邻居节点u的信息。
实施例7:
本实施例是在上述任一实施例的基础上进一步优化,与前述技术方案相同之处在此不再赘述,如图1~图3所示,进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:两个具有最大池化层(Max_pooling)的一维卷积层(Conv1d)的卷积核大小分别为5*5和3*3,卷积核数量分别为20和10,池化层采样窗口设置为2。
实施例8:
本实施例是在上述任一实施例的基础上进一步优化,与前述技术方案相同之处在此不再赘述,如图1~图3所示,进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述Sigmoid激活函数具体为:
Figure DEST_PATH_IMAGE008AA
其中,当x趋近于负无穷时,f(x)趋近于0;当x趋近于正无穷时,f(x)趋近于1;当x=0时,f(x)=1/2。
实施例9:
本实施例是在上述任一实施例的基础上进一步优化,与前述技术方案相同之处在此不再赘述,如图1~图3所示,进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述步骤2)包括下述具体步骤:
2.1)从网络中获取相同数量的PHP良性样本(优选的为3500个)和恶意Webshell样本(优选的为3500个);
2.2)将步骤2.1)所获得的两种样本按照同比例混合后按照4:1的比例划分训练集与测试集;
2.3)将训练集和测试集输入到已构建好的PHP Web shell检测模型中进行训练;
2.4)训练完成后,得到目标PHP Web shell检测模型。
实施例10:
本实施例是在上述任一实施例的基础上进一步优化,与前述技术方案相同之处在此不再赘述,如图1~图3所示,进一步为更好地实现本发明所述的一种改进的基于图神经网络的PHP Web shell检测方法,特别采用下述设置方式:所述步骤3)包括下述步骤:
3.1)将待检测PHP代码输入到目标PHP Web shell检测模型中进行检测;
3.2)根据输出结果判定待检测PHP代码是否为恶意Webshell;输出结果为0代表该PHP文件为良性脚本,输出结果为1代表该PHP文件为恶意Webshell脚本。
实施例11:
一种改进的基于图神经网络的PHP Web shell检测方法,按其流程分为三个部分:
第一部分,构建如图1所示的PHP Web shell检测模型,包括下述具体步骤:
步骤1:利用phpvld扩展从PHP源代码中获取Opcode,并使用Word2vec模型进行词向量化。例如,使用“php -dvld.active=1 ./test.php”语句即可从test.php中获取到其Opcode,利用Word2vec模型的get_vector()函数可以获得每个Opcode的词向量化结果;
步骤2:根据控制流图中基本块的构造规则和添加控制流边的规则,使用Opcode构造控制流图,具体的基本块构造规则如下:
规则1:程序的第一条指令是入口;
规则2:每个基本块有且只有一个入口和一个出口;
规则3:任何跳转指令后面的指令是新的基本块的入口。
添加控制流边的规则如下:
规则1:从基本块A的末尾到基本块B的起始存在一个有条件或无条件的跳转;
规则2:基本块B紧跟着基本块A的原始指令顺序(除了基本块A以一个无条件跳转结尾)。
步骤3:由于一个PHP文件中包含多个小的控制流图,每个构造好的控制流图都具有节点信息和边信息,节点信息是每个控制流图中的基本块所包含的Opcode的基础信息(包括:PHP代码行数,Opcode索引号,Opcode名,Opcode名对应的操作的变量位置,与该Opcode关联的额外数据,返回到的Opcode索引号,具体操作值。这些信息均通过使用phpvld扩展输出得到),边信息表示哪些基本块之间相互连接。节点信息和边信息均为多维数组结构。接下来,将构造好的控制流图输入到门控图神经网络中,利用门控递归图层来学习节点特征,利用门控递归图层来学习节点特征,具体为:
使用门控循环单元来更新节点状态,其状态更新函数如下:
Figure DEST_PATH_IMAGE002AA
其中,t代表某一时刻,v代表某一节点,u代表该节点的邻居节点,
Figure DEST_PATH_IMAGE004AA
代表该节点vt时刻的隐藏状态,
Figure DEST_PATH_IMAGE006AA
代表相邻边的权重;即,每个节点vt+1时刻的隐藏状态依赖于t时刻该节点的隐藏状态及其邻居节点u的信息。
步骤4:将节点特征继续输入到两个具有最大池化层(Max_pooling)的一维卷积层(Conv1d),用以学习图级任务相关的特征,同时降低数据维度,改善出现过拟合的现象,两个一维卷积层的卷积核大小分别为5*5和3*3,卷积核数量分别为20和10,池化层采样窗口设置为2;
步骤5:将输出结果继续输入到Flatten层中压平,将多维的输入一维化;
步骤6:将Flatten层的输出结果输入到全连接层,使用dropout算法减少冗余,增加各个特征之间的正交性,可以比较有效地缓解过拟合的发生;
步骤7:使用Sigmoid激活函数输出最终分类结果,良性PHP样本输出结果为0,恶意Webshell样本输出结果为1;其中,Sigmoid激活函数具体为:
Figure DEST_PATH_IMAGE008AAA
其中,当x趋近于负无穷时,f(x)趋近于0;当x趋近于正无穷时,f(x)趋近于1;当x=0时,f(x)=1/2。
第二部分,如图2所示,将图1所示的PHP Web shell检测模型进行训练,得到目标PHP Web shell检测模型,包括下述流程:
步骤1(从网络中获取PHP良性样本和恶意PHPWebshell样本):从Github开源库中收集PHP良性样本和恶意PHPWebshell样本,样本数量比例为1:1,优选的PHP良性样本和恶意PHPWebshell样本各3500个;
步骤2:按照4:1的比例划分训练集和测试集;即2800个PHP良性样本和2800个恶意PHPWebshell样本构成训练集,700个PHP良性样本和700个恶意PHPWebshell样本构成测试集;
步骤3(输入到已构建好的模型中训练):将这些样本(训练集和测试集)输入到图1所示构建好的PHPWebshell检测模型中进行训练;
步骤4(得到目标Webshell检测模型):得到目标PHP Webshell检测模型。
第三部分,如图3所示,利用目标PHP Webshell检测模型进行PHP代码的检测,包括下述流程:
步骤1(将待检测PHP代码输入到已训练好的模型中):获取待检测PHP源代码,利用图1所述构建并经过训练后的PHP Webshell检测模型(目标PHP Webshell检测模型)对所述控制流图结构进行识别;
步骤2(判定待检测PHP代码是否为Webshell):根据输出结果判定待检测PHP代码是否为恶意Webshell,输出结果为0代表该PHP文件为良性脚本,输出结果为1代表该PHP文件为恶意Webshell脚本。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。

Claims (10)

1.一种改进的基于图神经网络的PHP Web shell检测方法,其特征在于:包括下述步骤:
1)搭建PHP Web shell检测模型,得到PHP样本源文件的Opcode,使用Word2vec对其进行词向量化,并使用Opcode构造控制流图,进而将其输入门控图神经网络学习节点特征,并依次通过两层一维卷积层、Flatten层及全连接层,最终使用激活函数输出检测结果;
2)PHP Web shell检测模型训练:从网络中获取样本,划分样本为训练集和测试集,并将其输入到PHP Web shell检测模型进行训练,得到目标PHP Web shell检测模型;
3)PHP代码检测:利用目标PHP Web shell检测模型进行PHP代码的检测。
2.根据权利要求1所述的一种改进的基于图神经网络的PHP Web shell检测方法,其特征在于:所述步骤1)包括下述具体步骤:
1.1)使用phpvld扩展获得PHP样本源文件的Opcode,并使用Word2vec模型对Opcode进行词向量化,向量的维度为所得到的不重复的Opcode的个数;
1.2)根据基本块的构造规则和添加控制流边的规则,使用Opcode构造控制流图;
1.3)将构造好的控制流图输入到门控图神经网络中,利用门控递归图层来学习节点特征;
1.4)将节点特征继续输入到两个具有最大池化层的一维卷积层,进行图级任务相关的特征学习,同时改善出现过拟合的现象;
1.5)将步骤1.4)的输出结果输入到Flatten层中压平,进行多维的输入一维化;
1.6)将Flatten层的输出结果输入到全连接层,使用dropout算法减少冗余,增加各个特征之间的正交性,缓解过拟合的发生;
1.7)使用Sigmoid激活函数输出最终分类结果,完成PHP Web shell检测模型的搭建。
3. 根据权利要求2所述的一种改进的基于图神经网络的PHP Web shell检测方法,其特征在于:所述基本块的构造规则包括:
规则A:程序的第一条指令是入口;
规则B:每个基本块有且只有一个入口和一个出口;
规则C:任何跳转指令后面的指令是新的基本块的入口。
4. 根据权利要求2所述的一种改进的基于图神经网络的PHP Web shell检测方法,其特征在于:所述添加控制流边的规则包括:
规则a:从一个基本块的末尾到另一个基本块的起始存在一个有条件或无条件的跳转;
规则b:后一个基本块紧跟着前一个基本块的原始指令顺序;初始的一个基本块以一个无条件跳转结尾。
5. 根据权利要求2所述的一种改进的基于图神经网络的PHP Web shell检测方法,其特征在于:所述控制流图包括皆为多维数组结构的节点信息和边信息,其中,节点信息包括PHP代码行数、Opcode索引号、Opcode名、Opcode名对应的操作的变量位置,与该Opcode关联的额外数据,返回到的Opcode索引号,具体操作值;边信息表示哪些基本块之间相互连接。
6.根据权利要求2所述的一种改进的基于图神经网络的PHP Web shell检测方法,其特征在于:所述利用门控递归图层来学习节点特征,具体为:使用门控循环单元来更新节点状态,且节点状态更新函数为:
Figure DEST_PATH_IMAGE002
其中,t代表某一时刻,v代表某一节点,u代表该节点的邻居节点,
Figure DEST_PATH_IMAGE004
代表该节点vt时刻的隐藏状态,
Figure DEST_PATH_IMAGE006
代表相邻边的权重;即,每个节点vt+1时刻的隐藏状态依赖于t时刻该节点的隐藏状态及其邻居节点u的信息。
7. 根据权利要求2所述的一种改进的基于图神经网络的PHP Web shell检测方法,其特征在于:两个具有最大池化层的一维卷积层的卷积核大小分别为5*5和3*3,卷积核数量分别为20和10,池化层采样窗口设置为2。
8.根据权利要求2所述的一种改进的基于图神经网络的PHP Web shell检测方法,其特征在于:所述Sigmoid激活函数具体为:
Figure DEST_PATH_IMAGE008
其中,当x趋近于负无穷时,f(x)趋近于0;当x趋近于正无穷时,f(x)趋近于1;当x=0时,f(x)=1/2。
9. 根据权利要求1~8任一项所述的一种改进的基于图神经网络的PHP Web shell检测方法,其特征在于:所述步骤2)包括下述具体步骤:
2.1)从网络中获取相同数量的PHP良性样本和恶意Webshell样本;
2.2)将步骤2.1)所获得的两种样本按照同比例混合后按照4:1的比例划分训练集与测试集;
2.3)将训练集和测试集输入到已构建好的PHP Web shell检测模型中进行训练;
2.4)训练完成后,得到目标PHP Web shell检测模型。
10. 根据权利要求1~8任一项所述的一种改进的基于图神经网络的PHP Web shell检测方法,其特征在于:所述步骤3)包括下述步骤:
3.1)将待检测PHP代码输入到目标PHP Web shell检测模型中进行检测;
3.2)根据输出结果判定待检测PHP代码是否为恶意Webshell。
CN202211577262.5A 2022-12-09 2022-12-09 一种改进的基于图神经网络的PHP Web shell检测方法 Active CN115577361B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211577262.5A CN115577361B (zh) 2022-12-09 2022-12-09 一种改进的基于图神经网络的PHP Web shell检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211577262.5A CN115577361B (zh) 2022-12-09 2022-12-09 一种改进的基于图神经网络的PHP Web shell检测方法

Publications (2)

Publication Number Publication Date
CN115577361A true CN115577361A (zh) 2023-01-06
CN115577361B CN115577361B (zh) 2023-04-07

Family

ID=84590756

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211577262.5A Active CN115577361B (zh) 2022-12-09 2022-12-09 一种改进的基于图神经网络的PHP Web shell检测方法

Country Status (1)

Country Link
CN (1) CN115577361B (zh)

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109413028A (zh) * 2018-08-29 2019-03-01 集美大学 基于卷积神经网络算法的sql注入检测方法
CN111259394A (zh) * 2020-01-15 2020-06-09 中山大学 一种基于图神经网络的细粒度源代码漏洞检测方法
CN111260033A (zh) * 2020-01-15 2020-06-09 电子科技大学 一种基于卷积神经网络模型的网站后门检测方法
CN112541180A (zh) * 2020-12-16 2021-03-23 北京理工大学 一种基于语法特征和语义特征的软件安全漏洞检测方法
CN113360915A (zh) * 2021-06-09 2021-09-07 扬州大学 基于源代码图表示学习的智能合约多漏洞检测方法及系统
CN113821798A (zh) * 2021-08-23 2021-12-21 中山大学 一种基于异构图神经网络的以太坊非法账户检测方法及系统
CN113935033A (zh) * 2021-09-13 2022-01-14 北京邮电大学 特征融合的恶意代码家族分类方法、装置和存储介质
US20220066752A1 (en) * 2020-09-01 2022-03-03 X Development Llc Matching graphs generated from source code
CN114327483A (zh) * 2021-12-31 2022-04-12 华中科技大学 图张量神经网络模型建立方法及源代码语义识别方法
CN114491529A (zh) * 2021-12-20 2022-05-13 西安电子科技大学 基于多模态神经网络的安卓恶意应用程序识别方法
CN114611115A (zh) * 2022-03-18 2022-06-10 北京工业大学 一种基于混合图神经网络的软件源码漏洞检测方法
US20220244953A1 (en) * 2020-05-22 2022-08-04 The George Washington University Binary code similarity detection system
CN114942879A (zh) * 2022-03-31 2022-08-26 天桐(苏州)网络科技有限公司 一种基于图神经网络的源代码漏洞检测与定位方法
CN115017513A (zh) * 2022-05-31 2022-09-06 电子科技大学 一种基于人工智能的智能合约漏洞检测方法
WO2022224246A1 (en) * 2021-04-19 2022-10-27 Deepkeep Ltd. Device, system, and method for protecting machine learning, artificial intelligence, and deep learning units
CN115357909A (zh) * 2022-10-19 2022-11-18 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种用于代码漏洞检测的全局信息感知图神经网络系统

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109413028A (zh) * 2018-08-29 2019-03-01 集美大学 基于卷积神经网络算法的sql注入检测方法
CN111259394A (zh) * 2020-01-15 2020-06-09 中山大学 一种基于图神经网络的细粒度源代码漏洞检测方法
CN111260033A (zh) * 2020-01-15 2020-06-09 电子科技大学 一种基于卷积神经网络模型的网站后门检测方法
US20220244953A1 (en) * 2020-05-22 2022-08-04 The George Washington University Binary code similarity detection system
US20220066752A1 (en) * 2020-09-01 2022-03-03 X Development Llc Matching graphs generated from source code
CN112541180A (zh) * 2020-12-16 2021-03-23 北京理工大学 一种基于语法特征和语义特征的软件安全漏洞检测方法
WO2022224246A1 (en) * 2021-04-19 2022-10-27 Deepkeep Ltd. Device, system, and method for protecting machine learning, artificial intelligence, and deep learning units
CN113360915A (zh) * 2021-06-09 2021-09-07 扬州大学 基于源代码图表示学习的智能合约多漏洞检测方法及系统
CN113821798A (zh) * 2021-08-23 2021-12-21 中山大学 一种基于异构图神经网络的以太坊非法账户检测方法及系统
CN113935033A (zh) * 2021-09-13 2022-01-14 北京邮电大学 特征融合的恶意代码家族分类方法、装置和存储介质
CN114491529A (zh) * 2021-12-20 2022-05-13 西安电子科技大学 基于多模态神经网络的安卓恶意应用程序识别方法
CN114327483A (zh) * 2021-12-31 2022-04-12 华中科技大学 图张量神经网络模型建立方法及源代码语义识别方法
CN114611115A (zh) * 2022-03-18 2022-06-10 北京工业大学 一种基于混合图神经网络的软件源码漏洞检测方法
CN114942879A (zh) * 2022-03-31 2022-08-26 天桐(苏州)网络科技有限公司 一种基于图神经网络的源代码漏洞检测与定位方法
CN115017513A (zh) * 2022-05-31 2022-09-06 电子科技大学 一种基于人工智能的智能合约漏洞检测方法
CN115357909A (zh) * 2022-10-19 2022-11-18 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种用于代码漏洞检测的全局信息感知图神经网络系统

Also Published As

Publication number Publication date
CN115577361B (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
CN111428044B (zh) 多模态获取监管识别结果的方法、装置、设备及存储介质
Ma et al. Detect rumors on twitter by promoting information campaigns with generative adversarial learning
CN111159395B (zh) 基于图神经网络的谣言立场检测方法、装置和电子设备
Wu et al. A network intrusion detection method based on semantic Re-encoding and deep learning
CN110135157B (zh) 恶意软件同源性分析方法、系统、电子设备及存储介质
Li et al. A novel deep framework for dynamic malware detection based on API sequence intrinsic features
CN106709345A (zh) 基于深度学习方法推断恶意代码规则的方法、系统及设备
CN111382438B (zh) 基于多尺度卷积神经网络的恶意软件检测方法
Hou et al. BERT-based Chinese relation extraction for public security
CN112668013B (zh) 一种面向Java源码的语句级模式探索的漏洞检测方法
CN115146279A (zh) 程序漏洞检测方法、终端设备及存储介质
CN111400713B (zh) 基于操作码邻接图特征的恶意软件族群分类方法
CN115344863A (zh) 一种基于图神经网络的恶意软件快速检测方法
Fonseca et al. Model-agnostic approaches to handling noisy labels when training sound event classifiers
Lin et al. Towards interpreting ML-based automated malware detection models: A survey
Liu et al. Improve interpretability of neural networks via sparse contrastive coding
Zhang et al. Extracting optimal explanations for ensemble trees via logical reasoning
CN115577361B (zh) 一种改进的基于图神经网络的PHP Web shell检测方法
CN116361788A (zh) 一种基于机器学习的二进制软件漏洞预测方法
Ge et al. Explainable cyber threat behavior identification based on self-adversarial topic generation
KR20200040032A (ko) 양방향 lstm―attention 기반 한국어 게시글 분류 방법
CN112800435A (zh) 基于深度学习的sql注入检测方法
Dai et al. Anticoncept drift method for malware detector based on generative adversarial network
CN112733144A (zh) 一种基于深度学习技术的恶意程序智能检测方法
KR20210142443A (ko) 사이버 공간에서 실시간 공격 탐지를 위한 시간에 따른 지속적인 적응형 학습을 제공하는 방법 및 시스템

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