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

文档序号:14879876发布日期:2018-07-07 09:27阅读:139来源:国知局

本发明涉及互联网技术领域,具体而言,涉及一种网络攻击检测方法及装置。



背景技术:

随着互联网技术的发展,互联网越来越深入到人们的工作、生活中的方方面面,进而网络安全问题也越来越受到人们的重视;现有技术中,网络安全问题中包括对数据库进行攻击,和跨站脚本攻击,前者可能会导致的数据库的风险有:刷库、拖库、撞库;后者所导致的风险有盗用各类用户的账号权益,或者盗用企业数据等;二者均会给用户带来巨大的损失,因此十分有必要提供一种方法对网络攻击进行检测。

发明人在研究中发现,现有技术中的网络攻击检测技术只能针对单一的网络攻击进行检测,效率较低。



技术实现要素:

有鉴于此,本发明的目的在于提供网络攻击检测方法和装置,以实现对一种以上的网络攻击进行检测。

第一方面,本发明实施例提供了一种网络攻击检测方法,包括:

接收用户输入的网站访问请求,所述网站访问请求中包含有待访问页面的统一资源定位符;

对所述统一资源定位符进行数据预处理,转化为词向量;

调用预先建立并训练好的神经网络模型,根据所述词向量和所述神经网络模型进行确定所述网站访问请求是否为网络攻击以及网络攻击的类型。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述神经网络模型为通过以下方式预先建立和训练的:

采集正样本、xss攻击样本与sql注入样本;

对所述正样本、xss攻击样本与sql注入样本分别进行数据结构化处理;

对进行数据结构化处理后的所述正样本、xss攻击样本与sql注入样本进行分词处理,得到词向量;

建立神经网络,加入concat层,将多维输出融合后,加入softmax函数;

基于所述词向量对所述神经网络按照设定的次数进行训练;

从训练后的神经网络中选取准确率最高的神经网络作为最终得到的神经网络模型。

结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述采集xss攻击样本,包括:

从渗透测试工具xssed中爬取xss攻击样本;

和/或,

从开源代码库github中检索xss攻击样本。

结合第一方面的第一种可能的实施方式或第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述采集sql注入样本,包括:

通过使用sqlmap脚本得到sql注入样本。

结合第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,其中,所述对所述正样本、xss攻击样本与sql注入样本分别进行数据结构化处理,包括:

对所述正样本、xss攻击样本与sql注入样本分别进行标记后,进行结构化处理,使所有样本数据的编码格式统一。

第二方面,本发明实施例还提供了一种网络攻击检测装置,包括:

接收模块,用于接收用户输入的网站访问请求,所述网站访问请求中包含有待访问页面的统一资源定位符;

数据预处理模块,用于对所述统一资源定位符进行数据预处理,转化为词向量;

确定模块,用于调用预先建立并训练好的神经网络模型,根据所述词向量和所述神经网络模型进行确定所述网站访问请求是否为网络攻击。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,还包括:神经网络模型建立模块,所述神经网络模型建立模块,用于通过以下方式预先建立神经网络模型:

采集正样本、xss攻击样本与sql注入样本;

对所述正样本、xss攻击样本与sql注入样本分别进行数据结构化处理;

对进行数据结构化处理后的所述正样本、xss攻击样本与sql注入样本进行分词处理,得到词向量;

建立神经网络,加入concat层,将多维输出融合后,加入softmax函数;

基于所述词向量对所述神经网络按照设定的次数进行训练;

从训练后的神经网络中选取准确率最高的神经网络作为最终得到的神经网络模型。

结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述神经网络模型建立模块,具体通过以下方式进行采集xss攻击样本:

从渗透测试工具xssed中爬取xss攻击样本;

和/或,

从开源代码库github中检索xss攻击样本。

结合第二方面的第一种可能的实施方式或第二方面第二种可能的实施方式,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述神经网络模型建立模块,具体通过以下方式进行采集sql注入样本:

通过使用sqlmap脚本得到sql注入样本。

结合第二方面的第一种可能的实施方式或第二方面第二种可能的实施方式,所述神经网络模型建立模块,具体通过以下方式对所述正样本、xss攻击样本与sql注入样本分别进行数据结构化处理:

对所述正样本、xss攻击样本与sql注入样本分别进行标记后,进行结构化处理,使所有样本数据的编码格式统一。

本发明实施例提供的一种网络攻击检测的方法及装置,采用预先建立并训练好的神经网络模型进行确定网站访问请求是否为网络攻击,在确定为网络攻击时并且能够给出网络攻击的类型;与现有技术中的进行网络攻击检测的方法只能够检测单一的网络攻击相比,本发明能够实现对xss攻击和sql注入攻击的检测,效率和准确率高。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明一个实施例所提供的一种网络攻击检测方法的流程示意图;

图2示出了本发明一个实施例所提供的一种神经网络模型建立和训练的流程示意图;

图3a示出了本发明一个实施例所提供的一种神经网络模型的网络架构示意图;

图3b示出了本发明一个实施例所提供的一种神经网络模型网络架构展开后的模式示意图;

图3c示出了本发明一个实施例所提供的一种神经网络模型的神经元内部示意图;

图4示出了本发明一个实施例所提供的一种网络攻击检测装置的结构示意图;

图5示出了本发明一个实施例所提供的另一种网络攻击检测装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

考虑到现有技术中的网络攻击检测方法只能针对单一的网络攻击进行检测;基于此,本发明实施例提供了一种网络攻击检测方法和装置,下面通过实施例进行描述。

在网络攻击或者网络入侵中,xss攻击和sql注入攻击所占的比例较高;sql注入攻击是黑客对数据库进行攻击的常用手段之一。随着b/s模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的sqlinjection,即sql注入。sql注入攻击属于数据库安全攻击手段之一,sql注入攻击会导致的数据库安全风险包括:刷库、拖库、撞库。

xss(crosssitescripting)攻击是指跨站脚本攻击,恶意攻击者往web页面里插入恶意script代码,当用户浏览该页时,嵌入其中web里面的script代码会被执行,从而达到恶意攻击用户的目的。xss攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。另一类则是来自外部的攻击,主要指的自己构造xss跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。

本发明实施例中所提供的一种网络攻击检测方法,能够有效地对上述的xss攻击和sql注入攻击进行检测。

参照图1所示的实施例,本实施例中提供了一种网络攻击检测方法,该方法包括如下步骤:

s101、接收用户输入的网站访问请求,所述网站访问请求中包含有待访问页面的统一资源定位符;

用户在对网页进行访问时会输入网页统一资源定位符url(uniformresourcelocator),以获取用户想要得到的资源。

当该统一资源定位符携带有xss攻击代码或者sql攻击代码时,会对将要访问的网站进行攻击,进而会对客户的数据的安全性造成威胁。

s102、对所述统一资源定位符进行数据预处理,转化为词向量;

上述将对统一资源定位符进行预处理包括:将统一资源定位符进行结构化处理,具体的,先将统一资源定位符解码,以使不同的统一资源定位符具有统一的编码格式,再进行将统一资源定位符更改超链接,例如将将统一资源定位符中所包含的所有超链接改为http://u,更改数字,例如将所有的数字改为0,将所有字母改为小写等操作。

之后,对上述进行结构化处理后的统一资源定位符进行分词,将分词之后得到的结果进行转化为词向量;具体的,主要包括:按照以下内容进行分词,包括:单双引号包含的内容,http/https链接,<>标签<script>,<>开头<h1,参数名topic=,函数体alert(,字符数字组成的单词;

以及按照符号进行分词,包括:“(”,“)”,“”,“%”,“?”。上述进行分词处理后得到的结果,利用word2vec进行构建词向量。

s103、调用预先建立并训练好的神经网络模型,根据所述词向量和所述神经网络模型进行确定所述网站访问请求是否为网络攻击以及网络攻击的类型。

本发明实施例中的神经网络模型为lstm(长短期记忆网络,longshort-termmemory)网络模型,是一种时间递归神经网络;该神经网络模型为通过以下方法进行建立和训练的,参照图2所示,包括如下步骤:

s201、采集正样本、xss攻击样本与sql注入样本;

上述的正样本为正常访问时的统一资源定位符,该统一资源定位符为安全的;

上述采集xss攻击样本,具体通过以下方式进行采集的:

a、从渗透测试工具xssed中爬取xss攻击样本;

从xssed爬取的xss攻击样本可以达到4万条。

b、从开源代码库github中检索xss攻击样本;

在github上可以搜索到少量的xss攻击样本。

上述采集sql注入样本,包括:通过使用sqlmap脚本得到sql注入样本;具体的,对网站的统一资源定位符使用sqlmap自带的tamper脚本得到多样化的sql注入脚本,以保证样本的丰富性。

在具体实施时,在进行样本采集过程中,需要建立目标数据库,该目标数据库用于存储所采集到的正样本、xss攻击样本与sql注入样本;并且每间隔预设时间段对该目标数据库进行更新。

s202、对所述正样本、xss攻击样本与sql注入样本分别进行数据结构化处理;

首先对上述的正样本、xss攻击样本与sql注入样本数据进行标记,将数据分为三类,示例性地,将url正样本标记为0,将sql注入样本标记为1,将xss攻击样本标记为2,之后对数据进行结构化处理,具体的,先将统一资源定位符解码,以使不同的统一资源定位符具有统一的编码格式,再进行将统一资源定位符更改超链接,更改数字,将所有字母改为小写等操作。

s203、对进行数据结构化处理后的所述正样本、xss攻击样本与sql注入样本进行分词处理,得到词向量;

具体的,针对xss攻击样本主要按照以下内容进行分词:单双引号包含的内容,http/https链接,<>标签<script>,<>开头<h1,参数名topic=,函数体alert(,字符数字组成的单词。

针对于sql注入样本按照符号进行分词,包括:“(”,“)”,“”,“%”,“?”。

在上述分词之后将分词结果利用word2vec构建词向量,优选地,构建50维的词向量。

s204、建立神经网络,加入concat层,将多维输出融合后,加入softmax函数;

s205、基于所述词向量对所述神经网络按照设定的次数进行训练;

将上述得到的词向量输入到神经网络中,并进行训练神经网络;示例性地,设定的训练次数为50000次,每训练50000次后将模型输出。最终得到的lstm网络架构如图3a所示,包括输入层、隐层和输出层,并加入了concat层和softmax函数。

上述得到的lstm网络架构展开的模式参照图3b所示,其中,xt-1、xt、xt+1为输入,将向量输入至神经网络模型以后,分别得到数据输出ot-1、ot、ot+1,st-1、st、st+1为神经元;具体的,神经元的内部格式参照图3c所示,主要有三个分支组成,左侧第一个分支决定了要遗忘的元素,在图中的左半部分;中间为第二个分支,用于进行对遗忘的函数更新;最右侧为第三个分支,用于决定输出。

s206、从训练后的神经网络中选取准确率最高的神经网络作为最终得到的神经网络模型。

上述每次训练过程都会得到一个神经网络模型,以准确率为标准进行选择,选择准确率最高的神经网络作为最终得到的神经网络模型。

本发明实施例中所提供的方法,当接收到网络访问请求时,该访问请求中包含有统一资源定位符,对输入的统一资源定位符进行结构化处理并进行分词和转化为词向量,将词向量带入上述的lstm网络模型中进行计算,输出计算结果;具体的,如果得到的输出为0,则判断该访问则为正常访问,此时可以允许访问;如果得到的输出为1,则判断为xss攻击;此时禁止访问;如果得到的输出为2,则判断为sql注入攻击,此时禁止访问。

本发明实施例中所提供的网络攻击检测方法,lstm(longshort-termmemory)是一种在深度学习中广泛使用的学习网络,其多用于序列化数据。相对于rnn(recurrentneuralnetworks),lstm通过一个控制单元可以对过去的序列进行选择性记忆,以便保持良好的性能,同时他也具有可以减少梯度消失以及梯度爆炸的问题。通过对lstm网络的输出层进行改进,将输出层之后增加concat函数合并多维输出,并且在这之后加入softmax函数,即可将lstm网络改进为一种可以实现多分类的网络,从而可同时实现对xss攻击以及sql注入攻击检测的识别,准确率高,从而实现网络多攻击检测,进而可以保证网站的安全性。

本发明的另一个实施例中提供了一种网络攻击检测装置,参照图4所示,包括:

接收模块301,用于接收用户输入的网站访问请求,所述网站访问请求中包含有待访问页面的统一资源定位符;

数据预处理模块302,用于对所述统一资源定位符进行数据预处理,转化为词向量;

确定模块303,用于调用预先建立并训练好的神经网络模型,根据所述词向量和所述神经网络模型进行确定所述网站访问请求是否为网络攻击。

优选地,参照图5所示,上述的装置,还包括:神经网络模型建立模块401,所述神经网络模型建立模块401,用于通过以下方式预先建立神经网络模型:

采集正样本、xss攻击样本与sql注入样本;

对所述正样本、xss攻击样本与sql注入样本分别进行数据结构化处理;

对进行数据结构化处理后的所述正样本、xss攻击样本与sql注入样本进行分词处理,得到词向量;

建立神经网络,加入concat层,将多维输出融合后,加入softmax函数;

基于所述词向量对所述神经网络按照设定的次数进行训练;

从训练后的神经网络中选取准确率最高的神经网络作为最终得到的神经网络模型。

所述神经网络模型建立模块,具体通过以下方式进行采集xss攻击样本:

从渗透测试工具xssed中爬取xss攻击样本;

和/或,

从开源代码库github中检索xss攻击样本。

所述神经网络模型建立模块,具体通过以下方式进行采集sql注入样本:

通过使用sqlmap脚本得到sql注入样本。

所述神经网络模型建立模块,具体通过以下方式对所述正样本、xss攻击样本与sql注入样本分别进行数据结构化处理:

对所述正样本、xss攻击样本与sql注入样本分别进行标记后,进行结构化处理,使所有样本数据的编码格式统一。

本发明实施例所提供的进行网络攻击检测方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

本发明实施例所提供的网络攻击检测的装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1