CN109948340A - 一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法 - Google Patents

一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法 Download PDF

Info

Publication number
CN109948340A
CN109948340A CN201910238084.5A CN201910238084A CN109948340A CN 109948340 A CN109948340 A CN 109948340A CN 201910238084 A CN201910238084 A CN 201910238084A CN 109948340 A CN109948340 A CN 109948340A
Authority
CN
China
Prior art keywords
sample
php
words
gram
file
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
CN201910238084.5A
Other languages
English (en)
Other versions
CN109948340B (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.)
Jimei University
Original Assignee
Jimei 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 Jimei University filed Critical Jimei University
Priority to CN201910238084.5A priority Critical patent/CN109948340B/zh
Publication of CN109948340A publication Critical patent/CN109948340A/zh
Application granted granted Critical
Publication of CN109948340B publication Critical patent/CN109948340B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Machine Translation (AREA)

Abstract

本发明提供了一种卷积神经网络和XGBoost相结合的PHP‑Webshell检测方法,对于能够解析成操作码的PHP文件,采用PHP编译工具将PHP文件解析成统一的操作码文件;用以解决PHP语法灵活和变异复杂的问题,随后通过词汇表映射的方法,将解析成的操作码文件转换成机器学习可以识别的索引号序列样本,进而通过卷积神经网络模型对索引号序列样本进行分类检测,并输出检测结果;对于无法解析成操作码的PHP文件,采用N‑Gram词袋模型的方法提取PHP文件中保留有上下文语义关系的关键词组,形成关键词组序列;并将提取的关键词组序列表示成统一的基于N‑Gram词袋模型维度的关键词组词频样本;通过XGBoost模型对关键词组词频样本进行训练检测,判断样本中是否含有恶意代码,并输出检测结果。

Description

一种卷积神经网络和XGBoost相结合的PHP-Webshell检测 方法
技术领域
本发明涉及网络安全领域,特别地,涉及一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法。
背景技术
WebShell是一种以ASP、PHP、JSP、CGI等网页文件形式存在的命令执行环境。网络攻击者往往利用WebShell远程控制网站服务器,实现上传下载文件、查看数据库、执行任意程序命令等操作。检测与防范WebShell攻击,是网络安全领域面临的一个重要问题。
在实现WebShell的众多Web编程语言中,PHP语言具有简便易行、语法灵活、变异性强、隐蔽性强的特性,常常绕过现有的防火墙技术,为了解决PHP文件变异性强的问题,现有技术常利用词法、语法分析来解决,但是其词法、语法分析后形成的词汇表,表现形式繁杂不利于检测,且对于部分网页文件中WebShell代码以片段形式混有其他编程语言(各国自己的文字:中文、韩文等),容易导致解析出错;或者字符编码方式不一致,导致无法识别解析;对于PHP-Webshell检测的准确制造了不少难题。因此,业内急需一种快速、高效的基于机器学习的PHP-Webshell检测方法。
发明内容
本发明目的在于提供一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,以解决背景技术中存在的问题。
为实现上述目的,本发明提供了一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,包括以下步骤:
步骤S1、输入待测PHP文件样本;
步骤S2、PHP文件操作码解析判定,通过PHP编译工具将待测PHP文件解析为操作码文件;如果PHP文件操作码解析成功,则依次执行步骤S3和S4;如果PHP文件操作码解析失败,则依次执行步骤S5、S6和S7;
步骤S3、词汇表映射,词汇表映射可以将解析成功的操作码文件统一映射为特征向量,同时将特征向量转换成对应的索引号序列,实现样本的标准化表示;建立词汇表模型的过程具体包括以下步骤:
步骤A1、获取词汇表训练集:采集n个解析成功的PHP网页文件样本:Di,i=1,2,3….n其中包括:含有WebShell恶意代码的黑样本、仅包含正常的网页代码的白样本;对每个样本标定为黑或白:yi,i=1,2,3….n;将标定黑样本和白样本作为训练集{Di,yi},i=1,2,3….n;
步骤A2、文本分词:对每个文件样本进行文本分词:Di={Wi1,Wi2,Wi3,…Wim},第i个样本由m个关键词组成;
步骤A3、统计词频:遍历所有的样本,提取每个关键词在训练集样本中出现的频率,将所有词按词频大小降序排列;
步骤A4、收录关键词,建立词汇表:根据A3步骤统计的词频,过滤最小或最大词频后,收录剩余的关键词,建立词汇表;
L={IDj,Wj},j=1,2,…N;
词汇表由收录的关键词Wj和关键词对应的索引IDj组成,词汇表的规模N为可设置的参数;
步骤S4、卷积神经网络模型的Webshell检测;将重新表示PHP文件的索引号序列样本输入到卷积神经网络中训练,得到用于检测WebShell的神经网络模型;通过模型中神经网络的逐层卷积计算,检测判别待测索引号序列样本中是否存在WebShell恶意代码,并输出检测结果;
步骤S5、N-Gram词袋模型,N-Gram词袋模型可以通过N-Gram分词将待测PHP文件中连续N个词组合成一个关键词组;并能将所有PHP文件中所有的关键词组收录到词袋中,且收录过程中记录每个关键词组在各PHP文件中出现的频率;生成N-Gram词袋模型;具体包括以下步骤:
步骤B1、获取N-Gram词袋模型训练集:采集n个PHP网页文件样本:Qi,i=1,2,3….n其中包括:含有WebShell恶意代码的黑样本、仅包含正常的网页代码的白样本;对每个样本标定为黑或白:yi,i=1,2,3….n;将样本及其标定作为训练集{Qi,yi},i=1,2,3….n;
步骤B2、N-Gram分词:对训练集中样本文件进行N-Gram分词,一个样本文件Q由M个词W组成,Q={W1,W2,W3,…WM};对Q进行N-Gram分词,N的取值为大于等于1的正整数;
Q′={′W1+W2+,…+WN′,′W2+W3+,…+WN+1′,……′WM-N+1+WM-N+2+…+WM′}
N-Gram分词将文件中连续N个词组合成一个关键词组,且关键词组中可以保留样本文件中的上下文信息,有利于后续的智能语义分析;
步骤B3、生成N-Gram词袋模型,遍历训练集中所有PHP文件,将文件中所有N-Gram关键词组收录到词袋中,建立N-Gram词袋模型;收录过程中记录每个关键词组在各文件中出现的频率;在确定N-Gram词袋模型时,根据关键词组的词频过滤一部分关键词组,控制词袋模型规模,进而提高运算效率;
步骤S6、提取样本的词袋特征表示,利用步骤S5生成的N-Gram词袋模型,重新表示待测样本,将样本中的N-Gram关键词组与N-Gram词袋模型中的关键词组对应,根据N-Gram词袋模型中关键词组的顺序重新表示样本,样本特征维度为N-Gram词袋模型维度,每个样本特征维度中的数值为N-Gram关键词组词频数,形成基于N-Gram词袋模型维度的关键词组词频样本;
步骤S7、XGBoost模型的Webshell检测,将步骤S6中获得的基于N-Gram词袋模型维度的关键词组词频样本输入到XGBoost模型中,根据XGBoost模型中分类树的分支节点,对样本中各特征维度进行计算判别,依据XGBoost模型中目标函数最优的判定指标,智能检测该样本是否含有WebShell恶意代码,并输出检测结果。
优选的,一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,PHP编译工具包括词法分析器和语法分析器,PHP文件操作码解析过程具体为:
词法分析,扫描PHP文件,将PHP代码转换为语言片段;
语法解析,将PHP语言片段转换成简单而有意义的表达式;
操作码编译,将PHP表达式编译成可执行的操作码。
优选的,一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,卷积神经网络模型包括一个输入层、四个并列的卷积层+池化层、一个全连接层和一个输出层。
优选的,一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,XGBoost模型表示为K棵回归树的形式:
其中F为回归树,xi第i个样本;
XGBoost模型的目标函数为:
其中l()为损失函数,表示模型与训练数据yi的拟合程度:
Ω()为XGBoost模型的复杂度函数,表示生成的分类树模型的复杂度:
其中T为叶子节点的个数,w为叶子节点对应的权值,γ和λ为可调参数;
优选的,一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,XGBoost模型的本质是回归树的生长,生长过程伴随着回归树节点的分裂,分裂的原则是增益化最大化;增益计算方法为:
其中下标L表示左子树,下标R表示右子树。
本发明具有以下有益效果:
本发明提供了一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,首先对待测PHP文件进行判定,对于能够解析成操作码的PHP文件,采用PHP编译工具将PHP文件解析成统一的操作码文件;用以解决PHP语法灵活和变异复杂的问题,随后通过词汇表映射的方法,将解析成的操作码文件转换为索引号序列样本,进而通过卷积神经网络模型对索引号序列样本进行分类检测,并输出检测结果;对于无法解析成操作码的PHP文件,采用N-Gram分词提取出PHP文件中保留有上下文语义关系的关键词组,形成关键词组序列;并将提取的关键词组序列通过N-Gram词袋模型表示成统一的基于N-Gram词袋模型维度的关键词组词频样本;通过XGBoost模型对关键词组词频样本进行训练检测,判断关键词组词频样本中是否含有恶意代码,并输出检测结果。
本发明提供了一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,针对可以解析成操作码文件的PHP文件,通过本发明的操作码解析、文本分词和词汇表映射将变异性强复杂性高的PHP文件转换成了简单的索引号序列,大大提高了卷积神经网络模型训练效率;本发明卷积神经网络模型的结构包括一个输入层、四个并列的卷积层+池化层、一个全连接层和一个输出层;设置四个并列的卷积层可以并行提取PHP文件的四种上下文语义特征,在卷积神经网络模型训练时,有利于提高判断恶意代码的准确性。
本发明提供了一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,针对无法解析成功成操作码文件的PHP文件采用N-Gram词袋模型和XGBoost模型的方法;通过本发明N-Gram词袋模型处理将复杂的PHP文件转换成了统一形式的基于N-Gram词袋模型维度的关键词组词频样本;大大降低了XGBoost模型的运算复杂度,提高了运算效率;有效避免了样本的规模庞大致使算法执行运算效率低的问题;同时本发明的方法具备良好的检测准确率等检测效果。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法的流程图;
图2是图1中卷积神经网络模型的结构示意图;
图3是图2中卷积神经网络模型中卷积层运算原理图;
图4是图2中卷积神经网络模型中池化层运算原理图;
具体实施方式
以下结合附图对本发明的实施例进行详细说明,但是本发明可以根据权利要求限定和覆盖的多种不同方式实施。
在实施PHP-WebShell文件检测之前,需要事先训练形成基于PHP文件操作码解析成功的词汇表和卷积神经网络模型以及基于PHP文件操作码解析失败的N-Gram词袋模型和XGBoost模型;词汇表用于后续操作码样本的特征向量表示以及将特征向量映射成相应的索引号序列,卷积神经网络模型用于索引号序列样本的智能检测;词汇表和卷积神经网络模型的训练效果和选取的训练集样本有着直接关系;N-Gram词袋模型用于PHP网页文件的N-Gram分词以及将N-Gram分词后提取的PHP文件中保留有上下文语义关系的关键词组序列表示成基于N-Gram词袋模型维度的关键词组词频样本;XGBoost模型用于基于N-Gram词袋模型维度的关键词组词频样本的训练检测;N-Gram词袋模型和XGBoost模型的训练效果和选取的训练集样本有着直接关系。
基于PHP文件操作码解析成功的词汇表映射的方法包括下述步骤:
步骤A1、获取词汇表训练集,采集n个PHP网页文件样本(PHP文件):Pi,i=1,2,3….n其中包括:含有WebShell恶意代码的黑样本、仅包含正常的网页代码的白样本。对每个样本标定为黑或白:yi,i=1,2,3….n。将样本及其标定作为训练集{Pi,yi},i=1,2,3….n
例如,1个PHP文件样本部分节选P1:
P1样本
PHP文件操作码解析,利用词法分析器和语法分析器将PHP文件解析为操作码文件,具体过程为:词法分析器扫描PHP文件,将PHP代码转换为语言片段;语法解析器,将PHP语言片段转换成简单而有意义的表达式;通过操作码编译将PHP表达式编译成可执行的操作码;
Di=T(Pi)
其中Pi为训练集中第i个PHP样本文件,Di为解析后的操作码文件,T()是PHP词法、语法解析过程;具体为:
词法分析,扫描PHP文件,将PHP代码转换为语言片段;
语法解析,将PHP语言片段转换成简单而有意义的表达式;
操作码编译,将PHP表达式编译成可执行的操作码。
重复PHP文件操作码解析过程,将训练集{Pi,yi}转换为{Di,yi},i=1,2,3….n,简写为{Di};
例如,将上述PHP样本部分节选P1解析为操作码文件样本D1:
D1样本
步骤A2、文本分词,每个文件样本Di={Wi1,Wi2,Wi3,…Wim},表示为第i个样本由m个关键词组成;对样本Di进行文本分词,按照空格、回车和分隔符等进行分词;例如:将操作码样本D1按照空格分词,D1则可以表示为:
{FETCH_R,,FETCH_DIM_R,ECHO,ECHO,RETURN};
步骤A3、统计词频,遍历训练集{Di}所有的样本,提取每个关键词在训练集样本中出现的次数,将所有词按词频大小降序排列;
例如,D1样本表示为:
步骤A4、收录关键词,建立词汇表,依据统计的词频,按照实际情况,过滤最小或者最大词频,收录剩余的关键词,形成词汇表,并生成与词汇表中关键词相对应的索引序号;
L={(IDj:Wj)},j=1,2,…N;
词汇表由收录的关键词Wj和关键词对应的索引IDj组成,词汇表的规模N为可设置的参数。
例如,D1表示为:
训练样本表示,利用词汇表L重新表示训练样本,将样本中的关键词W映射为索引ID;
例如,D1重新表示为
{3,4,1,1,2};
通过词汇表映射将复杂的PHP文件映射成为了简单的索引号序列,大大降低了样本的复杂度,有效提高了后续卷积神经网络模型训练的运算效率。
本发明的卷积神经网络模型的结构包括一个输入层、四个并列的卷积层+池化层、一个全连接层和一个输出层,详见图2;四个并列的卷积层可以并行提取PHP文件的四种上下文语义特征,大大提高恶意代码判断的准确性;
卷积层:
Output(So×T0)=W(Sc×Ti×T0)*Input(Si×Ti)+b;
Output:卷积计算的输出张量;
Input:卷积计算的输入张量;
W:卷积神经网络参数,与Input进行卷积运算;
Sc:卷积计算核;
b:贝叶斯参数向量,参与机器学习;
So:输出的特征序列,To:输出的通道数;
Si:输入的特征序列,Ti:输入的通道数;
卷积层与池化层的计算核与计算步长设置参数如表1所示:
表1卷积神经网络模型参数
卷积神经网络分层 计算核 计算步长
卷积层1 2 1
池化层1 2 2
卷积层2 3 1
池化层2 2 2
卷积层3 4 1
池化层3 2 2
卷积层4 5 1
池化层4 2 2
卷积层的运算如图3所示,卷积核为2,意味着每次运算是取序列中的连续2个数值和卷积核进行卷积运算;步长为1,意味着下一次卷积运算,在序列中所取连续2个数的起点间隔为1。
池化层采用max-pooling方法,池化层对卷积层输出的特征序列进行下采样,降低神经网络的计算复杂度,同时防止卷积神经网络模型过拟合;
Out=max(inx:inx+p-1);
池化层运算原理参照图4,是以表1中设置的计算核为2,步长为2,遍历输入的特征序列,将序列中连续p个点下采样输出为1个点,输出的值是p个点中的最大值。
训练卷积神经网络模型,将重新表示的训练样本送入到结构如图2以及计算核、计算步长如表1所示的卷积神经网络中训练,得到智能学习的卷积神经网络模型;至此,基于操作码解析的PHP-WebShell智能检测方法所需的词汇表和卷积神经网络模型训练完成。
基于PHP文件操作码解析失败的N-Gram词袋模型建立方法,包括以下步骤:
步骤B1、获取N-Gram词袋模型训练集:采集n个PHP网页文件样本:Qi,i=1,2,3….n其中包括:含有WebShell恶意代码的黑样本、仅包含正常的网页代码的白样本;对每个样本标定为黑或白:yi,i=1,2,3….n;将样本及其标定作为训练集{Qi,yi},i=1,2,3….n;如有Q1样本(白样本)和Q2样本(黑样本);
Q1白样本
Q2黑样本
步骤B2、N-Gram分词:对训练集中样本文件进行N-Gram分词,一个样本文件Q由M个词W组成,Q={W1,W2,W3,…WM};对Q进行N-Gram分词,N-Gram分词中的N的取值为大于等于1的正整数;
Q′={′W1+W2+,…+WN′,′W2+W3+,…+WN+1′,……′WM-N+1+WM-N+2+…+WM′}
N-Gram分词将文件中连续N个词组合成一个关键词组,且关键词组中可以保留样本文件中的上下文信息,有利于后续的智能语义分析;如对Q1样本和Q2样本进行N-Gram分词,首先过滤掉样本文件中的回车‘\r’、换行‘\n’等分隔符,将整个样本文件连接成一个字符串,以便后续分词;后续采用(2,4)N-Gram分词,既分别将文件中所有相邻的2个词、3个词和4个词组合成关键词组;
步骤B3、生成N-Gram词袋模型,遍历训练集中所有N-Gram分词后的PHP文件,将文件中N-Gram分词后的关键词组收录到词袋中,建立N-Gram词袋模型;收录过程中记录每个关键词组在各文件中出现的频率;在确定N-Gram词袋模型时,根据关键词组的词频过滤一部分关键词组,控制词袋模型规模,进而提高运算效率;如对Q1样本和Q2样本经过N-Gram分词处理后的关键词组收录到词袋中,部分词袋节选如下表2:
表2:Q1样本和Q2样本词袋节选
词袋中关键词组的序号是按首字母排序的选择;
本发明中步骤S6、提取样本的词袋特征表示,具体表现为根据生成的N-Gram词袋模型,重新表示训练集中的样本,将样本中的N-Gram关键词组与N-Gram词袋模型中的关键词组对应,根据N-Gram词袋模型中关键词组的顺序表示样本,样本特征维度为N-Gram词袋模型维度(N-Gram词袋规模大小),每个样本特征维度中的数值为N-Gram关键词组词频数(关键词组在样本中出现的次数),将样本表示为基于N-Gram词袋模型维度的关键词组词频样本;。如:Q1样本和Q2样本的词袋特征表示如下:
Q1样本的词袋特征表示(加序号)
Q2样本的词袋特征表示(加序号)
上述Q1和Q2样本词袋表示中只列举了N-Gram词袋模型维度(N-Gram词袋规模大小)中664个关键词组;Q1和Q2词袋样本表示中加有序号是为了更好的理解和说明样本的词袋表示,实际操作过程中是不存在序号的,332号对应的关键词组‘efile’,在样本1中没有出现,所以样本1中相应位置为0,(332:--0),0就是该关键词组词频数;而‘efile’在样本2中出现了1次,所以样本2中相应位置为1(332:--1)。
本发明中的XGBoost模型表现形式为K棵回归树的形式:
其中F为回归树,xi第i个样本;
XGBoost模型的目标函数为:
其中l()为损失函数,表示模型与训练数据yi的拟合程度:
Ω()为XGBoost模型的复杂度函数,表示生成的分类树模型的复杂度:
其中T为叶子节点的个数,w为叶子节点对应的权值,γ和λ为可调参数;
XGBoost模型的本质是回归树的生长,生长过程伴随着回归树节点的分裂,分裂的原则是增益化最大化;增益计算方法为:
其中下标L表示左子树,下标R表示右子树。
需要说明的是,XGBoost模型中的目标函数、损失函数、复杂度函数以及增益算法均是参照现有XGBoost模型中选择。
在词汇表和卷积神经网络模型以及N-Gram词袋模型和XGBoost模型构建构成完成后,本发明一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,包括以下步骤:
步骤S1、输入待测样本,待测样本为T,样本为PHP网页文本格式;
步骤S2、对待测样本T进行操作码解析判定,采用PHP编译工具对待测样本T进行操作码解析,如果待测样本T操作码解析成功,则依次执行步骤S3词汇表映射中的步骤A2文本分词和步骤A4中的训练样本表示以及步骤S4;具体内容如下:
步骤A3:待测样本文本分词,T={W1,W2,W3,…WM},设样本由M个关键词W组成;
步骤A4:待测样本表示,利用训练好的词汇表L重新表示待测样本T,将样本中的关键词W映射为索引ID;
步骤S4、卷积神经网络模型的Webshell检测,将重新表示后的待测样本送入设置好的卷积神经网络模型中训练,通过模型中神经网络的逐层卷积计算,检测判别待测样本中是否存在WebShell恶意代码,并输出检测结果。
如果PHP文件操作码解析失败或者无法解析,则依次执行步骤S5N-Gram词袋模型中的步骤B2N-Gram词袋模型和步骤S6与步骤S7;具体内容如下:
步骤B2:N-Gram分词,对待测样本T进行N-Gram分词,T={W1,W2,W3,…WM},设样本由M个关键词组成;N-Gram分词中的N的取值为大于等于1的正整数,N分别取2、3和4;
T′={′W1+W2+,…+WN′,′W2+W3+,…+WN+1′,……′WM-N+1+WM-N+2+…+WM′}
步骤S6:提取样本的词袋特征表示,通过生成的N-Gram词袋模型,重新表示训练集中的样本,将样本中的关键词组与N-Gram词袋模型中的关键词组对应,根据N-Gram词袋模型中关键词组的顺序重新表示样本,将样本表示为基于N-Gram词袋模型维度的关键词组词频样本;
步骤S7、XGBoost模型的Webshell检测,将根据步骤S6中重新表示的基于N-Gram词袋模型维度的关键词组词频样本输入到XGBoost模型中训练,根据XGBoost模型中分类树的分支节点,对样本中各特征维度进行计算判别,依据XGBoost模型中目标函数最优的判定指标,智能检测该样本是否含有WebShell恶意代码,并输出检测结果。
另外,本发明一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,对预设的20776个正常样本和15623个异常样本进行检测试验,相较于其他不同的单一检测方法检测,结果如下表3:
从表中可以看出,采用本发明中单一使用N-Gram词袋模型和XGBoost模型的方法的各项检测效果排名第一,且本发明提供的检测方法的各项检测效果与排名第一的方法的检测效果非常接近,且在检测的实际过程中,单一使用N-Gram词袋模型和XGBoost模型的方法,形成的N-Gram词袋规模、关键词组规模较为庞大,导致算法执行的运算效率较低;因此,本发明提供了一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,针对可以解析成操作码文件的PHP文件采用词汇表映射、文本分词和卷积神经网络模型的方法,对于无法解析成功成操作码文件的PHP文件采用采用N-Gram词袋模型和XGBoost模型的方法,既具有良好的检测准确率、精准率,又具有高效的运算效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,其特征在于,包括以下步骤:
步骤S1、输入待测PHP文件样本;
步骤S2、PHP文件操作码解析判定,通过PHP编译工具将待测PHP文件解析为操作码文件;如果PHP文件操作码解析成功,则依次执行步骤S3和S4;如果PHP文件操作码解析失败,则依次执行步骤S5、S6和S7;
步骤S3、词汇表映射,词汇表映射可以将解析成功的操作码文件统一映射为特征向量,同时将特征向量转换成对应的索引号序列,实现样本的标准化表示;建立词汇表模型的过程具体包括以下步骤:
步骤A1、获取词汇表训练集:采集n个解析成功的PHP网页文件样本:Di,i=1,2,3....n其中包括:含有WebShell恶意代码的黑样本、仅包含正常的网页代码的白样本;对每个样本标定为黑或白:yi,i=1,2,3....n;将标定黑样本和白样本作为训练集{Di,yi},i=1,2,3....n;
步骤A2、文本分词:对每个文件样本进行文本分词:Di={Wi1,Wi2,Wi3,…Wim},第i个样本由m个关键词组成;
步骤A3、统计词频:遍历所有的样本,提取每个关键词在训练集样本中出现的频率,将所有词按词频大小降序排列;
步骤A4、收录关键词,建立词汇表:根据A3步骤统计的词频,过滤最小或最大词频后,收录剩余的关键词,建立词汇表;
L={IDj,Wj},j=1,2,…N;
词汇表由收录的关键词Wj和关键词对应的索引IDj组成,词汇表的规模N为可设置的参数;
步骤S4、卷积神经网络模型的Webshell检测检测;将重新表示PHP文件的索引号序列样本输入到卷积神经网络中训练,得到用于检测WebShell的神经网络模型;通过模型中神经网络的逐层卷积计算,检测判别待测索引号序列样本中是否存在WebShell恶意代码,并输出检测结果;
步骤S5、N-Gram词袋模型,N-Gram词袋模型可以通过N-Gram分词将待测PHP文件中连续N个词组合成一个关键词组;并能将所有PHP文件中所有的关键词组收录到词袋中,且收录过程中记录每个关键词组在各PHP文件中出现的频率;生成N-Gram词袋模型;具体包括以下步骤:
步骤B1、获取N-Gram词袋模型训练集:采集n个PHP网页文件样本:Qi,i=1,2,3....n其中包括:含有WebShell恶意代码的黑样本、仅包含正常的网页代码的白样本;对每个样本标定为黑或白:yi,i=1,2,3....n;将样本及其标定作为训练集{Qi,yi},i=1,2,3....n;
步骤B2、N-Gram分词:对训练集中样本文件进行N-Gram分词,一个样本文件Q由M个词W组成,Q={W1,W2,W3,…WM};对Q进行N-Gram分词,N的取值为大于等于1的正整数;
Q′={′W1+W2+,…+WN′,′W2+W3+,…+WN+1′,……′WM-N+1+WM-N+2+…+WM′}
N-Gram分词将文件中连续N个词组合成一个关键词组,且关键词组中可以保留样本文件中的上下文信息,有利于后续的智能语义分析;
步骤B3、生成N-Gram词袋模型,遍历训练集中所有PHP文件,将文件中所有N-Gram关键词组收录到词袋中,建立N-Gram词袋模型;收录过程中记录每个关键词组在各文件中出现的频率;在确定N-Gram词袋模型时,根据关键词组的词频过滤一部分关键词组,控制词袋模型规模,进而提高运算效率;
步骤S6、提取样本的词袋特征表示,利用步骤S5生成的N-Gram词袋模型,重新表示待测样本,将样本中的N-Gram关键词组与N-Gram词袋模型中的关键词组对应,根据N-Gram词袋模型中关键词组的顺序重新表示样本,样本特征维度为N-Gram词袋模型维度,每个样本特征维度中的数值为N-Gram关键词组词频数,形成基于N-Gram词袋模型维度的关键词组词频样本;
步骤S7、XGBoost模型的Webshell检测,将步骤S6中获得的基于N-Gram词袋模型维度的关键词组词频样本输入到XGBoost模型中,根据XGBoost模型中分类树的分支节点,对样本中各特征维度进行计算判别,依据XGBoost模型中目标函数最优的判定指标,智能检测该样本是否含有WebShell恶意代码,并输出检测结果。
2.根据权利要求1所述的一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,其特征在于,PHP编译工具包括词法分析器和语法分析器,PHP文件操作码解析过程具体为:
词法分析,扫描PHP文件,将PHP代码转换为语言片段;
语法解析,将PHP语言片段转换成简单而有意义的表达式;
操作码编译,将PHP表达式编译成可执行的操作码。
3.根据权利要求1所述的一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,其特征在于,卷积神经网络模型包括一个输入层、四个并列的卷积层+池化层、一个全连接层和一个输出层。
4.根据权利要求1所述的一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,其特征在于,XGBoost模型表示为K棵回归树的形式:
其中F为回归树,xi第i个样本;
XGBoost模型的目标函数为:
其中l()为损失函数,表示模型与训练数据yi的拟合程度:
Ω()为XGBoost模型的复杂度函数,表示生成的分类树模型的复杂度:
其中T为叶子节点的个数,w为叶子节点对应的权值,γ和λ为可调参数。
5.根据权利要求1所述的一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法,其特征在于,XGBoost模型的本质是回归树的生长,生长过程伴随着回归树节点的分裂,分裂的原则是增益化最大化;增益计算方法为:
其中下标L表示左子树,下标R表示右子树。
CN201910238084.5A 2019-03-27 2019-03-27 一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法 Active CN109948340B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910238084.5A CN109948340B (zh) 2019-03-27 2019-03-27 一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910238084.5A CN109948340B (zh) 2019-03-27 2019-03-27 一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法

Publications (2)

Publication Number Publication Date
CN109948340A true CN109948340A (zh) 2019-06-28
CN109948340B CN109948340B (zh) 2020-09-01

Family

ID=67011996

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910238084.5A Active CN109948340B (zh) 2019-03-27 2019-03-27 一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法

Country Status (1)

Country Link
CN (1) CN109948340B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110374822A (zh) * 2019-08-07 2019-10-25 电子科技大学 基于深度卷积自编码器和XGBoost的风力发电机叶片故障诊断方法
CN112052451A (zh) * 2020-08-17 2020-12-08 北京兰云科技有限公司 一种webshell检测方法和装置
CN112214222A (zh) * 2020-10-27 2021-01-12 华中科技大学 COStream中用于实现前馈神经网络的sequential结构及其编译方法
CN112818344A (zh) * 2020-08-17 2021-05-18 北京辰信领创信息技术有限公司 一种运用人工智能算法提高病毒查杀率的方法
CN113515742A (zh) * 2020-04-12 2021-10-19 南京理工大学 基于行为语义融合萃取的物联网恶意代码检测方法
CN113722713A (zh) * 2021-09-10 2021-11-30 上海观安信息技术股份有限公司 一种恶意代码检测的方法、装置、电子设备及存储介质
CN113761534A (zh) * 2021-09-08 2021-12-07 广东电网有限责任公司江门供电局 Webshell文件检测方法及系统
CN113761533A (zh) * 2021-09-08 2021-12-07 广东电网有限责任公司江门供电局 Webshell检测方法及系统
CN113918942A (zh) * 2020-07-10 2022-01-11 深信服科技股份有限公司 一种安全文件的识别方法、装置、电子设备及存储介质
CN112818344B (zh) * 2020-08-17 2024-06-04 北京辰信领创信息技术有限公司 一种运用人工智能算法提高病毒查杀率的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105938485A (zh) * 2016-04-14 2016-09-14 北京工业大学 一种基于卷积循环混合模型的图像描述方法
US20180329999A1 (en) * 2017-05-15 2018-11-15 Ebay Inc. Methods and systems for query segmentation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105938485A (zh) * 2016-04-14 2016-09-14 北京工业大学 一种基于卷积循环混合模型的图像描述方法
US20180329999A1 (en) * 2017-05-15 2018-11-15 Ebay Inc. Methods and systems for query segmentation

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
TIANQI CHEN 等: "XGBoost-A Scalable Tree Boosting System", 《ACM》 *
YUXUAN LUO 等: "PU Learning in Payload-based Web Anomaly Detection", 《IEEE》 *
崔艳鹏: "基于XGBoost算法的Webshell检测方法研究", 《计算机科学》 *
张涵 等: "基于多层神经网络的Webshell改进检测方法研究", 《通信技术》 *
胥小波: "基于多层感知器神经网络的WebShell检测方法", 《通信技术》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110374822A (zh) * 2019-08-07 2019-10-25 电子科技大学 基于深度卷积自编码器和XGBoost的风力发电机叶片故障诊断方法
CN113515742A (zh) * 2020-04-12 2021-10-19 南京理工大学 基于行为语义融合萃取的物联网恶意代码检测方法
CN113918942A (zh) * 2020-07-10 2022-01-11 深信服科技股份有限公司 一种安全文件的识别方法、装置、电子设备及存储介质
CN112052451A (zh) * 2020-08-17 2020-12-08 北京兰云科技有限公司 一种webshell检测方法和装置
CN112818344A (zh) * 2020-08-17 2021-05-18 北京辰信领创信息技术有限公司 一种运用人工智能算法提高病毒查杀率的方法
CN112818344B (zh) * 2020-08-17 2024-06-04 北京辰信领创信息技术有限公司 一种运用人工智能算法提高病毒查杀率的方法
CN112214222A (zh) * 2020-10-27 2021-01-12 华中科技大学 COStream中用于实现前馈神经网络的sequential结构及其编译方法
CN112214222B (zh) * 2020-10-27 2021-11-19 华中科技大学 COStream中用于实现前馈神经网络的sequential结构及其编译方法
CN113761534A (zh) * 2021-09-08 2021-12-07 广东电网有限责任公司江门供电局 Webshell文件检测方法及系统
CN113761533A (zh) * 2021-09-08 2021-12-07 广东电网有限责任公司江门供电局 Webshell检测方法及系统
CN113722713A (zh) * 2021-09-10 2021-11-30 上海观安信息技术股份有限公司 一种恶意代码检测的方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN109948340B (zh) 2020-09-01

Similar Documents

Publication Publication Date Title
CN109948340A (zh) 一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法
CN114610515B (zh) 基于日志全语义的多特征日志异常检测方法及系统
CN107122340B (zh) 一种基于同义词分析的科技项目申报书的相似度检测方法
CN107430612A (zh) 查找描述对计算问题的解决方案的文档
KR101813683B1 (ko) 커널 rdr을 이용한 태깅 말뭉치 오류 자동수정방법
CN109299480A (zh) 基于上下文语境的术语翻译方法及装置
CN108228758A (zh) 一种文本分类方法及装置
CN109635288A (zh) 一种基于深度神经网络的简历抽取方法
CN108021679A (zh) 一种并行化的电力设备缺陷文本分类方法
CN111611586A (zh) 基于图卷积网络的软件漏洞检测方法及装置
CN109981625A (zh) 一种基于在线层次聚类的日志模板抽取方法
CN110134961A (zh) 文本的处理方法、装置和存储介质
CN109886021A (zh) 一种基于api全局词向量和分层循环神经网络的恶意代码检测方法
CN113901797A (zh) 文本纠错方法、装置、设备及存储介质
CN116361815B (zh) 基于机器学习的代码敏感信息及硬编码检测方法及装置
CN104699797A (zh) 一种网页数据结构化解析方法和装置
CN113705237A (zh) 融合关系短语知识的关系抽取方法、装置和电子设备
CN110472040A (zh) 评价信息的提取方法及装置、存储介质、计算机设备
CN105095196A (zh) 文本中新词发现的方法和装置
CN113127339A (zh) 一种Github开源平台数据的获取方法及源代码缺陷修复系统
CN112528294A (zh) 漏洞匹配方法、装置、计算机设备和可读存储介质
CN112613321A (zh) 一种抽取文本中实体属性信息的方法及系统
CN111930937A (zh) 基于bert的智慧政务文本多分类方法及系统
CN115017268A (zh) 一种基于树结构的启发式日志抽取方法及系统
CN114817932A (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
GR01 Patent grant
GR01 Patent grant