基于深度学习动态靶场特征融合的SQL攻击识别方法及系统

文档序号:39188229发布日期:2024-08-27 18:55阅读:21来源:国知局
基于深度学习动态靶场特征融合的SQL攻击识别方法及系统

本发明涉及一种基于深度学习动态靶场特征融合的sql攻击识别方法,具体属于网络安全和人工智能深度学习交叉技术。


背景技术:

1、随着web系统的广泛使用和大数据创造的巨大价值,数据库的安全问题越来越受到人们的关注。在数据库面临的众多安全风险中,web应用程序运行中容易受到sql注入攻击的影响,sql注入攻击者通过注入恶意sql语句,获取web网站的敏感信息,这些语句被输入到后端执行时将会对数据库进行攻击,从而获得应用程序底层数据库的权限,使攻击者可以自由访问该数据库及其包含的潜在信息,例如窃取数据库信息、个人隐私数据、用户密码等,进而实现任意恶意删除,篡改等,从而带来web系统数据、用户隐私或敏感数据的安全威胁。根据国家最新信息安全漏洞库公布的数据,目前sql注入漏洞占互联网所报告web漏洞的11.67%。因此,对于sql注入攻击的检测和防御至关重要。

2、sql注入检测研究中使用的数据集包括公共数据集、自定义数据集以及公共数据集与自定义数据集混合的数据集。传统的sql注入检测方法主要依靠规则匹配和特征提取等技术,但这些方法往往难以适应不断变化的攻击手段。机器学习作为一种新兴的技术,可以对大量的数据进行学习和分析,从而识别和预测未知的攻击手段,但是如何获取大量又可靠的数据又是一个困难问题。此外,虽然近年来针对sql注入攻击识别和特征提取的研究取得了重要进展,各种模型在检测sql注入攻击中各有优势,但依然存在一些关键问题仍亟待解决,这主要包括:

3、(1)数据不平衡的问题。在实际的应用场景中,正常查询远远多于恶意查询,这将直接影响模型在学习过程中,倾向于将大多数查询都归类为正常查询,直接导致了数据不平衡的问题,此外,攻击者可以通过多种方式构造恶意的sql查询,以绕过检测,从而降低了对恶意查询的辨别能力。

4、(2)攻击多样性和变异性问题。针对全新的的攻击变异,这对于那些依赖于已知样本的模型来说是一个严重的问题,有可能合法查询被错误地标记为恶意攻击导致高误报率,而某些恶意查询没有被检测到会导致高漏报率。因此进一步削弱了预测的准确性和可靠性,从而导致攻击漏检或误报率居高不下。

5、另外,当前公开可用的sql注入攻击数据集非常有限。这主要受到了法律和数据安全方面的限制,以及网站所有者的数据保护策略的影响。通常情况下,网站所有者不允许未经授权的扫描和攻击行为,同时他们还经常采用数据加密技术来保护敏感信息的传输。这些因素导致了公开获取sql注入攻击数据的困难。即使存在一些公开的数据集,这些数据集可能仅包含有限类型的sql注入攻击样本,缺乏足够的变化和复杂性,无法全面反映sql注入攻击的多种形式和技巧,还存在多样性不足的问题,无法满足广泛的研究和实验需求。


技术实现思路

1、本发明解决的技术问题是:针对现有网络sql攻击检测中采集的公开可用的sql注入攻击数据集有限导致的漏检和误报率高的问题,提供一种基于深度学习动态靶场特征融合的sql攻击识别方法。

2、本发明采用如下技术方案实现:

3、一方面提供一种基于深度学习动态靶场特征融合的sql攻击识别方法,包括如下步骤:

4、s1、搭建靶向服务器模拟真实sql注入攻击,获取注入攻击样本;

5、s2、对获取的注入攻击样本数据包进行解码并检测,获得注入攻击语句文本数据集,对文本数据集中的注入攻击语句进行分词处理;

6、s3、结合词频文本频率指数和superterm_vector词向量算法对分词处理后的文本数据集进行处理,将数据集中注入攻击语句的文本数据转化为对应的数值向量特征;

7、s4、将s3处理得到的注入攻击语句数值向量特征和正常的sql查询语句数值向量特征组合作为训练数据集,输入lc-cnn模型进行分类模型训练,所述lc-cnn模型设置两层卷积层,所述卷积层后连接扁平化层,再连接到全连接层;

8、s5、使用s4中训练好的lc-cnn模型对测试数据进行识别,判断是否存在sql攻击。

9、在本发明的基于深度学习动态靶场特征融合的sql攻击识别方法中,具体的,所述步骤s1中,采用php study工具建立仿真环境,搭建本地sqli-libs靶场服务器,采用sqlmap接口函数对本地靶场服务器中web应用程序进行探测和扫描,利用sqlmap自动化工具模拟自动执行sql注入攻击,并通过wireshark抓包工具捕获真实有效的注入数据,获得注入攻击样本。

10、在本发明的基于深度学习动态靶场特征融合的sql攻击识别方法中,具体的,所述步骤s2中对s1获取的注入攻击样本数据包中的加密数据进行识别解码,对注入攻击样本数据依次判断是否属于base64解码格式和unicode解码格式,并进行解码转化为utf-8编码格式输出注入攻击语句文本,并对输出的注入攻击语句文本进行简化处理,将其中的十进制数字转化为0×12,日期和时间替换为1-1-1,重写的关键字只保留一个,删除注入攻击语句中的噪音字符。

11、在本发明的基于深度学习动态靶场特征融合的sql攻击识别方法中,具体的,所述步骤s2采用空格分割法对解码后的注入攻击语句进行分词处理,将sql注入攻击语句划分为字符串序列,在其前后添加空格。

12、在本发明的基于深度学习动态靶场特征融合的sql攻击识别方法中,具体的,所述步骤s3中,所述词频文本频率指数通过下式计算:

13、

14、

15、tf-idf=tf×idf,

16、式中tf-idf表示词频文本频率指数,tf(i)表示词i在文本中出现的频率,idf(i)表示词i的重要性指数,total(i)表示注入攻击语句中词i的频数,total表示注入攻击语句总词数,t(i)表示包含词i语句的频数,φ表示偏移量。

17、在本发明的基于深度学习动态靶场特征融合的sql攻击识别方法中,具体的,所述superterm_vector词向量算法将注入攻击语句中每个词表示一个向量,将输入的文本数据映射到多维空间,包括如下过程:

18、构建语料库,收集公开的文本数据作为语料库,对语料库中的文本数据进行预处理,包括分词、去除标点符号、转换为小写、去除停用词,获得干净的文本数据;

19、构建词汇表,从预处理后的语料库中构建一个词汇表,包含语料库中出现的所有唯一单词;

20、构建训练样本,基于词汇表构建训练样本,每个训练样本由一个中心词和其周围的上下文词组成;

21、定义模型结构,选择skip-gram模型通过中心词预测周围的上下文词,将训练样本输入定义的skip-gram模型结构进行训练,训练过程中使用负对数似然损失函数最大化预测上下文词的概率来调整模型参数;

22、获取词向量,将步骤s2中分词后的文本数据集输入训练完成的skip-gram模型,文本数据集中每个单词都被映射到词向量空间中,每个词表示为对应映射的长度向量,根据注入攻击语句中在语义空间中相似度接近的单词在向量空间中距离也接近的原则,通过以下方式计算空间词向量的距离:

23、注入攻击语句包含n个单词w1,w2,w,...,wn,该攻击语句在superterm_vector算法中所有单词的词向量列表表示为v1,v2,v3,...,vn,使用余弦相似度给定两个词向量vμ和vv的余弦相似度similarity(vμ,vv)计算公式如下:

24、

25、其中·表示向量的点积,||vμ||和||υν||分别表示词向量vμ和vv的范数,根据余弦相似度计算注入攻击语句中不同词之间的相似度,对应获得不同单词在词向量空间中的距离。

26、在本发明的基于深度学习动态靶场特征融合的sql攻击识别方法中,具体的,对于注入攻击语句中的每个单词,将其对应的空间词向量与tf-idf相乘,得到每个单词的加权词向量v′w,注入攻击语句的平均加权词向量表示为n表示注入攻击语句包含的词数量,w表示注入攻击语句中包含的单词,d表示注入攻击语句,以注入攻击语句的平均加权词向量作为数值向量特征对lc-cnn模型进行分类模型训练。

27、在本发明的基于深度学习动态靶场特征融合的sql攻击识别方法中,具体的,所述步骤s4中,所述卷积层采用relu函数作为激活函数,所述全连接层采用sigmoid函数作为激活函数,所述扁平化层采用tanh函数作为激活函数。

28、在本发明的基于深度学习动态靶场特征融合的sql攻击识别方法中,具体的,所述lc-cnn模型添加model.compile()函数用于定义模型的优化器、损失函数和评估指标,所述优化器采用adam优化器,所述损失函数使用二元交叉熵,所述评估指标包括确率、f1值以及混淆矩阵,分类模型多次迭代训练过程中通过确定最高分类准确率的迭代来确定最优模型参数设置。

29、本发明还公开了一种基于深度学习动态靶场特征融合的sql攻击识别系统,包括:

30、数据采集模块,搭建靶向服务器模拟真实sql注入攻击,获取注入攻击样本;

31、数据清洗模块,对获取的注入攻击样本数据包进行解码并检测,获得注入攻击语句文本数据集,对文本数据集中的注入攻击语句进行分词处理;

32、特征提取模块,结合词频文本频率指数和superterm_vector词向量算法对分词处理后的文本数据集进行处理,将数据集中注入攻击语句的文本数据转化为对应的数值特征;

33、lc-cnn分类器,内置lc-cnn模型,所述lc-cnn模型设置两层卷积层,所述卷积层后连接扁平化层,再连接到全连接层,通过输入特征提取模块的注入攻击语句数值特征与正常的sql查询语句数值向量特征组合的训练数据集来进行分类模型训练,再使用训练好的lc-cnn模型对测试数据进行识别,判断是否存在sql攻击。

34、本发明采用上述技术方案具有如下有益效果:

35、(1)本发明通过自主创建sql注入攻击靶场,搭建本地sqli-libs的靶场服务器,利用基于sqlmap接口函数的全局探测和自动扫描功能,对本地靶机web应用程序进行深入探测和扫描,主动模拟sql注入攻击并观察web应用程序的响应情况,收集攻击数据和漏洞信息,确保数据采集过程受到控制,并且可以满足研究和实验的需求,实现对sql注入攻击的研究和防御能力的提升。同时,也能够对攻击情景进行精确的控制和监测,以保障安全性和合规性。有助于克服数据获取的限制,并提供更全面、多样的sql注入攻击数据样本,以满足在研究和实验方面的需求,同时也有助于提升对sql注入攻击的防范和检测能力。

36、(2)本发明使用wireshark工具对本地环回网卡进行数据捕获,这些数据包包含攻击过程中的请求、响应和传输数据。最后,因为捕获到的数据包可能会包含加密或混淆的信息,因此需要识别解码加密数据、检测sql注入语句的存在,并进行分词等预处理工作。通过这些处理步骤,能够准备清晰、可理解的数据,使其适用于机器学习模型的训练和分析,从而提高模型的精准度和可适应性。

37、(3)本发明采用空格分割法将sql注入语句划分为字符串序列,在其前后添加空格的方式,以保持其完整性。通过这一处理步骤,有助于捕捉特殊字符的出现位置和上下文,便于更好地理解sql注入攻击语句的结构和语法,从而识别潜在的攻击模式,并为机器学习模型提供清晰、有意义的输入数据,从而提高对sql注入攻击的防范和检测能力。

38、(4)本发明为将文本数据转化为数值特征的结构化数据过程,鉴于词频文本频率指数能够更准确地反映文本数据中的信息,而基于word2vec词向量模型的superterm_vector词向量算法能够准确提高其在捕捉文本语义和上下文关系方面的性能,因此本发明结合词频文本频率指数和superterm_vector词向量算法对sql注入攻击的文本数据进行转化,将数据转化为可以被分类模型所理解的数值特征,以确保最终的结构化数据能够有效地用于分类模型的训练。

39、(5)本发明采用改进的lc-cnn模型,首先设置了两个卷积层,卷积核大小为64×1,深度为64,步长为1,随后连接了一个扁平化层(flatten layer),最后接入全连接层。第一轮卷积后参数数量为203,392个。在此基础上增加了另一层卷积层,旨在提取更多特征,第二轮卷积后参数数量为1,056个。传统的cnn模型中池化层通常用于减少参数数量,但在经过两次卷积后,参数并不适合进行池化操作,因此本发明取消了池化层,直接进行扁平化操作,以便进行后续的二元分类。这一设计旨在增强模型对一维文本数据的处理能力,并为后续的训练任务提供有力支持。

40、综上所述,本发明针对sql注入攻击数据集稀缺和特征提取不完善的挑战,提出了一种融合词频文本频率指数和superterm_vector词向量算法的特征提取模型,并结合靶向服务器模拟攻击情境的方法进行了研究,通过机器学习技术对标准化的sql注入数据集进行训练,优化了卷积神经网络中的模型参数,相较于传统的web应用源代码sql注入攻击检测方式,本发明在训练效率和分类准确率上取得了显著优势,在sql攻击动作识别和不同分级漏洞检测方面达到了90%以上的检测效果,整体具有较好的鲁棒性和泛化能力。

41、以下结合附图和具体实施方式对本发明做进一步说明。

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