一种Web攻击检测方法及装置与流程

文档序号:21361151发布日期:2020-07-04 04:34阅读:167来源:国知局
本发明涉及网络安全
技术领域
:,特别是涉及一种web攻击检测方法及装置。
背景技术
::随着互联网科技的发展,网络web服务已经融入人们生活的各方面,但由于web服务的开放性导致其很容易遭受到网络黑客的攻击,出现网络安全的问题。因此,web攻击检测成为解决网络安全问题的一种最重要手段。传统的web攻击检测方法,主要通过匹配关键字或规则库检测web攻击。其中,规则库包含已知攻击方式的特征和描述规则。此web攻击检测方法主要步骤包括:接收请求,通过正则匹配关键字或规则库中的已知攻击模式的特征和描述规则,检测所述请求的攻击方式。基于匹配关键字或规则库,实现的web攻击检测方法只能识别匹配关键字或规则库中已经存在的攻击方式,识别的攻击方式有限,无法响应除上述规则库内攻击方式以外的其他攻击方式,这样黑客也可以绕过上述规则库中的规则。并且,匹配关键字或规则库的构建和维护,依赖于安全专业人员,需要耗费大量的人力物力,导致其成本过高。在此基础上,随着攻击方式发生变化,攻击方式的种类增多,传统的web攻击检测方法难以保证web服务的安全性。综上所述,传统的web攻击检测方法中的规则库需要专业人员构建和维护成本过高,并且随着攻击方式的变化及攻击方式的种类增多,难以保证web服务的安全性。技术实现要素:本发明实施例的目的在于提供一种web攻击检测方法及装置,用以解决现有技术中的web攻击检测方法中的规则库需要专业人员构建和维护成本过高,并且随着攻击方式的变化及攻击方式的种类增多,难以保证web服务的安全性的技术问题。具体技术方案如下:第一方面,本发明实施例提供了一种web攻击检测方法,包括:接收网络web请求,其中所述web请求携带超文本传输协议http请求格式;将所述web请求作为已训练web入侵检测模型的输入,通过所述已训练web入侵检测模型,输出所述web请求对应的已标注检测类别,其中,所述已训练web入侵检测模型是基于web日志文本的样本集,训练待训练web入侵检测模型得到的,所述web日志文本的样本集包括:所述web日志文本中已标注检测类别,所述web日志文本中已标注检测类别包括:基于所述http请求格式,已标注攻击行为的类别及已标注正常行为的类别,所述待训练web入侵检测模型包括:卷积神经网络cnn网络层、门控循环单元gru网络层及全连接层,并且所述待训练web入侵检测模型是通过将所述web日志文本的样本集作为所述待训练web入侵检测模型的输入,经所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征,经所述gru网络层基于所述局部特征和高阶隐含特征,提取所述web日志文本中上下文之间的序列信息以及经所述全连接层对所述序列信息进行分类得到的。进一步的,在经所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征之前,所述方法还包括:从web日志文本提取http请求,所述http请求是由单词和符号组成的字符串;按照字符串的字符顺序,分离所述http请求的请求字段中的单词与字符,得到一个单词与字符组成的序列;分析各http请求的请求字段对应的序列,提取统计特征,所述统计特征包括:网络请求的长度、可打印字符数、标点符号数、字节数组的最小长度、字节数组中的最大长度、字节数组的平均长度、字节数组的标准差及字节数组的长度;使用词向量模型对所述统计特征及各http请求的请求字段对应的序列进行预训练,得到词向量;转换所述词向量,得到稠密向量,作为所述cnn网络层的输入;所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征,包括:所述cnn网络层提取所述稠密向量的局部特征和高阶隐含特征。进一步的,所述cnn网络层包括:输入层,卷积层及池化层;通过所述输入层对所述http请求进行预处理,并使用词向量构建预处理后的稠密向量,得到稠密向量的矩阵,作为神经网络模型的输入;通过所述卷积层,利用卷积操作对所述神经网络模型的输入进行卷积操作,分析所述神经网络模型中的信息,生成卷积后的特征矩阵,作为所述卷积层的输出;将所述卷积层的输出作为池化层的输入,并对所述卷积层的输出进行下采样,经过池化层过滤器,对所述卷积层的输出进行池化处理,其中,所述经过池化层过滤器,对所述卷积层的输出进行池化处理包括:通过池化层过滤器每一次从所述卷积后的特征矩阵中,下采样选取部分值,作为所述池化层的输出。进一步的,所述经所述gru网络层基于所述局部特征和高阶隐含特征,提取所述web日志文本中上下文之间的序列信息,包括:获取最大池化层的输出作为所述gru网络层的输入,所述最大池化层代替所述池化层;通过所述gru网络层存储在训练过程中的http请求的历史信息,并控制存储的更新时间和更新方式,捕获http请求中的序列信息,作为所述gru网络层的输出;所述全连接层对所述序列信息进行分类,包括:通过所述全连接层将所述gru网络层的输出与已学习到所述web日志文本中已标注检测类别对应的数据特征进行对比,得到所述序列信息为所述已标注攻击行为的类别的概率以及所述序列信息为已标注正常行为的类别的概率;利用所述序列信息为所述已标注攻击行为的类别的概率以及所述序列信息为已标注正常行为的类别的概率,确定所述序列信息的类别。第二方面,本发明实施例提供了一种web攻击检测装置,包括:获取模块,用于接收网络web请求,其中所述web请求携带超文本传输协议http请求格式;第一处理模块,用于将所述web请求作为已训练web入侵检测模型的输入,通过所述已训练web入侵检测模型,输出所述web请求对应的已标注检测类别,其中,所述已训练web入侵检测模型是基于web日志文本的样本集,训练待训练web入侵检测模型得到的,所述web日志文本的样本集包括:所述web日志文本中已标注检测类别,所述web日志文本中已标注检测类别包括:基于所述http请求格式,已标注攻击行为的类别及已标注正常行为的类别,所述待训练web入侵检测模型包括:卷积神经网络cnn网络层、门控循环单元gru网络层及全连接层,并且所述待训练web入侵检测模型是通过将所述web日志文本的样本集作为待训练web入侵检测模型的输入,经所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征,经所述gru网络层基于所述局部特征和高阶隐含特征,提取所述web日志文本中上下文之间的序列信息以及经所述全连接层对所述序列信息进行分类得到的。进一步的,所述装置还包括:第二处理模块,用于在经所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征之前,从web日志文本提取http请求,所述http请求是由单词和符号组成的字符串;按照字符串的字符顺序,分离所述http请求的请求字段中的单词与字符,得到一个单词与字符组成的序列;分析各http请求的请求字段对应的序列,提取统计特征,所述统计特征包括:网络请求的长度、可打印字符数、标点符号数、字节数组的最小长度、字节数组中的最大长度、字节数组的平均长度、字节数组的标准差及字节数组的长度;使用词向量模型对所述统计特征及各http请求的请求字段对应的序列进行预训练,得到词向量;转换所述词向量,得到稠密向量,作为所述cnn网络层的输入;所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征,包括:所述cnn网络层提取所述稠密向量的局部特征和高阶隐含特征。进一步的,所述cnn网络层包括:输入层,卷积层及池化层;所述输入层,用于通过所述输入层对所述稠密向量进行预处理,并使用词向量构建预处理后的稠密向量,得到稠密向量的矩阵,作为神经网络模型的输入;所述卷积层,用于利用卷积操作对所述神经网络模型的输入进行卷积操作,分析所述神经网络模型中的信息,生成卷积后的特征矩阵,作为所述卷积层的输出;所述池化层,用于将所述卷积层的输出作为池化层的输入,并对所述卷积层的输出进行下采样,经过池化层过滤器,对所述卷积层的输出进行池化处理,其中,所述经过池化层过滤器,对所述卷积层的输出进行池化处理包括:通过池化层过滤器每一次从所述卷积后的特征矩阵中,下采样选取部分值,作为所述池化层的输出。进一步的,所述gru网络层,用于获取所述池化层的输出作为所述gru网络层的输入;通过所述gru网络层存储在训练过程中的http请求的历史信息,并控制存储的更新时间和更新方式,捕获http请求中的序列信息,作为所述gru网络层的输出;所述全连接层,用于通过所述全连接层将所述gru网络层的输出与已学习到所述web日志文本中已标注检测类别对应的数据特征进行对比,得到所述序列信息为所述已标注攻击行为的类别的概率以及所述序列信息为已标注正常行为的类别的概率;利用所述序列信息为所述已标注攻击行为的类别的概率以及所述序列信息为已标注正常行为的类别的概率,确定所述序列信息的类别。第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现第一方面所述的方法步骤。第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面任一的方法。本发明实施例有益效果:本发明实施例提供的一种web攻击检测方法及装置,将web日志文件作为待训练web入侵检测模型的样本集,并利用样本集训练待训练web入侵检测模型,这样待训练web入侵检测模型能学习web正常请求和攻击请求的差异,得到已训练web入侵检测模型;再通过使用已训练web入侵检测模型可以准确地检测web攻击,从而提高已训练web入侵检测模型的准确性,减少出现漏判集误判的情况,并且,待训练web入侵检测模型可以自动地学习各攻击方式的关联性,还可以从简单特征中提取复杂特征,这样不需要专业人员构建和维护,降低成本。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的web攻击检测方法的流程示意图;图2为本发明实施例的http请求格式的示意图;图3为本发明实施例的单层卷积神经网络结构示意图;图4为本发明实施例的gru网络单元示意图;图5为本发明实施例的web攻击检测装置的结构示意图;图6为本发明实施例提供的电子设备的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。针对现有技术web攻击检测方法中的规则库需要专业人员构建和维护成本过高的问题,本发明实施例提供一种web攻击检测方法及装置,将web日志文件作为待训练web入侵检测模型的样本集,并利用样本集训练待训练web入侵检测模型,这样待训练web入侵检测模型从具有正样本和负样本的样本集中学习web正常请求和攻击请求的差异,得到已训练web入侵检测模型;再通过使用已训练web入侵检测模型可以准确地检测web攻击,从而提高已训练web入侵检测模型的准确性,减少出现漏判集误判的情况,并且,待训练web入侵检测模型可以自动地学习各攻击方式的关联性,还可以从简单特征中提取复杂特征,这样不需要专业人员构建和维护,降低成本。下面首先对本发明实施例提供的一种web攻击检测方法进行介绍。本发明实施例所提供的一种web攻击检测方法,应用于web网络。参见图1,图1为本发明实施例提供的web攻击检测方法的流程示意图。本发明实施例所提供的一种web攻击检测方法,可以但不限于包括如下步骤:步骤110,接收网络web请求,其中web请求携带超文本传输协议(hypertexttransferprotocol,简称http)请求格式。其中,web请求可以但不限于为http请求,参见图2所示,http请求包括:请求字段及请求数据,其中所述请求字段包括:包含请求方法、请求字段及协议类型的请求行、请求报文首部、空行、请求数据及其他。步骤120,将所述web请求作为已训练web入侵检测模型的输入,通过所述已训练web入侵检测模型,输出所述web请求对应的已标注检测类别,其中,所述已训练web入侵检测模型是基于web日志文本的样本集,训练待训练web入侵检测模型得到的,所述web日志文件的样本集包括:所述web日志文件中已标注检测类别,所述web日志文本中已标注检测类别包括:基于所述http请求格式,已标注攻击行为的类别及已标注正常行为的类别,所述待训练web入侵检测模型包括:卷积神经网络cnn网络层,门控循环单元gru网络层及全连接层,并且所述待训练web入侵检测模型是通过将所述web日志文本的样本集作为所述待训练web入侵检测模型的输入,经所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征,经所述gru网络层基于所述局部特征和高阶隐含特征,提取所述web日志文本中上下文之间的序列信息以及经所述全连接层对所述序列信息进行分类得到的。其中,数据的局部特征的定义为不需要任何处理,计算机就可以从数据中提取或发现的特征;数据的高阶隐含特征定义为原始的数据经过线性或非线性的变换,得到隐含在原始数据中的特征,在卷积神经网络中,通过卷积层,池化层来进行数据变换来得到此特征;web日志文本中上下文之间的序列信息定义为在http请求中,参数以及符号的序列分布,或者可以理解为前后关系,也可称为序列信息。在将此序列分布进行词向量构建后,循环神经网络可以提取出输入至网络的当前词向量与其他词向量之间在原始序列上的依赖关系。在本发明实施例中,将web日志文件作为待训练web入侵检测模型的样本集,并利用样本集训练待训练web入侵检测模型,这样待训练web入侵检测模型从具有正样本和负样本的样本集中学习web正常请求和攻击请求的差异,得到已训练web入侵检测模型;再通过使用已训练web入侵检测模型可以准确地检测web攻击,从而提高已训练web入侵检测模型的准确性,减少出现漏判集误判的情况,并且,待训练web入侵检测模型可以自动地学习各攻击方式的关联性,还可以从简单特征中提取复杂特征,这样不需要专业人员构建和维护,降低成本。在上述步骤110中,web请求可以为用户向网站服务器所发起的调用web服务的请求。在服务器中,将web请求以及服务器的响应,访问时间,传输协议等等信息保存与一个文件中,该文件称为web日志。web日志中的一条数据记录,举例如下:|getgethttp://*****:8080/tienda1/index.jsphttp/1.1user-agent用户代理:mozilla/5.0(compatible兼容的;konqueror操作系统/3.5;linux)khtml编程语言/3.5.8(likegecko)pragma预处理指令:no-cachecache-control:no-cache缓存但立即失效accept同意:text/xmlfapplication/xml,application/xhtml+xmlftext/html;q=0.9ftext/plain;q=0.8,image/pngf*/*;q=0.5accept-encoding同意编码:x-gzip,x-deflatefgzip,deflateaccept-charset同意字符集:utf-8,utf-8;q=0.5,*;q=0.5accept-language同意语言:enhost主机:localhost标准主机名:8080cookie信息包:jsessionid=ea414b3e327ded6875848530c864bd8fconnection连接:close关闭在上述举例中“http://*****:8080/tienda1/index.jsp”为web请求。“http/1.1”表示请求使用的协议。“accept”等信息为服务器的响应信息。web日志文本可以但不限于是用于记录用户行为的文本,用户行为可以但不限于包括:攻击行为或正常行为。用户行为比如但不限于,用户在网际互连协议(internetprotocol,简称ip)、a时间、使用b操作系统、c浏览器、d分辨率显示器的情况下,访问了网站的e页面,并且记录是否访问成功。上述用户行为可以通过web日志文本反映出来,web日志文本的样本集可以但不限于包括:正样本及负样本,其中,正样本用于表示web日志文本中正常的数据,正样本可以包含正常行为,比如正常请求。正常请求可以为以web服务提供者所规定的正常操作手段使用web服务而发起的请求。且不对其他web用户或者web服务本身造成危害。负样本用于表示web日志文本中除了正常的数据以外的其他数据,负样本可以但不限于包括攻击行为,比如攻击请求。攻击请求可以为以跨站脚本攻击,数据库注入等攻击手段发起web请求,意图侵犯他人权益或盗取和篡改服务器数据库中的数据。介绍完上述web日志文本的样本集,基于web日志文本的样本集,继续介绍上述web日志文本中已标注检测类别。web日志文本中已标注检测类别包括:基于http请求格式已标注攻击行为的类别及已标注正常行为的类别,这样待训练web入侵检测模型可以学习样本集中各样本的类别,以便后期使用已训练web入侵检测模型进行检测,输出已标注检测类别。比如,本发明实施例中的方法还包括:待训练web入侵检测模型通过包含正样本及负样本的样本集中,学习到攻击行为的类别及正常行为的类别,然后可以用0标记攻击行为的类别,用1标记正常行为的类别,得到已标注攻击行为的类别及已标注正常行为的类别。这样使用数字0和数字1标记类别,方便后期已训练web入侵检测模型区分使用。上述待训练web入侵检测模型用于学习攻击请求与正常请求,并完成两者的分类,上述待训练web入侵检测模型包括:卷积神经网络cnn网络层、门控循环单元gru网络层及全连接层,为了完成训练上述待训练web入侵检测模型,所述方法包括:第1步,从web日志文本提取http请求,所述http请求是由单词和符号组成的字符串;请求字段可以为记录在web日志文本中的web请求对应的字段,用于完成所需的web请求。举例如下:http://****/publico/anadir.jsp?id=1&nombre=jam%f3n+ib%e9rico&precio=39&cantidad=41&b1=a%f1adir+al+carrito在上述举例中,“publico、anadir、jsp”等为单词;“‘?’、‘&’、‘=’、‘%’、‘+’”为符号。这样通过提取各请求字段,对各请求字段进行分析,发现这些请求字段中单词和符号之间的关系,从而建立一个可以对攻击请求与正常请求的分类模型,此分类模型,称为已训练web入侵检测模型。第2步,按照字符串的字符顺序,分离所述http请求的请求字段中的单词与字符,得到一个单词与字符组成的序列。这样完成对请求字段的分词,方便后期进行处理。上述第2步进一步可以但不限于包括:使用http分词规则,按照字符串的字符顺序,分离所述请求字段中的单词与字符,得到一个单词与字符组成的序列。其中http分词规则可以但不限于:http的请求规则,http分词规则是指将http请求中的参数以键值的形式分离开来,所述键值的形式可以包括:‘?’,‘&’,‘=’,‘(’,‘)’,‘{’,‘}’,‘<’,‘>’,‘/’,‘\\’,‘.’,‘”’,‘/’,‘@’,‘;’,‘~’,比如将上述web请求可以分词为:http://****□/□publico□/□anadir□.□jsp□?□id□=□1□&□nombre□=□jam□%□f3n□+□ib□%□e9rico□&□precio□=□39□&□cantidad□=□41□&□b1□=□a□%□f1adir□+□al□+□carrito其中,□用来表示空格。第3步,分析各http请求的请求字段对应的序列,提取统计特征,所述统计特征包括:网络请求的长度、可打印字符数、标点符号数、字节数组的最小长度、字节数组中的最大长度、字节数组的平均长度、字节数组的标准差及字节数组的长度。如表1所示,通过对样本集的分析,提取出以下几个统计特征,完成对特征进行扩充,从而达到更好的检测效果。表1统计特征length长度lengthofwebrequest网络请求的长度printable可打印的numberofprintablecharacter可打印字符数punctuation标点符号numberofpunctuation标点符号数minbyte最小字节minlengthinbytearray字节数组的最小长度maxbyte最大字节maxlengthinbytearray字节数组中的最大长度meanbyte平均字节meanlengthinbytearray字节数组的平均长度standardofbytes字节标准standarddeviationofbytearray字节数组的标准差distinctofbytes字节不同lengthofbytearray字节数组的长度第4步,使用词向量模型对所述统计特征及各http请求的请求字段对应的序列进行预训练,得到词向量。上述第4步中的词向量模型有多种,任何可以实现对统计特征及各请求字段对应的序列进行预训练,得到词向量的模型,均属于本发明实施例的保护范围。其中,词向量模型可以但不限于为glove词向量模型,也可以但不限于为word2vec词向量模型。上述第4步进一步可以但不限于包括:使用word2vec词向量模型对统计特征及各请求字段对应的序列进行预训练,得到wordvector,并以此构建wordembedding字嵌入层的词嵌入矩阵和词索引词典;然后利用词索引词典为样本集中的每一条数据构建词向量。具体地,利用词索引词典为样本集中的每一条数据构建词向量的实现过程包括:基于上述对请求字段的分词,得到的一个单词与字符组成的序列,将所述序列中的单词和字符作为序列中的词,根据序列中的词获取序列中的词在词索引词典中的索引,将索引拼起来,得到句子的词索引向量,将所述句子的词索引向量作为词向量,这样使用词向量用来表示一句话,方便得到后期使用词向量。第5步,转换所述词向量,得到稠密向量,作为所述cnn网络层的输入。第6步,所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征,进一步包括:所述cnn网络层提取所述稠密向量的局部特征和高阶隐含特征。对于上述web日志文本的获取方式多种,一种获取方式可以但不限于是在使用web日志文本时,直接从服务器上下载web日志文本到本地,这样在使用web日志文本时,可以从服务器上直接得到web日志文件,web日式文件的实时性较高。另一种获取方式可以但不限于是从服务器上下载web日志文本,并保存到本地,然后在使用web日志文本时,直接从本地获取web日志文本。这样可以在使用web日志文本时,方便从本地使用web日志文本。本发明实施例中,通过提取web日志文本的统计特征,对已训练web入侵检测模型的输入数据进行扩充,使其包含更多的特征信息,能够更好地表示web日志文本。这样可以提高已训练web入侵检测模型的检测率。参见图3所示,图3为本发明实施例的单层卷积神经网络结构示意图。本发明实施例提供的一种web攻击检测方法,所述待训练web入侵检测模型是通过将所述web日志文本的样本集作为所述待训练web入侵检测模型的输入层21的输入,经所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征,经所述gru网络层基于所述局部特征和高阶隐含特征,提取所述web日志文本中上下文之间的序列信息以及经所述全连接层24对所述序列信息进行分类得到的,具体的实现过程如下:首先,所述cnn网络层包括:输入层21,卷积层22及池化层23;通过所述输入层对所述http请求进行预处理,并使用词向量构建预处理后的稠密向量,得到稠密向量的矩阵,作为神经网络模型的输入;其中,神经网络模型为待训练web入侵检测模型或者已训练web入侵检测模型,此处的输入层作为整个待训练web入侵检测模型或者已训练web入侵检测模型的输入。在本输入层中,得到的数据并不直接输入至全连接层,而使通过最大池化转换为gru网络层的输入。其中预处理包括提取统计特征及分词,得到输入卷积层的输入,也就是神经网络模型的输入。利用卷积操作对所述神经网络模型的输入进行卷积操作,分析所述神经网络模型中的信息,生成卷积后的特征矩阵,作为所述卷积层的输出;其中,所述利用卷积操作对输入层的输出进行卷积操作,分析神经网络中的信息,生成卷积后的特征矩阵包括:通过过滤器矩阵和输入的稠密向量的矩阵对应区域进行矩阵各值相乘,并将相乘的结果相加,生成卷积后的特征矩阵,这样上一层节点的数据会经过过滤器的卷积处理转换成下一层节点的输入。过滤器计算的节点矩阵大小,也称为过滤器的尺寸,此节点矩阵并不唯一,其长和宽可以为人工指定的,可根据具体问题进行适当调整。将所述卷积层的输出作为池化层的输入,并对所述卷积层的输出进行下采样,经过池化层过滤器,对所述卷积层的输出进行池化处理,其中,所述经过池化层过滤器,对所述卷积层的输出进行池化处理包括:通过池化层过滤器每一次从所述卷积后的特征矩阵中,下采样选取部分值,作为所述池化层的输出。这样通过池化层,对卷积生成的若干特征矩阵进行下采样,以缩减网络在训练时的参数数量,加快训练流程。通常情况下,池化操作分为三种,分别是最大池化,均值池化和全局最大池化。此处选用最大池化的意义是:使卷积神经网络层的输出可以直接作为gru网络层的输入。这种全局最大池化的方法相比于之前两种最大的区别是,所获得的数据与特征图相比是不同维度的,比最大池化和均值池化的维度要低。但是在本发明实施例中,所得的池化层结果并不直接输入至全连接层,而是输入至gru网络层,因此使用最大池化层代替池化层。本发明实施例可以通过如下公式实现:基于cnn网络层的输入的稠密向量,确定卷积层的输出,具体说明如下:首先,基于http请求数据提取统计特征,再使用word2vec词向量模型,构建稠密向量,y=(y1,y2,…,yl),y∈rd*l,作为神经网络模型的输入。y表示稠密向量,y1表示第1个稠密向量,y2表示第2个稠密向量,yl表示第l个稠密向量,l表示当前稠密矩阵的长度,d表示每一条稠密向量的维度。y经过m个大小为s*s的卷积核,并以步长为1滑动窗口通过卷积运算:其中,conv表示卷积操作,vi表示第i个卷积核,i为卷积核的序号,为激活函数,b为卷积时的偏置项,设置为0,可以看做是第j个滑动窗口中的原始信息经过卷积核vi进行卷积操作并通过激活函数进行非线性变换后的结果,随后得到卷积层的输出c=(c1,c2,…,cm),ci∈r(d-s+1)*(l-s+1),j表示滑动窗口的序号,r表示实数,m表示卷积核的个数,并进行池化处理,在池化层,神经网络模型采用最大池化进行处理,得到用以gru网络的输入。其次,所述经所述gru网络层基于所述局部特征和高阶隐含特征,提取所述web日志文本中上下文之间的序列信息,包括:获取最大池化层的输出作为所述gru网络层的输入,所述最大池化层代替所述池化层;通过所述gru网络层存储在训练过程中的http请求的历史信息,并控制存储的更新时间和更新方式,捕获http请求中的序列信息,作为所述gru网络层的输出。这样gru是长短期存储循环神经网络的变种结构。该结构与lstm一样,当前时刻的状态与输出不仅仅取决于当前时刻的输入,还取决于上一时刻的状态与输出,因此可以存储在训练过程中的历史信息,控制内部存储的更新时间和方式进而捕获序列中的长期和短期依赖性。以此来捕获http请求字段中的序列化信息。本发明实施例采用gru网络而不是lstm的原因在于gru涉及的参数比lstm少,训练速度更快。而且,gru可以通过学习决定如何使用它的重置门和忘记门,以便在执行存储保护的同时进行长期预测,在实验中具有更加优秀的效果。本发明实施例具体可以采用如下公式实现:将卷积层的输出作为池化层的输入,通过池化层,得到适用于gru网络的输入,具体说明如下:第1步,对于具有m个过滤器的卷积层来说,得到与滤波器数量相同的m个序列c=(c1,c2,…,cm),其中c1为第一个序列,c2为第二个序列,cm为第m个序列,将此序列作为池化层的输入。第2步,经过池化层,通过池化层计算公式,得到池化层的输出结果,将池化层的输出结果作为适用于gru网络的输入,其中,池化层的计算公式为:得到池化层的结果为:g=(g1,g2,…,gm),其中,gi为ci池化后的结果。在本发明实施例中,因经卷积层,不直接进入全连接层进行分类,因此使用最大池化层代替池化层,如下计算公式,得到适用于gru网络的输入,其计算公式为:pi=max(ci)得到最大池化层的输出结果,p=((p1,p2,…,pm),将所述最大池化层的输出结果作为gru网络的输入,pi为ci池化后的结果。其次,所述全连接层24对所述序列信息进行分类,包括:通过所述全连接层将所述gru网络层的输出与已学习到所述web日志文本中已标注检测类别对应的数据特征进行对比,得到所述序列信息为所述已标注攻击行为的类别的概率以及所述序列信息为已标注正常行为的类别的概率;利用所述序列信息为所述已标注攻击行为的类别的概率以及所述序列信息为已标注正常行为的类别的概率,确定所述序列信息的类别。这样全连接层相当于在整个神经网络模型中中起到“分类器”的作用。如果说卷积层、池化层和gru网络层等操作是将原始数据映射到隐藏层特征空间的话,那么全连接层会将最终输出的学习到的“分布式特征表示”映射到样本标记空间。即,最终得到的已标注攻击行为的类别及已标注正常行为的类别。本发明实施例具体可以采用如下步骤实现:参见图4,图4为本发明实施例的gru网络单元示意图。lstm和gru的一个网络单元,使用lstm在神经网络模型中并未用到,lstm包括遗忘门、输入门及输出门等三个门,其中遗忘门采用如下计算公式,决定会在前一时刻的设备状态中抛弃的信息,其计算公式为:ft=σ(wf·[ht-1,xt]+bf)其中,ft为当前gru单元被遗忘的信息,σ为sigmoid函数,wf为lstm遗忘门的权重参数,ht-1为上一时刻,也可以称为上一个lstm单元的中的ht,即上一单元的输出,t-1为上一个lstm单元,t为当前lstm单元,也可以称为当前时刻,xt为当前lstm单元的输入,bf为遗忘门中sigmoid函数激活的偏置,此处的f是forget的缩写,只是一个标记,本发明实施例可以使用gru代替上述的lstm。输入门采用如下计算公式,决定会在单元状态下存储的新信息,其计算方法如下:it=σ(wi·[ht-1,xt]+bi)其中,it为输入门的信息,wi为输入门的权重参数矩阵,bi为输入门的偏置,为可以看做是一个中间变量,用于保存当前单元的即时状态,最终用于计算输出门的信息,wc为计算时的权重参数矩阵,c只是一个标号,没有实际意义,用于区分各部分,bc为计算的偏置。输出门采用如下计算公式,决定单元状态ct的更新和最终输出ht,其计算方式为:ot=σ(wo·[ht-1,xt]+bo)ht=ot*tanh(ct)其中,ct为当前单元的状态,ot为可以看做一个中间变量,用于计算最终的输出,wo为输出门的权重参数矩阵,o为输出门的缩写,仅仅作为一个标记,xt为当前单元的输入,bo为输出门的偏置,ht为当前时刻的输出,tanh为tanh函数。gru是lstm的一种变体。如图4所示,将遗忘门和输入门组合到单个“更新门”中,这样合并单元状态和隐藏状态,并对其他内容进行更改。与lstm相比,它具有更少的参数和更简洁的计算流程,其计算方法如下:zt=σ(wz·[ht-1,xt])rt=σ(wr·[ht-1,xt])其中,zt为当前gru单元的更新门输出,为所需要更新的信息,σ为,sigmoid函数,wz为更新门权重参数矩阵,z表示当前位于更新门更新门,wz里的z只是一个标记,下标用于区分其中的权重参数矩阵,并无实际意义,ht-1为前一gru单元的输出以及状态,t-1为前一gru单元,rt为重置门的输出,为以前的信息是否需要重置,wr为重置门的权重参数矩阵,r为当前处于重置门,xt为当前gru单元的输入,t为当前时刻,也可以称为当前gru单元,为中间变量,称为候选集,用于将前一gru单元的状态以及当前gru单元的输出进行组合,以计算当前gru的状态及输出,w为候选集权重参数矩阵,ht为当前gru单元的状态及输出。在本发明实施例中,由于gru具有更少的参数和更简洁的计算流程,gru效率更高,消耗的内存更少。将经卷积层及本地最大池化层的输出,作为gru网络的输入,然后经过dropout,以及全连接层进行分类,其中,dropout只是一个设置参数,dropout定义在神经网络的学习中,随机的选取一部分网络单元失去作用,以避免模型过拟合。从而完成构建cnn-gru模型,将cnn-gru模型作为待训练web入侵检测模型。在使用过程中,待训练web入侵检测模型的构建及参数设置如下:本发明实施例中,使用cnn-gru模型作为攻击检测模型,其主要结构如表2所示,其中cnn层包含128个隐层网络单元,每个过滤器感受野大小为5,滑动步长为1,数据填充方式为same,隐藏层激活函数为relu,relu是激活函数的一种,所有的激活函数都是为了对输入数据或中间数据进行非线性变换,使得在神经网络的传递过程中避免梯度消失问题;gru层的网络单元个数为128,设置辍学率为0.7,优化器使用adam并使用交叉熵损失函数作为损失评估,其中,adam是深度学习算法中典型的优化算法,用于在神经网络传播过程中在梯度下降时更新步长,本发明实施例采用深度学习库tensorflow中所集成的adam算法。表2待训练web入侵检测模型的构建及参数设置本发明实施例的具体应用的例子如下:首先,假设web日志文本的样本集为http西班牙研究委员会(spanishnationalresearchcouncil,简称csic)2010样本集,在对httpcsic2010样本集进行预处理时,按照以下步骤执行:1)数据分词:使用http分词规则,对web日志文本的样本集进行分词,具体的,从web日志文本提取各请求字段,所述请求字段是由单词和符号组成的字符串;按照字符串的字符顺序,使用http分词规则,分离所述请求字段中的单词与字符,得到一个单词与字符组成的序列,也就是分词后的数据;2)统计特征提取:分析各请求字段对应的序列,提取web日志文本的样本集的统计特征;3)数据扩充:将统计特征与分词后的数据结合,作为模型的输入;4)数据预训练:使用word2vec对输入数据进行预训练,得到wordvector,并以此构建wordembedding层的词嵌入矩阵和词索引词典;5)词索引向量生成:根据词索引词典为原始数据构建词索引向量;6)数据转换:通过wordembedding层中预训练词嵌入矩阵,初始化输入数据,得到作为所述cnn网络层的输入的稠密向量,使其能够被待训练web入侵检测模型所接收。其次,按照以下步骤构建待训练web入侵检测模型:1)cnn网络:将wordembedding层的输出作为cnn网络的输入,经过cnn网络中1层卷积层处理,其中使用localmaxpooling层代替globalmaxpooling层,从而得到能够被gru所接收的输入格式。其中,cnn隐层单元个数设置为128;cnn过滤器大小设置为5;过滤器感受野设置为1;数据填充方式设置为same;隐层激活函数设置为relu;本地最大池化层大小设置为5;2)gru网络:将cnn网络的输出作为gru网络的输入,得到的输出通过dropout层以及全连接softmax层,最终得到预测结果。其中,gru网络循环单元个数设置为128;辍学率设置为0.7;优化器设置为adam;损失函数设置为交叉熵损失函数。本发明实施例中,httpcsic2010样本集达到了99.00%的准确率,并可以应对未知攻击类型。相比于传统的检测方法,该模型的检测性能更好。下面继续对本发明实施例提供的一种web攻击检测装置进行介绍。参见图5,图5为本发明实施例提供的web攻击检测装置的结构示意图。本发明实施例所提供的web攻击检测装置,可以但不限于包括如下模块:获取模块31,用于接收网络web请求,其中所述web请求携带超文本传输协议http请求格式;第一处理模块32,用于将所述web请求作为已训练web入侵检测模型的输入,通过所述已训练web入侵检测模型,输出所述web请求对应的已标注检测类别,其中,所述已训练web入侵检测模型是基于web日志文本的样本集,训练待训练web入侵检测模型得到的,所述web日志文本的样本集包括:基于所述http请求格式,所述web日志文本中已标注检测类别,所述web日志文本中已标注检测类别包括:已标注攻击行为的类别及已标注正常行为的类别,所述待训练web入侵检测模型包括:卷积神经网络cnn网络层、门控循环单元gru网络层及全连接层,并且所述待训练web入侵检测模型是通过将所述web日志文本的样本集作为待训练web入侵检测模型的输入,经所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征,经所述gru网络层基于所述局部特征和高阶隐含特征,提取所述web日志文本中上下文之间的序列信息以及经所述全连接层对所述序列信息进行分类得到的。在一种可能的实现方式中,所述装置还包括:第二处理模块,用于在经所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征之前,从web日志文本提取http请求,所述http请求是由单词和符号组成的字符串;按照字符串的字符顺序,分离所述http请求的请求字段中的单词与字符,得到一个单词与字符组成的序列;分析各http请求的请求字段对应的序列,提取统计特征,所述统计特征包括:网络请求的长度、可打印字符数、标点符号数、字节数组的最小长度、字节数组中的最大长度、字节数组的平均长度、字节数组的标准差及字节数组的长度;使用词向量模型对所述统计特征及各http请求的请求字段对应的序列进行预训练,得到词向量;转换所述词向量,得到稠密向量,作为所述cnn网络层的输入;所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征,包括:所述cnn网络层提取所述稠密向量的局部特征和高阶隐含特征。在一种可能的实现方式中,所述cnn网络层包括:输入层,卷积层及池化层;所述输入层,用于通过所述输入层对所述稠密向量进行预处理,并使用词向量构建预处理后的稠密向量,得到稠密向量的矩阵,作为神经网络模型的输入;所述卷积层,用于利用卷积操作对所述神经网络模型的输入进行卷积操作,分析所述神经网络模型中的信息,生成卷积后的特征矩阵,作为所述卷积层的输出;所述池化层,用于将所述卷积层的输出作为池化层的输入,并对所述卷积层的输出进行下采样,经过池化层过滤器,对所述卷积层的输出进行池化处理,其中,所述经过池化层过滤器,对所述卷积层的输出进行池化处理包括:通过池化层过滤器每一次从所述卷积后的特征矩阵中,下采样选取部分值,作为所述池化层的输出。在一种可能的实现方式中,所述gru网络层,用于获取最大池化层的输出作为所述gru网络层的输入,所述最大池化层代替所述池化层;通过所述gru网络层存储在训练过程中的http请求的历史信息,并控制存储的更新时间和更新方式,捕获http请求中的序列信息,作为所述gru网络层的输出;所述全连接层,用于通过所述全连接层将所述gru网络层的输出与已学习到所述web日志文本中已标注检测类别对应的数据特征进行对比,得到所述序列信息为所述已标注攻击行为的类别的概率以及所述序列信息为已标注正常行为的类别的概率;利用所述序列信息为所述已标注攻击行为的类别的概率以及所述序列信息为已标注正常行为的类别的概率,确定所述序列信息的类别。下面继续对本发明实施例提供的电子设备进行介绍。参见图6,图6为本发明实施例提供的电子设备的结构示意图。本发明实施例还提供了一种电子设备,包括处理器41、通信接口42、存储器43和通信总线44,其中,处理器41,通信接口42,存储器43通过通信总线44完成相互间的通信,存储器43,用于存放计算机程序;处理器41,用于执行存储器43上所存放的程序时,实现上述一种web攻击检测方法的步骤,在本发明一个可能的实现方式中,可以实现如下步骤:接收网络web请求,其中所述web请求携带超文本传输协议http请求格式;将所述web请求作为已训练web入侵检测模型的输入,通过所述已训练web入侵检测模型,输出所述web请求对应的已标注检测类别,其中,所述已训练web入侵检测模型是基于web日志文本的样本集,训练待训练web入侵检测模型得到的,所述web日志文本的样本集包括:所述web日志文本中已标注检测类别,所述web日志文本中已标注检测类别包括:已标注攻击行为的类别及已标注正常行为的类别,所述待训练web入侵检测模型包括:卷积神经网络cnn网络层、门控循环单元gru网络层及全连接层,并且所述待训练web入侵检测模型是通过将所述web日志文本的样本集作为所述待训练web入侵检测模型的输入,经所述cnn网络层基于所述web日志文本,提取数据的局部特征和高阶隐含特征,经所述gru网络层基于所述局部特征和高阶隐含特征,提取所述web日志文本中上下文之间的序列信息以及经所述全连接层对所述序列信息进行分类得到的。上述电子设备提到的通信总线可以但不限于是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。存储器可以但不限于包括ram(randomaccessmemory,随机存取存储器),也可以但不限于包括nvm(non-volatilememory,非易失性存储器),例如至少一个磁盘存储器。可选的,存储器还可以但不限于是至少一个位于远离前述处理器的存储装置。上述的处理器可以但不限于是通用处理器,包括cpu(centralprocessingunit,中央处理器)、np(networkprocessor,网络处理器)等;还可以但不限于是dsp(digitalsignalprocessing,数字信号处理器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。本发明实施例提供的方法可以应用于电子设备。具体的,该电子设备可以为:台式计算机、便携式计算机、智能移动终端、服务器等。在此不作限定,任何可以实现本发明的电子设备,均属于本发明的保护范围。本发明实施例提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的一种web攻击检测方法的步骤。本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的一种web攻击检测方法的步骤。本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述的一种web攻击检测方法的步骤。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置/电子设备/存储介质/包含指令的计算机程序产品/计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1