网络数据检测方法及相关设备与流程

文档序号:17817592发布日期:2019-06-05 21:56
网络数据检测方法及相关设备与流程

本申请涉及网络检测技术领域,更具体地,是网络数据检测方法及相关设备。



背景技术:

企业等单位会构建内部网络,内部网络可能会受到外部恶意程序的攻击,虽然内部网络可以通过设置防火墙阻挡一部分恶意攻击,但对于某些恶意攻击行为如高级持续性威胁(Advanced Persistent Threat,简称为APT)却不能有效地检测并进行处理。这些恶意程序拥有防火墙穿透技术,可以将数据包伪装后通过内部网络的基础通信通道将数据包隐蔽地传输出去,从而与外界网络进行通信。

如图1所示,一种常用的穿透防火墙的手段是,域名系统(Domain Name System,简称为DNS)隧道技术。使用DNS隧道技术的恶意程序可以在内部网络植入客户端并在外部伪装DNS服务器,客户端与伪装DNS服务器之间能够建立隧道,从而避开防火墙的检测。

因此,为了能够发现这种能够穿透防火墙的恶意攻击,需要提供一种网络数据检测方案。



技术实现要素:

有鉴于此,本申请提供了一种网络数据检测方法,用于发现使用DNS隧道技术进行恶意攻击的网络攻击行为。

为实现所述目的,本申请提供的技术方案如下:

第一方面,本申请提供了一种网络数据检测方法,包括:

获得通过机器学习算法构建的检测模型,其中,所述检测模型是对DNS查询请求样本训练得到的,所述DNS查询请求样本具有属性项,所述属性项为用于区分DNS查询请求是否异常的特征;

获得待检测的DNS查询请求;

确定所述待检测的DNS查询请求在所述属性项上的属性值;

将所述属性值输入至所述检测模型中,以确定所述待检测的DNS查询请求是否为异常的DNS查询请求。

第二方面,本申请提供了一种网络数据检测装置,包括:

检测模型获得单元,用于获得通过机器学习算法构建的检测模型,其中,所述检测模型是对DNS查询请求样本训练得到的,所述DNS查询请求样本具有属性项,所述属性项为用于区分DNS查询请求是否异常的特征;

查询请求获得单元,用于获得待检测的DNS查询请求;

属性值确定单元,用于确定所述待检测的DNS查询请求在所述属性项上的属性值;

查询请求检测单元,用于将所述属性值输入至所述检测模型中,以确定所述待检测的DNS查询请求是否为异常的DNS查询请求。

第三方面,本申请提供了一种网络数据检测设备,包括:处理器和存储器,所述处理器通过运行存储在所述存储器内的软件程序、调用存储在所述存储器内的数据,至少执行如下步骤:

获得通过机器学习算法构建的检测模型,其中,所述检测模型是对DNS查询请求样本训练得到的,所述DNS查询请求样本具有属性项,所述属性项为用于区分DNS查询请求是否异常的特征;

获得待检测的DNS查询请求;

确定所述待检测的DNS查询请求在所述属性项上的属性值;

将所述属性值输入至所述检测模型中,以确定所述待检测的DNS查询请求是否为异常的DNS查询请求。

第四方面,本申请提供了一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行上述的网络数据检测方法中的步骤。

由以上技术方案可知,本申请提供的网络数据检测方法,可以获得预先构建的检测模型,检测模型是由机器学习算法对训练样本训练得到的,训练样本为DNS查询请求,且训练样本具有用于区分DNS查询请求是否异常的属性项,在获得待检测的DNS查询请求后,获得DNS查询请求在这些属性项上的属性值,并将这些属性值输入至检测模型中,检测模型通过对属性值进行分类判断便可以确定DNS查询请求的分类结果,分类结果表示DNS查询请求为正常还是异常。可见,本申请提供的网络数据检测方法可以使用机器学习训练而得的检测模型对DNS查询请求进行判断,检测模型使用的属性项更为复杂,且无需依靠人工经验设置的判断阈值,可以减少人工对阈值的调试时间,检测使用的人工成本较低且检测结果的准确度更高。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请提供的DNS隧道技术的应用场景示意图;

图2为本申请提供的网络数据检测方法的一种流程示意图;

图3为本申请提供的决策树形式的检测模型的一种示意图;

图4为本申请提供的网络数据检测方法的另一种流程示意图;

图5为本申请提供的构建检测模型的一种流程示意图;

图6为本申请提供的网络数据检测方法的又一种流程示意图;

图7为本申请提供的网络数据检测装置的一种结构示意图;

图8为本申请提供的网络数据检测装置的另一种结构示意图;

图9为本申请提供的网络数据检测设备的一种硬件结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了网络安全,企业等单位的内部网络设置有防火墙,用于检测可能存在的恶意攻击行为。但是,一些恶意程序会使用域名系统(Domain Name System,简称为DNS)隧道技术来规避防火墙的检测。

DNS隧道技术规避防火墙检测的方式是,DNS隧道技术中,可以利用DNS协议封装用于查询请求域名地址的查询请求数据包,虽然防火墙可以封锁大部分协议端口,但是并不包括对外发送DNS查询请求的端口,因此恶意程序可以在封装的数据包中携带攻击数据,并在外部网络伪装DNS服务器,且在内部网络植入恶意客户端。这样,恶意客户端可以不受防火墙的限制,通过DNS查询请求与外部伪装的DNS服务器进行数据通信以实现网络攻击。

需要说明的是,即使防火墙对发送出去的查询请求进行检测,但目前检测方案的检测结果较为不佳。原因是,目前的检测方案主要采用统计分析方法,在该方法中根据人工经验设置需要分析的检测项,并为每个检测项设置相应的阈值。例如,检测项包括:查询请求中的域名长度,以及查询请求的发送频率,分别设置域名长度阈值,以及发送频率阈值。检测设备根据检测项,对待检测的查询请求分析后获得与检测项对应的数值,并将分析得到的数值与阈值进行比较后,得到该查询请求是否为恶意攻击程序发送的查询请求的判断结果。

但是,该种检测方式中需要人工根据检测经验设置检测项的阈值,因此判断结果的准确性较为依赖人工设置的经验阈值。若人工经验阈值不够准确如过大或过小,则会直接导致检测结果的不准确性。并且,若检测项较多,人工经验也难为把握各个检测项之间的关系,即如何根据各个检测项的阈值判断结果得到最终的告警判断结果。

对此,本申请提供了一种网络数据检测方法。见图2,其示出了该网络检测数据检测方法的一种流程,具体包括以下步骤S201~S204。

S201:获得通过机器学习算法构建的检测模型,其中,检测模型是对DNS查询请求样本训练得到的,DNS查询请求样本具有属性项,属性项为用于区分DNS查询请求是否异常的特征。

其中,本申请主要是使用机器学习模型对网络数据是否异常进行检测,因此,在进行网络数据检测之前,需要预先构建有检测模型,检测模型的构建流程在后文详细说明,此处并不赘述。检测模型的作用是,对输入检测模型的网络数据的性质进行判断,具体判断网络数据属于异常数据还是正常数据。检测模型是通过机器学习算法构建而成的,检测模型也可以认为是分类模型,因此机器学习算法可以是有监督的分类算法,例如决策树算法、随机森林算法等。

检测模型的训练需要使用DNS查询请求样本,通过对大量异常DNS查询请求的研究发现,与正常的DNS查询请求相比,异常的DNS查询请求为了实现恶意攻击具有与恶意攻击行为相关的某些特征,如发送的频率较高、包含的数据量较大。因此,训练检测模型时,是根据DNS查询请求样本确定能够表现这些方面(特征)的特征值,再使用确定出的特征值进行模型训练。其中特征也可以称为属性项。

例如,属性项可以包括但不局限于:DNS查询请求样本中包含的查询问题个数、DNS查询请求样本中待查询域名所包含的子域名的长度、DNS查询请求样本中待查询域名所包含的非法字符个数等等。有关该几种属性项的具体说明请参见下文具体描述,此处并不赘述。

S202:获得待检测的DNS查询请求。

在实际应用中,可以在某台设备上部署该网络数据检测方法,以使用该方法检测从某些设备上发送出去的DNS查询请求。例如,某个企业可以构建内部网络,网络数据检测方法可以部署在检测设备上,检测设备上还可以部署有抓包工具,用于获取内部网络中的设备向外发送的DNS查询请求。

获取到的DNS查询请求即待检测的DNS查询请求。

S203:确定待检测的DNS查询请求在属性项上的属性值。

前已述及,属性项是用于区分DNS查询请求是否为正常请求的特征,检测模型使用这些属性项的值来对DNS查询请求进行判断,因此首先确定出待检测的DNS查询请求在这些属性项上的值,为了便于描述,在属性项上的值可以称为属性值。

需要说明的是,属性项可以包括单个DNS查询请求自身的属性,也就是一个DNS查询请求所表现出的特性,或者属性项可以包括多个DNS查询请求表现出的特性,或者属性项包括以上两种。其中,针对单个DNS查询请求自身的属性,直接从待检测的DNS查询请求中可以获取到;针对多个DNS查询请求表现出的特征,需要对多个DNS查询请求进行统计才能得出。

针对不同类型的待检测DNS查询请求,可以使用不同的确定方法,以确定待检测DNS查询请求在不同类型的属性项上的属性值。

S204:将属性值输入至检测模型中,以确定待检测的DNS查询请求是否为异常的DNS查询请求。

其中,获得待检测的DNS查询请求的属性值以后,将属性值输入至检测模型中。检测模型可以对属性值进行判断,根据属性值的判断结果将待检测的DNS查询请求划分为某一类结果。若分类结果为异常的DNS查询请求,可以对DNS查询请求进行报警及隔离,以提醒相关人员对异常DNS查询请求进行处理。

以决策树算法构建的检测模型为例,介绍检测模型的判断原理。

如图3所示,检测模型可以包括多个根节点及从根节点出发的多个分支,每个分支的最末端为叶子节点,叶子节点表示对待检测DNS查询请求的判断结果。另外,从根节点出发的分支还可能包括内部节点,内部节点也可以称为中间节点,中间节点之下还可以连接有其他分支,直至最后一个叶子节点。内部节点表示判断条件,用于判断DNS查询请求应该去往哪个分支。

这样,待查询的DNS查询请求从根节点出发,根节点根据某个属性值进行判断,并根据判断结果为该DNS查询请求选择对应的分支。若该分支上的下一个节点为叶子节点,则可以直接确定出该DNS查询请求的分类结果;若该分支上的下一个节点为中间节点,则该中间节点对DNS查询请求的其他属性项进行判断,并根据判断结果为该DNS查询请求选择对应的分支,以此递归执行下去,直至到达某个分子的叶子节点,从而得到最终的分类结果。

在上述检测模型中,中间节点的判断条件是与属性项对应的,即不同的中间节点可以对不同的属性项进行判断。构建检测模型时,机器学习算法可以设置哪些中间节点用于检测哪个或哪些属性项,并设置在怎么样的判断结果下需要执行哪个分支。

由以上技术方案可知,本申请提供的网络数据检测方法,可以获得预先构建的检测模型,检测模型是由机器学习算法对训练样本训练得到的,训练样本为DNS查询请求,且训练样本具有用于区分DNS查询请求是否异常的属性项,在获得待检测的DNS查询请求后,获得DNS查询请求在这些属性项上的属性值,并将这些属性值输入至检测模型中,检测模型通过对属性值进行分类判断便可以确定DNS查询请求的分类结果,分类结果表示DNS查询请求为正常还是异常。可见,本申请提供的网络数据检测方法可以使用机器学习训练而得的检测模型对DNS查询请求进行判断,检测模型使用的属性项更为复杂,且无需依靠人工经验设置的判断阈值,可以减少人工对阈值的调试时间,检测使用的人工成本较低且检测结果的准确度更高。

另外,本申请提供的网络数据监测方法中,使用的属性项种类更加多样,可以检测出各种类型的异常DNS查询请求。该网络数据监测方法应用到实际网络环境中以后可以提高网络环境的反入侵防御能力。

在实际应用中,为了提高检测模型的精确度,可以对检测模型的分类结果进行二次验证,若分类结果与验证结果不一致,则使用分类结果对检测模型进行修正。

具体地,如图4所示的网络数据检测方法的另一种流程,该流程在上述图2所示的流程基础上,还可以包括步骤S405及S406。需要说明的是,本流程中步骤S401~S404与上述图2中的步骤S201~S204相同,以下并不赘述,仅说明步骤S S405及S406即可。

S405:验证检测模型对待检测的DNS查询请求的确定结果是否准确,若检测模型的确定结果错误,则执行步骤S406。

其中,检测模型对DNS查询请求的确定结果也可以称为分类结果,在检测模型得到DNS查询请求的分类结果后,可以对分类结果进行验证。验证的方式可以是人工验证,也可以是使用现有的其他分类算法进行验证。在人工验证的方式中中,可以接受人工输入的对DNS查询请求的标注结果,如果人工输入的标注结果与检测模型的分类结果不同,则表示检测模型的分类结果错误,反之如果人工输入的标注结果与检测模型的分类结果相同,则表示检测模型的分类结果准确。

S406:将待检测的DNS查询请求加入DNS查询请求样本,得到新的DNS查询请求样本,并使用新的DNS查询请求样本训练检测模型。

其中,如果检测模型的分类结果错误,则需要使用该DNS查询请求重新对检测模型进行训练。具体地,根据步骤S405对DNS查询请求的验证结果,对DNS查询请求进行标注后,便可以确定该DNS查询请求属于异常的DNS查询请求还是正常的DNS查询请求。若DNS查询请求为异常的DNS查询请求,则其属于黑样本,若DNS查询请求为正常的DNS查询请求,则其属于白样本。根据DNS查询请求为黑样本还是白样本,将该DNS查询请求加到DNS查询请求样本中,从而可以得到新的DNS查询请求样本。

进而,使用该新的DNS查询请求样本重新训练检测模型,从而可以得到分类更加准确的检测模型。

需要说明的是,可以并非对每个DNS查询请求的分类结果均进行验证,而是检测模型构建完成后前期所检测的那些DNS查询请求。由于检测模型是使用训练样本构建的,但训练样本数量有限,所构建的检测模型分类准确性并非特别高。因此,可以使用前期检测的DNS查询请求的分类结果对检测模型进行修正,待检测模型的分类准确度达到一定要求且趋于稳定后,可以不再需要进行修正步骤。

由以上技术方案可知,本申请提供的另一种网络数据检测方法,可以对检测模型的分类结果进行验证,若DNS查询请求的分类结果出现错误,则修正该分类结果,并将修正后的DNS查询请求加入训练样本重新对检测模型进行训练,从而得到判断结果准确度更高的检测模型,可见,该网络数据检测方法主要包括对检测模型的优化步骤,以得到精确程度更高的检测模型。

以上主要说明了检测模型的使用方法,以下对检测模型的构建方法进行说明。

如图5所示,检测模型的构建过程主要包括如下步骤S501~S503。

S501:采集DNS查询请求样本,DNS查询请求样本中包含被标注为异常的DNS查询请求,以及被标注为正常的DNS查询请求。

其中,本步骤可以简称为:采集样本数据。在实际应用中,样本数据可以从DNS服务器上采集,或者从设置在DNS查询请求的发送出口一侧采集。其中,可以在DNS查询请求的发送出口一侧设置网络流量分析设备,从网络流量分析设备上采集DNS查询请求样本。

具体地,采集样本数据即采集DNS查询请求样本。需要说明的是,可以对采集到的基础数据进行筛选从而得到本申请需要的DNS查询请求样本,即过滤掉一些与DNS隧道无关的恶意查询请求如DNS服务发现协议请求、反向地址查询请求等等。

采集到的DNS查询请求样本中包含被标注为异常的DNS查询请求,以及被标注为正常的DNS查询请求。其中,被标注为异常的DNS查询请求的样本可以称为黑样本,被标注为正常的DNS查询请求的样本可以称为白样本。为了体现对等性,黑样本与白样本的提取数量可以是相同的。

黑样本可以采集到的,也可以是使用DNS隧道工具生成的,如使用的DNS隧道工具可以包括但不局限于iodine、Dnscat2、dns2tcp、Ozymandns、DnsShell、Heyoka、CobaltStrike等等。为了提高准确度,所使用的DNS隧道工具可以是多种类型,且生成时使用的参数选项尽量不同。

白样本的采集方法可以是,从检测到的DNS查询请求中,提取查询域名为正常域名的那些查询请求作为白样本。例如,提取的查询请求中查询域名可以包括但不局限于qq.com、baidu.com、163.com等等,由于这些域名为注册的正常域名,因此包含这些查询域名的DNS查询请求在较大可能性上为正常的DNS查询请求。或者,可以对检测到的DNS查询请求中,查询域名的情况按照多少顺序排名,选择排名在前预设数量的DNS查询请求作为白样本。这是因为在通常情况下,一个内部网络向外发送的较多的DNS查询请求为正常的DNS查询请求,为了不被察觉,恶意程序并不会频繁地大量地向外发送DNS查询请求。或者,可以是上述两者的结合来采集白样本。

S502:确定DNS查询请求样本在属性项上的属性值。

其中,本步骤可以简称为:样本特征提取。可以理解的是,在训练检测模型时,需要依赖DNS查询请求样本的属性项,这些属性项是用于区分DNS查询请求是正常DNS查询请求还是异常DNS查询请求的标准。因此,属性项选取的准确与否会直接影响检测模型的准确度。根据对正常与异常DNS查询请求的研究,本申请提供如下几种具体的属性项,根据实验数据可知,该几种属性项在实际应用中,所训练出的检测模型的分类准确度较高。

根据DNS协议要求,DNS查询请求中包含查询域名,其中查询域名包含主域名及子域名。按照有关查询域名的格式要求,需要使用标志位如点区分不同部分,使用标志位隔开的部分可以称为标签。例如,某个DNS查询情求中,查询域名为www.qq.com,根据DNS协议中有关查询域名的规定,qq.com为主域名,www为子域名,且使用点隔开的每个部分称为标签,因此可知该查询域名中包含3个标签。

需要说明的是,通过对异常DNS查询请求的研究发现,异常DNS查询请求相较于正常DNS查询请求具有一些独特的特征,如查询请求类型不常用、数据量较大或发送个数较多。

其中,查询请求类型是DNS查询请求的请求类型,根据DNS协议的规定,DNS查询请求可以包括多种请求类型,不同报文类型的DNS查询请求的目的不同。根据对异常DNS查询请求的研究发现,异常DNS查询请求对应的请求类型可能为不常用的请求类型,因此可以从DNS查询请求中提取与请求类型有关的字段,以确定某个DNS查询请求的请求类型。

另外,DNS查询请求中体现数据量较大这个特征的属性项可以包括但不局限于,数据包的长度、查询域名的个数、查询域名中子域名的长度、查询域名中标签的个数、查询域名中非法字符的个数。因此步骤一采集到查询请求样本后,可以分别获得每个DNS查询请求样本的数据包长度、查询域名的个数、查询域名中标签的个数、查询域名中子域名的长度、查询域名中非法字符的个数。

其中,DNS查询请求以数据包的形式存在,DNS查询请求的数据包的长度越长,则可以表示DNS查询请求携带的数据量较大。

DNS查询请求发往DNS服务器,以查询待查询的域名的网络地址。待查询的域名可以简称为查询域名,或者也可以称为查询问题。一般地,一个DNS查询请求中包含一个查询域名,然而恶意程序为了携带更多的数据量,可以在一个DNS查询请求中增加查询问题的个数。因此,可以从DNS查询请求的数据包中获得查询问题的个数。

为了获得与子域名相关的属性项,首先需要从DNS查询请求样本的查询域名中提取子域名。本申请提供了一种提取子域名的方法,具体如下所述。

根据通用的主域名设置规则可知,查询域名中的主域名包括顶级域名,顶级域名包括一个标签或者两个标签,例如,通用的包含一个标签的顶级域名有.com、.net、.org、.me、.cn等等,通用的包含两个标签的顶级域名有.com.cn、.co.uk等等。因此,可以从DNS查询请求中提取查询域名,并从查询域名中提取出最后两个标签。并对提取到的两个标签进行判断,如果倒数第二个标签属于顶级域名,则将倒数的三个标签作为主域名,例如提取到的主域名为sina.com.cn、teacher.com.cn等;如果倒数第二个标签并非属于顶级域名,则将倒数的两个标签作为主域名,例如提取到的主域名为sina.com、360.cn等。

得到主域名后,将查询域名中去除主域名的部分作为子域名即可。例如查询域名为www.qq.com,其中主域名为qq.com,子域名为www。得到子域名后,便可以确定与子域名相关的属性项。例如,可以提取子域名的长度,子域名的长度表示的是子域名中包含的除标志位以外的字符个数。以子域名为www为例,子域名长度为3,以子域名为www.a为例,子域名长度为4。

查询域名中标签的个数指的是,查询域名中通过标志位区分的部分个数。以查询域名为www.qq.com为例,包含有3个标签;又以查询域名为www.sina.com.cn为例,包含有4个标签。按照DNS协议有关标签的要求,限定标签的最大数据量,因此恶意程序为了携带更多的数据量,会最大限度地使用更多的标签。

按照DNS协议有关查询域名的格式要求,查询域名中仅允许使用字母、数字及分隔符-。通过对异常DNS查询请求的研究还发现,异常DNS查询请求中可能会包含有一些非法字符扩充整个字符集合,以达到扩大DNS隧道传输带宽的目的。因此,可以提取DNS查询请求的查询域名中的非法字符个数。

综上所述,恶意程序为了提高DNS查询请求携带的数据量,可以在查询域名中携带一些数据,导致查询域名的数据量较大。因此,可以提取查询域名的个数、查询域名中标签的个数、查询域名中子域名的长度及整个DNS查询请求数据包的长度等特征来作为体现DNS查询请求的数据量的属性项。另外,属性项中还可以包括DNS查询请求的请求类型。

以上几种属性项均可以从单个DNS查询请求中获取到,但是,单个DNS查询请求所表现出来的特征可能并非十分准确,即通过单个DNS查询请求并不能准确确定异常DNS查询请求具有哪些方面的特征。因此,可以从多个DNS查询请求中提取特征,将多个DNS查询请求所表现出来的共同特征作为属性项。可见,属性项可以分为两类,一类是针对单条DNS查询请求的,即从单条DNS查询请求中提取特征,;另一类是针对多条DNS查询请求的,即根据多条DNS查询请求确定多条DNS查询请求表现出来的共同特征。为了便于区分,可以将第一类特征称为第一类型属性项,将第二类特征称为第二类型属性项。

例如下表1所示,第一类型属性项可以具体包括上述所示的请求类型、数据包长度、查询域名个数、子域名长度、标签个数、非法字符个数。在获得多个DNS查询请求样本后,提取每条DNS查询请求样本在第一类型属性项上的属性值即可。第二类型属性项是与多个DNS查询请求相关的,如下表1所示第二类型属性项可以具体包括:DNS查询请求的总个数、DNS查询请求的发送频率、数据包总长、数据包平均长度、非法字符总数、非法字符平均个数、标签个数最大值、标签个数最小值、标签总个数、标签平均个数、不同DNS查询请求的个数。

表1

针对一个时间切片内的多条DNS查询请求样本,可以统计一个时间切片内,多条DNS查询请求样本在第二类型属性项上的属性值。具体地:

根据每条DNS查询请求样本在第一类型属性项上的属性值,计算多条DNS查询请求样本在第一类型属性项上的统计属性值,其中统计属性值包括以下几项中的任意一项或多项:总和属性值、平均属性值、极值属性值;和/或,依据每条DNS查询请求样本,统计不同的DNS查询请求样本的个数。

其中,计算多条DNS查询请求样本在第一类型属性项上的统计属性值,主要包括但不局限于表1中的DNS查询请求的总个数、DNS查询请求的发送频率、数据包总长、数据包平均长度、非法字符总数、非法字符平均个数、标签个数最大值、标签个数最小值、标签总个数、以及标签平均个数。关于DNS查询请求样本的个数。由于异常DNS查询请求的发送频率较高,因此可以根据一段时间内多个DNS查询请求的个数,来计算DNS查询请求样本的发送频率,进而可以将发送频率作为一个属性项。或者,也可以直接使用DNS查询请求的总个数作为一个属性项。

需要说明的是,本步骤中获得的一个时间切片内的多个DNS查询请求样本可以是一个二元组(源网络地址、目的网络地址)所发送的DNS查询请求。或者,也可以是多个二元组所发送的DNS查询请求。

S503:通过机器学习算法,对DNS查询请求样本的属性值进行训练后得到检测模型。

其中,本步骤可以简称为:样本特征训练。具体地,上一步骤可以得到DNS查询请求样本在单个请求上的属性项和/或多个请求上的属性项。本步骤可以使用已有的机器学习训练工具如有监督学习算法对DNS查询请求样本的属性项进行训练,从而得到检测模型。

在训练前,可以设置训练工具中的训练参数,如由于分类结果为异常或者正常,因此将分类结果个数这个参数设置为2;如训练工具为决策树,则可以设置决策树的最大深度为10;如训练工具为决策树,则可以设置决策树的最大分支数为32。当然,以上数值仅仅是示例说明,在实际应用中可以根据需求设置为其他数值。

使用上述三个步骤,便可以构建出检测模型。根据图4所示的方法流程可知,在构建出检测模型后,还可以根据分类结果的验证结果,将错误分类的DNS查询请求作为训练样本集中,对检测模型进行修正训练,以得到更加稳定且分类准确度更高的检测模型。

本步骤详细说明了在训练检测模型阶段,获得DNS查询请求样本后,如何确定DNS查询请求样本在属性项上的属性值。需要说明的是,在使用检测模型进行检测的阶段,针对待检测的DNS查询请求,确定待检测的DNS查询请求在属性项上的属性值时,也可以按照本步骤中的方法确定。

为了便于理解本申请提供的网络数据检测方法,以下结合图6进行综合性的简要说明。

如图6所示,网络数据检测方法可以包括两个部分,一个部分是检测模型的训练,一个部分是网络数据的检测。

其中,检测模型的训练过程主要包括采集样本数据、样本特征提取、样本特征训练及模型优化四个步骤。需要说明的是,前三个步骤可以对应上述图5的检测模型构建流程,第四个步骤可以对应图4所示的增加的步骤S405及S406。

网络数据的检测过程可以对应上述图2所示的网络数据的检测流程,主要是使用训练得到的检测模型对网络数据是否异常进行检测。需要说明的是,在检测过程中,待检测的DNS查询请求也需要按照训练过程中的方式提取一些属性项的属性值,将属性值输入至检测模型即可。并且,对于检测为异常的DNS查询请求,还可以进行报警。

下面对本申请提供的网络数据检测装置的结构进行介绍。见图7,其示出了本申请提供的网络数据检测装置的一种结构,具体包括:检测模型获得单元701、查询请求获得单元702、属性值确定单元703及查询请求检测单元704。

检测模型获得单元701,用于获得通过机器学习算法构建的检测模型,其中,所述检测模型是对DNS查询请求样本训练得到的,所述DNS查询请求样本具有属性项,所述属性项为用于区分DNS查询请求是否异常的特征;

查询请求获得单元702,用于获得待检测的DNS查询请求;

属性值确定单元703,用于确定所述待检测的DNS查询请求在所述属性项上的属性值;

查询请求检测单元704,用于将所述属性值输入至所述检测模型中,以确定所述待检测的DNS查询请求是否为异常的DNS查询请求。

在一个示例中,见图8所示的网络数据检测装置的另一种结构,该装置还可以包括:模型修正单元705。

模型修正单元705,用于验证所述检测模型对所述待检测的DNS查询请求的确定结果是否准确;若所述检测模型的确定结果错误,则将所述待检测的DNS查询请求加入DNS查询请求样本,得到新的DNS查询请求样本,并使用所述新的DNS查询请求样本训练所述检测模型。

在一个示例中,待检测的DNS查询请求为一个时间切片内的多条待检测的DNS查询请求;则所述属性值确定单元包括:第一确定子单元和/或第二确定子单元。第一确定子单元,用于获得每条待检测的DNS查询请求在第一类型属性项上的属性值;第二确定子单元,用于统计一个时间切片内,多条待检测的DNS查询请求在第二类型属性项上的属性值。

在一个示例中,所述第二确定子单元包括:第一统计子单元和/或第二统计子单元。其中,第一统计子单元,用于根据每条待检测的DNS查询请求在第一类型属性项上的属性值,计算多条所述待检测的DNS查询请求在第一类型属性项上的统计属性值,其中统计属性值包括以下几项中的任意一项或多项:总和属性值、平均属性值、极值属性值;第二统计子单元,用于依据每条待检测的DNS查询请求,统计不同的待检测的DNS查询请求的个数。

在一个示例中,所述DNS查询请求中包括查询域名;则:所述第一类型属性项包括:DNS查询请求的数据包长度、查询域名的个数、查询域名中标签的个数、查询域名中子域名的长度、查询域名中非法字符的个数;所述第二类型属性项包括:DNS查询请求的总个数、DNS查询请求的发送频率、数据包总长、数据包平均长度、非法字符总数、非法字符平均个数、标签个数最大值、标签个数最小值、标签总个数、标签平均个数、不同DNS查询请求的个数。

在一个示例中,如图8所示,网络数据检测装置还可以包括:检测模型训练单元706。检测模型训练单元706,用于训练所述检测模型。

所述检测模型训练单元706,包括:样本采集子单元、特征提取子单元及训练子单元。样本采集子单元,用于采集DNS查询请求样本,所述DNS查询请求样本中包含被标注为异常的DNS查询请求,以及被标注为正常的DNS查询请求;特征提取子单元,用于确定所述DNS查询请求样本在所述属性项上的属性值;训练子单元,用于通过机器学习算法,对所述DNS查询请求样本的属性值进行训练后得到检测模型。

在一个示例中,所述样本采集子单元具体包括白样本采集子单元及黑样本采集子单元。其中所述白样本采集子单元,用于使用域名系统DNS隧道工具生成域名系统DNS查询请求,并将生成的域名系统DNS查询请求标注为异常的域名系统DNS查询请求;所述黑样本采集子单元,用于从收集到的域名系统DNS查询请求样本中,提取查询域名为正常域名且数量较多的预设数量的域名系统DNS查询请求样本,并将提取到的域名系统DNS查询请求标注为正常的域名系统DNS查询请求。

所述特征提取子单元具体包括第一提取子单元和/或第二提取子单元。其中所述第一提取子单元,用于获得每条域名系统DNS查询请求样本在第一类型属性项上的属性值;第二提取子单元,用于统计一个时间切片内,多条域名系统DNS查询请求样本在第二类型属性项上的属性值。

所述训练子单元具体包括属性值训练子单元;其中所述属性值训练子单元,用于通过机器学习算法,对所述域名系统DNS查询请求样本的第一属性值和/或第二属性值进行训练后得到检测模型。

下面对本申请提供的网络数据检测设备的硬件结构进行描述。网络数据检测设备可以是具有处理功能的网络设备或其他检测设备。

图9为本申请实施例提供的网络数据检测设备的硬件结构示意图。参照图9,该设备可以包括:处理器901,存储器902及通信总线903。

其中,处理器901及存储器902通过通信总线903完成相互间的通信。

处理器901,用于执行程序,程序可以包括程序代码,所述程序代码包括处理器的操作指令。其中,程序可具体用于:

获得通过机器学习算法构建的检测模型,其中,所述检测模型是对DNS查询请求样本训练得到的,所述DNS查询请求样本具有属性项,所述属性项为用于区分DNS查询请求是否异常的特征;

获得待检测的DNS查询请求;

确定所述待检测的DNS查询请求在所述属性项上的属性值;

将所述属性值输入至所述检测模型中,以确定所述待检测的DNS查询请求是否为异常的DNS查询请求。

处理器901可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。

存储器902,用于存放程序;存储器902可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

需要说明的是,处理器901在执行自身功能时,可以按照上述网络数据检测方法中的方式实现,此处并不赘述。

本申请还提供了一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行以上与网络数据检测方法相关的步骤。具体来看,与网络数据检测方法相关的步骤包括以下:

检测模型获得步骤,用于获得通过机器学习算法构建的检测模型,其中,所述检测模型是对DNS查询请求样本训练得到的,所述DNS查询请求样本具有属性项,所述属性项为用于区分DNS查询请求是否异常的特征;

查询请求获得步骤,用于获得待检测的DNS查询请求;

属性值确定步骤,用于确定所述待检测的DNS查询请求在所述属性项上的属性值;

查询请求检测步骤,用于将所述属性值输入至所述检测模型中,以确定所述待检测的DNS查询请求是否为异常的DNS查询请求。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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