一种基于工业控制网络变种攻击的入侵检测规则创建方法与流程

文档序号:11206364阅读:512来源:国知局
一种基于工业控制网络变种攻击的入侵检测规则创建方法与流程

本发明属于工业控制网络技术领域,特别涉及一种基于工业控制网络变种攻击的入侵检测规则创建方法。



背景技术:

工业控制系统(industrialcontrolsystems,ics)是由计算机设备与工业过程控制部件组成的自动控制系统。目前,已经成为国家关键基础设施的重要组成部分,广泛应用在电力传输、交通运输、油田开采、食品制药等重要领域,实现设施的自动化作业。

随着工业化与信息化进程的不断交叉融合,越来越多的信息和计算机技术被广泛应用于工业控制领域。规范便利的工业以太网的使用以多种方式与企业网络之间建立了连接。这使得工业控制系统被普通计算机网络中存在的恶意程序或者网络攻击破坏的风险大大增加。攻击者可以通过工控设备漏洞、tcp/ip协议缺陷、工业软件漏洞等多种安全缺陷,构建更加隐蔽的攻击方法。而攻击者为了躲避检测,乐此不疲地更新功能或在一些攻击特征上进行修改,制作出更多的变种攻击,导致检测手段失效。因此工业控制系统面临严重的信息安全问题。

所以,为解决工控网络的信息安全问题,学术界和工业界都在积极的寻找合适的解决方案。目前,基于工业控制网络的入侵检测主要分为误用入侵检测和异常入侵检测。基于特征的入侵检测系统能够检测具体的入侵类型,具有误报率低的特点,但传统的入侵检测规则需要专家手工建立,不能适时改变,不利于规则库的建立和升级。因此,本发明提出了基于工业控制网络变种攻击的入侵检测系统。



技术实现要素:

为了解决上述问题,本发明提出了一种基于工业控制网络变种攻击的入侵检测规则创建方法,通过将遗传算法应用于入侵检测规则学习中,并结合攻击变种的特点,自动生成多条攻击变种的入侵检测规则。其能有效的对本发明提出的变种攻击的行为进行检测,实时性较强。

为了达到本发明的目的,采用如下的技术方案:

一种基于工业控制网络变种攻击的入侵检测规则创建方法,包括以下步骤:

数据采集步骤:通过数据采集模块利用winpcap从工控网络中捕获网络数据包,通过判断网络数据所属协议,依据modbustcp协议的502端口,将数据包分别保存于缓存队列中;

数据解析步骤:通过数据解析模块从缓存队列中获取数据包,通过深度数据包解析技术解析modubstcp协议的应用层的数据字段;

规则训练步骤:通过规则训练模块依据学习配置文件输入的规则样本,判断样本类型是单规则还是双规则,并依据该样本创建好相应的数据包,以便后续计算;若样本为单规则,则依据规则管理模块提供的特征字典进行选择,生成的初始种群为单规则形式;若为双规则,则生成的初始种群两种皆可,之后进行交叉、变异,产生子代,再根据选择的初始样本创建的相应数据包;根据适应函数模块计算各自的适应值,依据适应值大小进行锦标赛选择,生成新的一代,并根据输入的训练次数进行迭代循环,直到结束;最后选取其中的前三大适应值高的规则为训练结果;规则文件中保存选择的原始规则样本和训练后的三个新规则;

规则检测步骤:通过规则检测模块将生成规则文件加载到系统中,获取所要检测的规则,并判断所选规则的形式;若选择的是单规则,则将数据解析模块解析的数据信息与每一个规则特征进行匹配,若与规则的每个特征完全匹配,则产生报警信息,否则丢弃该包,检测下一个数据包信息;若选取的是双规则,则判断响应包是否存在对应的请求包或请求包存在对应的响应包,若存在,则将请求响应包与双规则进行匹配,若完全匹配,则存在异常,产生报警信息,否则丢弃,匹配下一个;若选择的规则包含单规则和双规则,则先找到响应包对应的请求信息,若存在,则分别将两个数据包与每个单规则进行特征匹配,若其中一个完全匹配,则报警,否则,继续与双规则进行匹配,匹配则产生报警信息。

其中,所述规则管理模块,依据modbustcp协议的脆弱性分析,总结了50条基于特征的入侵检测规则。依据modbustcp数据包特征进行设计划分,分为单规则和双规则。单规则只描述单个数据包的特征,而双规则描述请求和响应数据包间的关系。这些作为现有的黑名单规则库,为之后的规则训练模块提供训练样本。并对现有的规则进行特征统计,将每个特征的频率存于字典中,供规则训练模块使用。

所述学习配置文件包括:输入训练的规则样本,输入规则的训练次数。输入训练的规则样本是从规则管理模块中现有的规则库中选取。输入的规则训练次数可以为100,200,500,1000。通过输入不同的训练次数判断训练结果的好坏,进行对比分析。这些输入值为规则训练模块提供条件。

所述适应函数模块,用于规则训练计算适应值。为加分制。此模块包含四部分:

1.完全匹配。即候选规则要与选择的初始样本创建的数据包完全匹配,规则中的每个特征都要与数据包相匹配。若完全匹配,则分值为10,否则为0。

2.不完全匹配。即候选规则与样本数据包不完全匹配,数据包匹配该规则的一个特征,分值加1,依次累加为该函数值。但是,每个规则的项数长度不是完全相同,会导致计算不公平,因此,为保证计算公平,提高分值,修改为匹配个数和除以候选规则项数,在乘以10,以便计算。

3.语法检查。即检查规则的格式和语法是否正确,规则越好,则返回的值越好,其理想分值为10。

4.攻击变种特点。该部分会对规则的变异起指导性作用,评判该候选规则能否保留。若候选规则符合一个攻击变种特点,分值加1,否则为0,依次累加和。目前,常见的tcpsyn拒绝服务攻击为攻击者伪造一个syn报文,其源地址是伪造的或者一个不存在的地址,向服务器发起连接。服务器在收到报文后用syn-ack应答,而此应答发出去后不会收到ack报文,造成一个半连接。如果攻击者发送大量这样的报文,会在被攻击主机上出现大量的半连接,消耗尽其资源,使正常的用户无法访问,直到半连接超时。在一些创建连接不受限制的实现里synflood具有类似的影响,它会消耗掉系统的内存等资源。而目前其已出现了多种syn变种攻击,因此本发明总结了以下几种攻击变种特点,将其运用到规则变种训练中。如:

(1)syn变种攻击。其特点是发送伪造源ip的tcpsyn数据包,报文>64字节,甚至多达上千字节。则检查该候选规则是否包含该特点。

(2)tcp标志位混乱攻击。发送伪造源ip的tcp报文,对tcp头的6个标志位(urg、ack、psh、rst、syn、fin)进行随机组合,从而造成报文的标志位混乱,比如发送syn+rst报文,syn+urg报文(除syn+ack外)等。

(3)syn比特和fin比特同时设置。正常情况下,正常情况下,syn标志(连接请求标志)和fin标志(连接拆除标志)是不能同时出现在一个tcp报文中的。攻击者就可以利用这个特征,通过发送syn和fin同时设置的报文,来判断操作系统的类型。

(4)无标记攻击。即没有设置任何标志的tcp报文攻击。正常情况下,任何tcp报文都会设置syn,fin,ack,rst,psh五个标志中的至少一个标志,第一个tcp报文(tcp连接请求报文)设置syn标志,后续报文都设置ack标志。有的协议栈基于这样的假设,没有针对不设置任何标志的tcp报文的处理过程,因此,这样的协议栈如果收到了这样的报文,可能会崩溃。攻击者利用了这个特点,对目标计算机进行攻击。

(5)设置了fin标志却没有设置ack标志的tcp报文攻击。在正常情况下,ack标志在除了第一个报文(syn报文)外,所有的报文都设置,包括tcp连接拆除报文(fin标志设置的报文)。但有的攻击者却可能向目标计算机发送设置了fin标志却没有设置ack标志的tcp报文,这样可能导致目标计算机崩溃。

(6)圣诞树攻击。即tcp标志位全为1。

(7)land攻击。通过向一个目标计算机发送一个tcpsyn报文(连接建立请求报文)而完成对目标计算机的攻击。与正常的tcpsyn报文不同的是,land攻击报文的源ip地址和目的ip地址是相同的,都是目标计算机的ip地址。这样目标计算机接收到这个syn报文后,就会向该报文的源地址发送一个ack报文,并建立一个tcp连接控制结构(tcb),而该报文的源地址就是自己,因此,这个ack报文就发给了自己。这样如果攻击者发送了足够多的syn报文,则目标计算机的tcb可能会耗尽,最终不能正常服务。

(8)smurf攻击。其攻击特点是将请求包的目标地址设置为受害网络的广播地址,这样本地网络上所有的计算机都必须处理这些广播报文,使整个网络淹没。

本发明中总结了以上8中简单的dos攻击变种方式,该适应函数的取值就为候选规则满足的特点数。

因此,评估候选规则的适应值就为这四个指标之和。此模块的适应函数为:f(x)=f1(x)+f2(x)+f3(x)+f4(x)。相应规则的适应值也被存储,用于比较更新。

所述数据采集模块,利用winpcap捕获网络流量,通过判断数据包是否为工控modbustcp协议,如果属于此协议,则依据请求包目的端口为502将其加入请求包队列,依据响应包源端口为502,将其放入响应队列。否则,丢弃数据包。该模块采集的数据提供给规则检测模块使用。

所述数据解析模块,从数据采集模块获取数据包后,对数据包从网络层、传输层和应用层三个层次进行深度解析。网络层解析,主要从数据报文中提取通讯设备在网络层中的信息,即提取其源ip地址和目的ip地址。传输层解析,在通讯设备进行网络交互的过程中,传输层主要负责将数据可靠地传送到相应的端口,所以,本环节主要提取传输层中的源端口号、目的端口号、tcp标志位以及modbus应用层长度。modbus应用层解析,本环节提取应用层中的事务处理标志符、协议标志符、长度、单元标志符、功能码、线圈或寄存器的起始地址、字节数。解析完的数据提供给规则检测模块使用。

规则检测模块,用于从规则文件中所选择的规则来检测网络流量。从网络中捕获的流量经数据解析模块处理,便于该模块提取信息进行检测。通过选择某条规则,将该规则的每个特征与解析后的数据包对应的特征信息进行对比,若在规则特征值范围内,则匹配存在异常,产生报警信息。

本发明基于工业控制网络变种攻击的入侵检测规则创建方法,利用modbustcp协议的脆弱性,分析设计并总结了描述modbustcp协议异常流量的规则,分为单规则和双规则。利用学习配置文件中选取的规则训练样本,获取其样本信息和其规则形式,创建对应的数据包,并依据特征字典来创建初始种群,进行选择父代,交叉,变异,产生新个体。通过将攻击变种的特点应用于适应函数,利用适应函数模块的四个适应函数来计算各自的适应值,并根据锦标赛选择算法来选择新种群,若满足输入的训练次数,则从中挑选前三个适应值最大的规则作为本次训练的最优规则,并保存到规则文件中。通过训练的新规则来检测异常的modbus流量,匹配则产生报警信息。

本发明的基于工业控制网络变种攻击的入侵检测规则创建方法,在不改变工业网络结构和不影响日常生产的前提下,为用户提供了能检测攻击变种的入侵检测,能自动创建误用规则,并扩充规则库,节省时间和精力。能以较低的成本提高工业控制系统的网络安全水平。

附图说明

图1是本发明方法的总体结构示意图;

图2是本发明规则训练模块的流程示意图;

图3是本发明适应函数模块的流程示意图;

图4是本发明规则检测模块的流程示意图。

具体实施方式

以下将结合附图所示的具体实施方式对本发明进行详细描述。

如图1所示,本发明提供一种基于工业控制网络变种攻击的入侵检测规则创建方法,包括以下步骤:

数据采集步骤:通过数据采集模块利用winpcap从工控网络中捕获网络数据包,通过判断网络数据所属协议,依据modbustcp协议的502端口,将数据包分别保存于缓存队列中;

数据解析步骤:通过数据解析模块从缓存队列中获取数据包,通过深度数据包解析技术解析modubstcp协议的应用层的数据字段;

规则训练步骤:通过规则训练模块依据学习配置文件输入的规则样本,判断样本类型是单规则还是双规则,并依据该样本创建好相应的数据包,以便后续计算;若样本为单规则,则依据规则管理模块提供的特征字典进行选择,生成的初始种群为单规则形式;若为双规则,则生成的初始种群两种皆可,之后进行交叉、变异,产生子代,再根据选择的初始样本创建的相应数据包;根据适应函数模块计算各自的适应值,依据适应值大小进行锦标赛选择,生成新的一代,并根据输入的训练次数进行迭代循环,直到结束;最后选取其中的前三大适应值高的规则为训练结果;规则文件中保存选择的原始规则样本和训练后的三个新规则;

规则检测步骤:通过规则检测模块将生成规则文件加载到系统中,获取所要检测的规则,并判断所选规则的形式;若选择的是单规则,则将数据解析模块解析的数据信息与每一个规则特征进行匹配,若与规则的每个特征完全匹配,则产生报警信息,否则丢弃该包,检测下一个数据包信息;若选取的是双规则,则判断响应包是否存在对应的请求包或请求包存在对应的响应包,若存在,则将请求响应包与双规则进行匹配,若完全匹配,则存在异常,产生报警信息,否则丢弃,匹配下一个;若选择的规则包含单规则和双规则,则先找到响应包对应的请求信息,若存在,则分别将两个数据包与每个单规则进行特征匹配,若其中一个完全匹配,则报警,否则,继续与双规则进行匹配,匹配则产生报警信息。

当学习配置文件中选择训练样本后,会根据该样本创建相应的数据包,适应函数模块根据规则训练模块的候选规则和该数据包来计算适应值(公式5)。首先,判断候选规则和数据包是否完全匹配,计算f1的值(公式1)。若完全匹配,则f1=10;否则,f1=0。

x为候选规则,n为规则特征数。之后,计算f2的值(公式2),即候选规则与该数据包不完全匹配时的分值。依次计算与之匹配的特征个数,每匹配一个加1分。而为保证每个候选规则的取值公平,将匹配个数和除以候选规则项数。

而后要保证所训练的规则合格,需检查其语法和格式,计算f3的值(公式3)。例如,一条规则中,同时含有功能码和异常功能码两个特征字段,则该候选规则不符合语法标准,而实际中,当数据包请求异常时,响应数据包中会带有异常功能码。

f3(x)=10-error(x)(公式3)

检查完候选规则后,计算f4的值(公式4)。判断该候选规则中是否包含描述攻击变种的特点,每符合1个特征加1分。

最后,候选规则的适应值大小就为该四个适应函数值。即

f=f1+f2+f3+f4(公式5)

所述规则训练模块,从学习配置文件中获取输入的训练规则样本,确定其为单规则形式或双规则形式后,再依据规则管理模块中统计的特征字典形成与样本规则相同类型的初始种群。在生成每个初始样本时,会随机生成一个判定值r,将特征字典中的每个特征频率fc与之对比,若满足fc>r,则选择该特征,依次对比,形成初始个体。同理,直到满足初始种群个数为止。之后,从中随机挑选父代规则,对其进行交叉变异,产生新的候选规则,依据选择的初始样本创建的数据包和适应函数模块,分别计算各自的适应值,再按照锦标赛选择算法进行挑选,生成新一代规则种群。并从学习配置文件中获取训练的迭代次数进行训练,选取最终适应值较大的前三个规则作为本次训练的最优结果。将其存放于规则文件中。

如图2所示,规则训练步骤的具体过程包括:

步骤21,启动规则训练模块;

步骤22,从学习配置文件中获取输入的规则样本序号和训练的规则次数;

步骤23,依据规则样本序号,从规则管理模块中提取样本规则信息,保存规则形式;

步骤24,创建规则样本对应的数据包;

步骤25,从规则管理模块获取特征字典信息;

步骤26,启动遗传算法

步骤27,判断样本规则是否为单规则形式;如果是,则执行步骤28,如果不是执行步骤29;

步骤28,从特征字典中筛选特征频率大于选择判定值的单规则形式特征,排除描述双规则的特征,组成单规则形式的初始个体,并为初始个体的每个特征赋予初始范围值;

步骤29,判断样本规则是否是双规则形式;如果是,则执行步骤210,如果不是执行步骤22;

步骤210,从特征字典中筛选特征频率大于选择判定值的能描述双规则形式的特征,生成双规则形式的初始个体,并为初始个体的每个特征赋予初始范围值;

步骤211,同理,依据上一步骤方法依次筛选,达到初始种群;

步骤212,从初始种群中随机挑选两个个体为父代;

步骤213,父代进行交叉,其中一个为主父母,另一个为次父母;产生的子代含有与主父母相同的特征字段;

步骤214,子代的每个特征字段都会产生一个随机判定值,判断其判定值是否大于交叉概率pc;如果是,则执行步骤215,如果不是,则执行步骤216;

步骤215,选择该特征,该特征取值为主父母的值;

步骤216,该特征的取值为次父母的值;若次父母不存在该特征,则默认值为主父母的值;

步骤217,交叉完成,生成新子代个体;

步骤218,对新子代的每个特征字段产生一个0-1的随机判定值;

步骤219,判断每个特征的随机判定值是否小于变异概率pm;如果是,执行步骤220,如果不是,执行步骤221;

步骤220,选择该特征,对该特征的值进行变异;

步骤221,该特征的值保持不变;

步骤222,变异完成,生成新的候选规则;

步骤223,依据适应函数模块,并结合步骤24创建的数据包,计算每个规则的适应值,并将规则与之对应的适应值保存到字典中,以便更新;

步骤224,依据规则适应值,进行锦标赛选择算法排序;

步骤225,判断是否满足训练迭代次数;如果是,执行步骤226,如果不是,执行步骤227;

步骤226,从中挑选适应值最大的前三大规则为本次训练的最优规则,并保存到列表中;

步骤227,挑选并生成新一代初始种群,淘汰适应值低的个体;并执行步骤212;

步骤228,停止规则训练。

如图3所示,适应函数模块的具体过程包括:

步骤31,启动适应函数模块;

步骤32,检查样本数据包是否创建好,如果是,执行步骤33,如果不是,执行步骤34;

步骤33,开始计算适应函数;

步骤34,返回数据管理模块获取样本信息;

步骤35,创建样本规则对应的数据包,执行步骤33;

步骤36,判断样本数据包中的特征是否与候选规则中对应的特征值完全匹配,如果是,执行步骤37,如果不是,执行步骤38;

步骤37,适应函数f1的取值为10;

步骤38,适应函数f1的取值为0;

步骤39,统计数据包的特征与规则对应的特征值匹配的个数;

步骤310,计算出适应函数f2的值;

步骤311,判断该候选规则是否满足本发明设计的规则格式和语法要求;如果是,执行步骤312,如果不是,执行步骤313;

步骤312,该规则达到理想规则值,则适应函数f3的值为10;

步骤313,不符合规则格式和语法,则统计其不足个数;

步骤314,计算适应函数f3的值;

步骤315,判断候选规则是否含有描述变种攻击特点的特征;如果是,执行步骤316,如果不是,执行步骤318;

步骤316,统计其能描述的攻击变种特点的个数;

步骤317,计算出适应函数f4的值;

步骤318,适应函数f4的值为0;

步骤319,计算出总适应函数的值,即f=f1+f2+f3+f4,为四个适应函数之和;

步骤320,保存该候选规则对应的适应值,完成适应函数模块。

如图4所示,规则检测步骤的具体过程包括:

步骤41,启动规则检测线程;

步骤42,提取规则文件信息;

步骤43,从规则文件中选取规则进行检测;

步骤44,判断选择的规则是否全为单规则,如果是,执行步骤45,如果不是,执行步骤46;

步骤45,只检测单个数据包,判断数据包与每个规则对应的特征是否完全匹配;如果是,执行步骤413,如果不是,执行步骤414;

步骤46,判断选取的规则是否全为双规则,如果是,执行步骤47,如果不是,执行步骤413;

步骤47,判断响应数据包能否从队列中找到相应的请求包,或请求包是否存在响应;如果是,执行步骤48,如果不是,执行步骤413;

步骤48,判断两个数据包是否与双规则完全匹配;如果是,执行步骤413;如果不是,执行步骤414;

步骤49,判断选取的规则是否包含双规则和单规则;如果是,执行步骤410;如果不是,执行步骤43;

步骤410,判断响应数据包能否从队列中找到对应的请求包,或请求包存在响应;如果是,执行步骤411,如果不是,执行步骤413;

步骤411,判断每个数据包能否与每个单规则完全匹配,如果是,执行步骤413,如果不是,执行步骤412;

步骤412,判断两个数据包能否与每个双规则完全匹配;如果是,执行步骤413,如果不是,执行步骤414;

步骤413,产生报警信息;

步骤414,丢弃该包,检测下一个数据包。

应当理解,虽然本说明书根据实施方式加以描述,但是并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为了清楚起见,本领域的技术人员应当将说明书作为一个整体,各个实施方式中的技术方案也可以适当组合,按照本领域技术人员的理解来实施。

上文所列出的一系列详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用于限制本发明的保护范围,凡是未脱离发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

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