技术新讯 > 电子通信装置的制造及其应用技术 > 流量样本生成方法及装置、程序产品、介质及设备与流程  >  正文

流量样本生成方法及装置、程序产品、介质及设备与流程

  • 国知局
  • 2024-08-02 13:54:03

本发明涉及网络安全,具体而言,涉及一种流量样本生成方法及装置、程序产品、介质及设备。

背景技术:

1、由于web应用程序对用户输入数据的合法性没有进行严格的判断和过滤,导致攻击者可以在web应用程序中事先定义好的查询语句中添加额外的sql语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息,此种攻击方式一般称为sql注入。

2、近年来,随着人工智能技术的发展,深度学习技术也被引入到sql注入的检测中,即利用训练好的深度学习模型对进行数据查询的http流量包进行检测,以识别其中是否存在sql注入行为。

3、然而,为提高检测效果,需要提供海量的http流量样本来对上述深度学习模型进行训练。目前产生训练样本的方式一般有两类:第一类方式称为造包,即根据事先收集的sql注入载荷,模拟http流量特征,生成对应的http流量包作为样本,此类方式通常需要人工录入大量sql注入载荷,非常耗费时间和精力;第二类方式称为抓包,即搭建sql注入漏洞靶场,然后利用sql注入工具产生sql注入载荷并向靶场中的靶机发起扫描攻击,在模拟攻击的过程中利用流量捕获工具抓取对应的http流量包作为样本,此类方式为获得较多的样本需要搭建多种不同类型的靶场,实现起来也非常繁琐。

技术实现思路

1、本技术实施例的目的在于提供一种流量样本生成方法及装置、存储介质及电子设备,以改善上述技术问题。

2、为实现上述目的,本技术提供如下技术方案:

3、第一方面,本技术实施例提供一种流量样本生成方法,包括:利用sql注入工具产生sql注入载荷;根据所述sql注入载荷封装产生http流量样本。

4、上述流量样本生成方法结合了造包和抓包两类流量样本产生方法的优点,一方面直接利用sql注入工具自动产生大量sql注入载荷,避免了人工收集载荷的过程,另一方面直接基于sql注入载荷封装产生http流量样本,无需搭建靶场,无需在靶场中进行sql注入,样本生成不受靶机、网络性能约束。总之,该方法显著简化了http流量样本的生成过程,提高了样本生成效率,有利于在短时间内生成大量样本,从而更好地训练用于sql注入检测的深度学习模型。

5、在第一方面的一种实现方式中,所述利用sql注入工具产生sql注入载荷,包括:遍历多种sql注入参数的取值组合,针对每个取值组合生成对应的sql注入指令;调用sql注入工具执行所述sql注入指令,以生成sql注入载荷。

6、在上述实现方式中,通过遍历多种sql注入参数的取值组合来调用sql注入工具生成sql注入载荷,确保了载荷的丰富性,从而有利于提高http流量样本的丰富性。另外,上述实现方式是基于sql注入参数主动调用sql注入工具来产生载荷,而不是交由sql注入工具自主攻击靶机来产生载荷,使得载荷的产生不会受限于靶场环境,同样有利于提高载荷的丰富性。另外,使用sql注入工具自主攻击时,往往会针对不同的攻击路径重复进行sql注入,产生大量高度类似的http流量样本,不仅使得样本冗余度过高,而且耗费大量时间,上述实现方式由于不使用sql自主攻击,因此不存在这些问题。

7、在第一方面的一种实现方式中,用于生成所述sql注入指令的sql注入参数根据执行所述流量样本生成方法的设备性能确定。

8、在上述实现方式中,由于执行sql注入指令相对来说比较消耗系统资源,因此可以根据设备性能来选择用于生成sql注入指令的sql注入参数,避免产生过多的sql注入指令,影响设备的正常运行。当然,sql注入指令的数量也不必过少,这样将难以充分利用设备的性能。

9、在第一方面的一种实现方式中,用于生成所述sql注入指令的sql注入参数为第一类sql注入参数,未用于生成所述sql注入指令的sql注入参数为第二类sql注入参数;所述遍历多种sql注入参数的取值组合,针对每个取值组合生成对应的sql注入指令,包括:遍历所述第一类sql注入参数的取值组合,针对所述第一类sql注入参数的每个取值组合生成对应的sql注入指令;所述调用sql注入工具执行所述sql注入指令,以生成sql注入载荷,包括:调用sql注入工具执行所述sql注入指令,所述sql注入指令在被执行时,遍历所述第二类sql注入参数的取值组合,针对所述第二类sql注入参数的每个取值组合生成对应的sql注入载荷。

10、在上述实现方式中,不用于生成sql注入指令的sql注入参数可以放到sql注入指令执行时进行遍历,一方面确保了载荷的丰富性,另一方面也避免了生成过多sql注入指令而影响设备的正常运行。

11、在第一方面的一种实现方式中,所述第一类sql注入参数包括sql注入是否使用绕过脚本,所述第二类sql注入参数包括sql注入所使用的绕过脚本。

12、在上述实现方式中,为了避免生成过多的sql注入指令,可以构造一个sql注入参数“是否使用绕过脚本”并将其用于生成sql注入指令,而不是直接在生成sql注入指令时遍历所有的绕过脚本。另外,参数“sql注入是否使用绕过脚本”也可以视为一个选项开关,用户可以选择在生成http流量样本时是否要考虑绕过脚本的问题。

13、在第一方面的一种实现方式中,所述根据所述sql注入载荷封装产生http流量样本,包括:将所述sql注入载荷分别拼接在http请求中的多个预设位置,得到带有载荷的http请求;根据所述http请求封装产生http流量样本。

14、在上述实现方式中,将同一个sql注入载荷分别拼接在http请求中的多个预设位置,以此来产生不同的http流量样本,不仅丰富了样本数量,而且体现出了实际sql注入攻击的多样性。

15、在第一方面的一种实现方式中,所述根据所述http请求封装产生http流量样本,包括:将所述http请求封装为http请求报文,构造所述http请求对应的http响应,并将所述http响应封装为http响应报文,以获得包括所述http请求报文及其对应的所述http响应报文的http流量样本。

16、在上述实现方式中,http请求报文是基于生成的sql注入载荷封装的,http响应报文则是直接构造的,从而有利于快速产生大量样本。另外,上述实现将一个http请求报文和相应的http响应报文视为一个http流量样本,在粒度上比较合理,有利于sql注入的检测。

17、第二方面,本技术实施例提供一种流量样本生成装置,包括:载荷生成模块,用于利用sql注入工具产生sql注入载荷;样本生成模块,用于根据所述sql注入载荷封装产生http流量样本。

18、第三方面,本技术实施例提供一种计算机程序产品,包括计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种实现方式提供的方法。

19、第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种实现方式提供的方法。

20、第五方面,本技术实施例提供一种电子设备,包括:存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面或第一方面的任意一种实现方式提供的方法。

本文地址:https://www.jishuxx.com/zhuanli/20240801/241024.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。