一种采用全文索引的网络攻击入侵检测方法与流程

文档序号:21886606发布日期:2020-08-18 17:21阅读:209来源:国知局
一种采用全文索引的网络攻击入侵检测方法与流程

本发明涉及信息安全领域,尤其是涉及一种采用全文索引的网络攻击入侵检测方法。



背景技术:

入侵检测能够提升信息系统对网络攻击的主动防御能力。技术上可分为基于标签的和基于异常的两类。相比之下,基于标签的入侵检测对已知攻击的检测准确率较高,是构建当前主流入侵检测系统(intrusiondetectionsystem,ids)核心组件的基础。

基于标签的入侵检测技术的基本思路是:判断被检测流量与已知攻击引起的异常流量是否存在相似或相同特征。一种实现方法是:首先,根据专家经验从已知攻击的异常流量中提取攻击特征来构建特征库;接着,使用模式匹配算法判断被检测流量是否包含与特征库相匹配的特征;最后,返回相匹配特征所对应的攻击。另一种实现方法是:首先,使用机器学习算法学习已知攻击的异常流量特征来构建二分类判定模型;接着,使用二分类判定模型来判断被检测流量是否为异常流量。

目前,基于标签的入侵检测技术对未知攻击的检测准确率较低,这主要是因为未知攻击的异常流量包含一些新的攻击特征,这些攻击特征既未被特征库收录,也未被分类判定模型学习,导致传统模式匹配算法和机器学习算法难以发挥作用。一些研究使用集成学习和迁移学习来提升二分类判定模型的能力。其中,集成学习首先使用多种机器学习算法来构建多个独立的二分类判定模型,接着依次使用各个二分类判定模型来判断被检测流量是否为异常流量,最后综合考虑所有判定模型输出的判断结果来形成最终的判断结果。迁移学习则是将由二分类判定模型判断为异常的网络流量作为模型的新训练集,从而通过闭环学习实现模型的迭代更新。从一定意义上来说,集成学习和迁移学习均是从已知攻击中挖掘出隐藏的攻击特征,这些攻击特征在未知攻击引起的异常流量中呈显性。

但是现有的基于标签的入侵检测技术过于依赖专家经验和统计分析,导致对异常流量的潜在攻击特征的提取能力不足。因此,如何高效地挖掘异常流量的潜在攻击特征是一个有待解决的关键问题。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种采用全文索引,能够有效挖掘异常流量潜在攻击特征的网络攻击入侵检测方法。

本发明的目的可以通过以下技术方案来实现:

一种采用全文索引的网络攻击入侵检测方法,包括以下步骤:

1)建立模拟网络环境e,并生成正常网络流量和已知攻击异常流量;

2)分别获取正常网络流量和已知攻击异常流量中各数据包的字面值;

3)根据获取的字面值构建广义后缀数组sa和广义最长公共前缀数组lcpa;

4)利用广义后缀数组sa和广义最长公共前缀数组lcpa,搜寻已知攻击异常流量中所有的公共字面值,作为潜在攻击特征;

5)将潜在攻击特征作为训练集,训练二分类判决模型;

6)利用训练完成的二分类判决模型判断被检测流量是否为异常流量。

所述的步骤2)具体包括:

201)将正常网络流量的数据包和已知攻击异常流量的数据包结合,构成包含多个字符串的流量集合s={s0,s1,s2,...,sn},所述的流量集合s内的元素s0对应正常网络流量的字面值,所述的流量集合s内的元素s1~sn对应各已知攻击异常流量的字面值;

202)将流量集合s内的各元素分别切分为多个子串,得到子串集合e,所述的子串集合e中的各子串对应一个完整数据包的字面值;

203)将子串集合e内的每个子串切分为多个分段,得到分段集合f={f0,f1,f2,...,fm},所述的分段集合f中的各元素对应一个完整数据包字段的字面值。

所述的步骤3)具体包括:

301)构造分段字符串f’,所述的分段字符串f’中包含分段集合f中所有分段对应的字面值;

302)将分段字符串f’作为输入,利用后缀数组算法和最长公共前缀数组算法,构建广义后缀数组sa和广义最长公共前缀数组lcpa。

所述的分段字符串f’的表达式为:

f’=f0hf1hf2h...fmh

其中,f0,f1,f2,...,fm为分段集合f中各分段的字符,h为按字典序小于分段集合f中任意字符的一个字符。

所述的广义后缀数组sa记录按字典序排列的分段集合f中的所有后缀,该数组中的元素sa[i]的值为第i+1小的后缀在分段字符串f’中的起始地址;

所述的广义最长公共前缀数组lcpa记录广义后缀数组sa中相邻后缀的最长公共前缀的长度,该数组中的元素lcpa[i]的值为分段字符串f’中起始地址分别为sa[i]和sa[i-1]的两个后缀的最长公共前缀的长度。

所述的步骤4)具体包括:

401)从左至右访问广义最长公共前缀数组lcpa中未被访问的元素,选取该数组中满足预设条件的区间lcpa[i,j];

402)查询分段字符串f’中,起始地址分别为sa[i-1]~sa[j]的后缀所属的分段;

403)判断该分段是否在所有已知攻击异常流量数据包中出现,且不在正常流量数据包中出现,若是,则该分段为已知攻击异常流量中的公共字面值;

404)判断广义最长公共前缀数组lcpa中是否还有未被访问的元素,若是,则返回执行步骤401),若否,则完整获取已知攻击异常流量中所有的公共字面值,执行步骤5)。

所述的满足预设条件的区间lcpa[i,j]具体为:

区间lcpa[i,j]中的最小值大于等于设定阈值k,且lcpa[i-1]和lcpa[j+1]均小于设定阈值k;所述的设定阈值k为整数。

所述的步骤403)具体包括:

403-1)获取步骤402)中查询到分段的分段编号,记录在第一集合m1中;

403-2)查询第一集合m1中各分段所属的子串,并将子串编号记录在第二集合m2中;

403-3)查询第二集合m2中各子串所属的字符串,并将字符串编号记录在第三集合m3中;

403-4)判断第三集合m3是否等于{1,2,...n},若是,则该分段为已知攻击异常流量中的公共字面值。

所述的步骤1)中,生成已知攻击异常流量的攻击为同类型攻击的不同变种。

所述的模拟网络环境e中的时间切分为等长的时间片。

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

1)更高的检出率:本发明通过搜寻在已知同类型攻击的不同变种中均有出现的公共字面值特征,作为潜在攻击特征提取出来,并将该潜在攻击特征作为训练集训练基于机器学习的网络攻击入侵检测二分类算法,能够有效挖掘异常流量潜在攻击特征,提高机器学习算法二分类判定模型对异常流量检出率;

2)更高的执行效率:传统的模式匹配算法和机器学习算法提取特征的过程具有较高的时空复杂度,本发明方法在执行过程中的性能瓶颈在于广义后缀数组和广义最长公共前缀数组的构造过程,该构造过程的时空复杂度线性正比于输入的规模且常数因子较小,有更高的执行效率;

3)更好的数据通用性:传统的模式匹配算法和机器学习算法难以处理高维度数据,需要在特征提取前对数据进行筛选,得益于理论上较优的时空复杂度,所述方法可处理高维数据,可结合时间序列分析技术,更快更全地找出横跨多个数据包、多个会话的潜在攻击特征。

附图说明

图1为本发明方法的流程示意图;

图2为本发明方法的具体实现流程图;

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

实施例

如图1所示,本发明提供一种采用全文索引的网络攻击入侵检测方法,包括以下步骤:

1)建立模拟网络环境e,并生成正常网络流量和已知攻击异常流量;

2)分别获取正常网络流量和已知攻击异常流量中各数据包的字面值;

3)根据获取的字面值构建广义后缀数组sa和广义最长公共前缀数组lcpa;

4)利用广义后缀数组sa和广义最长公共前缀数组lcpa,搜寻已知攻击异常流量中所有的公共字面值,作为潜在攻击特征;

5)将潜在攻击特征作为训练集,训练二分类判决模型;

6)利用训练完成的二分类判决模型判断被检测流量是否为异常流量。

如图2所示,利用本发明方法进行入侵检测的具体过程包括:

s1:建立模拟网络环境e,其中,模拟网络环境e中的时间被切分为等长的时间片。

s2:生成并记录正常网络流量,包括以下子步骤:

s201:初始化模拟网络环境e。

s202:模拟网络环境e中的节点n1监测从t时刻开始的t个时间片内流经的数据包,并将监测记录存储在字符串s0中。

s3:利用已知攻击集合a={a1,a2,...,an},生成并记录a中各攻击的异常流量。其中,该攻击集合a中的攻击为同类型攻击的不同变种,具体地,生成攻击ai的异常流量的过程包括以下子步骤:

s301:初始化模拟网络环境e。

s302:从t时刻开始使用攻击ai向模拟网络环境e中的节点n2发起攻击。

s303:模拟网络环境e中的节点n1监测从t时刻开始的t个时间片内流经的数据包,并将监测记录存储在字符串si中,字符串si对应攻击ai的异常流量。

s4:生成包含多个字符串的流量集合s={s0,s1,s2,...,sn},其中,字符串s0对应正常流量,字符串s1~sn对应不同攻击的异常流量,对流量集合s中的各个字符串执行预处理。具体地,对字符串si执行的预处理过程包括以下子步骤:

s401:将字符串si切分为多个子串,每个子串是一个完整数据包的字面值。

s402:将每个子串切分为多个分段,每个分段是一个完整数据包字段的字面值。

s5:生成分段集合f={f0,f1,f2,...,fm},分段集合f为流量集合s中所有字符串的所有分段的全集,并构建分段集合f的广义后缀数组sa和广义最长公共前缀数组lcpa。具体地,广义后缀数组sa和广义最长公共前缀数组lcpa的构建过程包括以下子步骤:

s501:构造分段字符串f’=f0hf1hf2h...fmh,分段字符串f’中的字符h按字典序小于该字符串中的任意分段的任意字符。

s502:调用后缀数组算法和最长公共前缀数组算法来构造广义后缀数组sa和广义最长公共前缀数组lcpa,算法的输入为分段字符串f’。广义后缀数组sa按字典序排列分段集合f中所有分段的所有后缀,其中sa[i]记录了第i+1小的后缀在分段字符串f’中的起始位置。广义最长公共前缀数组lcpa记录了广义后缀数组sa中相邻后缀的最长公共前缀的长度,其中lcpa[i]记录了在分段字符串f’中起始地址分别为sa[i]和sa[i-1]的两个后缀的最长公共前缀的长度。

s6:预设整数阈值k,寻找攻击集合a中攻击引起的异常流量的潜在攻击特征。具体地,包括以下子步骤:

s601:从左向右访问广义最长公共前缀数组lcpa中未被访问的元素,寻找区间lcpa[i,j],满足lcpa[i,j]中的最小值大于等于整数阈值k并且lcpa[i-1]和lcpa[j+1]均小于整数阈值k。若广义最长公共前缀数组lcpa中不存在符合条件的区间lcpa[i,j],则跳转执行步骤s7。

s602:查询分段字符串f’中的起始地址分别为sa[i-1],sa[i],sa[i+1],...,sa[j]的后缀所属的分段,将分段编号记录在第一集合m1中。

s603:查询第一集合m1中各分段所属的子串,将子串编号记录在第二集合m2中。

s604:查询第二集合m2中各分段所属字符串,将字符串编号记录在第三集合m3中。

s605:判断第三集合m3是否等于{1,2,...n},其中,n为攻击集合a和流量集合s中的元素个数,若是则将字符串f’[sa[i],sa[i]+lcp[i]-1]记录到训练集合m4中。

s606:判断lcpa中是否还有尚未访问的元素,若是则跳转执行步骤s601。

s7:利用训练集合m4作为训练集,训练现有的基于机器学习的网络攻击入侵检测二分类算法,得到一个二分类判决模型。

s8:在已知ids中部署二分类判决模型。

s9:将ids监测的网络流量输入二分类判决模型,并由二分类判决模型判断流量是否异常。

为进一步阐述本发明,假设流量集合s中各字符串的值为:s0=abaa,s1=abca,s2=caab,则流量集合s={abaa,abca,caab};并设定字符串中每个子串的长度均为4,每个字段的长度均为2,给出步骤s4、s5和s6的具体实例:

步骤s4:由于子串长度与字符串长度相同,因此每个字符串自身即为子串,则得到四个子串分别为:e0=abaa、e1=abca、e2=caab。再将每个子串切分为2个分段,得到:f0=ab,f1=aa,f2=ab,f3=ca,f4=ca,f5=ab。

步骤s5:由上一步,得到分段集合f={ab,aa,ab,ca,ca,ab},再根据分段集合f构造分段字符串f’=abhaahabhcahcahabh。其中,分段集合f的广义后缀数组sa和广义最长公共前缀数组lcpa的构造结果如下表:

表f的广义后缀数组和广义最长公共前缀数组

步骤s601:设定整数k=3,从左向右访问广义最长公共前缀数组lcpa,可得到满足要求的区间lcpa[14,15]。

步骤s602:对于区间lcpa[14,15],涉及的三个后缀在分段字符串f’中的起始位置分别为sa[13]=15、sa[14]=6、sa[15]=0。按起始位置查询可知,各后缀分别属于分段f5、f2、f0,因此第一集合m1={5,2,0}。

步骤s603:查询可知分段f5、f2、f0分别属于编号为e2、e1、e0的子串,所以第二集合m2={2,1,0}。

步骤s604:因为每个子串就是其所属字符串本身,所以第三集合m3={2,1,0}。

步骤s605:第三集合m3={2,1,0}表示“ab”不仅在所有异常流量中出现,也在正常流量中出现,故判断“ab”不是攻击集合a中所有攻击引起的异常流量的潜在攻击特征。换言之,因为第三集合m3不等于{1,2},所以不更新训练集合m4。

步骤s606:因为lcpa中尚有未访问的元素,所以跳转执行步骤s601。

步骤s601:从左向右访问广义最长公共前缀数组lcpa,可得到下一个满足要求的区间lcpa[17,17]。

步骤s602:对于区间lcpa[17,17],涉及的两个后缀在分段字符串f’中的起始位置分别为sa[16]=12和sa[17]=9。按起始位置查询可知,两个后缀分别属于分段f4和f3,因此第一集合m1={4,3}。

步骤s603:查询可知分段f4和f3分别属于子串e2和e1,所以第二集合m2={2,1}。

步骤s604:因为每个子串就是其所属字符串本身,所以第三集合m3={2,1}。

步骤s605:第三集合m3={2,1}表示“ca”在所有异常流量中出现,并且不在正常流量中出现,故判断“ca”是a中所有攻击引起的异常流量的潜在攻击特征。换言之,因为第三集合m3等于{1,2},所以更新训练集合m4={ca}。

步骤s606:因为广义最长公共前缀数组lcpa中已无未访问的元素,所以继续执行步骤s7。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的工作人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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