一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

SQL注入攻击检测的方法以及装置与流程

2022-02-20 05:00:32 来源:中国专利 TAG:

sql注入攻击检测的方法以及装置
技术领域
1.本技术涉及web安全领域,更具体地,涉及一种结构化查询语句sql注入攻击检测的方法、装置以及计算设备。


背景技术:

2.结构化查询语言(structured query language,sql)注入攻击是黑客对数据库进行攻击的常用手段之一。sql注入漏洞可能会影响使用sql数据库的任何网站或web应用程序。犯罪分子可能会利用它来未经授权访问用户的敏感数据:客户信息,个人数据,商业机密,知识产权等。sql注入攻击是最古老,最流行,最危险的网页(web)应用程序漏洞之一。
3.一种相关的技术方案中,是基于关键词的检测方法和基于规则的方法检测是否包含sql关键词和特殊符号,从而检测sql注入攻击。该方案的检测技术依赖于规则,而规则的完善程度完全依赖于安全人员的知识广度,针对最新的未知类型的攻击方式,由于没有相应的规则,就无法及时检测和防御。
4.另一种相关的技术方案中,是基于机器学习的方法检测是否包含sql关键词和特殊符号,是一种将传统的机器学习方法和自然语言处理结合的检测方法。该检测技术很大程度上依赖于安全专家的经验,因此识别未知攻击类型的效果非常差。对于新数据,该检测方法需要把新数据和旧的训练数据合并后重新训练模型,随着训练数据集越来越大,模型训练需要越来越多的时间,且会对内存造成巨大压力。


技术实现要素:

5.本技术提供一种结构化查询语句sql注入攻击检测的方法、装置以及计算设备,可以提高sql注入攻击的检测准确度,降低漏报率、误报率。
6.第一方面,提供了一种结构化查询语句sql注入攻击检测的方法,包括:获取第一神经网络模型的预测值,所述第一神经网络模型的输入是训练样本,所述第一神经网络模型的预测值是所述训练样本为sql注入攻击的概率;获取第一训练样本集合,所述第一训练样本集合中包括多个第一训练样本,所述多个第一训练样本为sql注入攻击的概率大于第一预设阈值;获取第二训练样本集合,所述第二训练样本集合中包括多个第二训练样本,所述多个第二训练样本为所述第一训练样本集合中被人工标注的可能是sql注入攻击的训练样本;将所述第二训练样本集合作为所述第一神经网络模型的输入,对所述第一神经网络模型的参数进行增量式训练,得到第二神经网络模型。
7.上述技术方案中,可以不过度依赖于安全专家的经验知识,能够及时的使用新数据,发现未知攻击和变种攻击,提高sql注入攻击的检测准确度,降低漏报率、误报率。
8.在一种可能的实现方式中,所述方法还包括:根据主动学习策略从所述第一训练样本集合中选择出需要被人工标注的所述多个第二训练样本。
9.在另一种可能的实现方式中,所述第二训练样本为第一概率和第二概率之差小于第二预设阈值,所述第一概率为所述第二训练样本为sql注入攻击的概率,所述第二概率为
所述第二训练样本不是sql注入攻击的概率。
10.在另一种可能的实现方式中,所述方法还包括:对所述训练样本进行数据处理,生成词向量矩阵;将所述词向量矩阵输入到所述第二神经网络模型,得到所述第二神经网络模型的预测值,所述第二神经网络模型的预测值用于确定所述训练样本为sql注入攻击的概率。
11.在另一种可能的实现方式中,所述方法还包括:利用会话技术和/或响应文件确定所述训练样本中sql注入成功的样本。
12.在另一种可能的实现方式中,所述响应文件包括以下中的一种或多种:所述响应文件的大小、所述响应文件的请求速率、所述响应文件的大小的历史基线。
13.在另一种可能的实现方式中,所述第一神经网络模型和/或所述第二神经网络模型为长短期记忆网络lstm模型。
14.第二方面,提供了一种结构化查询语句sql注入攻击检测的装置,包括:
15.获取模块,用于获取第一神经网络模型的预测值,所述第一神经网络模型的输入是训练样本,所述第一神经网络模型的预测值是所述训练样本为sql注入攻击的概率;
16.所述获取模块,还用于获取第一训练样本集合,所述第一训练样本集合中包括多个第一训练样本,所述多个第一训练样本为sql注入攻击的概率大于第一预设阈值;
17.所述获取模块,还用于获取第二训练样本集合,所述第二训练样本集合中包括多个第二训练样本,所述多个第二训练样本为所述第一训练样本集合中被人工标注的可能是sql注入攻击的训练样本;
18.训练模块,用于将所述第二训练样本集合作为所述第一神经网络模型的输入,对所述第一神经网络模型的参数进行增量式训练,得到第二神经网络模型。
19.在一种可能的实现方式中,还包括:
20.选择模块,用于根据主动学习策略从所述第一训练样本集合中选择出需要被人工标注的所述多个第二训练样本。
21.在另一种可能的实现方式中,所述第二训练样本为第一概率和第二概率之差小于第二预设阈值,所述第一概率为所述第二训练样本为sql注入攻击的概率,所述第二概率为所述第二训练样本不是sql注入攻击的概率。
22.在另一种可能的实现方式中,所述装置还包括:
23.处理模块,用于对所述训练样本进行数据处理,生成词向量矩阵;
24.预测模块,用于将所述词向量矩阵作为输入,根据所述第二神经网络模型预测所述第二神经网络模型的预测值,所述第二神经网络模型的预测值用于确定所述训练样本为sql注入攻击的概率。
25.在另一种可能的实现方式中,所述装置还包括:
26.确定模块,用于利用会话技术和/或响应文件确定所述训练样本中sql注入成功的样本。
27.在另一种可能的实现方式中,所述响应文件包括以下中的一种或多种:所述响应文件的大小、所述响应文件的请求速率、所述响应文件的大小的历史基线。
28.在另一种可能的实现方式中,所述第一神经网络模型和/或所述第二神经网络模型为长短期记忆网络lstm模型。
29.在上述第一方面中对相关内容的扩展、限定、解释、说明和效果也适用于第二方面中相同的内容。
30.第三方面,提供了一种计算设备,包括:处理器和存储器,所述处理器运行所述存储器中的指令,使得所述计算设备执行如上述第一方面或第一方面的任意一种可能的实现方式中所执行的方法步骤。
31.第四方面,提供了一种计算设备,包括处理器和存储器;所述处理器运行所述存储器中的指令,使得所述计算设备部署如上述第二方面或第二方面的任意一种可能的实现方式中结构化查询语句sql注入攻击检测的装置。
32.第五方面,提供了一种计算机可读存储介质,包括指令;所述指令用于实现如第一方面或第一方面的任意一种可能的实现方式中所执行的方法步骤。
33.第六方面,提供了一种计算机可读存储介质,包括指令;所述指令用于实现如上述第二方面或第二方面的任意一种可能的实现方式中结构化查询语句sql注入攻击检测的装置。
34.可选地,作为一种实现方式,上述存储介质具体可以是非易失性存储介质。
35.第七方面,提供一种芯片,该芯片获取指令并执行该指令来实现上述第一方面以及第一方面的任意一种实现方式中的方法。
36.可选地,作为一种实现方式,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,执行上述第一方面以及第一方面的任意一种实现方式中的方法。
37.可选地,作为一种实现方式,该芯片还可以包括存储器,该存储器中存储有指令,该处理器用于执行该存储器上存储的指令,当该指令被执行时,该处理器用于执行第一方面以及第一方面中的任意一种实现方式中的方法。
38.第八方面,提供一种芯片,该芯片获取指令并执行该指令来实现上述第二方面或第二方面的任意一种可能的实现方式中的装置。
39.可选地,作为一种实现方式,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,实现上述第二方面或第二方面的任意一种可能的实现方式中的装置。
40.可选地,作为一种实现方式,该芯片还可以包括存储器,该存储器中存储有指令,该处理器用于执行该存储器上存储的指令,当该指令被执行时,该处理器用于实现第二方面或第二方面的任意一种可能的实现方式中的装置。
附图说明
41.图1是本技术实施例提供的一种计算设备100的架构示意图。
42.图2是本技术实施例提供的一种sql注入攻击的检测方法的示意性流程图。
43.图3是本技术实施例提供的一种系统架构示意图。
44.图4是本技术实施例提供的另一种sql注入攻击的检测方法的示意性流程图。
45.图5是本技术实施例提供的一种sql注入攻击检测的装置500的示意性框图。
具体实施方式
46.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
47.应理解,在本技术的各实施例中,“第一”、“第二”、“第三”、“第四”等仅是为了指代不同的对象,并不表示对指代的对象有其它限定。
48.由于本技术实施例涉及大量的专业术语,为了便于理解,下面先对本技术实施例可能涉及的相关术语和概念进行介绍。
49.1、结构化查询语言(structured query language,sql)注入攻击
50.sql注入攻击是黑客对数据库进行攻击的常用手段之一。由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使得应用程序存在安全隐患。它可以通过将任意sql代码插入数据库查询,使攻击者能够完全控制web应用程序后面的数据库服务器。攻击者可以使用sql注入漏洞绕过应用程序安全措施,例如,可以绕过网页或web应用程序的身份验证和授权,并检索整个sql数据库的内容。攻击者还可以使用sql注入来添加,修改和删除数据库中的记录。
51.sql注入漏洞可能会影响使用sql数据库的任何网站或web应用程序。犯罪分子可能会利用它来未经授权访问用户的敏感数据:客户信息,个人数据,商业机密,知识产权等。sql注入攻击是最古老,最流行,最危险的web应用程序漏洞之一。
52.sql注入攻击可以通过多种方式执行,例如可以包括但不限于:带内注入、盲注入、带外注入,下面分别对上述几种不同的sql注入攻击的方式进行说明。
53.带内注入,是一种典型的攻击,攻击者可以通过相同的通信通道发起攻击并获得结果。这是通过两种带内技术完成的,一个是基于错误的sql注入,从显示的错误消息中获取有关数据库的信息;另一个是基于联合的sql注入,依赖于攻击者能够将被盗信息的结果与合法结果连接起来。
54.应理解,上述这两种带内技术都依赖于攻击者修改应用程序发送的sql,以及浏览器中显示的错误和返回的信息。如果应用程序开发人员或数据库开发人员无法正确地参数化他们在查询中使用的值,那么它会成功。两者都是试错法,可以检测到错误。
55.盲注入,也称为推理sql注入,盲注入攻击不会直接从目标数据库中显示数据。相反,攻击者会仔细检查行为中的间接线索。超文本传输协议(hyper text transfer protocol,http)响应中的详细信息,某些用户输入的空白网页以及数据库响应某些用户输入需要多长时间,这些都可以是线索,具体取决于攻击者的目标。
56.带外注入,这种攻击有点复杂,当攻击者无法在单个直接查询-响应攻击中实现其目标时,攻击者可能会使用此攻击。通常,攻击者会制作sql语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。以这种方式,攻击者可以收集数据或可能控制数据库的行为。作为示例,二阶注入就是一种带外注入攻击。在这种情况下,攻击者将提供sql注入,该注入将由数据库系统的单独行为存储和执行。当二级系统行为发生时(它可能类似于基于时间的作业或由其他典型管理员或用户使用数据库触发的某些事情)并且执行攻击者的sql注入,那就是当“伸出”到系统时攻击者控制发生了。
57.2、人机协同
58.人机协同指的是通过人机交互的方式实现人工智能和人类智慧的结合,强调机器能够自主配合人的工作,自主适应环境变化。
59.3、深度学习(online learning)
60.深度学习是机器学习的一个分支,是一种使用深度神经网络为工具的机器学习算法。
61.4、主动学习(active learning)
62.主动学习是人工智能领域的一个子领域,主动学习通过“选择策略”主动从未标注的样本集中挑选部分(例如,1个或n个)样本让相关领域的专家进行标注;然后对标注过的样本进行训练。
63.5、循环神经网络
64.用于解决训练样本输入是连续的序列,需要用先前的状态预测后来的状态的问题。基础的神经网络只在层与层之间建立了权连接,rnn最大的不同之处就是在隐藏层的神经元之间也建立的权连接,即每一时刻的输出都跟当前时刻的输入和上一时刻的输出有关。
65.6、长短期记忆网络(long short-term memory,lstm)
66.循环神经网络可以更好地利用传统神经网络结构所不能建模的信息,但同时也带来了长期依赖问题。在有些问题中,相关的信息和待预测的词的位置之间的间隔很小,循环神经网络可以比较容易地利用先前的信息。但是在复杂场景中,当前的预测位置和相关信息之间的文本间隔有可能非常大。有用信息间隔有大有小,长短不一,循环神经网络的性能也会受到影响。长短期记忆网络的设计就是为了解决这个问题,它是一种特殊的rnn网络,与单一循环体结构不同,lstm是一种拥有三个“门”结构的特殊网络结构。lstm靠一些“门”的结构让信息有选择性地影响循环神经网络中的每个时刻的状态。
67.随着互联网服务的快速发展和广泛使用,互联网应用程序也呈多样化发展,针对web应用的攻击形式也是多种多样,而sql注入攻击作为一种常见的数据库攻击方式一直在互联网攻击行为中位于前列,是信息泄露的主要途径。sql注入攻击具有类型多、变种多、危害大的特点,因此sql注入攻击检测技术一直是web应用安全研究的重要任务之一。
68.一种相关的技术方案中,是基于关键词的检测方法和基于规则的方法检测是否包含sql关键词和特殊符号,从而检测sql注入攻击。具体的,可以通过正则匹配检测web请求输入参数中是否包含sql注入敏感关键词和敏感符号,如:select、sleep、order by、and、空格、单引号等。因此该技术的核心是构建规则库。
69.该方案的检测技术依赖于规则,而规则的完善程度完全依赖于安全人员的知识广度,针对最新的未知类型的攻击方式,由于没有相应的规则,就无法及时检测和防御。同时,规则的维护需要投入大量的人力,随着规则集变大,规则之间往往会存在冲突,从而使得规则的增加和维护变得越来越困难,存在更新慢、反应慢的问题。另一方面,由于正则表达式的局限性和sql注入语句的灵活性,该技术无法识别出变形攻击,例如该技术可以识别出select,但是无法识别出变形的se《/**/》lect,容易被攻击者绕过。
70.另一种相关的技术方案中,是基于机器学习的方法检测是否包含sql关键词和特殊符号,是一种将传统的机器学习方法和自然语言处理结合的检测方法。该方法主要利用
了sql注入语句具有包含sql关键词、特殊符号占比高等典型的特征,将这些明显的特征点提取出来作为文本的特征向量,然后作为输入数据利用有监督或无监督的机器学习方法进行训练,得到一个可以划分正常web请求和sql注入攻击的二分类器,这个分类器可以对一个未知类别的统一资源定位符(uniform resource locator,url)进行分类,得到预先定义好的类别标签,即正常或sql注入。
71.该检测技术需要将文本向量化,文本向量化的关键是构建特征,特征构建的好坏直接决定了模型的效果,由于特征的构建很大程度上依赖于安全专家的经验,因此识别未知攻击类型的效果非常差。对于新数据,该检测方法需要把新数据和旧的训练数据合并后重新训练模型,随着训练数据集越来越大,模型训练需要越来越多的时间,且会对内存造成巨大压力。另一方面,对于变形攻击,分词会破坏信息,因此无法识别变形攻击。
72.有鉴于此,本技术提出了一种sql注入攻击的检测方法,可以将深度学习、主动学习、人工审核和在线学习有机的结合在一起,构建人机协同的学习模型,自动地预测url是否是sql注入攻击,对不断变化的url注入攻击方式具有更强的适应能力。另外,从海量sql注入攻击扫描中识别真正注入成功的行为,减轻安全监控人员的负担。
73.本技术实施例适用的应用场景可以包括但不限于:对云平台侧web安全的监控与分析,对云租户侧web安全的监控与分析。
74.本技术实施例的产品形态包括但不限于以下中的一种或多种:
75.产品形态一:应用服务器(nginx)端代理服务器。通过对经过nginx代理服务器的日志进行sql注入攻击检查以发现sql注入攻击行为。
76.产品形态二:云应用防护系统(web application firewall,waf)。应用服务器通过引流的方式,用户对服务器的访问首先经过waf进行分析,然后将分析结果和请求一并传递给服务器。
77.产品形态三:态势感知平台。在态势感知平台为用户提供sql注入威胁感知。
78.本技术实施例提供的sql注入攻击的检测方法可应用于计算设备,计算设备也可以被称为计算系统,包括硬件层、运行在硬件层之上的操作系统层,以及运行在操作系统层上的应用层。该硬件层包括处理单元、内存和内存控制单元等硬件,随后对该硬件的功能和结构进行详细说明。该操作系统是任意一种或多种通过进程(process)实现业务处理的计算机操作系统,例如,linux操作系统、unix操作系统、android操作系统、ios操作系统或windows操作系统等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用程序。并且,可选地,该计算系统是智能手机等手持设备,或个人计算机等终端设备,本技术并未特别限定,只要能够通过本技术实施例提供的方法即可。本技术实施例提供的sql注入攻击的检测方法的执行主体可以是计算系统,或者,是计算系统中能够调用程序并执行程序的功能模块。
79.下面结合图1,对本技术实施例提供的一种计算设备进行详细描述。
80.图1是本技术实施例提供的一种计算设备100的架构示意图。该计算设备200可以是服务器或者计算机或者其他具有计算能力的设备。图1所示的计算设备100包括:至少一个处理器110和内存120。
81.处理器110执行内存120中的指令,使得计算设备100实现本技术提供的sql注入攻击的检测方法,例如实现由sql注入攻击的检测装置执行的步骤。或者,处理器110执行内存
120中的指令,使得计算设备100实现本技术提供的sql注入攻击的检测装置,例如实现sql注入攻击的检测装置包括的各功能模块。
82.可选地,计算设备100还包括系统总线,其中,处理器110和内存120分别与系统总线连接。处理器110能够通过系统总线访问内存120,例如,处理器110能够通过系统总线在内存120中进行数据读写或代码执行。该系统总线是快捷外设部件互连标准(peripheral component interconnect express,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。所述系统总线分为地址总线、数据总线、控制总线等。为便于表示,图1中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
83.一种可能的实现方式,处理器110的功能主要是解释计算机程序的指令(或者说,代码)以及处理计算机软件中的数据。其中,该计算机程序的指令以及计算机软件中的数据能够保存在内存120或者缓存116中。
84.可选地,处理器110可能是集成电路芯片,具有信号的处理能力。作为示例而非限定,处理器110是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其中,通用处理器是微处理器等。例如,该处理器110是中央处理单元(central processing unit,cpu)。
85.可选地,每个处理器110包括至少一个处理单元112和内存控制单元114。
86.可选地,处理单元112也称为核心(core)或内核,是处理器最重要的组成部分。处理单元112是由单晶硅以一定的生产工艺制造出来的,处理器所有的计算、接受命令、存储命令、处理数据都由核心执行。处理单元分别独立地运行程序指令,利用并行计算的能力加快程序的运行速度。各种处理单元都具有固定的逻辑结构,例如,处理单元包括例如,一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元。
87.一种实现举例,内存控制单元114用于控制内存120与处理单元112之间的数据交互。具体地说,内存控制单元114从处理单元112接收内存访问请求,并基于该内存访问请求控制针对内存的访问。作为示例而非限定,内存控制单元是内存管理单元(memory management unit,mmu)等器件。
88.一种实现举例,各内存控制单元114通过系统总线进行针对内存120的寻址。并且在系统总线中配置仲裁器(图中未示出),该仲裁器负责处理和协调多个处理单元112的竞争访问。
89.一种实现举例,处理单元112和内存控制单元114通过芯片内部的连接线,例如地址线,通信连接,从而实现处理单元112和内存控制单元114之间的通信。
90.可选地,每个处理器110还包括缓存116,其中,缓存是数据交换的缓冲区(称作cache)。当处理单元112要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助处理单元112更快地运行。
91.内存(memory)120能够为计算设备100中的进程提供运行空间,例如,内存120中保存用于生成进程的计算机程序(具体地说,是程序的代码)。计算机程序被处理器运行而生成进程后,处理器在内存120中为该进程分配对应的存储空间。进一步的,上述存储空间进
一步包括文本段、初始化数据段、位初始化数据段、栈段、堆段等等。内存120在上述进程对应的存储空间中保存进程运行期间产生的数据,例如,中间数据,或过程数据等等。
92.可选地,内存也称为内存储器,其作用是用于暂时存放处理器110中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,处理器110就会把需要运算的数据调到内存中进行运算,当运算完成后处理单元112再将结果传送出来。
93.作为示例而非限定,内存120是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本文描述的系统和方法的内存120旨在包括但不限于这些和任意其它适合类型的存储器。
94.以上列举的计算设备100的结构仅为示例性说明,本技术并未限定于此,计算设备100包括现有技术中计算系统中的各种硬件,例如,计算设备100还包括除内存120以外的其他存储器,例如,磁盘存储器等。本领域的技术人员应当理解,计算设备100还可以包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,上述计算设备100还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,上述计算设备100也可仅仅包括实现本技术实施例所必须的器件,而不必包括图1中所示的全部器件。
95.下面结合图2,对本技术实施例提供的sql注入攻击的检测方法进行详细的介绍。该方法可以由图1所示的计算设备100执行,以实现本技术提供的sql注入攻击的检测方法,例如实现由sql注入攻击的检测装置执行的步骤。
96.图2是本技术实施例提供的一种sql注入攻击的检测方法的示意性流程图。如图2所示,该方法可以包括步骤210-240,下面分别对步骤210-240进行详细描述。
97.步骤210:获取第一神经网络模型的预测值,所述第一神经网络模型的输入是训练样本,所述第一神经网络模型的预测值是所述训练样本为sql注入攻击的概率。
98.步骤220:获取第一训练样本集合,所述第一训练样本集合中包括多个第一训练样本,所述多个第一训练样本为sql注入攻击的概率大于第一预设阈值。
99.步骤230:获取第二训练样本集合,所述第二训练样本集合中包括多个第二训练样本,所述多个第二训练样本为所述第一训练样本集合中被人工标注的可能是sql注入攻击的训练样本。
100.步骤240:将所述第二训练样本集合作为所述第一神经网络模型的输入,对所述第一神经网络模型的参数进行增量式训练,得到第二神经网络模型。
101.上述技术方案中,可以不过度依赖于安全专家的经验知识,能够及时的使用新数
据,发现未知攻击和变种攻击,提高sql注入攻击的检测准确度,降低漏报率、误报率。
102.作为示例,上述第一神经网络模型和/或所述第二神经网络模型可以是长短期记忆网络lstm模型。采用基于lstm的深度学习算法,不需要利用专家的先验知识人工构建规则库或特征,省去大量人力投入和维护成本,另外利用lstm能够有效捕捉时间序列和强大的对前后文的理解的优势可以检测未知和变种攻击行为。
103.下面结合图3,对实现本技术实施例提供的sql注入攻击的检测方法的一种系统架构进行描述。
104.图3是本技术实施例提供的一种系统架构示意图。如图3所示,该系统架构中可以包括:训练模块310、检测模块320,其中,训练模块310包括数据源模块311、数据预处理模块312、训练模块313,检测模块320包括数据源模块321、数据预处理模块322、预测模块323、降噪模块324。
105.数据源模块311,用于获取sql注入攻击的样本和未被sql注入攻击的样本。应理解,为了便于描述,下文中可以将sql注入攻击的样本称为黑样本,将未被sql注入攻击的样本称为白样本。
106.数据预处理模块312,用于对数据源模块311获取的输入样本进行数据预处理,使得该输入样本被处理成训练模块313可接受的数据格式。
107.训练模块313,用于通过深度学习算法训练模型,得到预测模型。
108.数据源模块321,用于接收待预测的数据。
109.数据预处理模块322,用于对数据源模块321接收到的待预测的数据进行数据预处理,使得该待预测的数据被处理成预测模块323可接受的数据格式。
110.预测模块323,用于根据训练模块313得到的预测模型对待预测的数据进行线上预测,从而判断出所述待预测的数据中的黑样本。
111.降噪模块324,用于识别出sql注入成功的样本,并交由安全监控人员进行审核。
112.下面结合图4中具体的例子,对图3所示的系统架构中各个模块的具体实现方式进行描述。应理解,图4的例子仅仅是为了帮助本领域技术人员理解本技术实施例,而非要将申请实施例限制于图4的具体数值或具体场景。本领域技术人员根据所给出的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本技术实施例的范围内。
113.图4是本技术实施例提供的另一种sql注入攻击的检测方法的示意性流程图。如图4所示,该方法可以包括步骤410-490,下面分别对步骤410-490进行详细描述。
114.步骤410:数据源模块311获取训练数据。
115.数据源模块311可以从开源数据集和web请求日志收集黑样本和白样本,并通过特殊工具生成黑样本,作为训练数据,然后将训练数据传递给数据预处理模块312。
116.作为示例,特殊工具生成黑样本主要是通过工具生成sql注入语句。开源数据集主要来源于代码管理平台(例如,github)上公开的sql注入黑样本数据集。web请求日志主要来源于nginx代理日志和waf请求和告警日志,从waf告警日志中提取出被waf拦截掉的sql注入数据,从waf请求日志中提取出被waf漏掉的sql注入数据,从nginx日志中提取出正常请求日志作为白样本。
117.步骤420:数据预处理模块312对训练数据进行预处理。
118.数据预处理模块312可以对从数据源模块311传来的训练数据进行预处理,并将处
理之后的训练数据传递到训练模块313。
119.作为示例,该预处理的过程主要包含统一资源定位符(uniform resource locator,url)解码,提取参数部分,标注数据,分字,转换成词向量等。
120.下面结合步骤1-步骤5,对预处理的一种可能具体实现方式进行详细描述。
121.1、数据预处理模块312可以对步骤410收集的训练数据进行预处理,包括url解码,从url中提取出参数部分,去掉空参数值,然后把每一个url中的每一个参数值单独作为一个训练样本。
122.2、数据预处理模块312对预处理之后得到的数据样本进行词向量训练。可以对全部训练样本进行分字,构建字典集合,然后把每一条训练样本中的每一个字符转换成其字典中的索引。即每一条训练样本都转换成一个由字符在字典中的索引构成的向量,并采用对每一个字符t进行训练,得到每一个字符t对应的词向量v
t
。作为示例,可以采用词向量(word to vector,word2vec)技术学习文本的语义信息,对每一个字符t进行训练,得到每一个字符t对应的词向量v
t

123.词向量具有良好的语义特性,是表示词语特征的常用方式。词向量每一维的值代表一个具有一定的语义和语法上解释的特征。所以,可以将词向量的每一维称为一个词语特征。
124.应理解,word2vec,是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型(bag-of-words model)假设下,词的顺序是不重要的。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系,该向量为神经网络之隐藏层。
125.词袋模型(bag-of-words model)是个在自然语言处理和信息检索(information retrieval,ir)下被简化的表达模型。此模型下,像是句子或是文件这样的文字可以用一个袋子装着这些词的方式表现,这种表现方式不考虑文法以及词的顺序。最近词袋模型也被应用在计算机视觉领域。词袋模型被广泛应用在文件分类,词出现的频率可以用来当作训练分类器的特征。
126.3、数据预处理模块312对预处理之后得到的数据样本按照指定长度进行截断/补齐,使得所有样本长度相同,则每一个url参数可以表示为samplei={c
i1
,c
i2
,...,c
in
}。
127.4、数据预处理模块312对步骤3得到的训练样本进行人工标注。标注的标签为y(代表sql注入)和n(代表非sql注入)。
128.5、数据预处理模块312构建嵌入层,利用步骤2训练得到的词向量对步骤4的样本进行转换,经过嵌入层转换后每一个url参数表示为samplei={v
i1
,v
i2
,...,v
in
},即词向量矩阵。
129.步骤430:训练模块313通过深度学习算法训练模型,得到预测模型。
130.下面结合步骤6-步骤11,对预处理的一种可能具体实现方式进行详细描述。
131.6、以步骤5得到的每一个词向量矩阵samplei作为输入构建lstm神经网络模型的遗忘门f
t
=σ(wf·
[h
t-1
,v
t
] bf),其中h
t-1
表示上一时刻(上一个字符)对应的隐层的输出,v
t
表示当前的输入向量,σ表示sigmoid激活函数。遗忘门用来决定在细胞状态中丢弃什么信息。
[0132]
7、以步骤5得到的每一个词向量矩阵samplei作为输入构建lstm神经网络模型的输入门i
t
=σ(wi·
[h
t-1
,v
t
] bi),其中h
t-1
表示上一时刻(上一个字符)对应的隐层的输出,v
t
表示当前的输入向量,σ表示sigmoid激活函数。输入门用来决定让多少新的信息加入到细胞状态中。
[0133]
8、利用步骤6和步骤7得到的i
t
和f
t
,更新lstm的细胞状态,
[0134]
9、以步骤5得到的每一个词向量矩阵samplei作为输入构建输出门o
t
=σ(wo·
[h
t-1
,v
t
] bo),结合步骤8的c
t
构建当前细胞状态需要输出的隐层h
t
=o
t
*tanh(c
t
)。
[0135]
10、利用步骤4的标签类别和步骤9的隐层构建分类器损失函数,采用交叉熵作为损失函数,记
[0136]
11、对每一个输入,以步骤10的损失函数对步骤6-9中的每一个参数进行学习,更新参数值,即对每一个参数执行梯度下降,找到损失函数值最小时所有参数对应的取值。
[0137]
12、重复步骤10-步骤11,步直到所有数据都得到训练,得到模型model,并部署上线。
[0138]
步骤440:数据源模块321实时采集web请求日志。
[0139]
作为示例,数据源模块321可以通过探针/防火墙类的采集器采集应用层流量,提取并重组成web请求日志,然后将日志传递给数据预处理模块322。
[0140]
步骤450:数据预处理模块322对实时采集的web请求日志进行预处理。
[0141]
主要包含url解码,提取参数部分,转换成词向量,并将词向量传递到预测模块323。
[0142]
应理解,数据预处理模块322对实时采集的web请求日志进行预处理的过程与上文中数据预处理模块312对训练数据进行预处理类似,具体的请参考上文中的描述,此处不再赘述。
[0143]
步骤460:预测模块323使用训练模块313得到的模型model对输入数据进行线上实时预测。
[0144]
如果预测结果是正常,则通过主动学习技术选择需要审核人员人工标注的数据,审核人员将标注核结果传递到训练模块313,对模型进行增量式训练,然后将更新后的模型传递到预测模块313。否则将异常结果传递到降噪模块324进行处理。
[0145]
作为示例,预测模块323可以将步骤450的词向量矩阵作为输入传递到步骤430得到的模型中,模型计算每一个样本属于sql注入类别的概率。
[0146]
预测模块323可以将正常的预测结果,例如,预测概率大于0.5的样本送入步骤470,由预测模块323对模型进行增量式训练。预测模块323还可以将异常的预测结果,例如,将预测概率大于0.9的样本送入步骤490或将预测概率大于0.5的样本送入步骤470,由降噪模块324进一步识别出sql注入成功的样本,并交由安全监控人员进行审核。
[0147]
步骤470:预测模块323对预测概率大于0.5的样本进行主动学习和人工审核标注,并根据人工标注出的属于sql注入类别的样本,对神经网络的参数进行增量式训练。
[0148]
具体的,预测模块323可以利用主动学习策略(例如,breaking ties策略)选择满
足要求的样本,并将该样本交给审核人员进行人工标注。作为示例,该主动学习策略将样本属于两个类别的概率的差值作为准则,当样本属于两个类别的概率很接近时,例如小于某个设定的阈值,则分类器的分类置信度最低,这时,需要将这类样本交给审核人员进行人工标注。
[0149]
在审核人员进行人工标注的样本达到一定数量时,可以将这些样本送入神经网络模型,利用在线被动攻击学习算法对神经网络的参数进行增量式训练。其中θ表示神经网络的所有参数,j表示第11步中的交叉熵损失函数,λ表示权重因子,表示当前的神经网络参数。训练调优模型后进入步骤12重新部署上线。
[0150]
上述技术方案是一种人机协同的在线学习模型,一方面,这种模型可以不断的对最新的web请求日志进行学习,区别于传统的静态模型,本技术对于不断变化的sql注入攻击方式具有更强的适应能力。另一方面,本技术在进行在线学习的过程中,采用主动学习策略来选择类别区分不明显的样本交给审核人员进行标注,无需对全部样本进行标注,减轻了标注人员的负担。同时,对于新增的标注样本,神经网络只需要进行增量式训练,不需要神经网络对已经学习的训练集进行重复训练,减少了训练模型的时间和内存压力,保留了已学习的知识并不断的从样本中学习到了新的知识。另一方面,本技术采用词向量、lstm等深度神经网络技术,可以自动学习预处理之后的url的语义,无需人工分词和设计特征,无需依赖安全专家即可构建url注入检测模型,另外由于该技术可以自动发现字符之间的上下文联系,因此可以检测变种攻击行为。
[0151]
步骤480:降噪模块324根据预测概率小于0.5的样本构建响应文件大小历史基线字典。
[0152]
降噪模块324获得预测概率小于0.5的样本,并根据请求域名、请求路径、请求参数的key进行聚合,即将请求域名、请求路径、请求参数的key相同的数据归为一个集合。将该集合中的响应文件大小字段的值放到一个列表中,作为响应文件大小历史基线字典。
[0153]
作为示例,一种可能的历史基线字典格式如下所示:
[0154]
{domainname:{path1:{ks1:[responsesize1,rs2,

],ks2:[rs1,rs2,

]},path2:{ks1:[rs1,rs2,

],ks2:[res1,rs2,

]}}}。
[0155]
需要说明的是,该历史基线可以定期删除历史数据,只保留最近n天的数据。
[0156]
步骤490:降噪模块324从预测概率大于0.9的样本中确定出真正注入成功的行为。
[0157]
具体的,作为示例,对于预测概率大于0.9的样本,降噪模块324可以根据源ip、请求域名、请求路径进行合并,将源ip、请求域名、请求路径相同的数据放到一个集合中。对每一个集合中的数据,根据发生时间进行排序,将前后两次间隔小于指定时间(如30分钟)的请求划分到一个会话中,超过指定时间间隔的划分到两个会话中,划分后,每一个会话中是一组具有相同源ip、请求域名和请求路径,且请求时间间隔相近的日志数据。
[0158]
对于每一个会话,计算该会话的请求速率(请求次数/会话长度),若请求速率大于某个值,则认为是扫描行为,注入失败;否则,计算会话中的返回文件大小的方差,若方差为0,即该会话中所有的请求返回的数据大小是相同的,则注入失败;否则,对当前会话中的每一条数据,根据该条数据的请求域名、请求路径、请求参数key从步骤480得到的历史基线字
典中找到历史出现过的正常的响应文件大小列表,利用该列表数据构建箱线图,找出异常点(也可以称为高可疑数据),并将该高可疑数据输出给监控人员进行审核,分析网页是否被入侵。
[0159]
上述技术方案中,可以基于会话技术,并结合响应文件大小、请求速率和响应文件大小历史基线数学分布过滤了注入失败和历史出现过的行为。从大量的sql注入扫描数据中发现真正注入成功的数据更加适用于云安全监控场景,无需处理全部的sql注入攻击告警,降低了web安全监控人员的监控压力。
[0160]
上文结合图1至图4,详细描述了本技术实施例中的sql注入攻击的检测方法,下面将结合图5,详细描述本技术的装置实施例。
[0161]
图5是本技术实施例提供的一种sql注入攻击检测的装置500的示意性框图。
[0162]
sql注入攻击检测的装置500能够执行图2或图4所示的方法中sql注入攻击检测的装置所执行的各个步骤,为了避免重复,此处不再详述。sql注入攻击检测的装置500包括:获取模块510、训练模块520,
[0163]
获取模块510,用于获取第一神经网络模型的预测值,所述第一神经网络模型的输入是训练样本,所述第一神经网络模型的预测值是所述训练样本为sql注入攻击的概率;
[0164]
所述获取模块510,还用于获取第一训练样本集合,所述第一训练样本集合中包括多个第一训练样本,所述多个第一训练样本为sql注入攻击的概率大于第一预设阈值;
[0165]
所述获取模块510,还用于获取第二训练样本集合,所述第二训练样本集合中包括多个第二训练样本,所述多个第二训练样本为所述第一训练样本集合中被人工标注的可能是sql注入攻击的训练样本;
[0166]
训练模块520,用于将所述第二训练样本集合作为所述第一神经网络模型的输入,对所述第一神经网络模型的参数进行增量式训练,得到第二神经网络模型。
[0167]
可选地,sql注入攻击检测的装置500还包括:
[0168]
选择模块520,用于根据主动学习策略从所述第一训练样本集合中选择出需要被人工标注的所述多个第二训练样本。
[0169]
可选地,所述第二训练样本为第一概率和第二概率之差小于第二预设阈值,所述第一概率为所述第二训练样本为sql注入攻击的概率,所述第二概率为所述第二训练样本不是sql注入攻击的概率。
[0170]
可选地,sql注入攻击检测的装置500还包括:
[0171]
处理模块530,用于对所述训练样本进行数据处理,生成词向量矩阵;
[0172]
预测模块540,用于将所述词向量矩阵作为输入,根据所述第二神经网络模型预测所述第二神经网络模型的预测值,所述第二神经网络模型的预测值用于确定所述训练样本为sql注入攻击的概率。
[0173]
可选地,sql注入攻击检测的装置500还包括:
[0174]
确定模块550,用于利用会话技术和/或响应文件确定所述训练样本中sql注入成功的样本。
[0175]
可选地,所述响应文件包括以下中的一种或多种:所述响应文件的大小、所述响应文件的请求速率、所述响应文件的大小的历史基线。
[0176]
可选地,所述第一神经网络模型和/或所述第二神经网络模型为长短期记忆网络
lstm模型。
[0177]
作为示例,“模块”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(application specific integrated circuit,asic)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
[0178]
本技术实施例还提供一种芯片,该芯片获取指令并执行该指令来实现上述结构化查询语句sql注入攻击检测的方法,或者该指令用于实现上述的结构化查询语句sql注入攻击检测的装置。
[0179]
可选地,作为一种实现方式,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,执行上述结构化查询语句sql注入攻击检测的方法。
[0180]
可选地,作为一种实现方式,该芯片还可以包括存储器,该存储器中存储有指令,该处理器用于执行该存储器上存储的指令,当该指令被执行时,该处理器用于执行上述结构化查询语句sql注入攻击检测的方法。
[0181]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有指令,该指令用于上述方法实施例中的结构化查询语句sql注入攻击检测的方法,或者该指令用于实现上述结构化查询语句sql注入攻击检测的装置。
[0182]
本技术实施例还提供一种包含指令的计算机程序产品,该指令用于实现上述方法实施例中的结构化查询语句sql注入攻击检测的方法,或者该指令用于实现上述结构化查询语句sql注入攻击检测的装置。
[0183]
一种实现举例,处理器可以为中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0184]
一种实现举例,存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,ram)可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0185]
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也
可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
[0186]
本技术中,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
[0187]
在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0188]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0189]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0190]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献