基于字节分析的DNS隧道识别方法及装置与流程

文档序号:33645137发布日期:2023-03-29 03:25阅读:72来源:国知局
基于字节分析的DNS隧道识别方法及装置与流程
基于字节分析的dns隧道识别方法及装置
技术领域
1.本公开涉及计算机信息处理领域,具体而言,涉及一种基于字节分析的dns隧道识别方法、装置、电子设备及计算机可读介质。


背景技术:

2.dns(domain name system)是互联网的一项服务。它作为将域名和ip地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。dns隧道是dns攻击的一种,攻击者将点对点、ip或者http代理等协议数据封装到合法的dns请求/响应报文中,以隐蔽通道的方式规避安全策略的检查,进而达到敏感数据窃取、回传控制指令甚至隧道传输其他协议等目的。
3.在dns隧道检测中基于人工提取特征的有监督、无监督的机器学习识别模式较为成熟,且取得比较优异的效果。但随着网络流量的指数级增加,隧道攻击的变更等,人工提取特征的方式变得困难。基于深度学习的dns隧道检测由于其特征自学习的特性在dns隧道检测上有应用优势。深度学习在网络流量的检测应用也有颇多探索。对于网络原始流量为使其满足于深度学习算法的输入要求,常见的输入处理有两类:文本类型和byte类型。
4.尽管机器学习在dns隧道检测上有了一定的成果,但机器学习强依赖特征的提取,但随着网络流量的指数级增加,隧道攻击的变更等,人工提取特征的方式变得困难。
5.因此,需要一种新的基于字节分析的dns隧道识别方法、装置、电子设备及计算机可读介质。
6.在所述背景技术部分公开的上述信息仅用于加强对本技术的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

7.有鉴于此,本技术提供一种基于字节分析的dns隧道识别方法、装置、电子设备及计算机可读介质,能够缓解模型面临数据量,全装置性能等问题,从而实现从byte的角度进行dns检测。
8.本技术的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本技术的实践而习得。
9.根据本技术的一方面,提出一种基于字节分析的dns隧道识别方法,该方法包括:将实时dns流量按照预设策略分为多个数据组;提取多个数据组对应的多个dns层信息;基于字节分析将多个dns层信息转化为多个输入数据;将所述多个输入数据输入隧道识别模型中,生成识别概率;在所述识别概率大于阈值时,确定所述实时dns流量为dns隧道流量。
10.在本技术的一种示例性实施例中,还包括:生成dns流量和dns隧道流量;通过dns流量生成正样本数据;通过dns隧道流量生成负样本数据;通过正样本数据和负样本数据对机器学习模型进行训练以生成所述隧道识别模型。
11.在本技术的一种示例性实施例中,生成dns流量和dns隧道流量,包括:采集dns协
议流量生成所述dns流量;通过预设工具生成并采集所述dns隧道流量。
12.在本技术的一种示例性实施例中,通过dns隧道流量生成负样本数据,包括:将dns隧道流量按照预设策略分为多个数据组;提取多个数据组对应的多个dns层信息;将多个dns层信息转化为所述负样本数据。
13.在本技术的一种示例性实施例中,将多个dns层信息转化为所述负样本数据,包括:将所述多个dns层信息转化为字节值序列;将字节值序列依次存入分组字节矩阵;将所述分组字节矩阵进行归一化处理;为归一化处理之后的分组字节矩阵设置样本标签以生成所述负样本数据。
14.在本技术的一种示例性实施例中,将所述多个dns层信息转化为字节值序列,还包括:将字节序列设置为固定长度;将超出固定长度的字节序列切断;为不足固定长度的字节序列填充。
15.在本技术的一种示例性实施例中,通过正样本数据和负样本数据对机器学习模型进行训练以生成所述隧道识别模型,包括:通过正样本数据和负样本数据对卷积神经网络模型进行训练;在训练过程中的模型参数最优时,生成所述隧道识别模型。
16.在本技术的一种示例性实施例中,将实时dns流量按照预设策略分为多个数据组,包括:将实时dns流量按照五元组和事务标识分为多个数据组。
17.在本技术的一种示例性实施例中,基于字节分析将多个dns层信息转化为多个输入数据,包括:将多个dns层信息基于字节特征进行转化以生成所述多个输入数据。
18.根据本技术的一方面,提出一种基于字节分析的dns隧道识别装置,该装置包括:流量模块,用于将实时dns流量按照预设策略分为多个数据组;信息模块,用于提取多个数据组对应的多个dns层信息;转化模块,用于基于字节分析将多个dns层信息转化为多个输入数据;识别模块,用于将所述多个输入数据输入隧道识别模型中,生成识别概率;阈值模块,用于在所述识别概率大于阈值时,确定所述实时dns流量为dns隧道流量。
19.所述流量模块还生成dns流量和dns隧道流量,通过dns流量生成正样本数据,通过dns隧道流量生成负样本数据;还包括隧道识别模型生成模块(未示出),通过正样本数据和负样本数据对机器学习模型进行训练以生成所述隧道识别模型。所述流量模块通过采集dns协议流量生成所述dns流量以及通过预设工具生成并采集所述dns隧道流量。所述流量模块通过将dns隧道流量按照预设策略分为多个数据组,提取多个数据组对应的多个dns层信息,以及将多个dns层信息转化为所述负样本数据。所述流量模块通过将所述多个dns层信息转化为字节值序列,将字节值序列依次存入分组字节矩阵,将所述分组字节矩阵进行归一化处理,来为归一化处理之后的分组字节矩阵设置样本标签以生成所述负样本数据。所述流量模块通过将字节序列设置为固定长度,将超出固定长度的字节序列切断,来为不足固定长度的字节序列填充。所述隧道识别模型生成模块通过正样本数据和负样本数据对卷积神经网络模型进行训练,在训练过程中的模型参数最优时,生成所述隧道识别模型。所述流量模块通过将实时dns流量按照五元组和事务标识分为多个数据组来将实时dns流量按照预设策略分为多个数据组。所述转化模块将多个dns层信息基于字节特征进行转化以生成所述多个输入数据。
20.根据本技术的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一
个或多个处理器实现如上文的方法。
21.根据本技术的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
22.根据本技术的基于字节分析的dns隧道识别方法、装置、电子设备及计算机可读介质,通过将实时dns流量按照预设策略分为多个数据组;提取多个数据组对应的多个dns层信息;基于字节分析将多个dns层信息转化为多个输入数据;将所述多个输入数据输入隧道识别模型中,生成识别概率;在所述识别概率大于阈值时,确定所述实时dns流量为dns隧道流量的方式,能够缓解模型面临数据量,全装置性能等问题,从而实现从byte的角度进行dns检测。
23.应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本技术。
附图说明
24.通过参照附图详细描述其示例实施例,本技术的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
25.图1是根据一示例性实施例示出的一种基于字节分析的dns隧道识别方法的流程图。
26.图2是根据一示例性实施例示出的一种基于字节分析的dns隧道识别方法的流程图。
27.图3是根据另一示例性实施例示出的一种基于字节分析的dns隧道识别方法的示意图。
28.图4是根据另一示例性实施例示出的一种基于字节分析的dns隧道识别方法的示意图。
29.图5是根据另一示例性实施例示出的一种基于字节分析的dns隧道识别方法的示意图。
30.图6是根据另一示例性实施例示出的一种基于字节分析的dns隧道识别方法的示意图。
31.图7是根据另一示例性实施例示出的一种基于字节分析的dns隧道识别方法的示意图。
32.图8是根据一示例性实施例示出的一种基于字节分析的dns隧道识别装置的框图。
33.图9是根据一示例性实施例示出的一种电子设备的框图。
34.图10是根据一示例性实施例示出的一种计算机可读介质的框图。
35.图11所示的是本公开进行检测时所忽略的包含ip,端口,包长度的header部分。
具体实施方式
36.现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本技术将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示
相同或类似的部分,因而将省略对它们的重复描述。
37.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本技术的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本技术的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本技术的各方面。
38.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
39.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
40.应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本技术概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
41.本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本技术所必须的,因此不能用于限制本技术的保护范围。
42.本技术涉及的技术缩略语解释如下:
43.dns隧道:dns隧道(dns tunneling)是将其他协议的内容封装在dns协议中,然后以dns请求和响应包完成传输数据(通信)的技术。
44.byte:即字节,是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。byte是从0-255的无符号类型,所以不能表示负数。
45.本案申请人经过研究发现,在现有技术中,文本类型方面,例如由pcap文件生成包含端口,ip,请求域名等信息的metadata文本。byte方面,例如rui li,xi xiao等人在《byte segment neural network for network traffic classification》中提出以byte段为数据对象的识别网络协议(如amazon、yahoom、360、foxmail等),并取得优异的准确率。该文将包的负载信息转换为固定长度的byte段,由0到255之间的整数组成,两个数字表示一个byte,byte转换为整数。
46.wei wang,ming zhu等人在《malware traffic classification using convolutional neural network for representation learning》一文中使用原始流量转换为图像使用cnn实现恶意流量的检测。以五元组双向流为对象,取前784个byte转换为28*28的灰度图,结果表明使用所有层,由于包含端口,flag等信息,检测效果最好。
47.陈春霖;许勇刚;李祉岐等人关于《一种基于深度学习的dns隐蔽隧道检测方法》的发明。该发明公开了一种基于深度学习的dns隐蔽隧道检测方法,其特征在于,包括:使用tcpdump抓包dns隐蔽通道工具iodine收发的dns报文,获得黑样本;使用tcpdump抓包内部dns流量,获得白样本;将所述黑样本和所述白样本转换为深度学习检测算法可识别的文件;对所述可识别文件进行随机抽样,获得抽样数据;使用80%的所述抽样数据训练卷积神
经网络,使用余下20%的所述抽样数据对所述卷积神经网络进行模型验证,生成初步模型;使用隐蔽通道攻击的dns样本对所述初步模型进行测试,达到预期效果后,生成一个稳定的检测模型;使用所述检测模型对dns隐蔽隧道进行检测。
48.该发明将原始流量数据转换为metadata的文本数据,需要提取原始流量中的ip,端口,请求域名,请求内容等信息组装成规范格式。然后由于dns协议的特殊性需要面临海量的流量数据,这一功能的实现对于整体系统而言存在着严重的性能问题。
49.chang liu,liang dai等人在《a byte-level cnn method to detect dns tunnels》中用byte表示dns数据包,作为转换为cnn模型的可计算数据。与传统的机器学习方法相比,byte级的cnn方法除了常见的统计信息外,可以学习整个dns数据包中的全部信息,尤其是顺序和结构信息,因此取得了良好的性能结果。仿真结果表明,检测准确率和召回率显着提高,同时避免了复杂的人工特征提取过程,并因此取得了良好的性能结果。
50.该文对0-255数值范围内的byte信息转换为宽度为256的one-hot形式的表格,显然存在矩阵稀疏问题,为解决这一问题文章使用embedding层实现降维。
51.该方案将单个流的整个数据包为分析对象。单个流的处理对象导致模型面临的数据量是成倍的,因为发起一个query会得到一个response响应。由于dns的应用特殊性,模型需要面临的数据量比较客观。
52.尽管数据header中携带部分信息,但更多的信息是无意义的,且在预处理过程中会对数据进行填充与截断,对于长度超出阈值的payload部分,会被截断,反而丢失重要信息,影响最终效果。
53.dns隧道是dns攻击的一种,攻击者将点对点、ip或者http代理等协议数据封装到合法的dns请求/响应报文中,以隐蔽通道的方式规避安全策略的检查,进而达到敏感数据窃取、回传控制指令甚至隧道传输其他协议等目的。因此dns隧道的检测是很有必要的。
54.尽管机器学习在dns隧道检测上有了一定的成果,但机器学习强依赖特征的提取,但随着网络流量的指数级增加,隧道攻击的变更等,人工提取特征的方式变得困难。
55.深度学习在dns隧道检测方面,好的数据预处理工作和有效信息的输入决定了模型的识别效果,为有效、高效检测识别dns隧道,本技术提出一种基于字节分析的dns隧道识别方法,基于byte的深度学习实现dns隧道的检测。
56.图1是根据一示例性实施例示出的一种基于字节分析的dns隧道识别方法的流程图。基于字节分析的dns隧道识别方法10至少包括步骤s102至s110。
57.如图1所示,在s102中,将实时dns流量按照预设策略分为多个数据组。可将实时dns流量按照五元组和事务标识(transaction id)分为多个数据组。
58.dns隧道的分析对象一般有flow和query and/or response几类。其中:
59.(1)flow指以单条流为分析对象;
60.(2)query or response指仅取流量中的query或response部分为分析对象;
61.(3)query and response一般指根据源ip,目的ip,源端口,目的端口,协议五元组的划分,即会话;
62.考虑到dns的特殊性,本技术实施例中,以query and response为分析对象,并使用五元组+标识符(transaction id)的形式进行划分。
63.在s104中,提取多个数据组对应的多个dns层信息。dns目标服务器固定,目标端口
统一为53,决定是否为dns隧道的信息主要集中在dns层,因此将dns层作为处理对象。
64.相较于现有技术中的恶意流量检测方法,在本技术实施例中,忽略包含ip,端口,包长度的header部分。如图11所示。
65.在s106中,基于字节分析将多个dns层信息转化为多个输入数据。可将多个dns层信息基于字节特征进行转化以生成所述多个输入数据。
66.转换十六进制形式为0-255范围的byte值序列,设置固定长度l,不足长度用0填充,超出长度部分截断。
67.更具体的,以query and response为分析对象,将dns层的信息转换为byte形式,然后处理为pbm,归一化后为模型标准输入格式。
68.在s108中,将所述多个输入数据输入隧道识别模型中,生成识别概率。
69.在s110中,在所述识别概率大于阈值时,确定所述实时dns流量为dns隧道流量。可根据历史经验确定阈值,在识别概率大于阈值时,则认为该实时dns流量为dns隧道流量的可能性很大,此时可生成告警信息,以便工作人员跟踪处理。
70.图2是根据一示例性实施例示出的一种基于字节分析的dns隧道识别方法的流程图。基于字节分析的dns隧道识别方法20至少包括步骤s202至s208。
71.如图2所示,在s202中,生成dns流量和dns隧道流量。可采集dns协议流量生成所述dns流量;通过预设工具生成并采集所述dns隧道流量。
72.数据制造与收集阶段需要获取一批正常dns流量作为正样本,一批dns隧道流量作为负样本。
73.在一个实施例中,隧道流量的产生可通过搭建环境,运行dnscat2,iodine,tuns,dnscapy等隧道工具,使用如tcpdump、wireshark等抓包工具,采集隧道流量数据,存储为pcap文件。
74.在一个实施例中,正常流量的产生可通过采集日常dns协议流量生成。
75.在s204中,通过dns流量生成正样本数据。
76.在s206中,通过dns隧道流量生成负样本数据。可将dns隧道流量按照预设策略分为多个数据组;提取多个数据组对应的多个dns层信息;将多个dns层信息转化为所述负样本数据。
77.在一个实施例中,将多个dns层信息转化为所述负样本数据,包括:将所述多个dns层信息转化为字节值序列;将字节值序列依次存入分组字节矩阵;将所述分组字节矩阵进行归一化处理;为归一化处理之后的分组字节矩阵设置样本标签以生成所述负样本数据。
78.更具体的,还包括:将字节序列设置为固定长度;将超出固定长度的字节序列切断;为不足固定长度的字节序列填充。
79.转换十六进制形式为0-255范围的byte值序列,设置固定长度l,不足长度用0填充,超出长度部分截断。
80.如图3所示,将数据依次存入矩阵,这样的矩阵可称其为分组字节矩阵pbm(packet byte matrix),通过归一化操作将数值范围压缩在0-1之间,由于byte值为0-255,归一化操作即每个值除以255。
81.82.如图4所示,在对14万dns隧道的payload长度分析中发现负载长度集中在0-200之间,故在本技术实施例中,有选择的,将长度设置为256(16
×
16),使既包含一般流量的大部分信息,又保障系统运行效率。
83.如图5所示,为l=256时。dnscapy,dns2tcp,tuns,dnscat2,iodine和正常数据的16
×
16矩阵的byte分布图。
84.在s208中,通过正样本数据和负样本数据对机器学习模型进行训练以生成所述隧道识别模型。通过正样本数据和负样本数据对卷积神经网络模型进行训练;在训练过程中的模型参数最优时,生成所述隧道识别模型。
85.如图6所示,卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。本发明使用卷积神经网络实现dns隧道检测的功能,使用卷积层,池化层,全连接层等,具体网络架构根据实际调试为准。
86.模型调参指学习率,正则化,权重初始化,模型结构等影响识别效果的参数调整过程,以便得到高效理想的识别模型。
87.固化模型指将最优效果模型存储,用于后续调用。
88.根据本技术的基于字节分析的dns隧道识别方法,通过将实时dns流量按照预设策略分为多个数据组;提取多个数据组对应的多个dns层信息;基于字节分析将多个dns层信息转化为多个输入数据;将所述多个输入数据输入隧道识别模型中,生成识别概率;在所述识别概率大于阈值时,确定所述实时dns流量为dns隧道流量的方式,能够缓解模型面临数据量,全装置性能等问题,从而实现从byte的角度进行dns检测。
89.应清楚地理解,本技术描述了如何形成和使用特定示例,但本技术的原理不限于这些示例的任何细节。相反,基于本技术公开的内容的教导,这些原理能够应用于许多其它实施例。
90.图7是根据另一示例性实施例示出的一种基于字节分析的dns隧道识别方法的示意图。如图7所示,本技术以流量byte为分析对象,使用深度学习实现dns隧道检测,由数据采集、模型训练、实时流三大模块装置整体。
91.数据采集部分辅助采集流量数据,生成正样本和负样本数据。
92.模型训练模型用于将正样本和负样本数据进行会话组装、格式转化进而生成模型输入数据。
93.在模型训练完毕后,获取实时流量数据,进行模型加载识别,进而判断该实时流量数据是否为dns隧道流量。
94.本技术的基于字节分析的dns隧道识别方法,基于五元组+标识的方式提取数据对象,以dns层byte形式为模型训练对象,设置合适的l值转换为分组字节矩阵
95.本技术的基于字节分析的dns隧道识别方法,基于byte的dns隧道检测的装置全流程框架架构,提出深度学习模型训练,实时流检测的全流程架构。
96.尽管现有技术对基于byte的恶意流量检测有了一定的探索,但由于dns隧道的特殊性,需要具体问题具体分析。本身体提出一种基于byte的dns隧道装置。提出一种使用与dns流量的数据预处理方式,从一定程度上可以缓解模型面临数据量,全装置性能等问题,从而实现从byte的角度使用深度学习实现dns检测。
97.本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由cpu执行
的计算机程序。在该计算机程序被cpu执行时,执行本技术提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
98.此外,需要注意的是,上述附图仅是根据本技术示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
99.下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
100.图8是根据一示例性实施例示出的一种基于字节分析的dns隧道识别装置的框图。如图8所示,基于字节分析的dns隧道识别装置80包括:流量模块802,信息模块804,转化模块806,识别模块808,阈值模块810。
101.流量模块802用于将实时dns流量按照预设策略分为多个数据组;
102.信息模块804用于提取多个数据组对应的多个dns层信息;
103.转化模块806用于基于字节分析将多个dns层信息转化为多个输入数据;
104.识别模块808用于将所述多个输入数据输入隧道识别模型中,生成识别概率;
105.阈值模块810用于在所述识别概率大于阈值时,确定所述实时dns流量为dns隧道流量。
106.根据本技术的基于字节分析的dns隧道识别装置,通过将实时dns流量按照预设策略分为多个数据组;提取多个数据组对应的多个dns层信息;基于字节分析将多个dns层信息转化为多个输入数据;将所述多个输入数据输入隧道识别模型中,生成识别概率;在所述识别概率大于阈值时,确定所述实时dns流量为dns隧道流量的方式,能够缓解模型面临数据量,全装置性能等问题,从而实现从byte的角度进行dns检测。
107.所述流量模块还生成dns流量和dns隧道流量,通过dns流量生成正样本数据,通过dns隧道流量生成负样本数据;还包括隧道识别模型生成模块(未示出),通过正样本数据和负样本数据对机器学习模型进行训练以生成所述隧道识别模型。所述流量模块通过采集dns协议流量生成所述dns流量以及通过预设工具生成并采集所述dns隧道流量。所述流量模块通过将dns隧道流量按照预设策略分为多个数据组,提取多个数据组对应的多个dns层信息,以及将多个dns层信息转化为所述负样本数据。所述流量模块通过将所述多个dns层信息转化为字节值序列,将字节值序列依次存入分组字节矩阵,将所述分组字节矩阵进行归一化处理,来为归一化处理之后的分组字节矩阵设置样本标签以生成所述负样本数据。所述流量模块通过将字节序列设置为固定长度,将超出固定长度的字节序列切断,来为不足固定长度的字节序列填充。所述隧道识别模型生成模块通过正样本数据和负样本数据对卷积神经网络模型进行训练,在训练过程中的模型参数最优时,生成所述隧道识别模型。所述流量模块通过将实时dns流量按照五元组和事务标识分为多个数据组来将实时dns流量按照预设策略分为多个数据组。所述转化模块将多个dns层信息基于字节特征进行转化以生成所述多个输入数据。
108.图9是根据一示例性实施例示出的一种电子设备的框图。
109.下面参照图9来描述根据本技术的这种实施方式的电子设备900。图9显示的电子设备900仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
110.如图9所示,电子设备900以通用计算设备的形式表现。电子设备900的组件可以包括但不限于:至少一个处理单元910、至少一个存储单元920、连接不同系统组件(包括存储单元920和处理单元910)的总线930、显示单元940等。
111.其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元910执行,使得所述处理单元910执行本说明书中描述的根据本技术各种示例性实施方式的步骤。例如,所述处理单元910可以执行如图1,图2中所示的步骤。
112.所述存储单元920可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)9201和/或高速缓存存储单元9202,还可以进一步包括只读存储单元(rom)9203。
113.所述存储单元920还可以包括具有一组(至少一个)程序模块9205的程序/实用工具9204,这样的程序模块9205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
114.总线930可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
115.电子设备900也可以与一个或多个外部设备900’(例如键盘、指向设备、蓝牙设备等)通信,使得用户能与该电子设备900交互的设备通信,和/或该电子设备900能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口950进行。并且,电子设备900还可以通过网络适配器960与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器960可以通过总线930与电子设备900的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备900使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
116.总体而言,本公开涉及一种基于字节分析的dns隧道识别方法及装置,也就是一种dns流量的数据预处理方法以及基于byte的深度学习实现dns隧道的检测的方法。dns隧道是dns攻击的一种,攻击者将点对点、ip或者http代理等协议数据封装到合法的dns请求/响应报文中,以隐蔽通道的方式规避安全策略的检查,进而达到敏感数据窃取、回传控制指令甚至隧道传输其他协议等目的。因此dns隧道的检测是很有必要的。尽管机器学习在dns隧道检测上有了一定的成果,但机器学习强烈依赖特征的提取,但随着网络流量的指数级增加,隧道攻击的变更等,人工提取特征的方式变得困难。深度学习在dns隧道检测方面,好的数据预处理工作和有效信息的输入决定了模型的识别效果,为有效、高效检测识别dns隧道。为此,本公开以流量byte为分析对象,使用深度学习实现dns隧道检测,由数据采集、模型训练、实时流三大模块装置整体。在数据制造与收集阶段需要获取一批正常dns流量和一批dns隧道流量。隧道流量的产生通过搭建环境,运行dnscat2,iodine,tuns,dnscapy等隧道工具,使用如tcpdump、wireshark等抓包工具,采集隧道流量数据,存储为pcap文件。正常流量的产生通过采集日常dns协议流量生成。模型训练的会话组装需要基于byte实现dns隧道的识别,因此需要提取分析对象。dns隧道的分析对象一般有flow和query and/or response几类。其中flow指以单条流为分析对象;query or response指仅取流量中的query或response部分为分析对象;query and response一般指根据源ip,目的ip,源端口,目的端口,协议五元组的划分,即会话。考虑到dns的特殊性,本发明以query and response
为分析对象,并使用五元组+标识符(transaction id)的形式进行划分。dns目标服务器固定,目标端口统一为53,决定是否为dns隧道的信息主要集中在dns层,因此将dns层作为处理对象,相较于一般的恶意流量检测,本项目忽略包含ip,端口,包长度的header部分。进行byte转换与pbm。转换十六进制形式为0-255范围的byte值序列,设置固定长度l,不足长度用0填充,超出长度部分截断。将数据依次存入矩阵,这样的矩阵我们称其为分组字节矩阵pbm(packet byte matrix),通过归一化操作将数值范围压缩在0-1之间,由于byte值为0-255,归一化操作即每个值除以255。在对14万dns隧道的payload长度分析中发现负载长度集中在0-200之间,故将长度设置为256(16
×
16),使既包含一般流量的大部分信息,又保障系统运行效率。进行模型训练。卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。本发明使用卷积神经网络实现dns隧道检测的功能,使用卷积层,池化层,全连接层等,具体网络架构根据实际调试为准。进行实时流检测。搭建实时流检测模块,包含对实时dns流量首先做分组处理(根据五元组+标识方式);以query and response为分析对象,将dns层的信息转换为byte形式,然后处理为pbm,归一化后为模型标准输入格式;加载已有的固化模型,判断是否为dns隧道;将dns隧道数据告警输出。本公开的基于byte的dns隧道装置,使用与dns流量的数据预处理方式,从一定程度上可以缓解模型面临数据量,全装置性能等问题,从而实现从byte的角度使用深度学习实现dns检测。本公开基于五元组+标识的方式提取数据对象,以dns层byte形式为模型训练对象,设置合适的l值转换为分组字节矩阵,并且本公开的基于byte的dns隧道检测装置基于byte的dns隧道检测的装置全流程框架架构,提出深度学习模型训练,实时流检测的全流程架构。
117.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图10所示,根据本技术实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本技术实施方式的上述方法。
118.所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
119.所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
120.可以以一种或多种程序设计语言的任意组合来编写用于执行本技术操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的
过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
121.上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:将实时dns流量按照预设策略分为多个数据组;提取多个数据组对应的多个dns层信息;基于字节分析将多个dns层信息转化为多个输入数据;将所述多个输入数据输入隧道识别模型中,生成识别概率;在所述识别概率大于阈值时,确定所述实时dns流量为dns隧道流量。
122.本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
123.通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本技术实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本技术实施例的方法。
124.以上具体地示出和描述了本技术的示例性实施例。应可理解的是,本技术不限于这里描述的详细结构、设置方式或实现方法;相反,本技术意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1