DNS隧道传输检测方法和装置与流程

文档序号:16630141发布日期:2019-01-16 06:29阅读:160来源:国知局
DNS隧道传输检测方法和装置与流程

本发明涉及网络安全技术领域,特别涉及一种dns隧道传输检测方法和装置。



背景技术:

随着全球信息一体化的迅猛发展,互联网规模不断扩大,信息量呈几何级数增长。网络威胁层出不穷,安全态势严峻,需要从海量网络数据中挖掘分析异常行为。由于网络异常行为行踪隐蔽,常隐藏于正常的网络流量中,难于检测和分析,而且其形式变化多样,种类逐渐增多,内部结构复杂,需要基于大数据和机器学习分析进行建模和分析。

网络隐蔽信道是指允许违反系统安全策略的方式传送信息的通信信道,是一种通过网络泄露隐蔽信息的技术,由于其本身具有隐蔽性,一般很难被检测到。利用网络隐蔽信道进行的扩散攻击和信息泄露技术,对计算机网络的安全构成了巨大的威胁,网络隐蔽信道技术与加密技术不同,加密只是对传输的数据进行加密,而网络隐蔽信道是要掩盖隐蔽通信信道的存在。恶意的网络隐蔽信道会给网络、系统安全带来巨大的挑战,网络中的不法分子会通过构建隐蔽信道泄露隐蔽信息。dnstunnel即dns隧道,就是利用dns查询过程建立起隐蔽信道,实现数据传输的技术。dns协议在查询的时候,如果查询的域名在dns服务器本机的缓存cache中没有查询到,它就会去互联网上查询,最终返回结果。如果在互联网上有台定制的dns服务器,只要依靠dns的协议约定,就可以交换数据包。从dns协议上看,只是在一次次的查询某个特定域名,并得到解析结果,但实际上是在和外部通讯。此时,虽然客户端并没有直接连到局域网外的机器,网关不会转发ip包出去,但是局域网上的dns服务器帮忙做了中转,这就是dns隧道的基本原理。

目前基于dns隧道实现的网络隐蔽信道传输技术层出不穷,出现了多种变种类型,现有技术中对于变种的新型dns隧道的检测能力仍然存在诸多不足。

中国发明公开文献cn103326894a提出一种dns隧道检测方法,通过检测客户端数据包的查询域名是否符合预置的域名约束条件,从而区分正常的dns数据包和dns隧道数据包。中国发明公开文献cn104754071a也提出一种dns隧道检测方法,通过检测数据包是否符合dns协议规定的长度和格式,从而判断是否属于dns隧道数据包。上述公开文献均是通过判断通信报文是否匹配预定格式来识别dns隧道,这种单纯特征匹配的检测方式的缺点是难以准确检测未知或变种的dns隧道传输。期刊文献(“基于dns的隐蔽通道流量检测”,章思宇等,通信学报第34卷第5期,2013年5月)提出了一种检测dns隐蔽通道的方法,其提取可区分合法查询与隐蔽通信的12个数据分组特征,利用机器学习的分类器对其会话统计特性进行判别,从而实现对dns隐蔽信道的检测。这种检测方式利用统计特征分析和机器学习相结合的手段,相对于单纯的特征匹配方式具有一定优势,但是过多的统计特征必然导致分类器模型的训练数据需求增大,并且需要消耗更多训练时间,从而使得检测效率降低。因此,如何提取能够有效识别各变种类型的dns隧道传输数据的统计特征,并且提高dns隧道传输检测的准确性和高效性,一直是本领域亟待解决的问题。



技术实现要素:

本发明的主要目的是提出一种dns隧道传输检测方法和装置,能够实现对新型dns隧道传输的全面有效检测,提高dns隧道传输检测的效率和准确性。

为了实现上述目的,一方面,本发明的技术方案提出一种基于特征向量的dns隧道传输检测方法,其特征在于包括以下步骤:

捕获客户端发送给dns服务器的dns请求数据;

对捕获的dns请求数据进行特征提取,提取dns请求数据中请求域名包含的数字个数、dns请求数据的请求类型、请求域名的长度,并且记录一次dns会话连接中的上行数据包的数量、上行数据包大小的方差和上行数据包的发送间隔时间,从而获得dns请求数据的特征向量;该dns请求数据的特征向量表示如下:

v={q_number,q_type,q_length,package_size,package_interval,up_package_var}

其中,v表示dns请求数据的特征向量,q_number表示请求域名q中包含的数字个数,q_type表示dns请求数据的请求类型,q_length表示请求域名的长度,package_size表示一次dns会话连接中的上行数据包的数量,up_package_var表示一次dns会话连接中的上行数据包大小的方差,package_interval表示一次dns会话连接中的上行数据包的发送间隔时间;

对获得的dns请求数据的特征向量进行归一化预处理;

将经过归一化预处理后的特征向量输入机器学习检测模型进行检测,从而获得dns隧道传输的检测结果,所述机器学习检测模型由正常dns访问数据和dns隧道传输数据组成的训练数据训练得到;

将获得的dns隧道传输的检测结果进行聚合,以用于更新机器学习检测模型的训练数据,从而对机器学习检测模型进行训练学习。

优选地,所述对获得的dns请求数据的特征向量进行归一化预处理包括将离散变量映射到(0,1)区间中的固定值。

优选地,所述机器学习检测模型包括支持向量机svm分类器模型。

另一方面,本发明还提出一种基于特征向量的dns隧道传输检测装置,其特征在于包括以下模块:

捕获模块,用于捕获客户端发送给dns服务器的dns请求数据;

特征提取模块,用于对捕获的dns请求数据进行特征提取,提取dns请求数据中请求域名包含的数字个数、dns请求数据的请求类型、请求域名的长度,并且记录一次dns会话连接中的上行数据包的数量、上行数据包大小的方差和上行数据包的发送间隔时间,从而获得dns请求数据的特征向量;该dns请求数据的特征向量表示如下:

v={q_number,q_type,q_length,package_size,package_interval,up_package_var}

其中,v表示dns请求数据的特征向量,q_number表示请求域名q中包含的数字个数,q_type表示dns请求数据的请求类型,q_length表示请求域名的长度,package_size表示一次dns会话连接中的上行数据包的数量,up_package_var表示一次dns会话连接中的上行数据包大小的方差,package_interval表示一次dns会话连接中的上行数据包的发送间隔时间;

预处理模块,用于对获得的dns请求数据的特征向量进行归一化预处理;

检测模块,用于将经过归一化预处理后的特征向量输入机器学习检测模型进行检测,从而获得dns隧道传输的检测结果,所述机器学习检测模型由正常dns访问数据和dns隧道传输数据组成的训练数据训练得到;

反馈模块,用于将获得的dns隧道传输的检测结果进行聚合,以用于更新机器学习检测模型的训练数据,从而对机器学习检测模型进行训练学习。

优选地,所述对获得的dns请求数据的特征向量进行归一化预处理包括将离散变量映射到(0,1)区间中的固定值。

优选地,所述机器学习检测模型包括支持向量机svm分类器模型。

本发明通过分析大量的正常dns请求数据特征和dns隧道通信特征,选取适配各变种dns隧道传输数据的典型特征,构建特征向量,并利用机器学习的方法建立自学习的检测模型,从而实现了对各变种dns隧道传输的检测,提高了检测的效率和准确性。

下面结合附图和具体实施方式对本发明作进一步的描述。

附图说明

图1为本发明基于特征向量的dns隧道传输检测方法的流程示意图;

图2为本发明机器学习检测模型的原理示意图;

图3为本发明基于特征向量的dns隧道传输检测装置的结构示意图。

具体实施方式

下面结合说明书附图对本发明技术方案的具体实施方式进行清楚、完整的描述。

参见图1,图1为本发明基于特征向量的dns隧道传输检测方法的流程示意图。本发明实施例提供的基于特征向量的dns隧道传输检测方法,包括如下步骤:

步骤s1,捕获客户端发送给dns服务器的dns请求数据。本发明实施例可通过捕获网络中指定端口的数据包来实现。

步骤s2,对捕获的dns请求数据进行特征提取,提取dns请求数据中请求域名包含的数字个数、dns请求数据的请求类型、请求域名的长度,并且记录一次dns会话连接中的上行数据包的数量、上行数据包大小的方差和上行数据包的发送间隔时间,从而获得dns请求数据的特征向量。

本发明实施例将一条dns请求数据表示为d(q),其中q表示dns的请求域名,d(q)作为特征提取模块的输入。用q_number表示请求域名q中包含的数字个数,因为在dns隧道的通信过程中,传输的数据一般都会以参数的形式经过某种编码或者加密算法之后进行传输,例如采用base64编码,因此和正常的dns请求域名相比,经过编码之后的统一资源定位符url里面的数字所占比例明显偏高。用q_type表示dns请求数据的请求类型,正常的dns请求中,大多数的请求类型都是“a记录”,然而在dns隧道传输过程中会存在大量的txt和mx类型的请求。用q_length表示请求域名的长度,当发生dns隧道传输的时候,q的长度会明显长于正常的请求域名。同时,在一次dns会话连接中,记录上行数据包的数量和该会话连接中上行数据包大小的方差,以及上行数据包的发送间隔时间,分别用package_size、up_package_var和package_interval进行表示。如此,就可以把一条dns请求数据经过特征提取后获得的特征向量v表示为:

v={q_number,q_type,q_length,package_size,package_interval,up_package_var}。

步骤s3,对获得的dns请求数据的特征向量进行归一化预处理。

本发明实施例中,经过特征提取获得的dns请求数据的特征向量v还需要对其进行预处理,以特征向量中q_type字段为例,q_type字段所获取的值是离散变量,并且各个字段值差异较大,因此需要对其进行归一化处理,常见的归一化处理方式是对整个数据集用一种统一的归一化方法进行计算处理,本发明实施例中则是针对特定的特征字段采用特定的归一化方法进行预处理,例如对q_type字段的归一化处理,可以采用人工干预的方式,将不同的q_type类型映射到(0,1)区间中的固定值。本发明的一种实施方式中,q_type字段的原始取值可以如下:

[1,5,10,15,16,25,其他]

那么,经过归一化处理映射到(0,1)区间之后,q_type取值可以为:

[0.1,0.2,0.6,0.7,0.8,0.9,0.15]

类似地,对于特征向量中的其他类型字段也可以根据其特征分布特性来确定合适的归一化处理的方式。与对整个数据集用统一的归一化方法处理相比,能够一定程度上提高检测的准确率。

步骤s4,将经过归一化预处理后的特征向量输入机器学习检测模型进行检测,从而获得dns隧道传输的检测结果,所述机器学习检测模型由正常dns访问数据和dns隧道传输数据组成的训练数据训练得到。

参见图2,图2是本发明实施例中机器学习检测模型100的原理示意图。本发明机器学习检测模型优包括支持向量机svm分类器模型。首先,由正常dns访问数据和异常的dns隧道传输数据两部分组成svm分类器模型的dns训练数据101,其中,正常dns访问数据通过dns消息探针对局域网内日常网络访问进行数据采集获得,异常的dns隧道传输数据则由布置在真实局域网环境中dns隧道工具软件来产生,本发明实施例中采用的dns隧道工具软件包括5种不同的dns隧道工具:dns2tcp、dnscat2、iodine、heyoka和tcp-over-dns。其次,生成的训练数据101经过特征工程102进行特征提取和预处理,输入到svm分类器模型103进行检测分析,形成告警报告104,然后根据告警事件对告警报告104进行告警聚合105,最后反馈更新到dns训练数据101,从而使得svm分类器模型103能够不断学习更新。

步骤s5,将获得的dns隧道传输的检测结果进行聚合,以用于更新机器学习检测模型的训练数据,从而对机器学习检测模型进行训练学习。本发明实施例中,通过训练数据训练获得的机器学习检测模型可以根据实际的dns隧道传输数据的检测结果的反馈不断训练学习,从而可以使得检测模型的准确性得到不断提升。

参见图3,图3为本发明基于特征向量的dns隧道传输检测装置200的结构示意图。本发明实施例提供的基于特征向量的dns隧道传输检测装置200,包括以下模块:

捕获模块201,用于捕获客户端发送给dns服务器的dns请求数据。本发明实施例可通过捕获网络中指定端口的数据包来实现。

特征提取模块202,用于对捕获的dns请求数据进行特征提取,提取dns请求数据中请求域名包含的数字个数、dns请求数据的请求类型、请求域名的长度,并且记录一次dns会话连接中的上行数据包的数量、上行数据包大小的方差和上行数据包的发送间隔时间,从而获得dns请求数据的特征向量。

本发明实施例将一条dns请求数据表示为d(q),其中q表示dns的请求域名,d(q)作为特征提取模块的输入。用q_number表示请求域名q中包含的数字个数,因为在dns隧道的通信过程中,传输的数据一般都会以参数的形式经过某种编码或者加密算法之后进行传输,例如采用base64编码,因此和正常的dns请求域名相比,经过编码之后的统一资源定位符url里面的数字所占比例明显偏高。用q_type表示dns请求数据的请求类型,正常的dns请求中,大多数的请求类型都是“a记录”,然而在dns隧道传输过程中会存在大量的txt和mx类型的请求。用q_length表示请求域名的长度,当发生dns隧道传输的时候,q的长度会明显长于正常的请求域名。同时,在一次dns会话连接中,记录上行数据包的数量和该会话连接中上行数据包大小的方差,以及上行数据包的发送间隔时间,分别用package_size、up_package_var和package_interval进行表示。如此,就可以把一条dns请求数据经过特征提取后获得的特征向量v表示为:

v={q_number,q_type,q_length,package_size,package_interval,up_package_var}。

预处理模块203,用于对获得的dns请求数据的特征向量进行归一化预处理。本发明实施例中,经过特征提取获得的dns请求数据的特征向量v还需要对其进行预处理,以特征向量中q_type字段为例,q_type字段所获取的值是离散变量,并且各个字段值差异较大,因此需要对其进行归一化处理,常见的归一化处理方式是对整个数据集用一种统一的归一化方法进行计算处理,本发明实施例中则是针对特定的特征字段采用特定的归一化方法进行预处理,例如对q_type字段的归一化处理,可以采用人工干预的方式,将不同的q_type类型映射到(0,1)区间中的固定值。本发明的一种实施方式中,q_type字段的原始取值可以如下:

[1,5,10,15,16,25,其他]

那么,经过归一化处理映射到(0,1)区间之后,q_type取值可以为:

[0.1,0.2,0.6,0.7,0.8,0.9,0.15]

类似地,对于特征向量中的其他类型字段也可以根据其特征分布特性来确定合适的归一化处理的方式。与对整个数据集用统一的归一化方法处理相比,能够一定程度上提高检测的准确率。

检测模块204,用于将经过归一化预处理后的特征向量输入机器学习检测模型100进行检测,从而获得dns隧道传输的检测结果,所述机器学习检测模型100由正常dns访问数据和dns隧道传输数据组成的训练数据训练得到。机器学习检测模型100的原理示意图参见图2和前述所示,在此不再赘述。

反馈模块205,用于将获得的dns隧道传输的检测结果进行聚合,以用于更新机器学习检测模型的训练数据,从而对机器学习检测模型进行训练学习。本发明实施例中,通过训练数据训练获得的机器学习检测模型可以根据实际的dns隧道传输数据的检测结果的反馈不断训练学习,从而可以使得检测模型的准确性得到不断提升。

本发明实施例中,利用dns消息探针从局域网采集了10万条正常dns访问数据,并利用前述5种不同的dns隧道工具产生了10万条异常的dns隧道传输数据,以该二十万条数据作为实验数据,并把实验数据的70%用作svm分类器模型的训练数据,其余的30%用作测试数据。经过实验测试验证,本发明实施例对dns隧道传输的检测准确率可达96%左右,相比于传统检测方法而言,检测准确性更高,误报率较低,并且获得了较好的检测效率。

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