一种异常操作行为检测方法、装置、设备及介质与流程

文档序号:28381057发布日期:2022-01-07 23:02阅读:70来源:国知局
一种异常操作行为检测方法、装置、设备及介质与流程

1.本公开涉及计算机技术领域,尤其涉及一种异常操作行为检测方法、装置、设备及介质。


背景技术:

2.恶意攻击使得未经授权的攻击者对目标计算机进行访问,从而造成进一步的破坏。入侵检测技术是一项重要的网络安全检测技术,可以发现计算机系统中的攻击入侵行为。
3.目前,入侵检测方法主要为:通过获取用户的行为信息,将该信息与历史异常行为信息进行多次匹配,以判定出异常行为信息。然而,该方法的多次匹配过程是串行关系,导致判定结果过于绝对,行为异常的判断结果不准确;同时,上述历史异常行为信息依赖人工标注,不但消耗大量的人力,而且由于人员评定标准的差异,会导致异常行为的判定误差。因此,上述入侵检测方法判定的异常行为存在准确性较低的问题。


技术实现要素:

4.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种异常操作行为检测方法、装置、设备及介质。
5.本公开提供了一种异常操作行为检测方法,包括:
6.获取同一用户群组内的多个命令序列流;其中,所述命令序列流包括多个shell命令;
7.对所述命令序列流进行文本特征的提取,得到多个字节片段序列;其中,所述字节片段序列用于表征用户操作所述shell命令的行为习惯;
8.通过隐马尔可夫模型计算所述字节片段序列的操作发生概率;
9.利用孤立森林模型从所述操作发生概率中孤立出异常的目标操作发生概率;
10.将所述目标操作发生概率对应的shell命令的操作行为确定为异常操作行为。
11.可选的,所述获取同一用户群组内的多个命令序列流,包括:
12.通过linux系统中的bash程序记录用户执行的多条shell命令;
13.根据执行时间的顺序对多条所述shell命令进行排序,得到初始序列流;
14.根据操作人员类别和预设的时间窗口大小,对所述初始序列流进行群组划分,得到多个用户群组,每个所述用户群组内包括多条命令序列流。
15.可选的,在所述通过隐马尔可夫模型计算所述字节片段序列的操作发生概率之前,所述方法还包括:通过构建字典对所述字节片段序列进行编码。
16.可选的,所述方法还包括:
17.从所述字节片段序列选取样本作为隐马尔可夫模型的观测序列;
18.通过所述隐马尔可夫模型根据当前的模型参数对所述观测序列进行识别以输出状态序列;其中,所述模型参数包括:初始状态概率向量、状态转移概率矩阵、观测概率矩
阵;
19.采用baum-welch算法并根据所述状态序列对所述隐马尔可夫模型的模型参数进行更新。
20.可选的,所述利用孤立森林模型从所述操作发生概率中孤立出异常的目标操作发生概率,包括:
21.计算每个所述操作发生概率在所述孤立森林模型中的平均路径长度;
22.根据每个所述操作发生概率在所述孤立森林模型中的平均路径长度,计算每个所述操作发生概率的异常分数;
23.判断所述异常分数是否超过预设的分数阈值;
24.如果超过,则将该操作发生概率确定为异常的目标操作发生概率。
25.可选的,所述还包括:
26.重复如下分离树的建立操作:从所述操作发生概率中随机选取部分样本,将选取的样本作为树的根节点;将所述操作发生概率对应的多个维度的作为一个特征点的多个属性,从多个所述属性中随机选取一个划分属性,并在该划分属性的最值范围内选取一个值作为左右子树的标准值,建立分离树;其中,所述维度与所述n-gram的滑动窗口的大小有关;
27.根据所述分离树的建立操作得到多颗分离树,多颗所述分离树形成所述孤立森林模型。
28.可选的,所述对所述命令序列流进行文本特征的提取,包括:通过汉语语言模型n-gram对所述命令序列流进行文本特征的提取。
29.本公开提供了一种异常操作行为检测装置,包括:
30.获取模块,用于获取同一用户群组内的多个命令序列流;其中,所述命令序列流包括多个shell命令;
31.提取模块,用于对所述命令序列流进行文本特征的提取,得到多个字节片段序列;其中,所述字节片段序列用于表征用户操作所述shell命令的行为习惯;
32.计算模块,用于通过隐马尔可夫模型计算所述字节片段序列的操作发生概率;
33.孤立模块,用于利用孤立森林模型从所述操作发生概率中孤立出异常的目标操作发生概率;
34.确定模块,用于将所述目标操作发生概率对应的shell命令的操作行为确定为异常操作行为。
35.本公开提供了一种电子设备,所述电子设备包括:
36.处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述方法。
37.本公开提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述方法。
38.本公开实施例提供的技术方案与现有技术相比具有如下优点:
39.本公开实施例提供的异常操作行为检测方法、装置、设备及介质,包括:首先对获取的命令序列流进行文本特征的提取,得到多个字节片段序列;然后通过隐马尔可夫模型计算字节片段序列的操作发生概率;以及利用孤立森林模型从操作发生概率中孤立出异常
的目标操作发生概率;最后将目标操作发生概率对应的shell命令的操作行为确定为异常操作行为。
40.相比于现有技术,上述技术方案无需标注数据,在标注数据匮乏的应用环境中,可直接使用隐马尔可夫模型和孤立森林模型进行异常操作行为检测,提升了入侵检测的应用范围的广泛性。通过隐马尔可夫模型对行为习惯的特征组合,考虑各操作行为之间的概率关系,使得异常操作行为的判断更为准确;通过孤立森林模型的并行计算,提高了处理效率与检测性能。因此,本技术方案能够有效提升异常操作行为检测的效率和准确性。
附图说明
41.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
42.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
43.图1为本公开实施例所述异常操作行为检测方法流程图;
44.图2为本公开实施例所述模型训练方法流程图;
45.图3为本公开实施例所述异常操作行为检测装置结构框图;
46.图4为本公开实施例所述电子设备的结构示意图。
具体实施方式
47.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
48.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
49.目前主要的入侵检测方法,是将用户的行为信息与历史异常行为信息进行多次匹配,具体是通过首次匹配筛选出候选异常行为,然后对候选异常行为对应的序列进行二次匹配,以最终判定出异常行为信息。然而,该方案存在如下问题:
50.第一,需要获取历史异常行为信息,该信息的判定需要依靠人工的标注,会消耗大量的人力,而且由于人员评定标准的差异,可能会导致异常行为的判定误差。第二,此方法在判定流程上使用的是串行关系,在判断上过于绝对,仅将两次都满足的判定为异常,没有考虑两次匹配信息的融合。第三,该方法计算行为信息和行为序列是通过字符串匹配计算的,仅考虑了行为信息及行为序列的出现与否,并没有考虑异常信息出现的概率,如果某个异常信息在历史异常库中出现的频率越高,则匹配到该异常的行为信息异常的概率也应该更高,但是该方法并没有对此做考虑。
51.近年来,以shell命令为审计数据的入侵检测得到了较多的应用与研究。在linux系统中,每个合法用户都有自己特定的使用命令的风格和习惯。由于shell命令的执行内容和执行顺序受到执行者的工作内容以及习惯的影响,入侵者作为外来者,在命令的执行内
容及执行顺序必定与原主机的用户组具有区分性,因此可以通过个群分析技术对入侵者个体与原主机群组进行区分,对入侵者的异常操作行为进行检测,进而确定入侵者。
52.基于此,针对现有入侵检测技术存在的诸多问题,本公开考虑基于用户行为审计的shell命令数据,以个群分析技术为基础,提供一种异常操作行为检测方法、装置、设备及介质。
53.参照图1所示的异常操作行为检测方法流程图,本实施例提供的异常操作行为检测方法包括如下步骤:
54.步骤s102,获取同一用户群组内的多个命令序列流;其中,命令序列流包括多个shell命令。
55.本实施例以用户历史执行的linux shell命令作为审计数据,通过linux系统中的bash程序记录用户执行的多条shell命令;其中,linux系统中的bash程序能够自动记录系统上每个用户在shell终端上执行的所有命令,shell命令被记录在用户的指定文件中,从该指定文件中收集shell命令。
56.得到不同用户历史执行的多条shell命令后,对shell命令进行离散化,包括:根据执行时间的顺序对多条shell命令进行排序,得到初始序列流;根据操作人员类别和预设的时间窗口大小,对初始序列流进行群组划分,得到多个用户群组,每个用户群组内包括多条命令序列流。
57.在本实施例中,为了分析用户历史执行shell命令的行为习惯,需要将shell命令预处理为命令序列流的形式。原始的shell命令包含命令名称、命令可选参数、命令执行对象等,由于命令名称具有代表性,本实施例将保留命令名称,并按时间顺序对多条shell命令进行排序。在实际应用中,用户是区分用户组的,例如前端、后端和运维等群组,基于此,命令序列流也是区分群组的。本实施例可以以100条命令为时间窗口大小对排序后shell命令的初始序列流进行特征提取,得到各shell命令的操作人员类别,而后根据操作人员类别对初始序列流中的shell命令进行分组处理,例如相应的分为运维组、前端组、后端组等群组各自对应的多个命令序列流。
58.对于同一用户群组内的多个命令序列流,通过群组内部个体命令序列流之间的相互比较,如果某个个体的命令序列流比较异常,与群体整体的命令序列流操作均不同,则可以发现某些异常个体,即个群分析异常检测。
59.步骤s104,对命令序列流进行文本特征的提取,得到多个字节片段序列;其中,字节片段序列用于表征用户操作shell命令的行为习惯。
60.在一种实施例中,通过n-gram(汉语语言模型)对命令序列流进行文本特征的提取。本实施例采用n-gram常用的特征提取方法对命令序列流进行文本特征的提取,不但可以提取出用户的操作类型,而且可以对命令序列流的顺序、命令序列流的操作频率等特征进行提取,实现多纬度特征的融合,能够体现用户的行为习惯。
61.步骤s106,通过隐马尔可夫模型计算字节片段序列的操作发生概率。
62.隐马尔可夫模型是一种动态贝叶斯网络,可以对时间跨度上的字节片段序列进行统计建模,计算在已知模型参数条件下字节片段序列对应不同操作的发生的概率。本实施例通过隐马尔可夫模型对字节片段序列进行序列顺序、操作频率等特征的融合,计算字节片段序列的发生概率,由于正常操作行为发生的概率大,异常操作行为发生的概率低,从而
可以根据计算的操作发生概率去进一步综合判断异常操作行为。本实施例通过隐马尔可夫模型对行为习惯的特征进行了组合,考虑了各操作行为之间的概率关系,使得异常操作行为的判断更为准确。
63.步骤s108,利用孤立森林模型从操作发生概率中孤立出异常的目标操作发生概率。
64.在本实施例中,孤立森林模型的输入为隐马尔可夫模型输出的多个字节片段序列的操作发生概率,孤立森林模型的输出为操作发生概率中的异常数据,也即目标操作发生概率。孤立森林模型是无监督学习范畴中检测异常值的一种模型,它利用异常点数量少以及异常数据与正常数据之间的差别大这两个特点,从操作发生概率中孤立出异常的目标操作发生概率。
65.通过孤立森林模型对字节片段序列的操作发生概率进行异常判断,孤立森林模型中各个树的并行关系使得计算效率得到了提高,也就提高了异常操作行为的检测效率。
66.步骤s110,将目标操作发生概率对应的shell命令的操作行为确定为异常操作行为。具体实施时,可以先确定目标操作发生概率对应的字节片段序列,再确定该字节片段序列对应的shell命令,以及再确定该shell命令的操作行为为异常操作行为。
67.本公开实施例提供的异常操作行为检测方法,包括:首先对获取的命令序列流进行文本特征的提取,得到多个字节片段序列;然后通过隐马尔可夫模型计算字节片段序列的操作发生概率;以及利用孤立森林模型从操作发生概率中孤立出异常的目标操作发生概率;最后将目标操作发生概率对应的shell命令的操作行为确定为异常操作行为。
68.相比于现有技术,上述技术方案无需标注数据,在标注数据匮乏的应用环境中,可直接使用隐马尔可夫模型和孤立森林模型进行异常操作行为检测,提升了入侵检测的应用范围的广泛性。通过隐马尔可夫模型对行为习惯的特征组合,考虑各操作行为之间的概率关系,使得异常操作行为的判断更为准确;通过孤立森林模型的并行计算,提高了处理效率与检测性能。因此,本技术方案能够有效提升异常操作行为检测的效率和准确性。
69.为了更好地理解异常操作行为检测方法,以下对本公开实施例展开详细描述。
70.针对上述步骤s104,本实施例采用n-gram对命令序列流进行文本特征的提取。n-gram是一种基于统计语言模型的算法,n-gram将文本类型的命令序列流按照字节进行大小为n的滑动窗口操作,形成了长度是n的字节片段序列。本实施例使用1-gram、2-gram、3-gram进行序列特征提取。假设原始shell序列是ls、cd、mv、cat,那么相应的,1-gram的提取结果为:{ls},{cd},{mv},{cat},2-gram的提取结果为:{ls,cd},{cd,mv},{mv,cat},3-gram的提取结果为{ls,cd,mv},{cd,mv,cat}。
71.为了将n-gram提取的字节片段序列输入到隐马尔可夫模型,需要将字节片段序列编码为数字,本实施例通过构建字典对字节片段序列进行编码,将shell命令映射为数字,例如将ls映射为1、cd映射为2、mv映射为3、cat映射为4,在此情况下,1-gram的提取结果{ls},{cd},{mv},{cat}相应地转化为{1},{2},{3},{4}。
72.为了使隐马尔可夫模型能够直接用于计算字节片段序列的操作发生概率,需要预先训练隐马尔可夫模型。隐马尔可夫模型(hmm)是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成观测序列的过程。本实施例的观测序列为用户输入的shell命令,隐藏状态为shell命令对应的操作行为是否异
常。基于此,如图2所示,本实施例提供一种隐马尔可夫模型的训练方法,参照如下步骤:
73.步骤s202,从字节片段序列选取样本作为隐马尔可夫模型的观测序列。
74.步骤s204,通过隐马尔可夫模型根据当前的模型参数对观测序列进行识别以输出状态序列。其中,模型参数λ包括:初始状态概率向量π、状态转移概率矩阵a、观测概率矩阵b,即模型参数可用如下三元符号表示:λ=(a,b,π)。根据初始状态概率向量π和状态转移概率矩阵a可以确定状态序列,根据观测概率矩阵b可以确定观测序列。
75.步骤s206,采用baum-welch算法并根据状态序列对隐马尔可夫模型的模型参数进行更新。
76.由于本实施例仅含有观测序列的字节片段序列,并不含有隐藏状态信息,因此采用baum-welch算法进行模型训练,学习模型参数λ中的a、b、π三个参数。baum-welch算法(非监督学习算法,也即em算法)是一种常用的估计参数隐变量的方法,它是一种迭代算法。隐马尔可夫模型采用无监督的baum-welch算法进行训练,减少了相关的异常操作行为的标注工作,节省了人力资源。
77.通过baum-welch算法计算出隐马尔可夫模型的模型参数λ=(a,b,π)后,将shell命令对应的字节片段序列作为观测序列输入至隐马尔可夫模型,根据模型参数计算观测序列出现的操作发生概率p(o|λ),操作发生概率p(o|λ)能够表示字节片段序列的异常程度。
78.考虑利用操作发生概率判断异常操作行为较为片面,准确性较低,基于此,本实施例进一步利用孤立森林模型从操作发生概率中孤立出异常的目标操作发生概率,以更为准确的判定出异常操作行为。
79.本实施例提供一种孤立森林模型的建立方法,包括:
80.重复如下分离树的建立操作:从操作发生概率中随机选取部分样本,将选取的样本作为树的根节点;将操作发生概率对应的多个维度的作为一个特征点的多个属性,从多个属性中随机选取一个划分属性,并在该划分属性的最值范围内选取一个值作为左右子树的标准值,建立分离树。上述维度与n-gram的滑动窗口的大小有关,比如前述实施例中的1-gram、2-gram、3-gram,相应的操作概率有n=1、n=2和n=3这三种维度。根据上述分离树的建立操作得到多颗分离树,多颗分离树形成孤立森林模型。
81.具体的,本实施例中孤立森林模型的输入是隐马尔可夫模型输出的操作发生概率,即输入是p(o|λ)。由于对命令序列流进行文本特征的提取时,分别提取了1-gram、2-gram、3-gram特征,因此隐马尔可夫模型的输出是{f1,f2,f3},f1、f2和f3分别表示1-gram、2-gram和3-gram提取的字节片段序列对应的操作发生概率。在此情况下,孤立森林模型的输入是三维的操作发生概率。孤立森林目标通过随机选择划分属性及随机选取属性值来构造二叉树,直至达到预设的树深,例如选择f1为划分属性,0.5为划分属性值,那么f1对应的操作发生概率中小于0.5的将被划分到左子树,大于0.5的将划分到右子树。
82.隐马尔可夫模型输出的{f1,f2,f3}在孤立森林模型中的节点位置称为特征点,由于异常点在特征空间中比较稀疏,而正常点在特征空间中较为密集,因此通过孤立森林模型来划分时,异常点需要较少的划分次数就可以划分出来,所以异常点在孤立森林中的节点位置靠近根节点,距离根节点的距离较短,反之正常点距离根节点的距离则较长。
83.在利用孤立森林模型从操作发生概率中孤立出异常的目标操作发生概率时,具体可通过如下步骤实现:
84.(1)计算每个操作发生概率在孤立森林模型中的平均路径长度.
85.(2)参照如下公式,根据每个操作发生概率在孤立森林模型中的平均路径长度,计算每个操作发生概率的异常分数:
[0086][0087]
其中,e(h(x))表示操作发生概率x在孤立森林模型中的平均路径长度,c表示孤立森林模型中二叉树c的平均路径长度。
[0088]
(3)判断异常分数是否超过预设的分数阈值;
[0089]
(4)如果超过,则将该操作发生概率确定为异常的目标操作发生概率;进而,将目标操作发生概率对应的shell命令的操作行为确定为异常操作行为。如果没有超过,则表示该操作发生概率对应的shell命令的操作行为为正常操作行为。
[0090]
在确定异常操作行为后,本实施例还可以确定该异常操作行为对应的用户。
[0091]
综上,本公开实施例提供的异常操作行为检测方法,通过隐马尔可夫模型对shell命令的命令序列流进行了特征的融合,不但可以提取出序列顺序信息,还可以对序列的操作频率信息进行提取,实现了多纬度特征的融合;以及,最终通过孤立森林模型判定出异常操作行为,孤立森林模型各树的并行关系使得计算效率得到了提高,进而提高了异常操作行为的检测效率。
[0092]
本实施例提供一种异常操作行为检测装置,该装置用于实现上述异常操作行为检测方法,如图3所示,该装置包括:
[0093]
获取模块302,用于获取同一用户群组内的多个命令序列流;其中,命令序列流包括多个shell命令;
[0094]
提取模块304,用于对命令序列流进行文本特征的提取,得到多个字节片段序列;其中,字节片段序列用于表征用户操作shell命令的行为习惯;
[0095]
计算模块306,用于通过隐马尔可夫模型计算字节片段序列的操作发生概率;
[0096]
孤立模块308,用于利用孤立森林模型从操作发生概率中孤立出异常的目标操作发生概率;
[0097]
确定模块310,用于将目标操作发生概率对应的shell命令的操作行为确定为异常操作行为。
[0098]
本实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
[0099]
图4为本公开实施例提供的一种电子设备的结构示意图。如图4所示,电子设备400包括一个或多个处理器401和存储器402。
[0100]
处理器401可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备400中的其他组件以执行期望的功能。
[0101]
存储器402可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器401可以运行所述程序指令,以实现上文所述的本
公开的实施例的异常操作行为检测方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
[0102]
在一个示例中,电子设备400还可以包括:输入装置403和输出装置404,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
[0103]
此外,该输入装置403还可以包括例如键盘、鼠标等等。
[0104]
该输出装置404可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置404可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
[0105]
当然,为了简化,图4中仅示出了该电子设备400中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备400还可以包括任何其他适当的组件。
[0106]
进一步,本实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述异常操作行为检测方法。
[0107]
本公开实施例所提供的一种异常操作行为检测方法、装置、电子设备及介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0108]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0109]
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1