首页> 中国专利> 一种面向高速网络抽样数据采集场景的慢速端口扫描检测方法

一种面向高速网络抽样数据采集场景的慢速端口扫描检测方法

摘要

本发明公开了一种面向高速网络抽样数据采集场景的慢速端口扫描检测方法,该方法首先对公开数据集进行系统抽样,然后利用一个包含4个计数器和2个哈希表的sketch结构提取流量特征。首先采用K‑means算法对流量特征进行聚类,然后基于规则对已知扫描流所在簇中的流量进行验证和标注,进而构建具有完整标签的训练集。最后,利用有监督机器学习算法训练用于端口扫描检测的分类模型。该分类模型在抽样数据采集情景下检测出高速网络中TCP和UDP的慢速端口扫描活动,对于持续时间超过50天的慢速扫描攻击,该方法仍然有效。本发明使用有限的内存实现对海量高速流量中端口扫描事件的检测,被网络管理者用于高速网络中的安全事件监测。

著录项

  • 公开/公告号CN113872962A

    专利类型发明专利

  • 公开/公告日2021-12-31

    原文格式PDF

  • 申请/专利权人 东南大学;

    申请/专利号CN202111124600.5

  • 发明设计人 吴桦;邵梓菱;程光;

    申请日2021-09-24

  • 分类号H04L29/06(20060101);G06N20/00(20190101);G06K9/62(20060101);

  • 代理机构32206 南京众联专利代理有限公司;

  • 代理人杜静静

  • 地址 210096 江苏省南京市玄武区四牌楼2号

  • 入库时间 2023-06-19 13:27:45

说明书

技术领域

本发明涉及一种面向高速网络抽样数据采集场景的慢速端口扫描检测方法,属于网络安全技术领域。

背景技术

端口扫描是指攻击者向目标主机发送一组探测消息并等待回复,通过观察收到的响应获取目标主机的端口状态,进而了解其提供的网络服务类型。尽管端口扫描攻击不会直接对受害者造成实质性的伤害,但它们会暴露目标主机可以被攻击的入口点。因此,端口扫描检测对于防止攻击者对网络系统造成进一步破坏具有至关重要的意义。

然而,一些恶意的攻击者为了避免被发现,会执行慢速端口扫描。在慢速扫描攻击中,扫描探测包之间的时间间隔较长(10秒以上),其表现出的流量特征不够明显,并且与大量正常流量交错,所以很难被现有的入侵检测系统发现。可见,检测慢速端口扫描是一项重要且具有挑战性的任务。

目前,研究者们已经提出了一系列检测端口扫描的方法,其中基于阈值和基于机器学习的方法被广泛应用。但是这些方法仍存在一些问题,效果并不是很理想。

(1)基于阈值的端口扫描检测方法

基于阈值的方法通过判断某段时间内每个源IP地址请求的端口数量是否超过预先设定的阈值来确定端口扫描攻击是否发生,然而,此类方法的准确性受时间窗口大小的影响很大。由于慢速端口扫描通常具有持续时间长、探测包之间时间间隔大的特点,因此,这类方法在检测慢速端口扫描时准确率非常低。

(2)基于机器学习的端口扫描检测方法

基于机器学习的检测方法通过训练分类模型实现对未知流量的检测,该类方法需要预先对全部或者部分特征数据进行人工标记,然而,面对具有海量流量数据的高速网络,人工标记需要耗费十分昂贵的代价。这种对标签数据的强依赖性导致现有的基于机器学习的端口扫描检测方法不能应用于高速网络环境。

发明内容

为解决上述问题,本发明公开了一种面向高速网络抽样数据采集场景的慢速端口扫描检测方法,该方法首先对公开数据集进行系统抽样,然后利用一个包含4个计数器和2个哈希表的sketch结构提取流量特征。鉴于公开数据集缺乏完整标签,为了建立训练集,首先采用K-means算法对流量特征进行聚类,然后基于规则对已知扫描流所在簇中的流量进行验证和标注,进而构建具有完整标签的训练集。最后,利用有监督机器学习算法训练用于端口扫描检测的分类模型。该分类模型可以在抽样数据采集情景下检测出高速网络中TCP和UDP的慢速端口扫描活动,并且对于持续时间超过50天的慢速扫描攻击,该方法仍然有效。

为了实现本发明的目的,本方案具体技术步骤如下:

步骤(1)获取一段在主干网节点持续采集一段时间的高速网络流量数据,其中含有部分端口扫描流量;

步骤(2)设置抽样比为1/μ,对获取的公开数据集进行系统抽样;

步骤(3)使用扫描检测sketch对抽样后的TCP和UDP流量进行特征提取;

步骤(4)采用K-means算法对流量特征进行聚类,并基于规则对已知扫描流所在簇中的流量进行验证并标注,进而得到具有完整标签的训练集;

步骤(5)使用有监督机器学习算法对步骤(4)得到的训练集进行模型训练,得到分类模型;

步骤(6)使用另外两段公开数据集数据作为测试集,分别对模型检测快速端口扫描和慢速端口扫描的性能进行测试。

进一步的,所述步骤(1)中,获取公开数据集流量的方法如下:

(1.1)访问公开数据集官网,获取在主干网节点上持续采集一段时间的高速网络流量;

(1.2)公开数据集官方文档中仅提供了部分端口扫描流量的信息,因此步骤(4)中采用聚类算法找出公开数据集中所有的端口扫描流量并标注,以将其作为用于模型训练的数据。

进一步的,所述步骤(2)中,系统抽样具体过程如下:设置抽样比为1/μ,数据包按照时间顺序排列,随机选取一个起点抽取数据包,后续每隔μ个包抽取一个数据包,得到抽样后的流量。

进一步的,所述步骤(3)中,所使用的扫描检测sketch详细信息以及提取特征的具体步骤如下:

(3.1)基于TCP扫描的特点,所选择的TCP流量特征为:IP地址发送和接收的数据包数目之比、IP地址发送和接收的带有SYN标志的数据包数目之比、TCP数据包的目的IP分散度以及TCP数据包的目的端口分散度。基于UDP扫描的特点,所选择的UDP流量特征为:IP地址发送和接收的数据包数目之比、UDP数据包的目的IP分散度以及UDP数据包的目的端口分散度。表1总结了所选取的流量特征及其含义。

表1流量特征及含义

(3.2)根据所选择的特征,设计了扫描检测sketch用于特征提取,扫描检测sketch是在Count-Min sketch的基础上改进而来的,它由d行w列的二维数组桶组成,每个桶包含4个计数器和2个哈希表,用于存储一个数据包的多个特征,其中哈希表实际上是一个16位的比特数组,比特值是0或1,初始值全为0,扫描检测sketch支持两种基本操作:更新操作和提取操作,其中更新操作包括两个子操作,即更新计数器操作和更新哈希表操作。更新计数器操作即将被映射的桶中的计数器执行加1操作,更新哈希表操作的具体步骤如下:将当前数据包的端口号或目的IP地址提取出来作为key,再将key用哈希函数映射到相应的哈希表中,被映射到的比特位从原始的0置为1,如果被映射的比特已经被置为1,则保持不变。因此哈希表中1的分布情况体现了key的分散度;提取操作是指,当一个IP地址接收和发送的数据包数目总和达到阈值θ时,当前key所映射的d个桶中,计数器达到该阈值的桶中的所有值被提取出来作为一笔特征向量记录,并将该数据包所映射的所有桶中的值减去最小计数桶值。

(3.3)当一个数据包到达,它的(IP,协议)对会被提取出来作为key,提取的key被用作一个哈希函数的输入,每个数据包的(源IP,协议)和(目的IP,协议)会被分别提取出来映射一次,扫描检测sketch可以同时处理TCP和UDP数据包,尽管它们的源和目的地址可能都是相同的,但是协议上的差异会使它们被映射到sketch的不同桶中,因此极少发生冲突;

(3.4)哈希函数输出的128位值被划分成d个部分,每个部分代表sketch二维数组中每行的一个地址,该地址位置上的桶会更新相应的计数器和哈希表。当处理不同协议的数据包时,扫描检测sketch的桶会更新计数器和哈希表的不同组合,如表2所示,在处理TCP数据包时,sketch中的Ss,Ds,Sp,Dp,HDip,HDpt被更新。在处理UDP数据包时,sketch中的Sp,Dp,HDip,HDpt被更新;

(3.5)当一个数据包接收和发送的数据包总和达到阈值θ,执行提取操作,提取出的特征向量记录是机器学习模型训练的基础。

表2扫描检测sketch中桶的组成

进一步的,所述步骤(4)中,具体包含以下子步骤:

(4.1)对sketch提取后的特征向量进行聚类。在经sketch提取特征后,可以得到所有抽样后流量的特征向量记录,然而这些记录中只有一部分的端口扫描流量被标注,所以考虑使用K-means算法对特征向量记录进行聚类,由于K-means算法可以将具有相似特征的对象聚合到同一个簇中,因此,已知扫描流所在簇中的所有流量都可以被视为端口扫描流量。

(4.2)验证并标注聚类后的结果。鉴于聚类结果可能存在少量误差,为了使训练集的标签更准确,本方案根据3条规则对已知扫描流所在簇中的所有流量进行了验证,规则如下:i)如果一个IP地址产生至少20个流向不同IP同一个端口的流,并且每个流不超过10个分组,则该IP地址是水平扫描的扫描器;ii)如果一个IP地址产生向另一个IP的至少20个不同端口发送流,并且每个流不超过10个分组,则它是垂直扫描的扫描器;iii)如果一个IP地址同时执行了上述两种扫描,则它是混合扫描的扫描器。经验证后,可以对聚类结果进行标注,进而得到具有完整标签的训练集数据。

进一步的,所述步骤(5)中,使用的有监督机器学习算法为决策树算法,选择该算法一方面是因为决策树算法可以在短时间内对大型数据源进行可行有效的分类。另一方面是因为步骤(3)中所选特征具有数量少、区分性强的特点,使用决策树算法便可以达到较好的分类效果。

进一步的,所述步骤(6)中,具体包含以下子步骤:

(6.1)获取另外两段公开数据集踪迹作为测试集,分别用来验证模型检测快速端口扫描和慢速端口扫描的性能;

(6.2)设置抽样比,对获取的数据进行系统抽样;

(6.3)使用扫描检测sketch对抽样后的流量进行特征提取;

(6.4)使用步骤(5)中训练的模型进行端口扫描检测,输出检测结果。

与现有技术相比,本发明的技术方案具有以下优点:

(1)本发明提出了一种用于扫描检测的sketch,该sketch中每个桶包含4个计数器和2个哈希表,其中哈希表用于记录目的IP和目的端口的分散度,在此基础上能区分出水平扫描、垂直扫描和混合扫描,具有较好的应用前景。

(2)本发明将抽样技术和sketch结合使用,减少了高速网络流量处理的资源消耗。经实验证明,当在抽样率设为1/32时,即使对于一个持续超过50天的慢速端口扫描攻击,本发明仅需16384MB的内存即可准确地检测出来,因此本发明具有较好的实用性。

(3)本发明结合无监督的K-means聚类算法实现了训练集的建立,这种方式大大减少了人工标注的代价,更具可行性。

附图说明

图1为本发明的的总体架构图;

图2为本发明设计的扫描检测sketch的结构图;

图3为执行更新哈希表操作的示意图;

图4为sketch冲突率随使用率变化的数据分析图。

具体实施方式

以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。

具体实施例:本发明提供的一种面向高速网络抽样数据采集场景的慢速端口扫描检测方法,其总体架构如图1所示,包括如下步骤:

步骤(1)获取一段在主干网节点持续采集一段时间的高速网络流量数据,其中含有部分端口扫描流量;

步骤(2)设置抽样比为1/μ,对获取的公开数据集进行系统抽样;

步骤(3)使用扫描检测sketch对抽样后的TCP和UDP流量进行特征提取;

步骤(4)采用K-means算法对流量特征进行聚类,并基于规则对已知扫描流所在簇中的流量进行验证并标注,进而得到具有完整标签的训练集;

步骤(5)使用有监督机器学习算法对步骤(4)得到的训练集进行模型训练,得到分类模型;

步骤(6)使用另外两段公开数据集数据作为测试集,分别对模型检测快速端口扫描和慢速端口扫描的性能进行测试。

本发明的一个实施例中,步骤(1)中,获取MAWI工作组于2021年4月10日收集的公开数据集,此公开数据集包含了在高速网络上持续收集900秒得到的70,856,552个数据包。尽管MAWI提供了异常流量的标签文档,但是调研结果显示,该文档并不完整,因此不能被当做基础事实。本实施例中仅将该文档当做参考,并通过聚类建立具有完整标签的基础事实。

本发明的一个实施例中,步骤(2)中,设置抽样比为1/32,对获取的公开数据集进行系统抽样。

本发明的一个实施例中,步骤(3)中,所使用的扫描检测sketch详细信息以及提取特征的具体步骤如下:

(3.1)基于TCP扫描的特点,所选择的TCP流量特征为:IP地址发送和接收的数据包数目之比、IP地址发送和接收的带有SYN标志的数据包数目之比、TCP数据包的目的IP分散度以及TCP数据包的目的端口分散度。基于UDP扫描的特点,所选择的UDP流量特征为:IP地址发送和接收的数据包数目之比、UDP数据包的目的IP分散度以及UDP数据包的目的端口分散度。表1总结了所选取的流量特征及其含义。

表1流量特征及含义

(3.2)根据所选择的特征,设计了扫描检测sketch用于特征提取,扫描检测sketch是在Count-Min sketch的基础上改进而来的,它由d行w列的二维数组桶组成,每个桶包含4个计数器和2个哈希表,用于存储一个数据包的多个特征,其中哈希表实际上是一个16位的比特数组,比特值是0或1,初始值全为0,扫描检测sketch支持两种基本操作:更新操作和提取操作,其中更新操作包括两个子操作,即更新计数器操作和更新哈希表操作。更新计数器操作即将被映射的桶中的计数器执行加1操作,更新哈希表操作的具体步骤如下:将当前数据包的端口号或目的IP地址提取出来作为key,再将key用哈希函数映射到相应的哈希表中,被映射到的比特位从原始的0置为1,如果被映射的比特已经被置为1,则保持不变。因此哈希表中1的分布情况体现了key的分散度;提取操作是指,当一个IP地址接收和发送的数据包数目总和达到阈值θ时,当前key所映射的d个桶中,计数器达到该阈值的桶中的所有值被提取出来作为一笔特征向量记录,并将该数据包所映射的所有桶中的值减去最小计数桶值。

(3.3)当一个数据包到达,它的(IP,协议)对会被提取出来作为key,提取的key被用作一个哈希函数的输入,每个数据包的(源IP,协议)和(目的IP,协议)会被分别提取出来映射一次,扫描检测sketch可以同时处理TCP和UDP数据包,尽管它们的源和目的地址可能都是相同的,但是协议上的差异会使它们被映射到sketch的不同桶中,因而极少发生冲突;

(3.4)哈希函数输出的128位值被划分成d个部分,每个部分代表sketch二维数组中每行的一个地址,该地址位置上的桶会更新相应的计数器和哈希表。当处理不同协议的数据包时,扫描检测sketch的桶会更新计数器和哈希表的不同组合,如表2所示,在处理TCP数据包时,sketch中的Ss,Ds,Sp,Dp,HDip,HDpt被更新。在处理UDP数据包时,sketch中的Sp,Dp,HDip,HDpt被更新;

(3.5)当一个数据包接收和发送的数据包总和达到阈值θ,执行提取操作,提取出的特征向量记录是机器学习模型训练的基础。

表2扫描检测sketch中桶的组成

本发明的一个实施例中,步骤(4)中,具体包括如下过程:

(1)使用K-means算法对抽样后流量特征进行聚类,聚类的最佳簇数可以使用常用的寻找最佳k值的方法得到;

(2)根据MAWI提供的异常流量文档定位已知的扫描流所在的簇;

(3)将扫描流所在簇中的所有流量提取出来,根据规则进行验证,剔除少数非扫描流,并对验证后的流量打上标签。

本发明的一个实施例中,阈值θ被设定为50,检测TCP扫描的部分训练集数据如表3所示,检测UDP扫描的部分训练集数据如表4所示。协议字段为6代表为TCP数据包的记录,协议字段为17代表为UDP数据包的记录。本方法可以具体区分水平扫描、垂直扫描、混合扫描,Label为1代表为水平扫描流量,Label为2代表为垂直扫描流量,Label为3代表为混合扫描流量,Label为0则表示为正常流量。

表3 TCP端口扫描流量分类部分训练集数据

表4 UDP端口扫描流量分类部分训练集数据

本发明的一个实施例中,步骤(5)中,根据步骤(4)构造好的训练集,使用决策树方法训练分类模型,用于检测端口扫描攻击;

本发明的一个实施例中,步骤(6)中,具体包括如下过程:

(1)获取另外两段MAWI公开数据集流量,设为数据A和数据B,其中数据A捕获于2020年6月10日,持续时间为900秒,数据B捕获于2019年4月9日,持续时间为24小时。本实施例中,使用Nmap产生不同速度的端口扫描流量,并将快扫描流量插入数据A中,将慢扫描流量插入到数据B中,改造后的两段数据被用作测试集,数据A用于测试模型检测快速端口扫描的性能,数据B用于测试模型检测慢速端口扫描的性能。

(2)设置抽样比,对获取的公开数据集进行系统抽样;

(3)使用扫描检测sketch对抽样后的流量进行特征提取;

(4)将提取的特征记录输入训练好的模型中进行检测,模型将输出流量的检测结果。

本发明的一个实施例中,通过实验分析扫描检测sketch可持续使用的时间,以证明本发明具有较强的实用性。考虑到所有基于sketch的方法都需要在sketch使用一段时间后清空sketch,否则就会导致频繁的哈希冲突,造成检测结果出现较大差错。因此,本实施例中分析了随着sketch使用率的增加,sketch中发生冲突的概率变化,结果如图4所示。可见当sketch使用率在1/10时,sketch的冲突率约为1/10000,这个冲突率是能被接受的。基于此,计算在抽样率为1/32时,本发明提出的扫描检测sketch可以持续使用多久才被清空一次,计算结果如表5所示。可见当抽样率为1/32时,仅需16384MB的内存大小,扫描检测sketch即可监测持续时间为56.98天的高速网络流量,具有较强的实用性。

表5 1/32抽样率下sketch可持续使用的时间

本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号