2024年6月6日发(作者:)
ISSN1009-3044
Computer
Knowledge
Knowledge
and
and
Technology
Technology
电脑知识
电脑知识
与技术
Computer
与技术
Vol.17,No.7
March
2021
E-mail:*************.cn
第17卷第7期(2021年3月)
http://
Tel:+86-551-6569
基于深度学习的Webshell恶意代码检测方法研究
周子恒,李琳,赵叙,李凯
(武汉科技大学,湖北武汉430081)
摘要:在当今现代化的世界中,人工智能逐渐被应用在各个领域之中,而深度学习就是人工智能的核心算法之一,近些年
来也被广泛应用于网络安全领域,传统简单的通过人工定义规则集的检测方法逐渐被淘汰掉。而现在,如果将深度学习
方法应用在检测Webshell中,不仅可以很好地提高准确率,而且和传统的机器学习方法相比,可以自动提取特征值,完成
特征工程的过程更加智能化。因此基于深度学习来研究Webshell检测是近些年来一个得到持续关注的热点课题。该文
主要针对使用PHP编写的Webshell进行检测,将深度学习方法和PHP文件操作码序列的特点进行结合,在构建的模型上
训练测试数据集,最终可以获得相当高的准确率。
关键词:Webshell;操作码;词向量;长短记忆网络;深度学习
中图分类号:TP393文献标识码:A
开放科学(资源服务)标识码(OSID):
ResearchonWebshellDetectionAlgorithmbasedonDeepLearning
ZHOUZi-heng,LILin,ZHAOXu,LIKai
(WuhanUniversityofScienceandTechnology,Wuhan430081,China)
文章编号:1009-3044(2021)07-0180-04
Abstract:Intoday’smodernworld,artificialintelligenceisgraduallyappliedinvariousfields,deeplearningisoneofthecorealgo⁃
deeplearningmethodshavealsobeengraduallyappliedinthefieldofnetworksecurity.
Therefore,thetraditionalsimpl,applyingthe
deeplearningmethodtothedetectionofWebshellcannotonlyimprovetheaccuracy,butalso,comparedwiththetraditionalma⁃
chinelearningmethod,canautomaticallyextractfeatures,therefore,ult,it
,thispapermainlytestsWebshellwritteninPHP,We
combinethedeeplearningmethodandthecharacteristicsofPHPfileopcodesequence,thentrainthetestdatasetonthebuiltmod⁃
els,andcanobtainahighaccuracyrate.
Keywords:Webshell;opcode;wordembedding;LSTM;deeplearning
1绪论
1.1项目背景及相关研究
Webshell是一种网络页面后门程序,也被称为木马,是一
种Web管理工具,可以对web服务器进行操作。黑客往往利用
各种漏洞上传自己编写的Webshell到Web服务器,从而对文
件、数据库等进行管理。黑客可以对被植入Webshell的网站进
行文件的上传和下载,调用相关系统命令等一系列恶意操作,
更有甚者可以通过各种混淆的手段绕过WAF。Webshell极具
隐蔽性,很难被发现,并且随着时间的推移,其种类得到了大量
的扩充。根据脚本类型可以分为PHP木马、ASP木马、JSP木马
和CGI木马;按照功能则可以将其分成大马、小马及一句话木
马。各种Webshell的破坏性、隐藏性等都不容小觑,严重威胁
着一个网站的安全,甚至在一些领域威胁到了国家安全。但目
前大多数对于Webshell的检测都是基于规则集的检测方法,通
过人工核定特征码、危险函数等来识别一种特定的Webshell,虽
然这种方法查找起来速度较快,但是存在很高的出错率和遗漏
率,在网站规模日益庞大的信息化时代,人工设定规则集的方
式显然不能满足日益变化的Webshell种类。
近些年机器学习的兴起和在各个领域的应用,给Webshell
的检测工作带来了新的思路,也有相当多的学者、科研机构进
收稿日期:2020-12-07
作者简介:周子恒(1999—),男,湖北襄阳人,学生,本科在读,主要研究方向为容错调度、边缘计算;李琳(1981—),女,湖北武汉人,
讲师,博士,主要研究方向为机器学习、形式化方法;赵叙(2000—),男,浙江嘉兴人,学生,本科在读,主要研究方向为渗
透测试;李凯(1998—),男,河南商丘人,学生,本科在读,主要研究方向为自然语言处理。
180
人工智能及识别技术
本栏目责任编辑:唐一东
第17卷第7期(2021年3月)
行了一定的研究。例如,
Webshell
息熵,并以此为依据确定文件是正常文件还是
检测技术,同时还应用统计学检测方法,
2016年胡必伟提出基于贝叶斯的
Webshell
计算文件信
文件。
同时在贾文超等人近期进行的研究中,采用了随机森林算法,
提高决策树分类强度,降低了树间的相关度,达到了相当好的
效果,同时根据其仿真实验得出的结果可以证明,该算法提高
了Webshell检测的效率和准确率。在2018年,张涵等人在论
文《基于多层神经网络的Webshell改进检测方法研究》中利用
深度学习的卷积神经网络对Webshell进行了检测,利用词向量
转换算法word2vec将经过预编译处理得到的中间代码进行转
换,得到特征向量。最后,利用多层神经网络进行检测。实验
结果证明,该方法与传统的机器学习算法相比,有效提高了准
确率,降低了丢失率,减少了人工的操作,对未知Webshell的检
测能力也得到了有效加强。
1.2研究内容
本文将主要解决深度学习在Webshell检测中的相关应用
问题,计划利用深度学习理论智能提取恶意代码操作码序列特
征并对分类模型进行相关研究。本文将PHP文件编译成操作
码序列,利用循环神经网络(RNNs-LSTM)对Webshell检测进
行模型搭建,其中还包含word2vec词向量转换、多层LSTM结构
等。最后通过实验数据,比较出不同层次结构模型的表现,选
择最佳的模型。
1.3论文结构
本文首先在第一章中对Webshell的相关概念及可能造成
的威胁进行了介绍,同时也阐明了近些年来学界所做的相关研
究,并表明我们做的研究方向和期望。
第二章中将介绍本文涉及的相关技术,主要包括深度学习
的优势、PHP操作码序列获取,词向量等。
第三章则是介绍本文所提出的基于深度学习的Webshell
检测模型。
第四章中调整模型层数,获取实验结果进行对比,找到最
佳模型。
最后在第五章中,我们对全文进行了总结,对我们所提出
的模型和结果进行了分析,总结了所提出技术的优缺点,并对
未来进行了展望。
2相关技术及其研究
2.1深度学习自动化特征提取
对于机器学习系统而言,特征提取是尤为关键的,将对整
个模型的架构和最终的结果产生相当大的影响。但是传统的
机器学习又往往需要人工调整规则集,误差较大的同时可迁移
性也很差,还浪费了大量的人力物力。而深度学习在大数据中
分析自动获得所需的特征值,大大降低了人力的开销,同时提
高了检测的准确性。因此具有相当好的效果,在各种领域中也
得到了十分广泛的应用。
2.2PHP操作码序列
令,只不过该指令在
PHP操作码(opcode
PHP
)
的
是一种底层的代码,
Zend虚拟机中运行。执行
类似于汇编指
PHP高
级语言的代码时大致会经过如下几个步骤,如图1所示。
(1)词法分析,去掉注释、空格,识别出有意义的单词。
(2)语法分析,组合单词成符合文法的语句。
本栏目责任编辑:唐一东
ComputerKnowledgeandTechnology
电脑知识
与技术
(3)将语句编译成一条条指令,即opcode。
(4)Zend虚拟机执行opcode,运行PHP脚本。
图1PHP操作码执行流程
我们的样本是由PHP高级语言写成的,其中包含了各类关
键字、标识符,单词类别繁杂,若是直接对其进行向量化处理,
将会得到一个非常大的稀疏矩阵,从而造成资源浪费。我们可
以将PHP高级语言写成的代码转换为一个较小的有限指令集,
即PHP操作码,然后再对操作码进行向量化处理。
操作码可以通过VLD(VulcanLogicDisassembler)扩展获
得。例如,
0
段)
./
cmd
。其中,“-=1
”
里运行命令
,可得到
“=e=
”表示启用扩展,
的操作码
“
(图
-e=0
2中的op字
”
表示不执行该程序脚本。
图的操作码
下面对本地所有样本执行该命令(部分结果如图3所示)。
第一列字段值为序号;第二列字段值为1表示是webshell文件,
字段值为0表示是正常文件;第三列字段值为文件路径;第四
列字段值为操作码;第五列字段值为操作码个数。这样就得到
了所有样本的操作码序列,后续可以进行向量化。
图3本地所有样本执行结果
2.3词向量
2.3.1基本概念
机器无法直接处理现实中的语言文字,故需要将他们数学
化,而词向量就是语言文本数学化后的数据。简单地说,通过
某种方法,将语言文本中的一个个文字单位转化成一个个向
量,这些向量就称为词向量。
2.3.2one-hot表示法
indeed
最简单的向量化方法。假如有句子
{
入。经过
a”,“
”
“afriendinneedisafriend⁃
friend
,对句子进行处理,
one-hot
”,“in”
表示后,
,“need”
输出即为每个单词的向量表示,
,“
对单词去重,
is”,“indeed”
形成一本字典,
},这个字典就作为输
就有
比如
friend”表示为[0,1,0,0,0,0],“need”表示为[0,0,0,1,0,0]。
这种方法虽然简单,但能直观地让人明白向量化的过程,说明
了单词是如何数学化的。
2.3.3基于频率的词向量
Vector
基于频率的词向量表示方法主要有
、Co-OccurenceVector。
CountVector、TF-IDF⁃
人工智能及识别技术
181
“
“
ComputerKnowledgeandTechnology
电脑知识
与技术
张二维表来表示向量化后的结果。表头为字典,
CountVector是对句子中出现的单词进行计数,
字典对所有文
从而生成一
档(及整个语料库)进行去重;每一行代表一个文档。比如,现
有两个文档,
some
如表
”
1
。字典为
D1=“
。
“{
Heishandsome
He”,“is”,“handsome
”,D2=“Heishandsome,veryhand⁃
”,“very”},生成二维表
表1CountVector
Heishandsomevery
D11110
D21121
这一方法只是简单的计数,对于一些特殊的词汇,例如“is”
and”等在日常使用中经常出现,使用高频,但显然不表示重要
意义。对这些词计数实质上加大了它们的重要性,这并不
合理。
IDF=log(N/n)
TF-IDF
出现过。对于常用词汇,
。
方法则引入了逆文档频率的概念。逆文档频率
N为文档总数,
更可能出现在各种文档中,
n代表某个单词在多少个文档中
IDF的值降
低了这一类词的权重。TF即为某个词在某个特定文档里出现
的次数,TF与IDF的乘积就作为词汇最终的权重,表示其重要
性,相比纯计数更加合理。
下
contextwindow
,现
Co-OccurenceVector
有句子“Heisaveryhandsomeboy.
还将上下文内容考虑了进来。举例如
Heisclever”。引入
very
的字典,
共现的单词即为
表示上下文范围,
下面构建共现矩阵,
“[is”,“a
如表
”,“
假定
handsome
contextwindow=2,那么与
概念
2所示。看看
”,“boy
He
”]。取该句子
这一行是怎
么得到的:He出现了两次,第一次与它共现的单词为“[is”,
er
a
均为
”
”
]
]
,
,
故
第二次与它共线的单词为
1
“
。
is”出现了两次,除“He
“[
”“
handsome
very”外,
”
其余单词出现次数
,“boy”,“is”,“clev⁃
表2Co-OccurenceVector
Heisaveryhandsomeboyclever
He0210111
is2011011
a1101100
very0110110
handsome1011010
boy1101100
clever1100000
共现矩阵的词向量包含了上下文语义信息,相比前面两种
方法更优秀。
2.3.4基于预测的词向量
基于频率的词向量表示方法主要有连续词袋模型
CBOW,continuesbagofwords)、跳字模型(Skip-Gram)。之前介
绍的三种词向量都有一个共同的缺点,即一旦单词数目非常多
后,
CBOW
矩阵会变得庞大而稀疏,造成资源浪费,
文信息;
和
不同的是,
Skip-Gram
它们通过构建神经网络的方式对向量降维,
与上述模型有相似之处,
处理也更加麻烦。
都可以包含上下
182
人工智能及识别技术
第17卷第7期(2021年3月)
达到了压缩词向量的效果,使词向量的表示更加紧密。
2.3.5word2vec工具
跳字模型和连续词袋模型,
word2vec是Google发布的一个工具,
它使用方便,
其中就包含了上述的
可以使我们快速地将
单词向量化,然后让机器来读取数据。
(sentences,min_count=1)
使用该工具只需一句话:model=2Vec
指小于该数的单词会被剔除
,第一个参数是训练语料,
,第三个参数是神经网络的隐藏层
第二个参数
单元数,默认为100。
2.4本章小结
本章首先从深度学习和传统的机器学习相比,在提取特征
方面的优势出发,着重介绍了PHP操作码的获取和在Webshell
检测中的应用以及词向量的相关概念。
3基于深度学习的Webshell检测模型的设计
3.1RNNs-LSTM模型
长短期记忆模型LSTM(Longshort-termmemory)是一种特
殊的循环神经网络。它能够在较长序列数据中起作用,使数据
有更长距离的依赖性,解决长序列的梯度消失和梯度爆炸
问题。
向量
LSTM
图4LSTM结构
Xt;输出有两个,
的输入有三个,
细胞状态
细胞状态
Ct、隐层状态
Ct-1、隐层状态
ht。细胞状态的信
ht-1、输入
息会一直在上面的一条线上传递,隐层状态的信息一直在下面
的一条线上传递,它们之间会有一些交互,即隐层状态的信息
会通过门结构传递到上层,从而对细胞状态施加影响。
0
结构包括了遗忘门、
到1
中间框部分即为门结构。
之间;tanh是双曲正切函数,
σ代表sigmoid函数,它的输出在
更新门、输出门。遗忘门对上一节点传来
它的输出在-1到1之间。门
的输入进行选择性遗忘;更新门获得新的输入带来的信息并进
行选择性记忆,保留部分信息;输出门决定哪些数据将作为当
前状态的输出。
3.2本章小结
本章简要介绍了长短期记忆模型LSTM及其门结构。
4实验结果测试及分析
4.1实验环境
Windows10下使用Python3.6.8运行,使用的IDE为Visual⁃
本栏目责任编辑:唐一东
“
“
(
第17卷第7期(2021年3月)
StudioCode
4.2实验模型及测试结果
使用LSTM模型进行测试。
样本操作码利用word2vec全部向量化后就可以作为检测
模型的输入了。我们使用keras进行建模。keras在TensorFlow
的基础上又封装了一层,
model
(LSTM(128,
=Sequential()
使用方便,很适合用来做实验。
(Dense(1,
dropout=0.2,recurrent_dropout=0.2))
e(loss='binary_crossentropy',
activation='sigmoid'))
optimizer='adam',
print('now
metrics=['accuracy'])
(x_train,
')
y_train,epochs=100,
LSTM
Sequential
练随机丢失
模型,其中包含
用来插入神经网络层。
20%的权重,
128个神经元。
add
batch_size=32)
创建了一个单层的
用于防止过拟合,
dropou=0.2
从而增加模型的泛
规定了每次训
化能力。sigmoid函数用作神经网络的激活函数,常用于二分类
问题,它能将任何一个实数映射到(0,1)的区间里,可以用于将
数据变成一个0-1分布。compile用于配置训练时使用的损失
函数、
ochs=100
优化器、
0.95的准确率,
,即把所有训练数据完整地迭代
准确率评测标准。()
如图5所示。
100
开始训练,
遍,最终得到了
参数ep⁃
图5单层LSM模型实验结果
4.3结果比对及分析
增加模型层数,使用两层和三层的LSTM模型进行训练和
测试,结果如表3所示。
表3测试结果
层数准确率
单层
0.95161
两层
0.93010
三层
0.89785
从上述结果中可以发现,并不是LSTM模型的层数越多越
好,
LSTM
两层、
的原因可能是梯度消失,
的准确率不到
三层模型的测试准确率都不如单层模型理想,
0.90,
当网络层数加深时,
相比单层低了约0.5。导致这一现象
三层
程序在反复学习
过程中找到最佳权值以获取最佳输出,梯度的反向传播导致权
本栏目责任编辑:唐一东
ComputerKnowledgeandTechnology
电脑知识
与技术
值的连乘效应加强,梯度效应消失,对结果造成影响。也可能
是网络层数加深导致的过拟合。结果显示,当使用单层LSTM
时,检测效果最好,此时准确率为0.95161。
4.4本章小结
改变LSTM模型的层数大小进行了新的训练和测试,最终
得出了检测结果的准确率与层数多少并不成正比的结论。较
多的网络层数可能导致过拟合,从而检测结果不准确。
5总结及展望
本文在对Webshell操作码序列进行分析后,在已有的相关
研究的基础之上,汲取了相关思想,较为创新性的提出了基于
深度学习的神经网络模型,并将其与Webshell检测进行结合,
最终的模型测试结果取得了不错的准确率,是切实有效的。
当然,本文所提出的模型和实验过程也存在一定的缺陷,
例如测试的过程中,虽然已经选择了一定的实验数据,但是在
当前庞大复杂的网络环境中,Webshell变化多端,存在各种不同
的变种和类型。那么不可避免的,
Webshell
我们未来的一个进行深入研究的方向,
进行检测时不具有普适性,
本文所提出的模型在对某些
或许会检测失败。这也是
我们在未来会持续关注
这个领域的相关研究和测试,在测试中不断完善本文所提出的
模型,争取在更多的测试用例中都取得优良的结果,以使得我
们的模型更具有普适性。
参考文献:
[1]胡必伟.基于贝叶斯理论的Webshell检测方法研究[J].科技
[2]
广场
张涵
,2016(6):66-70.
,薛质,施勇.
[3]
法研究
YoonKim.
[J].通信技术
基于多层神经网络的Webshell改进检测方
ConvolutionalNeural
,2019,52(1):179-183.
Networksfor
[4]
cation[R].Neural
He
age
K
sion
recognition[C]//2016
M,ZhangX
and
Y,Ren
Evolutionary
SQ,
Computing,2014.
SentenceClassfi⁃
andPatternRecognition
IEEE
(CVPR).
Conference
residual
June
on
learning
27-30,
Computer
forim⁃
2016,Las
Vi⁃
[5]
Vegas,NV,,2016:770-778.
time
HeKM,
Pattern
cost[C]//2015
utional
Recognition
IEEE
(CVPR).
Conference
neuralnetworksatconstrained
June7-12,
on
2015,
Computer
Boston,
Vision
MA,USA.
and
[6]
IEEE,2015:5353-5360.
[7]
(
BehrensS,lldetectionusingNeoPI[EB/OL].
贾文超
2012-04-13
检测方法
,戚兰兰
)[2017-11-6].
[J].计算机应用研究
,施凡,等.采用随机森林改进算法的
,2018,35(5):1558-1561.
WebShell
【通联编辑:代影】
人工智能及识别技术
183
发布者:admin,转转请注明出处:http://www.yc00.com/news/1717633667a2741285.html
评论列表(0条)