一种基于Linux系统调用的攻击检测系统

阅读: 评论:0


一种基于linux系统调用的攻击检测系统
技术领域
1.本发明属于计算机安全技术领域,具体涉及一种基于linux系统调用的攻击检测系统。


背景技术:



2.当前“信创”产业发展迅速,以linux为内核的国产操作系统凭借自身独特的优势,逐渐被越来越多的个人和企业所使用,但针对国产操作系统的恶意攻击也随之增多,开展基于linux系统的入侵检测研究刻不容缓。
3.linux系统调用是由linux内核实现的应用编程接口,用于应用程序与内核进行交互,即依托于linux系统的应用程序,其在运行时会通过系统调用与内核进行交互。且有研究证明正常操作和恶意操作所生成的linux系统调用序列具有明显差异,因此本发明将开展基于linux系统调用的入侵检测系统的研究。
4.现有的基于linux系统调用的攻击检测方式是通过分析程序的系统调用来实现的,其主要是通过分析收集到的linux系统调用序列,建立正常的系统调用基线或建立异常的系统调用特征图谱,当出现异于正常系统调用基线的行为或者匹配异常调用特征时,能够判别序列具有攻击性。
5.现有技术问题是:
6.(1)针对linux系统调用的攻击检测研究主要是基于已知攻击类型进行的派生攻击检测,因此当前入侵检测系统存在一定的漏报率。
7.(2)针对linux系统调用的攻击检测研究主要在理论方面,而在实际应用情况下,linux系统调用序列存在冗余调用以及序列过长等问题,缺少对上述问题的处理。


技术实现要素:



8.为解决上述技术问题,本发明提出一种基于linux系统调用的攻击检测系统,包括:
9.一种基于linux系统调用的攻击检测方法,包括以下步骤
10.s1:获取系统运行过程中生成的系统调用,以及在现有数据库中获取攻击序列和正常序列构建数据集;
11.s2:去除系统运行过程中生成的调用中的冗余系统调用,生成指定时间段内的系统调用序列,并将该系统调用序列截取成等长的子序列,同时将数据集中的序列也截取成等长的子序列;
12.s3:将数据集中的等长子序列根据数据类型分为攻击序列和正常序列,并分别存储到攻击库和正常库两类序列库中,得到检测序列匹配库;
13.s4:将系统调用序列截取成等长的子序列作为待检测的序列,并转换为词向量形式的检测序列;
14.s5:通过深度学习模型初步判定词向量形式的检测序列的类别,若判定为异常序
列,则将该序列放入攻击库,更新检测匹配库,若判定为正常序列,则进行进下一步判定;
15.s6:将初步判定为正常的序列通过与检测匹配库进行匹配度对比,判定其类别;
16.s7:采用集计算判断匹配库不能判定类别的序列,得到检测结果。
17.优选的,将系统调用序列截取成等长的子序列,具体包括:
18.采用统计分析方法去除冗余的系统调用,生成系统调用序列,将生成的系统调用序列截取为固定长度的调用序列:采用滑动窗口技术对长度超过固定长度的调用序列进行截取,若生成序列长度未达到固定长度,在序列尾部填充0进行补齐。
19.优选的,采用统计分析方法去除冗余系统调用,具体包括:
20.根据数据集中的一致类型的序列,分别计算两类序列中的每条序列的系统调用的tf-idf值,并分别对两类序列中的每条序列的tf-idf值降序排序,分别将两类序列中后40个系调用筛选出来,从每类中的序列后40个系统调用中筛选出重复出现的系统调用,对比分析两类筛选出的系统调用,将两类序列中相同的系统调用作为的冗余系统调用,将选出的冗余系统调用与系统运行过程中生成的所有系统调用进行统计分析,出与选出的冗余系统调用一样的系统调用,并去除。
21.进一步的,所述计算每条系统调用序列中的系统调用的tf-idf值,表示为:
[0022][0023]
其中,tf-idf
a1
表示系统调用a1的tf-idf值,表示系统调用a1在序列a中出现的频次,σa
1,k
表示在生成的序列k中出现系统调用a1的序列总数,|n|表示在生成的序列中正常类型或攻击类型序列数总和,|{n
a1
}|表示在当前类别中出现系统调用a1的序列数。
[0024]
优选的,对初步判定为正常的序列与匹配库中的序列进行匹配度的对比,判断出该序列的类型,具体包括:
[0025]
设置匹配度大小为0.8,比对待检测序列与两类匹配库中序列的相似度,若检测序列与正常序列匹配库中的序列相似度大于0.8,则该序列为正常序列,若检测序列与攻击序列匹配库中的序列相似度大于0.8,则该序列为攻击序列,检测序列与正常序列匹配库中的序列或攻击序列匹配库中的序列相似度小于0.8,则不能认定该序列的类别。
[0026]
优选的,所述进行集计算,具体包括:
[0027]
s1:将检测单元不能认定类别的检测序列记为seq01,将seq01转化为词向量形式的序列seqm01;
[0028]
s2:选择在内网连接主机中主机h1与seq01同时段生成的序列seq
11
,并转换为词向量形式的序列seqm
11
,计算其欧式距离d(seqm
01
,seqm
11
);
[0029]
s3:设定阈值distance大小,若d(seqm01,seqm11)》distance,则判定该主机生成的序列与检测序列相似,重复s2-s3,检测出与该检测序列存在相似序列的所有主机数量hostnumber,若hostnumber》=threshold,则该检测序列类型为攻击序列,若hostnumber《threshold,则该检测序列类型为正常序列,其中,threshold表示设定的存在相似序列的主机数量阈值。
[0030]
进一步的,欧式距离d(seqm
01
,seqm
11
)计算,示为:
[0031]
[0032]
其中,seqm
01
表示词向量形式的检测序列,seqm
11
表示在内网连接主机中主机h1与检测序列同时段生成的词向量形式的序列,m
mi
表示序列seqm
01
中第i个系统调用,n
ni
表示序列seqm
11
中第i个系统调用。
[0033]
一种基于linux系统调用的攻击检测系统,包括:收集模块、训练模块、检测模块;
[0034]
所述收集模块包括:系统调用获取单元、处理单元以及数据发送单元;
[0035]
系统调用获取单元用于收集指定进程执行过程所调用的相关信息,以及在现有数据库中获取攻击序列和正常序列,构建数据集;
[0036]
所述相关信息包括:调用时间、系统调用名、进程名以及线程名;
[0037]
处理单元将系统调用获取单元收集的系统调用信息按照长度或调用时间处理,生成指定时间段内的系统调用序列,将该系统调用序列截取成等长的子序列,同时将数据集中的序列也截取成等长的子序列;
[0038]
数据发送模块将系统调用信息处理生成的子序列发送给检测模块作为检测序列,将数据集中的子序列发送给训练模块;
[0039]
所述训练模块包括:数据单元、转换单元、训练单元;
[0040]
数据单元将数据集中的等长子序列根据数据类型分为攻击序列和正常序列,并分别存储到攻击库和正常库两类序列库中,得到检测序列匹配库;
[0041]
转换单元将储存到序列库中的序列转换成词向量矩阵;
[0042]
训练单元根据词向量矩阵采用深度学习技术训练检测系统;
[0043]
所述检测模块包括:转换单元、检测单元、匹配单元、计算单元、标识单元;
[0044]
转换单元依据训练模块转换单元生成词向量的形式将待检测的序列转换成词向量形式的序列;
[0045]
检测单元将待检测的序列转换成的词向量形式的序列通过深度学习模型进行初步分类判定,若判定为异常序列,则将该序列发送到训练模块进行匹配库更新,若判定为正常序列,则发送给匹配单元进行进一步判定;
[0046]
匹配单元对检测单元初步判定为正常的序列进行复检,将初步判定为正常的序列与匹配库中的序列进行匹配度的对比,判断出该序列的类型;
[0047]
计算单元当检测单元不能认定检测序列的类别时,则计算该序列与内网连接主机中其余主机在同时段生成的序列的相似度,根据设定的相似度阈值,判定是否相似,若该序列在内网连接主机中与多个主机存在相似序列,则判定该序列为攻击序列,得到检测结果。
[0048]
本发明的有益效果:通过本发明,能够在系统调用序列层面,检测到已知类型和未知类型攻击,从而降低检测的漏报率,并且更贴合实际应用场景。
附图说明
[0049]
图1为本发明的具体方案流程图;
[0050]
图2为本发明的序列处理流程图;
[0051]
图3为发明的检测流程图;
[0052]
图4为本发明系统的结构示意图;
[0053]
图5为发明中系统的系统调用样例。
具体实施方式
[0054]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0055]
一种基于linux系统调用的攻击检测方法,如图1所示,其特征在于,包括:
[0056]
s1:获取系统运行过程中生成的系统调用,以及在现有数据库中获取攻击序列和正常序列构建数据集;
[0057]
s2:去除系统运行过程中生成的调用中的冗余系统调用,生成指定时间段内的系统调用序列,并将该系统调用序列截取成等长的子序列,同时将数据集中的序列也截取成等长的子序列;
[0058]
s3:将数据集中的等长子序列根据数据类型分为攻击序列和正常序列,并分别存储到攻击库和正常库两类序列库中,得到检测序列匹配库;
[0059]
s4:将系统调用序列截取成等长的子序列作为待检测的序列,并转换词向量形式的序列;
[0060]
s5:通过深度学习模型初步判定词向量形式的序列的类别,若判定为异常序列,则将该序列放入攻击库,更新检测匹配库,若判定为正常序列,则进行进下一步判定;
[0061]
s6:将初步判定为正常的序列通过与检测匹配库进行匹配度对比,判定其类别;
[0062]
s7:采用集计算判断匹配库不能判定类别的序列,得到检测结果。
[0063]
将该系统调用序列截取成等长的子序列,具体包括:
[0064]
将系统调用获取单元拦截到的信息处理成系统调用序列,可按照长度或调用时间处理,即将信息中的系统调用名和生成时间筛选出来,生成指定时间段内的定长系统调用序列,如图2所示,处理过程将冗余系统调用去除掉,生成长度为500的等长调用序列,对序列长度超出500的序列,采用滑动窗口技术,设定步长为250进行截取。序列长度未达到500,且收集过程中的等待时间超过20秒,则在序列后填充0进行补齐。
[0065]
在本实施例中,析方法去除冗余系统调用,具体包括:
[0066]
根据数据集中的一致类型的序列,分别计算两类序列中的每条序列的系统调用的tf-idf值,并分别对两类序列中的每条序列的tf-idf值降序排序,根据系统调用的tf-idf值越小则该系统调用对所组成的序列的类别影响越小,分别将两类序列中后40个系调用筛选出来,从每类中的序列后40个系统调用中筛选出重复出现的系统调用,对比分析两类筛选出的系统调用,将两类序列中相同的系统调用作为的冗余系统调用,将选出的冗余系统调用与系统运行过程中生成的所有系统调用进行统计分析,出与选出的冗余系统调用一样的系统调用,并去除。
[0067]
所述计算每条系统调用序列中的系统调用的tf-idf值,表示为:
[0068][0069]
其中,tf-idf
a1
表示系统调用a1的tf-idf值,表示系统调用a1在序列a中出现的频次,σa
1,k
表示在生成的序列k中出现系统调用a1的序列总数,|n|表示在生成的序列中
正常类型或攻击类型序列数总和,|{n
a1
}|表示在当前类别中出现系统调用a1的序列数。
[0070]
将待检测的序列转换词向量形式的序列,具体包括:
[0071]
将序列中单个系统调用看作一个词,将整个系统调用序列看作一个句子,设定词向量维度为250维,系统调用总数依据词向量语料库中的不同系统调用数而定,使用gensim工具训练词向量,将系统调用序列集输入至词向量模型中,生成词向量矩阵,得到词向量形式的序列。
[0072]
通过深度学习模型初步判定词向量形式的序列的类别,具体包括:
[0073]
将生成的500x250的词向量矩阵作为输入序列,设定训练批次20、学习率0.01、输入向量维度250维、嵌入层维度125维、隐藏层125维以及输出维度125维、激活函数relu、网络层数2层,取最后一个隐藏层输出作为分类结果;所述深度学习检测模型包括但不限于cnn、rnn、lstm、gru深度学习模型。
[0074]
将初步判定为正常的序列与匹配库中的序列进行匹配度的对比,判断出该序列的类型,如图3所示,具体包括:
[0075]
设置匹配度大小为0.8,比对待检测序列与两类匹配库中序列的相似度,若检测序列与正常序列匹配库中的序列相似度大于0.8,则该序列为正常序列,若检测序列与攻击序列匹配库中的序列相似度大于0.8,则该序列为攻击序列,检测序列与正常序列匹配库中的序列或攻击序列匹配库中的序列相似度小于0.8,则不能认定该序列的类别。
[0076]
所述进行集计算,具体包括:
[0077]
s1:将检测单元不能认定类别的检测序列记为seq01,将seq01转化为词向量形式的序列seqm01;
[0078]
s2:选择在内网连接主机中主机h1与seq01同时段生成的序列seq
11
,并转换为词向量形式的序列seqm
11
,计算其欧式距离d(seqm
01
,seqm
11
);
[0079]
s3:设定阈值distance大小,若d(seqm01,seqm11)》distance,则判定该主机生成的序列与检测序列相似,重复s2-s3,检测出于与该检测序列存在相似序列的所有主机数量hostnumber,若hostnumber》=threshold,则该检测序列类型为攻击序列,若hostnumber《threshold,则该检测序列类型为正常序列,其中,threshold表示设定的存在相似序列的主机数量阈值。
[0080]
所述欧式距离d(seqm
01
,seqm
11
)计算,表示为:
[0081][0082]
其中,seqm
01
表示词向量形式的检测序列,seqm
11
表示在内网连接主机中主机h1与检测序列同时段生成的词向量形式的序列,m
mi
表示序列seqm
01
中第i个系统调用,n
ni
表示序列seqm
11
中第i个系统调用。
[0083]
一种基于linux系统调用的攻击检测系统,如图4所示,包括:收集模块、训练模块、检测模块;
[0084]
所述收集模块包括:系统调用获取单元、处理单元以及数据发送单元;
[0085]
系统调用获取单元用于收集指定进程执行过程所调用的相关信息,以及在现有数据库中获取攻击序列和正常序列,构建数据集;
[0086]
所述相关信息包括:调用时间、系统调用名、进程名以及线程名;
[0087]
处理单元将系统调用获取单元收集的系统调用信息按照长度或调用时间处理,生
成指定时间段内的系统调用序列,将该系统调用序列截取成等长的子序列,同时将数据集中的序列也截取成等长的子序列;
[0088]
数据发送模块将系统调用信息处理生成的子序列发送给检测模块作为检测序列,将数据集中的子序列发送给训练模块;
[0089]
所述训练模块包括:数据单元、转换单元、训练单元;
[0090]
数据单元将数据集中的等长子序列根据数据类型分为攻击序列和正常序列,并分别存储到攻击库和正常库两类序列库中,得到检测序列匹配库;
[0091]
转换单元将储存到序列库中的序列转换成词向量矩阵;
[0092]
训练单元根据词向量矩阵采用深度学习技术训练检测系统;
[0093]
所述检测模块包括:转换单元、检测单元、匹配单元、计算单元、标识单元;
[0094]
转换单元依据训练模块转换单元生成词向量的形式将待检测的序列转换成词向量形式的序列;
[0095]
检测单元将待检测的序列转换成的词向量形式的序列通过深度学习进行初步分类判定,若判定为异常序列,则将该序列发送到训练模块进行匹配库更新,若判定为正常序列,则发送给匹配单元进行进一步判定;
[0096]
匹配单元对检测单元初步判定为正常的序列进行复检,将初步判定为正常的序列与匹配库中的序列进行匹配度的对比,判断出该序列的类型;
[0097]
计算单元当检测单元不能认定检测序列的类别时,则计算该序列与内网连接主机中其余主机在同时段生成的序列的相似度,根据设定的相似度阈值,判定是否相似,若该序列在内网连接主机中与多个主机存在相似序列,则判定该序列为攻击序列,得到检测结果。
[0098]
所述收集模块,用于收集指定进程执行过程所调用的系统调用名及系统调用号,按照拦截顺序生成系统调用序列,并将调用序列截取成等长的子序列用于训练和检测模块的输入,所获得的序列存储在本地,模块包括系统调用获取单元、处理单元、收发单元。
[0099]
所述系统调用获取单元,能够收集指定进程执行过程中产生的系统调用相关的信息,如图5所示,该信息内容包括调用时间、系统调用名、进程名、线程号等。
[0100]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

技术特征:


1.一种基于linux系统调用的攻击检测方法,其特征在于,包括:s1:获取系统运行过程中生成的系统调用,以及在现有数据库中获取攻击序列和正常序列构建数据集;s2:去除系统运行过程中生成的调用中的冗余系统调用,生成指定时间段内的系统调用序列,并将该系统调用序列截取成等长的子序列,同时将数据集中的序列也截取成等长的子序列;s3:将数据集中的等长子序列根据数据类型分为攻击序列和正常序列,并分别存储到攻击库和正常库两类序列库中,得到检测序列匹配库;s4:将系统调用序列截取成等长的子序列作为待检测的序列,并转换为词向量形式的检测序列;s5:通过深度学习检测模型初步判定词向量形式的检测序列的类别,若判定为异常序列,则将该序列放入攻击库,更新检测匹配库,若判定为正常序列,则进行进下一步判定;s6:将初步判定为正常的序列通过与检测匹配库进行匹配度对比,判定其类别;s7:采用集计算判断匹配库不能判定类别的序列,得到检测结果。2.根据权利要求1所述的一种基于linux系统调用的攻击检测方法,其特征在于,将该系统调用序列截取成等长的子序列,具体包括:采用统计分析方法去除冗余的系统调用,生成系统调用序列,将生成的系统调用序列截取为固定长度的调用序列:采用滑动窗口技术对长度超过固定长度的调用序列进行截取,若生成序列长度未达到固定长度,在序列尾部填充0进行补齐。3.根据权利要求2所述的一种基于linux系统调用的攻击检测方法,其特征在于,所述采用统计分析方法去除冗余系统调用,具体包括:根据数据集中的已知类型的序列,分别计算两类序列中的每条序列的系统调用的tf-idf值,并分别对两类序列中的每条序列的tf-idf值降序排序,分别将两类序列中后40个系调用筛选出来,从每类中的序列后40个系统调用中筛选出重复出现的系统调用,对比分析两类筛选出的系统调用,将两类序列中相同的系统调用作为的冗余系统调用,将选出的冗余系统调用与系统运行过程中生成的所有系统调用进行统计分析,出与选出的冗余系统调用一样的系统调用,并去除。4.根据根据权利要求3所述的一种基于linux系统调用的攻击检测方法,其特征在于,计算系统调用的tf-idf值,表示为:其中,tf-idf
a1
表示系统调用a1的tf-idf值,表示系统调用a1在序列a中出现的频次,σa
1,k
表示在生成的序列k中出现系统调用a1的序列总数,|n|表示在生成的序列中正常类型或攻击类型序列数总和,|{n
a1
}|表示在当前类别中出现系统调用a1的序列数。5.根据权利要求1所述的一种基于linux系统调用的攻击检测方法,其特征在于,将初步判定为正常的序列与匹配库中的序列进行匹配度的对比,判断出该序列的类型,具体包括:设置匹配度大小为0.8,比对待检测序列与两类匹配库中序列的相似度,若检测序列与
正常序列匹配库中的序列相似度大于0.8,则该序列为正常序列,若检测序列与攻击序列匹配库中的序列相似度大于0.8,则该序列为攻击序列,检测序列与正常序列匹配库中的序列或攻击序列匹配库中的序列相似度小于0.8,则不能认定该序列的类别。6.根据权利要求1所述的一种基于linux系统调用的攻击检测方法,其特征在于,所述进行集计算,具体包括:s1:将检测单元不能认定类别的检测序列记为seq01,将seq01转化为词向量形式的序列seqm01;s2:选择在内网连接主机中主机h1与seq01同时段生成的序列seq
11
,并转换为词向量形式的序列seqm
11
,计算其欧式距离d(seqm
01
,seqm
11
);s3:设定阈值distance大小,若d(seqm01,seqm11)>distance,则判定该主机生成的序列与检测序列相似,重复s2-s3,检测出与该检测序列存在相似序列的所有主机数量hostnumber,若hostnumber>=threshold,则该检测序列类型为攻击序列,若hostnumber<threshold,则该检测序列类型为正常序列,其中,threshold表示设定的存在相似序列的主机数量阈值。7.根据权利要求6所述的一种基于linux系统调用的攻击检测方法,其特征在于,所述欧式距离d(seqm
01
,seqm
11
)计算,表示为:其中,seqm
01
表示词向量形式的检测序列,seqm
11
表示在内网连接主机中主机h1与检测序列同时段生成的词向量形式的序列,m
mi
表示序列seqm
01
中第i个系统调用,n
ni
表示序列seqm
11
中第i个系统调用。8.一种基于linux系统调用的攻击检测系统,其特征在于,包括:收集模块、训练模块、检测模块;所述收集模块包括:系统调用获取单元、处理单元以及数据发送单元;系统调用获取单元用于收集指定进程执行过程所调用的相关信息,以及在现有数据库中获取攻击序列和正常序列,构建数据集;所述相关信息包括:调用时间、系统调用名、进程名以及线程名;处理单元将系统调用获取单元收集的系统调用信息按照长度或调用时间处理,生成指定时间段内的系统调用序列,将该系统调用序列截取成等长的子序列,同时将数据集中的序列也截取成等长的子序列;数据发送模块将系统调用信息处理生成的子序列发送给检测模块作为检测序列,将数据集中的子序列发送给训练模块;所述训练模块包括:数据单元、转换单元、训练单元;数据单元将数据集中的等长子序列根据数据类型分为攻击序列和正常序列,并分别存储到攻击库和正常库两类序列库中,得到检测序列匹配库;转换单元将储存到序列库中的序列转换成词向量矩阵;训练单元根据词向量矩阵采用深度学习技术训练检测系统;所述检测模块包括:转换单元、检测单元、匹配单元、计算单元、标识单元;转换单元依据训练模块转换单元生成词向量的形式将待检测的序列转换成词向量形式的序列;
检测单元将待检测的序列转换成的词向量形式的序列通过深度学习模型进行初步分类判定,若判定为异常序列,则将该序列发送到训练模块进行匹配库更新,若判定为正常序列,则发送给匹配单元进行进一步判定;匹配单元对检测单元初步判定为正常的序列进行复检,将初步判定为正常的序列与匹配库中的序列进行匹配度的对比,判断出该序列的类型;计算单元当检测单元不能认定检测序列的类别时,则计算该序列与内网连接主机中其余主机在同时段生成的序列的相似度,根据设定的相似度阈值,判定是否相似,若该序列在内网连接主机中与多个主机存在相似序列,则判定该序列为攻击序列,得到检测结果。

技术总结


本发明属于计算机安全技术领域,具体涉及一种基于Linux系统调用的攻击检测方法与系统,包括:获取系统生成的系统调用,将系统调用序列截取成等长的子序列作为待检测的序列,并转换为词向量形式的检测序列;通过深度学习检测模型初步判定词向量形式的检测序列的类别,若判定为异常序列,则将该序列放入攻击库,更新检测匹配库,若判定为正常序列;将初步判定为正常的序列通过与检测匹配库进行匹配度对比;采用集计算判断匹配库不能判定类别的序列,得到检测结果。本发明对于派生攻击检测采用深度学习模型和匹配库的方式,对于未知攻击,采用集检测的方式,解决了系统调用序列存在冗余调用以及序列过长和入侵检测的漏报率。率。率。


技术研发人员:

万邦睿 何雨多 钱鹰 黄江平 金霜

受保护的技术使用者:

重庆邮电大学

技术研发日:

2022.08.22

技术公布日:

2022/11/22

本文发布于:2022-11-25 08:40:09,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/2010.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:序列   系统   单元   向量
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图