一种工业SCADA系统仿真平台的制作方法

文档序号:15019187发布日期:2018-07-25 00:17阅读:412来源:国知局

本发明涉及工业控制系统领域,尤其涉及对工业控制系统现场环境的被控对象进行模拟,进行大规模PLC网络仿真平台的搭建,并通过虚拟PLC实现工程师站与虚拟被控对象的交互功能。



背景技术:

工业控制系统是由各种自动化控制组件以及对实时数据进行采集和监测的过程控制组件,共同构成的确保工业技术设施自动化运行、过程控制和监控的业务流程管控系统,其核心组件包括数据采集与监控系统(SCADA)、分布式控制系统(DCS)、可编程逻辑控制器(PLC)、远程终端(RTU)、智能电子设备(IED)和确保各组件通信的接口技术,在我国石化、电力、楼宇、交通、医疗、冶金等各领域广泛应用。

早期的工业系统设计通常为独立封闭的系统环境,与外部网络处于物理隔离状态,很少会遭受来自网络的信息安全威胁,而随着信息技术的高速发展与工业化程度的不断推进,信息化与工业化紧密融合的智能化生产成为发展趋势,导致工控系统网络开放性逐步增强,企业的工业控制系统和管理系统可以直接进行通信,甚至能够连接互联网。而与此同时,工控系统与传统IT系统又存在很多的不同,主要包括:在系统方面,工控系统对系统的可用性和通信的实时性要求较高,为保证实时性要求,通常不采用高流量的通信方式,且稳定状态下其通信过程通常表现出某些固定的模式,而IT系统则注重通信过程中数据的完整性和保密性,相应的通常需要高流量来保证,在这种情况下,来自互联网的信息安全威胁使得现有的工控系统安全防护显得更加脆弱。

工控系统的这种特殊性直接导致了入侵者能够利用相应的交互模式实现对工控系统的严重破坏,而近年来工控安全领域频繁出现APT(Advanced Persistent Threat,高级持续性威胁)攻击:10年Stuxnet蠕虫病毒入侵伊朗布什尔核电站,导致20%离心机报废,显著拖延了伊朗核电计划的实施;11年的Duqu木马、12年的Flame病毒、14年的Havex病毒窃取信息、破坏系统;15年乌克兰电网遭受BlackEnergy病毒攻击,60座变电站被攻击,致使140万用户停电;这些事件显示在某些特定协议环境下,入侵者可以针对性地构建“正常”数据流来达到入侵目标,从而伪装身份实现长期的潜伏和破坏。因此,对工业控制系统现场环境中网络数据流的模拟和研究显得尤为重要。

工业控制系统中的网络数据流会反映工业控制系统运行的模式和状态。在工业控制系统安全领域相关研究中,许多相关研究会通过分析该网络数据流来获知系统真实状态,但工业控制系统本身比较复杂,规模节点较多,搭建成本高昂,且应用场景大多在关键基础设施、传统工业领域。这就导致了在研究过程中,获取工业控制系统现场环境的实时数据比较困难,也很难获得授权许可,而要搭建系统仿真平台则对专业知识有较高需求,因而大部分研究会选用开源数据集或单点交互的简易环境来进行分析验证,这在丢失数据可信度的同时也会减少数据包含的信息。基于各类需求,如何低成本地搭建一个能够模拟工业控制系统现场环境中交互模式的大规模PLC网络仿真平台显得十分重要。

目前,根据实验平台的研究规模,研究目的,行业领域不同,典型工业控制系统安全实验平台典型的主要可以分为以下两类,分别是小型实物平台或无对象工控仿真网络。

1)小型实物平台

此类平台需要购买工业控制系统设备,规模往往较小,部署的PLC节点有限,且系统交互模式单一,针对不同需求有较长的平台建设周期,且可扩展性较差,平台可进行的入侵、操作行为的模拟及测试有限。

2)无对象工控仿真网络

此类测试平台利用仿真工具模拟工业控制系统中的物理空间和信息空间,并利用攻击仿真工具进行典型攻击模拟。这类平台的优点是成本低廉,规模易控制,便于学术研究,但是与工程师站及被控对象间交互欠缺,前者由于仿真工具的局限性大多人工操作产生网络数据流,后者大多呈现存在操作但无状态变量等信息的问题,数据缺乏真实性。

针对工业SCADA系统仿真平台的搭建,关键点在于模块功能和通信网络的实现。目前对工业控制系统的安全平台搭建研究仍处于初级阶段,大多数人对于工业控制系统的架构、协议、交互模式及通信方式了解较少,几乎没有针对工业控制系统现场环境进行模拟的仿真平台,实现该平台有助于帮助了解工业控制系统本身的结构,协议的格式与特点,节点间的交互方式与模式,从而对典型工业控制过程有更加直观的了解与清楚的认知。本平台搭建主要以模拟为主的,实现多节点的仿真测试平台,并部署被控对象进行控制,以更好地满足研究需求,同时具有一定的真实性。在实现方式上不用太拘泥于成本,且对部分功能进行了封装,便于后续拓展实现。



技术实现要素:

本发明的目的在于针对现有技术的不足,提供一种轻量级、可扩展的大规模工业SCADA系统仿真平台。

本发明的目的是通过以下技术方案来实现的:一种工业SCADA系统仿真平台,包括:模拟虚拟被控对象的仿真模块、PLC(可编程逻辑控制器)蜜罐、SCADA服务器、协议通信模块;

仿真模块用于模拟数学抽象化的工业被控对象,能够实时接收SCADA服务器发送的控制信号,并将状态变量和输出变量写入数据库,并由协议通信模块读取数据库中的状态变量和输出变量,实时发送给PLC蜜罐;

PLC(可编程逻辑控制器)蜜罐实现目标协议栈功能,接收并存储仿真模块发送的状态变量和输出变量至特定寄存器中,并响应SCADA服务器请求,回复相应的请求信息,同时接收SCADA服务器发送的控制信号,存储至特定寄存器中,并响应协议通信模块请求,回复相应的请求信息,将控制信号发送至协议通信模块;

SCADA服务器提供对PLC蜜罐的寄存器数据、日志、配置信息的查询,SCADA历史数据库建立及仿真平台的信息归档显示功能,并向PLC蜜罐发送控制信号;

协议通信模块建立PLC蜜罐与仿真模块的数据交互,从数据库读取被控对象的状态变量和输出变量,并对PLC蜜罐的寄存器数据进行写入,通过向PLC蜜罐发送请求实现寄存器中存储的控制信号的读取,并基于被控对象信息和控制信号,得到输出给对象模型的控制指令,实现控制功能。

进一步地,所述仿真模块通过Matlab中simulink实现,同时编写相应M文件实现基于仿真模块与数据库间实时通信,并通过协议通信模块发送的控制指令,实现对对象模型的外部控制功能。

进一步地,所述PLC蜜罐实现的协议栈中采用的协议为典型工业控制系统开放协议,包括Modbus/TCP、IEC 60870-5-104、BACnet/IP。

进一步地,所述PLC蜜罐为实现完整协议栈的PLC仿真软件,并提供工控协议通信、数据库读写的外部接口,分别实现对工控协议和数据库协议的响应。

进一步地,所述PLC蜜罐基于相应协议的标准文档,分析协议请求及响应的格式和行为模式,以此添加交互模块,通过编写相应Python构建典型模式数据流,实现工业SCADA系统中的典型交互模式。

进一步地,所述PLC蜜罐通过docker进行封装,相同协议环境可移植docker容器。

进一步地,所述PLC蜜罐利用docker一对一进行独立部署,建立节点IP、MAC地址互异的PLC仿真网络,实现平台的轻量、可拓展。

进一步地,所述PLC蜜罐通过虚拟网桥实现多网段docker容器跨主机通信。

进一步地,所述SCADA服务器基于协议特点实现多协议的寄存器地址、数据关联。

进一步地,所述SCADA服务器通过工控系统中广泛使用的组态软件实现,利用各协议驱动程序实现与PLC蜜罐的通信,最终实现工控系统中的部分典型交互模式。

进一步地,所述协议通信模块通过协议建立对象接口模块,产生协议数据包,传输被控对象信息至PLC蜜罐。

进一步地,所述PLC蜜罐为具备相应功能完整协议栈的低交互式蜜罐,可实现实际PLC结构与响应机制的模拟,并通过外部数据库实现与SCADA服务器及仿真模块的通信。

进一步地,所述协议通信模块采用Python、C语言代码实现作为读取、修改PLC蜜罐寄存器数据的协议客户端,实现读写所需部分协议栈。

本发明的有益效果是:

1、本平台采用虚拟仿真平台。实现SCADA系统中复杂的控制过程与典型的交互模式,有效再现了工业控制SCADA系统中现场环境的网络数据流,信息的完整性、真实性较好,同时平台建设周期短、成本低,部署更为方便,具有很好的可实现性。

2、本平台提供被控对象模型状态信息数据库与SCADA服务器历史数据库,便于控制功能修改、模块替换及测试过程中参考值的获取。

3、本平台提供仿真模块中被控对象的状态信息变化画面,便于直观获取系统状态及相应研究的进行。

4、本平台采用的PLC蜜罐修改方便,结合docker进行封装所得容器复用、再封装方便,便于平台更新与扩展。

5、本平台添加了仿真模块与数据库间的通信模块,添加不同的目标被控对象模型和控制功能算法即可实现另一工业控制过程现场环境模拟。

6、本平台添加了PLC蜜罐与数据库间的通信模块,添加不同的协议栈即可实现不同协议环境下工业控制系统被控对象模型的控制及与SCADA服务器间的基础交互模式

7、本平台提供SCADA服务器中仿真模块状态信息监控及控制功能模块,便于实现设定值修改等操作,能够更好地实现各种场景下工业控制系统中现场环境的网络流数据的模拟。

8、本平台提供PLC蜜罐交互接口,可以简单地通过通用漏洞扫描平台实现入侵测试,生成测试用例。

附图说明

图1是本平台的抽象架构;

图2是本平台PLC蜜罐的Docker网桥实现结构。

具体实施方式

下面结合附图和具体实施例对本发明作进一步详细说明。

本发明提供的工业SCADA系统仿真平台实现协议包括:Modbus/TCP、IEC 60870-5-104、BACnet/IP等协议。平台由四个部分构成:模拟虚拟被控对象的仿真模块、PLC(可编程逻辑控制器)蜜罐、SCADA服务器(PLC上位机)、协议通信模块。该平台具体模拟了包括多种典型工控协议在内的工业SCADA系统网络数据流,采用基于docker和PLC蜜罐的仿真搭建方式来协调平台的真实性和可扩展性,实现仿真真实工控系统环境中节点规模大、协议多、交互模式特殊等特点。其中仿真模块主要作为PLC蜜罐的虚拟被控对象,利用数据库进行连接实现向外发送信息及控制信号的接收。平台主要过程为PLC蜜罐向下通过通信模块与数据库通信,读写数据库信息实现对虚拟被控对象运行过程的监听与控制,向上以特定的交互模式响应SCADA服务器的请求或发送状态信息,实现工业SCADA系统中过程监控层、现场控制层及被控对象间数据完整的通信过程。其抽象架构如附图1。

虚拟被控对象的仿真模块通过Matlab的simulink模块搭建和模拟被控对象并利用Matlab的数据库接口建立实时通信,实现与控制器间传递相应的被控对象状态信息以及控制信号等信息。在运行过程中Matlab还会实时记录显示各数据参量并绘图显示,而被控对象在接收外部控制信号后,Matlab会实时计算修改过程数据参量,将改变后的状态信息发送至控制器,并将变化情况直观显示于数据参量图像中。其优点有:方便模拟不同的工业控制场景,可以方便的修改被控对象。Matlab仿真程序采用具体工业过程,比如Tennessee Eastman过程与四容水箱控制过程。通过编写相应M文件实现MATLAB仿真模块与外部数据库通信。利用该M文件将Matlab仿真程序过程变量传输到数据库,并从数据库读取控制信号输入到被控对象模型中,被控对象模型实时计算更新被控对象状态。

PLC(可编程逻辑控制器)蜜罐:控制器采用PLC仿真软件,在此基础上结合相应协议在工业SCADA系统中的典型交互模式添加对应交互模块。在SCADA服务器所在的PC或者虚拟机,需要配置相应协议的驱动程序实现协议Client的功能,PLC蜜罐作为协议Server响应Client的请求。针对Modbus/TCP协议,具体实现为基于Conpot开源蜜罐,修改实现自定义模块类型、地址,满足不同节点、不同功能PLC的模拟需求,工业控制系统中主要有逻辑线圈、离散输入、输入位寄存器和保持寄存器几种典型类型,并通过协议栈实现定期轮询等交互模式的响应。针对BACnet/IP协议,其具体实现也为基于Conpot开源蜜罐,添加模拟输入输出对象、二进制输入输出对象、设备对象、文件对象、程序对象等在内的共18种对象类型,每种对象具有独立的结构体和各自的对象访问服务。针对IEC 60870-5-104协议,其具体实现为基于变电站自动化协议的FreyrSCADA PLC蜜罐,添加数据库操作模块,并根据协议的特点添加功能模块实现总召唤、从站主动上送等交互模式。基于修改的PLC蜜罐,在docker环境中配置其所需的基础环境(Python、C运行环境),进行一对一容器封装,得到轻便,易移植、拓展的PLC蜜罐容器,在实现控制功能的PC或虚拟机中复用docker容器,根据需求删减、修改模块,并通过主机端口映射建立虚拟docker网桥,实现不出现地址重复的情况下的多网段Docker容器跨主机通信,其网桥结构如图2所示。

SCADA服务器(PLC上位机):工程师站安装有编程组态软件,实现对各PLC蜜罐工程项目进行编辑、修改、下载、上载,SCADA服务器为以工控组态软件IFIX为主建立的SCADA/HMI系统,通过各协议驱动配置实现组态通信以建立各协议中状态信息与PLC蜜罐中寄存器数据的相互关联,同时根据对协议的分析正确配置各PLC蜜罐寄存器类型、地址及相应功能,具有生产设备的监控、操作,生产数据的实时采集、存储、报警、打印等功能。

协议通信模块:主要考虑通过编写各协议所需部分协议栈实现PLC蜜罐中的寄存器对外部数据库数据的读写。针对Modbus/TCP协议,通过Python实现Modbus/TCP PLC子站与其进行通信,作为对象接口模块实现从数据库读取被控对象信息并发送至PLC蜜罐,对其寄存器数据进行写入,此外,通过向PLC蜜罐发送请求实现寄存器中存储的控制信号数据读取,在此基础上通过控制算法处理被控对象信息及控制信号,计算输出控制指令,从而达到PLC蜜罐对被控对象模型的控制功能,控制算法主要采用PID控制,按控制变量、目标回路的不同添加滞后、限幅等模块,以四容水箱的液位控制为例,控制变量为水箱液位,输入的被控对象信息及控制信号分别为液位实际值和液位设定值,经过控制算法计算得到被控阀门的开度,从而实现控制液位稳定为设定值的目标。针对IEC 60870-5-104、BACnet协议,通过C语言实现IEC-104Client与其通信,采用同样的方式实现对象接口模块,对其PLC蜜罐中寄存器数据进行读写。

平台整体运行过程为:Matlab仿真模块实现被控对象模拟,产生工业过程的状态变量和输出变量,利用M文件实现与外部数据库的实时通信。配置修改目标协议的PLC蜜罐及协议通信模块,实现两者作为Server、Client进行通信,基于此通道,协议通信模块读取数据库中的状态变量和输出变量,通过协议栈封装成相应PLC蜜罐可识别的协议数据包发送给PLC蜜罐,PLC蜜罐接收并存储对象状态信息至特定存储器。基于目标协议驱动建立SCADA服务器与PLC蜜罐之间的通信,PLC蜜罐接收SCADA服务器发送的控制信息,协议通信模块结合对象状态信息得到控制指令,并通过协议通信模块建立的通道发送至被控对象,实现对被控对象的控制。

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