首页> 中国专利> 基于PLC仿真的工控入侵检测方法和入侵检测系统

基于PLC仿真的工控入侵检测方法和入侵检测系统

摘要

基于PLC仿真的工控入侵检测方法和入侵检测系统,该系统由PLC仿真模块、控制对象异常检测模块和被控对象异常检测模块构成。所述的PLC仿真模块由通讯子系统、SCL语言解释子系统、中间层数据缓存子系统、执行引擎子系统构成。所述的通讯子系统与工业控制网络相连。执行引擎子系统同中间层缓存子系统相连。被控对象异常检测模块同PLC仿真模块相连。本发明在不改变工业网络结构和不影响日常生产的前提下,为用户提供了对控制对象和被控对象的入侵检测系统,漏报和误报的现象少,入侵识别快,从而以较低的成本大大提高了工业控制系统的网络安全水平。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-02-12

    授权

    授权

  • 2016-08-24

    实质审查的生效 IPC(主分类):G05B17/02 申请日:20160308

    实质审查的生效

  • 2016-07-27

    公开

    公开

说明书

技术领域

本发明涉及工业控制网络技术领域,特别涉及一种基于SCL语言编写控制逻辑的 工业控制系统入侵检测的分析方法和入侵检测系统。

背景技术

工业控制系统(IndustrialControlSystems,ICS)是由各种自动化控制组件和 实时数据采集、监测的过程控制组件共同构成,主要实现数据采集和处理、监视和控制及远 程通信和维护等功能的信息系统。随着工业化与信息化进程的不断交叉融合,越来越多的 信息技术应用到了工业控制领域。

随着工业化、自动化向着网络化、信息化的转变,越来越多的工业控制系统采用标 准的、通用的通信协议和软硬件系统;再这样的背景下,工业控制系统原有的封装性被打 破,各种不安全因素,如病毒、木马、入侵等会随着正常的信息流进入工业控制网络,导致企 业生产的不稳定,特别在我国工业控制系统已经广泛应用的电力,石油化工,食品制药,航 空运输等工业领域,严重影响国家的战略安全。

传统IT信息安全的技术相对成熟,可以应用于企业网络如访问控制、审计、加密、 杀毒软件、防火墙、入侵检测(IDS)等。但在工业控制网络环境下,由于其应用场景与控制系 统存在许多不同之处,如工控系统实时性要求更强、部分传输协议不公开、工控组件程序接 口不公开等原因。传统技术不能直接应用于控制网、现场总线网络的信息安全保护,需要加 以修改使之适应工控网络。而现场总线网络一般是电信号传输,传感器、执行器通常是固化 程序,发生异常大多是因此RTU或PLC这些逻辑控制器件受到攻击。所以研究重点应当放在 工控网络中控制网的安全机制研究上。

但是由于杀毒软件与某些工业应用程序不兼容,防火墙不能防止来自于ICS内部 的攻击,IDS入侵检测系统成为我们应对APT攻击的最佳选择。入侵检测系统已经广泛的应 用于信息安全防护中,主要采用特征检测和异常检测两种方式。特征检测无法应对未知攻 击威胁,异常检测更能应对APT攻击的威胁。相比传统应用环境,ICS环境下的异常检测研究 还处在刚刚起步的阶段,还有很大的发展空间。

发明内容

为了解决上述问题,本发明提供了一种基于PLC仿真的工控入侵检测方法和入侵 检测系统,能够有效的对控制器(PLC)和被控对象(物理设备)进行异常检测。该系统检测准 确率高,实时性强。

为了达到本发明的目的,本发明提出了一种基于PLC仿真的工控入侵检测系统,该 系统由PLC仿真模块、控制对象异常检测模块和被控对象异常检测模块构成。

所述的PLC仿真模块由通讯子系统、SCL语言解释子系统、中间层数据缓存子系统、 执行引擎子系统构成。

所述的通讯子系统与工业控制网络相连。用户将编辑好的配置文件导入到异常检 测系统中。系统根据用户导入的配置文件同真实PLC通讯。按照配置文件中设定的周期,循 环读取PLC中配置文件中指定的内存位置上的输入输出数据信息,并将信息存储到中间层 数据缓存子系统中。

SCL语言解释子系统同中间层数据缓存子系统相连,用户将PLC中用SCL语言编写 的控制程序代码导入到本系统中。系统通过词法分析器对SCL代码按照预先设定的格式进 行词法分割,并将分割后的内容按照token的形式传递给语法分析器。语法分析器按照事先 设定的BNF范式进行规则过滤,将符合规则的token组合传递给解释器。解释器根据不同 token组合的含义生成中间代码或将变量存入符号表,token组合的含义同SCL代码的意义 一致。中间代码及符号表存储于中间层数据缓存子系统中。

执行引擎子系统同中间层缓存子系统相连。当SCL语言解释子系统完成对导入SCL 语言的解释工作后,执行引擎子系统加载中间代码和符号表。通过循环遍历的方法对中间 代码进行执行,并在执行过程中,根据执行结果改变符号表中变量的值。

一段SCL语言程序代码在PLC仿真模块中执行的结果同在真实PLC中的执行结果一 致。

控制对象异常检测模块同PLC仿真模块相连。如果同一段SCL控制程序代码在PLC 仿真模块中输出的最终结果同真实PLC中读取出的输出结果不同,则认为控制器PLC中发生 了异常行为。因为PLC沙盒的结构和功能同真实PLC是一致的。

被控对象异常检测模块同PLC仿真模块相连。首先通过PLC仿真模块读取被控对象 中输入输出传感器的数值。之后利用有源自回归模型ARX进行多变量系统辨识建立被控对 象模型。Y(k)+a1Y(k-1)+…+ahY(k-n)=B0U(k)+B1U(k-1)+…+BhU(k-n)+e(k)其中Y(k)为m维 输出;U(k)为r维输入;N为r维输入和m维输出的序列长度;k=(n+1)…(n+N);e(k)为m维噪 声;a1,a2,…,ah为待辨识m×m维标量参数;B1,B2,…,Bh为待辨识m×r矩阵;n为延时;h为模 型参数的阶数。

aiY(k-i)=a11ia12i...a1mia21ia22i...a2mi.........am1iam2i...ammiy1(k-1)y2(k-1)...ym(k-1),i[0,n]

BiU(k-i)=b11ib12i...b1rib21ib22i...b2ri..........bm1ibm2i...bmriu1(k-1)u2(k-1)...ur(k-1),i[0,n]

因此,被控对象模型中的一行j,j∈[1,m]可以改写为

yj(k)=-a11jy1(k-1)-...-a1mjym(k-1)-a21jy1(k-2)-...-a2mjym(k-1)-an1jy1(k-n)-...anmjym(k-n)+b01ju1(k)+b02ju2(k)+...+b0rjur(k)+b11ju1(k-1)+b12ju2(k-1)+...+b1rjur(k-1)+...+bn1ju1(k-n)+bn2ju2(k-n)+...+bnrjur(k-n)+ej(k)

由上式可得N个矩阵

Yj(k-i)=y1(k-i)y2(k-i)...ym(k-i),i=0,1,...n,ejej(1)ej(2)...ej(N),U(k-i)u1(k-i)u2(k-i)...ur(k-i),i=1,2...,n

θjT=a11j...anmj...an1j...anmjb01j...b0rjb11j...b1rj...bn1j...bnrj

被控对象模型中的一行j,j∈[1,m]可以改写为可表示为Yj=Hjθj+ej

则用最小二乘法计算可得θj的一致性和无偏性估计令j=1, 2,…,m可得各行的参数估计值即可获得被控对象的ARX模型。ah,bh中的阶数 ha,hb利用AIC准则进行选取。J(j)=J(j-1)+z(j)ε (k),AIC(ha,hb)取值最小时为ah,bh的确定阶数。设D(k)为 模型估计值同被控对象真实值之间的误差利用小波分解的方式对D(k)进行奇 异点检测。采用db6小波函数进行3层分解,其 中j为小波分解层数,K=1000为小波的移动尺度,φjK为小波尺度函数,ψjK为小波函数ψjk= 2-j/2ψ0(2-ji-k)。当分解出的高频系数dig(j,k)中存在大于0.3的点时认为被控对象出现异 常。

本发明提供了一种基于PLC仿真的工控入侵检测方法和入侵检测系统,在不改变 工业网络结构和不影响日常生产的前提下,为用户提供了对控制对象(PLC)和被控对象(物 理设备)的入侵检测系统,漏报和误报的现象少,入侵识别快,从而以较低的成本大大提高 了工业控制系统的网络安全水平。

附图说明

图1是本发明系统的结构示意图。

图2是本发明PLC仿真的流程示意图。

图3是本发明控制对象异常检测的流程示意图。

图4是本发明被控对象异常检测的流程示意图。

具体实施方式

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

图1是本发明基于沙盒仿真的工控入侵检测系统的结构示意图,如图1所示,包括:

PLC仿真模块同控制对象异常检测模块和被控对象检测模块相连。

PLC仿真模块的输入包括被控对象的基于SCL语言编写的控制程序代码,初始化配 置文件以及控制对象和被控对象的输入输出数据。

PLC仿真模块通过加载配置文件确定要获取哪些控制和被控对象数据,通讯子系 统根据设置好的运行周期时间间隔、读取数据内容、内存地址进行通讯读取需要的数据。

所有通讯子系统获得的数据一份拷贝传输给被控对象异常检测模块,另一份拷贝 传输给中间层数据缓存子系统用于更新符号表。

PLC仿真模块加载PID程序代码,将SCL语言编写的程序代码输入SCL语言解释子系 统。SCL语言子系统经过词法分析器,语法分析器和解释器生成原始的符号表以及中间代 码,并将符号表和中间代码输入到中间层数据缓存子系统。

执行引擎子系统通过加载中间层数据缓存子系统中的符号表和中间代码模拟执 行SCL语言程序。执行结果传递给控制对象异常检测模块进行异常检测。

图2是本发明PLC仿真模块的执行流程示意图,如图2所示,包括:

步骤21,用户读取控制对象PLC中基于SCL语言开发的控制逻辑程序代码并保存成 文件。程序代码中应包含变量声明和逻辑代码两部分。用户将文件导入到PLC仿真模块中。

步骤22,用户将需要读取的控制对象变量和被控对象传感器数据的名称、内存地 址、存储类型、是否是输入变量、是否是输出变量在初始化文件中进行声明。这些变量都应 当保存在PLC中。PLC仿真回根据初始化变量声明中的信息访问真实的PLC并从它的内存中 读取指定的内容。用户将编写好的初始化文件导入到PLC仿真模块中。

步骤23,本发明的词法解析器中根据SCL语言的特性,将SCL语言中的关键词设定 为Token,如if对应TokenT_IF,else对应T_ELSE,如果声明变量则返回V_VARToken。词法 分析器会读取文件中的字符,并匹配是否符合已经定义好的Token,如发现符合的则返回 Token,否则继续匹配。

步骤24,本法名的语法解析器根据SCL语言规则采用BNF范式方法进行了形式化的 描述。如T_IFT_VART_EQUAL1的组合对应的SCL语言含义是ifvar==1。

步骤25,如果语法解析器根据词法解析器获得的Token找到了已知的Token组合则 跳转到步骤27,否则跳转到步骤26。

步骤26,提示用户SCL程序代码存在语法错误,请用户检查SCL语言程序代码。

步骤27,本发明的解释器根据Token组合的语义含义生成中间代码opcode。Opcode 的原理是将SCL程序中所有的指令代码转化为二元运算的关系,opcode节点中包含两个运 算数以及一个运算符还有一个节点的类型。

步骤28,如果生成的opcode节点类型为变量则跳转到步骤30,否者跳转到步骤29。

步骤29,将opcode节点存储到中间代码队列中,以便解释器完成全部SCL代码的解 释工作后交由执行引擎子系统进行执行。

步骤30,如果生成的opcode节点类型为变量则将给结构体转换给变量结构提存储 到符号表中。变量结构体存储变量名称、数据类型和变量值。变量类型包括REAL,TIME, DWORD,BIT四种SCL语言的数据类型。

步骤31,本发明将读取初始化文件对PLC仿真的符号表中的变量值进行更新,此步 骤读取控制对象PLC中的输入变量和输出变量。

步骤32,此步骤读取被控制对象中的输入变量和输出变量,将读取到的值传入被 控对象检测模型中进行建模和检测。

步骤321,将被控对象的输入输出数据进行缓存,以供建模和小波分解检测使用。

步骤322,此步骤判断是否已经建立被控对象模型,如果建立则跳转到步骤325利 用获取的被控对象数据直接进行检测,否则跳转到步骤323。

步骤323,此步骤将判断是否缓存的时间序列长度满足初始化设置时的设定,如果 满足则跳转到步骤324,否则跳转到步骤321。

步骤324,此步骤将利用AIC准则对模型阶数进行确定,选取建模使用的阶数,并利 用AIC定阶准则确定的阶数和缓存的被控对象数据建立ARX系统辨识模型。

步骤325,此步骤利用建立的ARX模型和获取的被控对象数据计算模型输出的估计 值。获取估计值之后计算和实际值得误差值。

步骤326,利用db6小波对误差值序列进行3层小波分解,获取分解后的高频系数。

步骤327,此步骤遍历高频洗漱序列,如果发现存在大于0.3的值则跳转到步骤 328,否则跳转到步骤329。

步骤328,此步骤提示用户被控对象的数据出现异常变化,被控对象出现异常。

步骤329,此步骤表示本个执行周期被控对象正常,未发现异常状态。

步骤33,此步骤之前已经完成了SCL代码的解释工作,并同步了真实控制对象中的 输入输出对象。此步骤遍历中间代码序列,根据中间代码中指定的运算符函数进行对晕算 数进行计算,晕算数可以是常数、变量或者另一个中间代码序列。此步骤执行结束后分为两 个分支一个分支跳转到步骤31继续循环执行,另一个分支跳转到步骤34。

步骤34,此步骤将本次中间代码的执行结果传输到控制对象异常检测模块进行异 常检测,并生成本个执行周期的异常检测结果。

步骤341,此步骤读取PLC仿真中输出变量的计算值。

步骤342,此步骤根据初始化文件的设置,从PLC中读取全部输出变量的值。

步骤343,此步骤将PLC仿真计算出的输出变量同从真实PLC中读取的输出变量值 进行比对。

步骤344,如果比对一致跳转到步骤346,否则跳转到步骤345。

步骤345,如果比对不一致,则表示本个执行周期中真实PLC和PLC仿真在输入变量 一致的情况下,输出结果出现差异。则表示真实PLC的执行逻辑出现异常,出现故障或者人 为修改。将出现差异的变量的名称、变量值输出对用户进行提示。

步骤346,如果比对一致则表示本个执行周期中,真实PLC和PLC仿真在输入变量一 致的情况下,输出结果一致。控制对象PLC的控制逻辑正常。

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

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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号