一种基于马尔科夫链的入侵检测方法与流程

文档序号:12624596阅读:280来源:国知局
一种基于马尔科夫链的入侵检测方法与流程

本发明涉及的是一种ICS系统入侵检测方法,具体地说是在ICS系统中建立马尔科夫链模型的入侵检测方法。



背景技术:

当今世界,信息安全领域迎来了一个倍受各个国家、公司和组织关注的新挑战——高级持续性威胁(简称APT)。APT攻击更是以其明确的攻击目标、良好的组织性、非常先进的黑客技术、多样复杂的攻击方法、攻击的持久性和隐蔽性等特点不断受到各个安全公司、组织的关注。APT攻击事件不只存在于传统的信息技术(简称IT)系统,也发生在工业控制领域中。工业控制系统(简称ICS)广泛应用于自动化工业过程,覆盖国家的关键基础设施,例如电力、水和废水处理、石油和天然气、运输、化工、制药、纸浆和造纸、食品饮料和关键制造业(例如汽车、航空航天和耐用品)等。ICS系统的脆弱性和安全事故不断增加。

入侵检测通过判断数据实例的标签来确定它是否为异常。根据数据标签的可用程度,异常检测可以分为三种模型。1、全监督模式训练技术假设训练用的数据集不仅包含正常类的也包含异常类的标签实例,但该技术的缺点在于:训练数据中异常数据实例的数量要远小于正常数据实例的数量,且通过对异常类分析得到准确且具有代表性的标签通常很困难;2、无监督模式训练技术不需要训练数据,但要保证正常数据实例的数量远远大于异常数据实例的数量;3、半监督模式训练技术假设训练用的数据集中只有属于正常类的数据实例有标签。



技术实现要素:

本发明的目的在于提供一种能够有效降低误报率,且有更高的检测效率和精确度的基于马尔科夫链的入侵检测方法。

本发明的目的是这样实现的:

步骤一:提取网络数据包特征,构造基于马尔科夫链的数据模型;

步骤二:在训练阶段和检测阶段分别构造马尔科夫链模型;

步骤三:根据事件重要性对入侵检测算法改进;

步骤四:利用改进后的入侵检测算法,对训练阶段和检测阶段的马尔科夫链进行异常检测,并得到异常结果。

本发明还可以包括:

1、所述提取网络数据包特征是将网络数据定义为基于时间的事件序列;针对Modbus协议,所述基于时间的事件序列的具体形式化描述为:{EventTime};

EventTime代表一个四元组<ID,UID,Func,Time>:

ID唯一标识一个请求/应答消息对;

UID代表Modbus TCP协议中的单元ID,唯一标识从属设备地址;

Func代表该Modbus事件的功能码;

Time代表时间。

2、所述构造基于马尔科夫链的数据模型针对于状态和跳转关系进行建模,

每个状态State是一个五元组数据单元,形式化表示为<Data,Type,Count,FT,LT>;

每个由源状态StateSource到目的状态StateDestination的状态跳转关系Transition是一个六元组数据单元,形式化描述为:<Pr,Count,FJ,LJ,ATI,SDTI>。

3、所述根据事件重要性对入侵检测算法改进,对DTMC模型中对应的重要状态设置权值weight来标识不同重要性状态的程度;且与被标识重要的事件相邻的事件也是有重要性的事件。

4、所述异常检测,通过下述两个公式计算得到差异值,针对DTMC状态差异值的检测过程设有阈值θ,之后通过差异值与阈值θ值对比,检测是否异常,

diffTransition=weightSourceState·|deprTransition-trprTransition|

<mrow> <msub> <mi>diff</mi> <mrow> <mi>S</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>e</mi> </mrow> </msub> <mo>=</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <munder> <mo>&Sigma;</mo> <mrow> <mi>T</mi> <mi>r</mi> <mi>a</mi> <mi>n</mi> <mi>s</mi> <mi>i</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mo>&Element;</mo> <mi>T</mi> </mrow> </munder> <msub> <mi>weight</mi> <mrow> <mi>D</mi> <mi>e</mi> <mi>s</mi> <mi>t</mi> <mi>i</mi> <mi>n</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> <mi>S</mi> <mi>t</mi> <mi>a</mi> <mi>t</mi> <mi>e</mi> </mrow> </msub> <mo>&CenterDot;</mo> <msub> <mi>diff</mi> <mrow> <mi>T</mi> <mi>r</mi> <mi>a</mi> <mi>n</mi> <mi>s</mi> <mi>i</mi> <mi>t</mi> <mi>i</mi> <mi>o</mi> <mi>n</mi> </mrow> </msub> <mo>.</mo> </mrow>

本发明结合目前入侵检测技术中检测较为灵活的异常检测技术,针对序列异常进行分析,本发明基于半监督模式的训练技术,提出基于马尔科夫链的入侵检测算法,并结合事件重要性对算法改进,改进后的算法相比于改进前的算法能够有效降低误报率,且有更高的检测效率和精确度。本发明的主要效果归纳为:

本发明结合离散型马尔科夫链对数据进行建模。在构建序列的过程中需要将属性复杂的事件抽象成一个更统一的概念,如DTMC中的状态。本发明可以对这两个事件的相同属性进行提取,并将两个事件都归属到由相同属性标识的状态中。DTMC中的状态可以用来表示具有相同语义属性的序列集。同样确定事件基于时间的排序也很重要,如DTMC的跳转关系。DTMC的跳转关系有多种作用:标识当前事件和后继事件之间的关系强度,如某事件出现在另一事件后面的次数;了解这种关系随时间的变化情况,如两个状态间的时间间隔可能保持不变。从状态State1到状态State2的跳转关系表示了属于状态State1的事件和属于状态State2的事件之间通常的跳转情况。

针对未知概率的异常情况,本发明提出的基于序列的智能感知入侵检测系统不可能存在大量误报情况。因为DTMC模型中跳转关系的Pr参数具有稳定性。在一个DTMC中,一般不会存在某状态的Pr参数值变化起伏较大的情况。如果这种情况出现,意味着有管理人员对ICS系统做了很大调整,使得系统中各状态之间的关联关系出现很大的变化。但很明显,这种情况并不常见。因此,入侵检测需要时刻注意检测到的未知概率异常情况。误报情况和训练时间有着密切的关系。入侵检测系统训练时间越长,收集到的正确事件和建立的正确模式越多,越能够正确检测出异常情况,有效降低误报率。

在入侵检测方面,本发明针对DTMC状态差异值的检测过程设有阈值θ。如果公式1和公式2的结果超过了阈值θ,入侵检测系统将向用户发送警报信息。该信息包含当前DTMC状态以及它的在环境中的语义。阈值θ设定的大小是否合理很重要,因为入侵检测系统的表现对阈值θ有严重的依赖性。一方面,如果阈值θ设定过高,检测系统的准确度会增加,误报很少,但其检测的全面性会降低,漏报增多。另一方面,如果阈值θ设定过低,检测过程将会出现大量的误报情况,整个入侵检测系统处在持续误报的状态中,入侵检测将不起作用。阈值的设定也同样依赖于入侵检测系统工作的环境特性。如果控制系统的通信模式具有很大的变化性,入侵检测系统则需要较高的阈值。

在事件重要性方面,不是所有的事件都有同样的重要性。不同的消息、指令和参数值都对控制系统产生不同程度的影响。通过对于检测算法的改进,本发明提出采用为DTMC模型中对应的重要状态设置较高权值和找出那些已被标识为重要的事件,并假设其他与被标识重要的事件相邻的事件也是有重要性的事件两种方式改进入侵检测算法。能够将更可能被用到的数据从众多数据中提取出来,入侵检测工作更关注于分析这些重要的相关事件。检测的性能会提升,结果的准确性也会提高。基于时间序列感知的入侵检测系统可以根据异常事件的重要和不重要程度做出不同程度的异常警报反应。例如,只在不重要的异常事件使得状态或跳转关系属性值产生较大变化时,入侵检测系统才会触发警报。误报的数量会明显下降。

经实验验证,经过加入标识状态重要性的权值后,改进后的算法能够将读状态异常值大幅降低,将读跳转关系异常值降至小于阈值的范围,从而减少甚至避免对无害异常的误报情况。根据程序运行时间统计,建立DTMC模型时平均每个事件需要花费0.0003秒,计算所有状态权值的时间为0.0001秒,计算检测结果的的时间为0.00007秒。另外,加上数据捕获所需的时间,本发明设计的入侵检测系统,处理每条Modbus数据的平均时间小于0.01秒。符合ICS系统的实时性需求。

附图说明

附图1本发明的系统流程图;

附图2 DTMC建模算法;

附图3 Modbus数据实例;

附图4模拟建模阶段1;

附图5模拟建模阶段2;

附图6改进算法中的权值计算;

附图7权值计算的实现。

具体实施方式

下面举例对本发明作更详细的描述。

结合图1,本发明的基于马尔科夫链的入侵检测方法主要包括:,首先,对网络数据定义基于时间的事件序列;然后提出结合马尔科夫链将网络数据抽象为状态和跳转关系,建立马尔科夫模型;之后,对学习阶段和检测阶段分别建立马尔科夫链模型;最后,对两个模型应用入侵检测算法,应用两种方式筛选异常,分别是两模型数据对比和差异值是否在阈值范围内。具体包括如下技术手段:

1、对网络数据定义基于时间的事件序列。

本发明以Modbus协议进行阐述。对基于时间的事件序列的定义主要依赖两个属性:功能码和时间。针对Modbus协议,基于时间的事件序列的具体形式化描述为:{EventTime}。其中,EventTime代表一个四元组<ID,UID,Func,Time>,由一个请求/应答消息对(ReqMessageTime,ResMessageT>Time)派生而来;ID唯一标识一个请求/应答消息对,UID代表Modbus TCP协议中的单元ID,唯一标识从属设备地址;Func代表该Modbus事件的功能码;Time代表时间;ReqMessageTime代表Time时刻的请求消息,ResMessageT>Time代表Time时刻之后与Time时刻请求消息对应的应答消息。如果请求消息和应答消息没有匹配成对(例如Modbus网络中的广播请求),数据将以单条Modbus数据作为事件处理。

2、结合马尔科夫链将网络数据抽象为状态和跳转关系,建立马尔科夫模型。DTMC建模针对于两部分,一是状态,二是跳转关系。

每个状态State都是一个五元组数据单元,形式化表示为<Data,Type,Count,FT,LT>。其中,Data指的是能够明确标识状态State的信息,并且该信息为该状态中所有事件共同享有;Type指的是某个状态State代表元素的类型属性,包括请求/应答对、单请求和单应答;Count指的是在一个事件时序列中属于状态State的事件数量;FT,即First Time,指第一个出现的属于状态State的事件的时间戳;LT,即Last Time,指最后一个出现的属于状态State的事件的时间戳。

每个由源状态StateSource到目的状态StateDestination的状态跳转关系Transition是一个六元组数据单元,形式化描述为:<Pr,Count,FJ,LJ,ATI,SDTI>。其中,Pr指的是从状态StateSource到状态StateDestination的跳转次数与DTMC中所有状态间的跳转次数之间的比值,即由状态StateSource到状态StateDestination的概率值;Count指的是在一个事件时序列中从状态StateSource到状态StateDestination的跳转次数;FT,即First Time,在一个事件时序列中该跳转第一次出现;LT,即Last Time,在一个事件时序列中该跳转最后一次出现。ATI,即Average Time Interval,由状态StateSource到状态StateDestination的平均时间间隔;SDTI,即Standard Deviation on Time Interval,状态转移时间间隔样本标准差。

3、对学习阶段和检测阶段分别建立马尔科夫链模型。

本发明选用离散型马尔科夫链(DTMC)对数据进行建模。基于DTMC的入侵检测分为两个阶段:训练学习阶段和入侵检测阶段。在训练阶段,根据大量的ICS系统正常数据建立能够描述ICS系统正常运作行为的训练模型。期间,必须保证没有异常数据出现。在训练阶段结束后,入侵检测系统即可执行检测阶段。将需要检测的数据读入系统并建立模型。

4、对训练阶段和检测阶段应用入侵检测算法,应用两种方式筛选异常,分别是两模型数据对比和计算差异值是否在阈值范围内。

在检测阶段,本发明将训练阶段构建好的DTMC模型和检测阶段建立的DTMC模型相比较来进行评估。评估可分为两个部分:针对DTMC状态的评估和针对DTMC跳转关系的评估。将检测阶段创建的每个DTMC状态和训练阶段构建好的DTMC状态进行匹配,如果检测阶段创建的某个状态和训练阶段构建的任何状态都不相匹配,检测机制将认为该检测阶段的DTMC状态为异常,并为其标上异常标签。同样,这种检测方法也使用于针对跳转关系的检测。根据某个训练阶段已知的DTMC状态(未知的都已标注为异常),检测算法查看与该状态相关的跳转关系集,计算关系集中训练阶段和检测阶段都出现的各个跳转关系的Pr值差异。同样,根据训练阶段已知的DTMC跳转关系,检测算法将会通过比较跳转关系的Pr值在训练阶段和检测阶段的差异来判断是否异常。两个差异值得定义如公式1和公式2所示:

diffTransition=|deprTransition-trprTransition| 公式1

其中,T指的是属于状态State的跳转关系的集合;deprTransition指的是检测阶段(Detection)跳转关系Transition的Pr值;trprTransition指的是在训练阶段(Training)跳转关系Transition的Pr值,若Transition不存在,值为0;两个公式的结果为0到1之间的小数。

针对DTMC状态差异值的检测过程设有阈值θ。如果公式1或公式2的结果超过了阈值θ,入侵检测系统将向用户发送警报信息。该信息包含当前DTMC状态以及它的在环境中的语义。

本发明根据事件的重要性来改进检测算法。不同的消息、指令和参数值都对控制系统产生不同程度的影响。基于时间序列感知的入侵检测系统可以根据异常事件的重要和不重要程度做出不同程度的异常警报反应。本发明提出两个不同但又相互影响的方法来找出模型中的重要数据。第一个方法,给重要的事件设置较高的优先级,即为DTMC模型中对应的重要状态设置较高权值。第二个方法是找出那些已被标识为重要的事件,并假设其他与被标识重要的事件相邻的事件也是有重要性的事件。因此结合这两个方法,本发明将DTMC中的代表“写”的控制数据标识为重要,而将其他数据标识为不重要,同样为DTMC中每个状态设置权值。如果在检测方法中加入重要性概念,即加入标识重要程度的权值weight,则上述的差异值公式将改为:

diffTransition=weightSourceState·|deprTransition-trprTransition| 公式3

其中,deprTransition和trprTransition分别指示跳转关系Transition在检测阶段和训练阶段的Pr值;weightSourceState指的是当前正在分析的状态(或跳转关系Transition所属的源状态)的权值;weightDestinationState指的是与状态State通过跳转关系Transition连接的目的状态(DestinationState)的权值。

在基于DTMC的由状态State1到状态State2的状态转移时序中,至少有一个状态State2的事件紧接着状态State1的事件出现。附图2展示DTMC的建模过程。建模算法的具体描述如下:对于时序列中的每一个事件,如果事件和某个已经存在的状态特征相匹配,建模算法会使用updateState()函数将其添加到已经存在的匹配状态;如果事件和任何一个已经存在的状态的特征都不匹配,建模算法会根据其特征值,使用addState()函数创建一个新的状态。同时,在每个事件的处理过程中,建模算法会使用addTransition()或updateTransition()函数,添加或更新当前事件涉及到的状态转移函数,即将上次刚访问事件所属的状态连接到当前事件所属的状态。

本发明以控制网络层Modbus协议,对DTMC的建模过程进行阐述。从模拟的Modbus数据中提取一组Modbus协议数据序列,每一条代表一个事件,如附图3所示。图中每一行是Modbus协议数据,是基于时间的事件序列的具体形式化描述。对于时间序列结合马尔科夫链建模,如附图4和附图5所示,根据序列的第一个事件,创建一个DTMC状态State1。State1的Type为请求/应答对;Data为UID和功能码的组合;Count为1。根据序列中第二个元素,在模型中创建另一个DTMC状态State2。State2的Type与State1的相同;Data为对UID为1的设备读寄存器。此时,根据序列,模型建立了一个由状态State1到状态State2的跳转关系Transition1。之后,序列中第三个事件的属性和第一个事件的相同。因此,第一个DTMC状态State1的Count属性需要加1。此时,序列中出现了一个新的有状态State2到状态State1的跳转,模型中添加新的由状态State2到状态State1的跳转关系Transition2。最后,根据序列中第四个事件,该事件和第二个事件有着相同的属性,故属于状态State2。状态State2的Count加1。此时,序列中出现了由状态State1到状态State2的跳转关系,由于模型中由连接状态State1和状态State2的跳转关系Transition1已经存在,Transition1的Count加1到2。

在检测阶段,本发明将训练阶段构建好的DTMC模型和检测阶段建立的DTMC模型相比较来进行评估。评估可分为两个部分:针对DTMC状态的评估和针对DTMC跳转关系的评估。将检测阶段创建的每个DTMC状态和训练阶段构建好的DTMC状态进行匹配,如果检测阶段创建的某个状态和训练阶段构建的任何状态都不相匹配,检测机制将认为该检测阶段的DTMC状态为异常,并为其标上异常标签。同样,这种检测方法也使用于针对跳转关系的检测。根据某个训练阶段已知的DTMC状态(未知的都已标注为异常),检测算法查看与该状态相关的跳转关系集,计算关系集中训练阶段和检测阶段都出现的各个跳转关系的Pr值差异。同样,根据训练阶段已知的DTMC跳转关系,检测算法将会通过比较跳转关系的Pr值在训练阶段和检测阶段的差异来判断是否异常。两个差异值根据公式1和公式2得到。

针对DTMC状态差异值的检测过程设有阈值θ。如果公式1或公式2的结果超过了阈值θ,入侵检测系统将向用户发送警报信息。该信息包含当前DTMC状态以及它的在环境中的语义。阈值θ设定的大小是否合理很重要,因为入侵检测系统的表现对阈值θ有严重的依赖性。一方面,如果阈值θ设定过高,检测系统的准确度会增加,误报很少,但其检测的全面性会降低,漏报增多。另一方面,如果阈值θ设定过低,检测过程将会出现大量的误报情况,整个入侵检测系统处在持续误报的状态中,入侵检测将不起作用。阈值的设定也同样依赖于入侵检测系统工作的环境特性。如果控制系统的通信模式具有很大的变化性,入侵检测系统则需要较高的阈值。

检测算法既可以工作于离线环境,例如处理离线控制网络数据;也可以工作于在线环境,即正在运行的系统中。离线检测只在离线数据流都分析结束后才开始。一旦入侵检测系统收集到了所有的控制网络数据,就已经建好了DTMC模型并计算出了其中所有的差异值。线上检测的情况则需要进一步细化分析。实际上,DTMC模型是根据入侵检测系统捕获到的数据包数量的增长而变化的。在测试数据读取的开始阶段建立的DTMC模型中,跳转关系的数量必然很少。因此,跳转关系的Pr值很容易偏离训练阶段构建的相应Pr值。因此,线上的检测工作需要根据ICS系统的具体情况等待一段合理的时间,使得检测阶段获取的控制网络数据包数量和训练阶段读取的网络数据包数量具有一定的可比性。

本发明在事件重要性不同的基础上,对于入侵检测算法进行改进。本发明设计了一个根据已知的由DTMC中控制数据组成的重要状态子集,为DTMC中每个状态设置权值的算法,如附图6和附图7所示。在附图6中将state状态值存储在栈中,并调用附图7中的算法计算权值。在附图7中,变量stateWeight代表从状态State到所有已标识为重要状态的所有跳转关系的Pr值加权后的和。

如果在检测方法中加入重要性概念,即加入标识重要程度的权值weight,公式1和公式2将改为公式3和公式4的形式。

如果状态的权值weight的取值范围为从0到1,公式3的结果的取值范围仍是从0到1的小数。本发明可以将数据中重要事件对应的重要状态的权值标识为1,其他状态的重要程度值标识为0,然后运行附图6和附图7中的两个算法。运行结束后,所有状态的权值都是从0到1的小数。

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