掌桥专利:专业的专利平台
掌桥专利
首页

模型构建方法、测试平台、计算机设备和存储介质

文献发布时间:2024-04-18 19:58:53


模型构建方法、测试平台、计算机设备和存储介质

技术领域

本申请涉及计算机技术领域,特别涉及一种模型构建方法、测试平台、计算机设备和存储介质。

背景技术

随着时代的发展和社会的进步,工业控制系统的整体规模逐步扩大。为了保证工业控制系统安全稳定的运行,需要对工业控制系统中传输的数据进行检测,以便能够及时发现异常数据,降低工业控制系统的安全风险。

相关技术中,技术人员根据已发现的异常数据的数据特征手动建立数据特征库并不断更新。在对工业控制系统中传输的数据进行检测时,将待检测的数据的数据特征与数据特征库中的数据特征进行匹配,若该数据的数据特征与数据特征库中的任意一个数据特征匹配成功,则确定该数据为异常数据。

然而,上述方式中数据特征库中的数据特征是人为手动添加的有限数量的数据特征,这会在一定程度上影响通过数据特征库来检测异常数据时的准确度。

发明内容

本申请提供了一种模型构建方法、测试平台、计算机设备和存储介质,可以提高异常检测准确度。所述技术方案如下:

第一方面,提供了一种模型构建方法,所述方法包括:

解析仿真网络中传输的数据包,得到所述仿真网络中传输的数据包中的关键信息,所述仿真网络是对目标网络系统模拟得到;

根据所述仿真网络中传输的数据包中的关键信息,检测所述仿真网络中传输的正常数据包和异常数据包;

根据所述仿真网络中传输的正常数据包中的关键信息和异常数据包中的关键信息,构建训练样本集;

使用所述训练样本集进行模型训练,得到异常检测模型,所述异常检测模型用于对所述目标网络系统中传输的数据包进行异常检测。

在本申请中,由于仿真网络中传输的正常数据包和异常数据包可以较为全面准确地模拟出目标网络系统中传输的正常数据包和异常数据包,所以根据仿真网络中传输的正常数据包和异常数据包的关键信息训练得到的异常检测模型可以较为准确地实现对目标网络系统中传输的数据包的异常检测,从而可以有效提升目标网络系统的安全性。

可选地,所述目标网络系统为工业控制系统,所述仿真网络使用多种工控协议进行数据包传输。

可选地,所述解析仿真网络中传输的数据包,得到所述仿真网络中传输的数据包中的关键信息,包括:

对于所述仿真网络中传输的任意的一个数据包,对所述一个数据包进行逐层解析,得到所述一个数据包在各层中的关键信息。

可选地,所述关键信息包括媒体访问控制MAC地址、互联网协议IP地址、端口号、功能信息;所述对所述一个数据包进行逐层解析,得到所述一个数据包在各层中的关键信息,包括:

解析所述一个数据包的数据链路层信息,得到所述一个数据包中的MAC地址;

解析所述一个数据包的网络层信息,得到所述一个数据包中的IP地址;

解析所述一个数据包的传输层信息,得到所述一个数据包中的端口号;

解析所述一个数据包的应用层信息,得到所述一个数据包中的功能信息。

可选地,所述功能信息包括事务处理标识符、协议标识符、长度、单元标识符、操作信息;所述解析所述一个数据包的应用层信息,得到所述一个数据包中的功能信息,包括:

解析所述一个数据包在应用层的头部部分,得到所述一个数据包中的事务处理标识符、协议标识符、长度、单元标识符;

解析所述一个数据包在应用层的数据部分,得到所述一个数据包中的操作信息。

可选地,所述操作信息包括功能码和目标信息,所述目标信息包括第一目标信息或第二目标信息;所述解析所述一个数据包在应用层的数据部分,得到所述一个数据包中的操作信息,包括:

解析所述一个数据包在应用层的数据部分中的功能码;

若所述功能码的操作对象是基本寄存器,则根据基本字段解析所述一个数据包在应用层的数据部分中的数据,得到所述一个数据包中的第一目标信息,所述第一目标信息包括操作对象类型、寄存器地址、操作数量、写入值中的一个或多个;

若所述功能码的操作对象不是基本寄存器,则获取所述功能码对应的关键字段,根据所述功能码对应的关键字段解析所述一个数据包在应用层的数据部分中的数据,得到所述一个数据包中的第二目标信息。

可选地,所述根据所述仿真网络中传输的数据包中的关键信息,检测所述仿真网络中传输的正常数据包和异常数据包,包括:

对于所述仿真网络中传输的任意的一个数据包,根据所述一个数据包使用的通信协议标准确定所述一个数据包中各个关键信息对应的合法值;

若所述一个数据包中存在至少一个关键信息与对应的合法值不符,则确定所述一个数据包为异常数据包;

若所述一个数据包中的所有关键信息均与对应的合法值相符,则确定所述一个数据包为正常数据包。

第二方面,提供了一种测试平台,所述测试平台包括仿真网络、入侵模块和检测模块,所述仿真网络是对目标网络系统模拟得到,所述入侵模块用于模拟攻击行为,所述检测模块用于执行如上述第一方面所述的模型构建方法。

第三方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述第一方面所述的模型构建方法。

第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的模型构建方法。

第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的模型构建方法的步骤。

可以理解的是,上述第二方面、第三方面、第四方面、第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种测试平台的示意图;

图2是本申请实施例提供一种通过容器引擎搭建的网桥结构的示意图;

图3是本申请实施例提供的一种测试平台中的通信示意图;

图4是本申请实施例提供的一种数据包检测流程的示意图;

图5是本申请实施例提供的一种模型构建方法的流程图;

图6是本申请实施例提供的一种检测流程的示意图;

图7是本申请实施例提供的一种数据部分的检测流程的示意图;

图8为本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。

应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。

在本申请中描述的“一个实施例”或“一些实施例”等语句意味着在本申请的一个或多个实施例中包括该实施例描述的特定特征、结构或特点。由此,在本申请中的不同之处出现的“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等语句不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。此外,术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。

在对本申请实施例进行详细地解释说明之前,先对本申请实施例的应用场景予以说明。

随着工业控制系统的出现,工业控制系统逐步的被应用到石化、电力、楼宇、交通、医疗、冶金等各领域中,并且其中超过80%的关键性基础设施已通过工业控制系统实现了自动化作业。

工业控制系统是由计算机与工业过程控制部件组成的自动控制系统,工业控制系统主要包括SCADA(Supervisory Control And Data Acquisition,数据采集与监控系统)、PLC(Programmable Logic Controller,可编程逻辑控制器)、RTU(Remote Terminal Unit,远程终端单元)、DCS(Distributed Contorl System,分布式控制系统)、IED(IntelligentElectronic Device,智能电子设备)以及相关通信技术,其目的是对实时数据进行采集、监测以确保工业基础设施的自动化运行、过程控制等。

在工业控制系统为工业化发展带来进步的同时,对工业控制系统的需求也在逐步的增强,其中大部分是对通信过程中的系统可用性和通信实时性的不断优化和技术更新,相对的忽略了对通信过程中的数据安全性的保护措施,因而在入侵者对工业控制系统及其使用的通信协议有一定的了解后,可以轻易地建立与设备间的连接、窃取设备权限,并且入侵者会倾向于在保持系统正常通信的前提下,通过对网络数据流的微小篡改来发送、变更指令或窃取信息。比如,上层站点与现场控制设备间的网络数据流仍然由严格符合协议规约的数据包构成,然而数据包中涉及设备功能或物理对象的字段却已遭到入侵者的篡改,被篡改的数据包被当作正常数据包进行解析、执行,并且上层站点不会对篡改的数据包进行监控,或者上层站点监控的数据包因已被篡改而无法采集到真实数据,导致监控功能失效,入侵者通过这种方式可以对工业控制系统进行信息窃取、控制破坏。这种由入侵者针对特定目标精心策划实现,具备较好隐蔽性的攻击方式通常被称为APT(AdvancedPersistent Threat,高级持续性威胁)。

为此,本申请实施例提供了一种测试平台,该测试平台包括仿真网络、入侵模块以及检测模块,仿真网络可以对工业控制系统进行模拟,入侵模块可以对入侵者的攻击行为进行模拟。

具体来讲,仿真网络中产生正常数据包,入侵模块构造异常数据包发送至仿真网络。检测模块采集仿真网络中的数据包,并对采集的数据包进行解析、检测,以获得正常数据包的关键信息和异常数据包的关键信息,根据获得的正常数据包的关键信息和异常数据包的关键信息建立训练样本集,最后根据训练样本集进行模型训练,得到可以对工业控制系统中传输的数据包进行异常检测的异常检测模型。

由于仿真网络中传输的正常数据包和异常数据包可以较为全面准确地模拟出工业控制系统中传输的正常数据包和异常数据包,所以根据仿真网络中传输的正常数据包和异常数据包的关键信息训练得到的异常检测模型可以较为准确地实现对工业控制系统中传输的数据包的异常检测,从而可以有效提升工业控制系统的安全性。

下面对本申请实施例提供的测试平台进行详细地解释说明。

图1是本申请实施例提供的一种测试平台的示意图。参见图1,该测试平台包括:仿真网络101、入侵模块102、检测模块103。

仿真网络101用于对目标网络系统进行模拟。比如,目标网络系统可以为工业控制系统,仿真网络则是对工业控制系统的内部网络进行1:1模拟出的网络。

可选地,仿真网络101可使用多种工控协议进行通信。比如,该多种工控协议可以包括:IEC(International Electrical Commission,国际电工委员会)60870-5-104协议、Modbus/TCP(Transmission Control Protocol,传输控制协议)协议、BACnet(A DataCommunication Protocol for Building Automation Control Networks,楼宇自动控制网络数据通讯协议)/IP(Internet Protocol,互联网协议)协议、Ethemet/IP协议、CC-LINK(Control&Communication Link,控制与通信链路系统)协议等。

可选地,仿真网络101可以包括过程监控层1011、交换机1012、现场控制层1013和对象模型1014,过程监控层1011与现场控制层1013通过交换机1012进行通信。

过程监控层1011用于监控、控制仿真网络101中的现场控制层1013和对象模型1014。具体的,过程监控层1011向现场控制层1013发送数据包对对象模型1014进行控制与调度,并对现场控制层1013和对象模型1014进行监控,是仿真网络101中的上位机。

可选地,过程监控层1011可以包括SCADA服务器与工程师站。

SCADA服务器能够建立各协议组态通信、配置过程监控层1011的设备功能、寄存器类型、寄存器地址等相应参数,以此对对象模型1014完成监控、控制、数据实时采集、存储、报警、打印等功能。示例的,SCADA服务器可以建立IEC 60870-5-104、Modbus/TCP、BACnet/IP、Ethemet/IP、CC-LINK等协议的组态通信。

工程师站用于工业过程控制。具体来讲,工程师站能够实现对各PLC工程项目进行编辑、修改、下载、上载等功能。可选的,工程师站可以由不同厂商的组态软件实现。

现场控制层1013用于接收上位机下发的控制指令以及将被控过程的变量信息传输给上位机。具体的,现场控制层1013包括多个PLC,用于接收上位机下发的控制指令,并根据控制指令完成相应的对象模型1014的控制,实时的向过程监控层1011传输对象模型1014在被控过程中的变量信息。

可选地,现场控制层1013中的PLC可以包括物理PLC与仿真PLC,物理PLC通过物理电缆进行连接,仿真PLC通过网络通信与上位机和对象模型1014进行信息交互。

物理PLC用于控制和监控对象模型1014。具体来讲,物理PLC接收上位机发送的控制指令,通过控制程序将控制指令转化为控制信号,将控制信号发送给对象模型1014进行控制,同时物理PLC还与对象模型1014进行实时通信,实时向上位机传输对象模型1014在被控过程中的控制变量。可选地,物理PLC还可以模拟不同厂商的PLC分别生成不同协议的数据包。

仿真PLC可以包括PLC蜜罐。PLC蜜罐用于引诱入侵者攻击。PLC蜜罐是一种实现物理PLC功能以及模拟与各类PLC进行交互的工具,能够有效地替代物理PLC进行各类攻击测试及信息采集。示例的,PLC蜜罐可以实现IEC 60870-5-104、Modbus/TCP、 BACnet/IP等协议的基础功能。

可选地,PLC蜜罐还可以通过二次开发满足测试平台对PLC功能需求以及对测试平台环境需求。

示例的,为实现测试平台在不同网络环境下的可移植、可拓展性,可以通过容器引擎(包括但不限于Docker)实现系统网络架构的搭建,具体搭建过程参考图2。

图2是本申请实施例提供一种通过容器引擎搭建的网桥结构的示意图。

参见图2,该网桥结构包括多个主机(即现场控制层1013中的PLC)、交换机(即交换机1012)。多个主机中的每个主机都有独立的IP地址,每个主机中可以设置一个或多个容器、独立的网卡以及独立的虚拟网桥,每个主机上的所有容器会通过虚拟接口连接到虚拟网桥上,且每个容器都有虚拟的IP地址。

多个主机中的每个主机的所有容器共享一个操作系统内核(包括但不限于Linux内核),每个容器可以仿真一个PLC蜜罐。比如,主机A中搭建有容器A与容器B,容器A中仿真有使用Modbus协议的PLC蜜罐,容器B仿真有使用Modbus协议的PLC蜜罐。一个主机上的所有容器连接到一个虚拟网桥,通过对容器建立主机端口映射可以避免多PLC蜜罐地址重复问题,从而使一台主机上可以同时运行几十上百个容器,大大提升了PLC蜜罐可拓展性,降低了搭建测试平台的成本。

可选地,技术人员还可以对每个容器中的PLC蜜罐进行部署。

示例的,测试平台的PLC蜜罐可以包括Conpot蜜罐。Conpot蜜罐可以根据需求快速地进行部署、修改以及实现自定义模块类型、地址,以满足不同功能PLC的模拟需求。比如,通过Conpot蜜罐可以部署Modbus/TCP协议的PLC蜜罐和BACnet/IP协议的PLC蜜罐。

为更好地模拟工业控制系统的交互模式,技术人员分析了各个工控协议格式及在工业控制系统中的应用。在工业控制系统中,主要通过线圈寄存器、离散量输入寄存器、输入寄存器和保持寄存器实现与对象模型1014及过程监控层1011直接的信息交互。

示例地,寄存器类型及相关特性如下表1所示,每种类型的寄存器有不同的寄存器地址、功能码、权限及可实现的功能。比如,功能码05代表线圈寄存器,线圈寄存器的地址为0xxxx,线圈寄存器可实现的功能是控制电压的高低(即电路的通断)。在仿真网络中,不同类型的寄存器可以实现不同的控制功能。

表1

本申请实施例仅以上表1为例对寄存器类型及相关特性进行示例性说明,上表1并不对本申请实施例构成限定。

在一些实施例中,技术人员还可以对每个容器中的PLC蜜罐进行对象类型的配置,以实现不同功能的PLC蜜罐。示例的,BACnet协议可以定义包含模拟输入输出对象、二进制输入输出对象、设备对象、文件对象、程序对象等在内的共18种对象类型,每种对象具有独立的结构体和各自的对象访问服务。

示例的,配置Modbus/TCP协议的PLC蜜罐的代码如下所示:

上述配置实现了功能为模拟输入的PLC蜜罐。其中,配置项设置了通信协议、主机地址、端口号、供应商名称、产品代码、修订版本、模式、延迟、装置id、拦截配置、类型等参数。

示例地,配置BACnet/IP协议的PLC蜜罐的代码如下所示:

上述配置实现了功能为二进制模拟输入的PLC蜜罐。其中,配置项设置了通信协议、主机地址、端口号、设备名称、设备标识符、供应商名称、供应商标识符、协议最大长度、支持分段、模式名称、产品版本的版本号等参数。

对象模型1014用于接收和响应来自上位机发送的控制指令。具体来讲,对象模型1014是根据真实物理设备功能通过数学建模等方式仿真得到的模型。示例的,可以采用Matlab(Matrix Labortory,矩阵实验室)的Simulink(simulationlink,模拟链路)模块搭建出对象模型1014。

入侵模块102用于对仿真网络101进行攻击,即入侵模块102用于模拟入侵者对目标网络系统的攻击行为。具体的,入侵模块102对协议的脆弱性进行分析,根据协议的变异规则构建异常数据包发送到仿真网络101进行破坏,以实现对目标网络系统异常状态的模拟。示例的,入侵模块102可以通过开源安全漏洞检测工具MSF(Metasploit Framework,渗透测试)及国际知名的工控安全认证Achilles测试平台实现对异常场景的模拟。

检测模块103用于检测仿真网络101中传输的数据包是正常数据包还是异常数据包。具体来讲,检测模块103采集仿真网络101中的数据包,对采集的数据包进行解析,对解析后的数据进行检测,以确定该数据包是正常数据包还是异常数据包。

图3是本申请实施例提供的一种测试平台中的通信示意图。参见图3,该测试平台中的通信过程为:

SCADA服务器通过交换机向物理PLC或PLC蜜罐发送控制指令。物理PLC或PLC蜜罐接收该控制指令,通过控制程序将控制指令转换为控制信号发送给对象模型。对象模型接收到物理PLC或PLC蜜罐发送的控制信号后,模拟真实环境下工业控制系统中被控对象的反应过程,同时生成被控过程的状态变量和输出变量,将状态变量和输出变量实时传输给物理PLC或PLC蜜罐。物理PLC或PLC蜜罐响应SCADA服务器发起的定期询问请求,向SCADA服务器发送对象模型的状态变量和输出变量,SCADA服务器接收后进行相应的显示和处理。在这个过程中,入侵模块构建异常数据包后发送至仿真网络中,比如,入侵模块构建异常数据包后可以发送至交换机。检测模块采集仿真网络中传输的数据包,比如,检测模块可以从交换机中采集仿真网络中传输的数据包,然后检测模块可以对采集的数据包进行解析,对解析后的数据进行检测,以确定该数据包是正常数据包还是异常数据包。

在本申请实施例中,检测模块不仅可以确定仿真网络中传输的正常数据包和异常数据包,还可以根据仿真网络中传输的正常数据包的关键信息和异常数据包的关键信息训练得到异常检测模型,后续就可以使用该异常检测模型来对目标网络系统中传输的数据包进行异常检测。

下面对本申请实施例提供的数据包检测流程进行详细地解释说明。

示例地,图4是本申请实施例提供的一种数据包检测流程的示意图。参见图4,该数据包检测流程包括对多源工控协议数据包进行数据包解析、关键信息检测、流量检测。

多源工控协议数据包是指使用多种不同工控协议进行传输的数据包。

数据包解析是指解析数据包中的关键信息。具体来讲,可以按照数据包所使用的通信协议对数据包逐层进行解析,获取数据包各层中的关键信息。

示例地,数据包中的关键信息包括MAC(Media Access Control Address,媒体访问控制)地址、IP地址、端口号、功能信息等。

关键信息检测是指根据数据包中的关键信息检测数据包是正常数据包还是异常数据包。

可选地,可以由技术人员建立过滤规则,根据该过滤规则对数据包中的关键信息进行过滤,以确定该数据包是正常数据包还是异常数据包。

正常数据包是仿真网络内部进行信息交互的数据包。

异常数据包指攻击仿真网络的数据包。

流量检测是指根据仿真网络中的数据流量特征检测数据包是正常数据包还是异常数据包。示例地,可以根据在一段时间内在仿真网络中采集到的数据包确定数据流量特征,若采集到某个数据包时确定出的数据流量特征与预设的正常数据流量特征不匹配,则可以确定这个数据包为异常数据包。

在本申请实施例中,在确定出仿真网络中传输的正常数据包和异常数据包后,可以根据仿真网络中传输的正常数据包的关键信息和异常数据包的关键信息训练得到异常检测模型,后续就可以使用该异常检测模型来对目标网络系统中传输的数据包进行异常检测。

下面对本申请实施例提供的模型构建方法进行详细地解释说明。

图5是本申请实施例提供的一种模型构建方法的流程图。该方法应用于计算机设备,该计算机设备可以是上文图1至图4实施例中所述的检测模块,参见图5,该模型构建方法包括以下步骤:

步骤501:计算机设备解析仿真网络中传输的数据包,得到仿真网络中传输的数据包中的关键信息。

仿真网络中传输的数据包包括仿真网络内部传输的数据包和入侵模块发送到仿真网络中的数据包。具体来讲,仿真网络内部传输的数据包可以是过程监控层与现场控制层、对象模型进行通信时的正常数据包;入侵模块发送到仿真网络中的数据包是入侵模块模拟攻击行为时发出的异常数据包。

可选地,在对数据包进行解析前,还需要对数据包进行解封装。通信协议每一层都具有严格标准的封包规范,数据包从应用层、传输层、网络层、数据链路层依次按照通信协议标准一层一层的进行封装,封装过程具有高度的有序性。计算机设备在获取到一个数据包后,首先要对这个数据包进行解封装,解封装是按照数据包封装的反顺序对数据包逐层解封,对解封后的数据包按照通信协议标准进行解析,也即,封装、解封装、解析过程都是可以按照通信协议标准进行的,通信协议标准规定了数据包应该有的协议字段。

示例地,数据包中的关键信息如表2所示,其中数据链路层中的关键信息包含源MAC地址和目的MAC地址,网络层中的关键信息包含源IP地址和目的IP地址,传输层中的关键信息包含源端口号和目的端口号,应用层中的关键信息包含协议标识符、长度、单元标识符、功能码和寄存器地址。

表2

本申请实施例仅以上表2为例对数据包的各层中的关键信息进行示例性说明,上表2并不对本申请实施例构成限定。

可选地,步骤501的操作可以为:对于仿真网络中传输的任意的一个数据包,对这个数据包进行逐层解析,得到这个数据包在各层中的关键信息。

这种方式下,对数据包进行逐层解析可以全面的获取数据包中的关键信息。

可选地,计算机设备对这个数据包进行逐层解析的操作可以为:解析这个数据包的数据链路层信息,得到这个数据包中的MAC地址;解析这个数据包的网络层信息,得到这个数据包中的IP地址;解析这个数据包的传输层信息,得到这个数据包中的端口号;解析这个数据包的应用层信息,得到这个数据包中的功能信息。

示例地,数据包的数据链路层信息包括数据包的源MAC地址、目的MAC地址。

示例地,数据包的网络层信息包括数据包的源IP地址、目的IP地址。

示例地,数据包的传输层信息包括数据包的源端口号和目的端口号。

示例地,数据包中的功能信息包括应用层的头部部分信息和数据部分信息。

应用层的头部部分用于指示数据包要实现的功能。

应用层的数据部分为数据包实现功能所需的具体参数。

示例地,应用层的头部部分可以包括事务处理标识符、协议标识符、长度和单元标识符这些字段。其中,事务处理标识符字段为请求或响应事务处理的标识码,协议标识符字段用于标识数据包使用的通信协议,长度字段用于衡量单元标识符和数据部分的总长度,单元标识符字段为串行链路或其他总线上连接的远端从站的识别码。

可选地,计算机设备解析这个数据包在应用层的头部部分和数据部分的操作可以为:解析这个数据包在应用层的头部部分,得到这个数据包中的事务处理标识符、协议标识符、长度、单元标识符;解析这个数据包在应用层的数据部分,得到这个数据包中的操作信息。

操作信息用于表示该数据包所要进行的具体操作。示例地,该操作信息包括功能码和目标信息。目标信息为该数据包在执行操作时所要使用的具体参数,可以包括下述的第一目标信息、第二目标信息。

可选地,解析这个数据包在应用层的数据部分的操作可以为:解析这个数据包在应用层的数据部分中的功能码;若该功能码的操作对象是基本寄存器,则根据基本字段解析这个数据包在应用层的数据部分中的数据,得到这个数据包中的第一目标信息,第一目标信息包括操作对象类型、寄存器地址、操作数量、写入值中的一个或多个;若该功能码的操作对象不是基本寄存器,则获取该功能码对应的关键字段,根据该功能码对应的关键字段解析这个数据包在应用层的数据部分中的数据,得到这个数据包中的第二目标信息。

基本寄存器是技术人员事先规定的一些寄存器,用于完成一些基本运算。示例的,基本寄存器包括离散量输入寄存器、线圈寄存器、输入寄存器和保持寄存器;非基本寄存器包括读取异常状态寄存器、回送诊断校验寄存器、编程寄存器、控询寄存器、读取事件计数寄存器、读取通信事件记录寄存器等。

基本字段是基本寄存器对应的字段。基本字段是与基本寄存器的操作相关的一些字段,据此可以对相应的基本寄存器进行操作。

第一目标信息是根据基本寄存器对应的字段解析应用层的数据部分得到的一些信息。

操作对象类型用于指示功能码的操作对象是基本寄存器中的哪类寄存器。

寄存器地址用于指示所要操作的寄存器的起始地址。

操作数量为所要操作的寄存器的数量。

写入值为向寄存器内部输入并进行逻辑运算的具体参数。

该功能码对应的关键字段即是非基本寄存器对应的字段,是为实现该功能码所指示的功能时需要用到的一些字段,也即,是与非基本寄存器的操作相关的一些字段,据此可以对相应的非基本寄存器进行操作。计算机设备中可以事先存储有各个功能码对应的关键字段。

第二目标信息是根据非基本寄存器对应的字段解析应用层的数据部分得到的一些信息。

步骤502:计算机设备根据仿真网络中传输的数据包中的关键信息,检测仿真网络中传输的正常数据包和异常数据包。

由于数据包中的关键信息能够指示数据包的一些关键特征,所以根据数据包中的关键信息可以检测数据包是正常数据包还是异常数据包。

可选地,步骤502的操作可以为:对于仿真网络中传输的任意的一个数据包,根据这个数据包使用的通信协议标准确定这个数据包中各个关键信息对应的合法值;若这个数据包中存在至少一个关键信息与对应的合法值不符,则确定这个数据包为异常数据包;若这个数据包中的所有关键信息均与对应的合法值相符,则确定这个数据包为正常数据包。

合法值用于检测数据包中的关键信息是否合法。该合法值可以是根据通信协议标准中的规定直接得到的,也可以是技术人员参考通信协议标准事先设置的,本申请实施例对此不作限定。

示例地,图6是本申请实施例提供的一种检测流程的示意图。参见图6,该检测流程包括对多源工控协议数据包进行数据链路层MAC地址检测、网络层IP地址检测、传输层端口检测、应用层检测,具体说明如下:

数据链路层MAC地址检测是对数据包中数据链路层中的源MAC地址、目的MAC地址进行检测。

MAC地址的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。比如,通信协议标准规定MAC地址格式,若数据包中的目的MAC地址的格式与通信协议标准规定的格式不一致,则确定该数据包为异常数据包。又比如,技术人员可以事先设置源MAC地址白名单,若数据包中的源MAC地址不在该源MAC地址白名单内,则确定该数据包为异常数据包。

网络层IP地址检测是对数据包中网络层中的源IP地址和目的IP地址进行检测。

IP地址的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。比如,通信协议标准规定IP地址格式,若数据包中的目的IP地址的格式与通信协议标准规定的格式不一致,则确定该数据包为异常数据包。又比如,技术人员可以事先设置源IP地址白名单,若数据包中的源IP地址不在该源IP地址白名单内,则确定该数据包为异常数据包。

传输层端口检测是对数据包中传输层中的源端口号和目的端口号进行检测。

端口号的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。比如,通信协议标准规定端口号格式,若数据包中的目的端口号的格式与通信协议标准规定的格式不一致,则确定该数据包为异常数据包。又比如,技术人员可以事先设置源端口号白名单,若数据包中的源端口号不在该源端口号白名单内,则确定该数据包为异常数据包。

应用层检测是对数据包中应用层中的头部部分和数据部分进行检测。

在一些实施例中,通信协议依靠面向连接的TCP技术实现了高速稳定的传输,拥有较为固定的协议格式和固定大小的字段,据此对数据包按位进行解析能够完整获取到数据包中的关键信息。

示例地,如表3所示,表3中包括数据包的应用层中各字段的大小,事务处理标识符字段的大小规定为2字节,协议标识符字段的大小规定为2字节,长度字段的大小规定为2字节,单元标识符字段的大小规定为1字节,功能码字段的大小规定为1字节,数据字段的大小则不做限定。

表3

本申请实施例仅以上表3为例对数据包的应用层中各字段的规定大小进行示例性说明,上表3并不对本申请实施例构成限定。

下面对应用层的头部部分的检测过程进行说明。

可选地,数据包在应用层的头部部分包括事务处理标识符、协议标识符、长度和单元标识符。

事务处理标识符的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。比如,通信协议标准规定事务处理标识符格式,若数据包中的事务处理标识符的格式与通信协议标准规定的格式不一致,则确定该数据包为异常数据包。又比如,技术人员可以事先设置指定事务处理标识符,若数据包中的事务处理标识符不为指定事务处理标识符,则确定该数据包为异常数据包。

协议标识符的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。比如,通信协议标准规定协议标识符格式,若数据包中的协议标识符的格式与通信协议标准规定的格式不一致,则确定该数据包为异常数据包。又比如,技术人员可以事先设置指定协议标识符,若数据包中的协议标识符不为指定协议标识符,则确定该数据包为异常数据包。

长度字段用于指示后续的单元标识符字段和数据部分的合法大小。这种情况下,若单元标识符字段的大小与数据部分的大小相加得到的数据与长度字段中的数据不同,则确定该数据包为异常数据包。

单元标识符的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。比如:通信协议标准规定单元标识符格式,若数据包中的单元标识符的格式与通信协议标准规定的格式不一致,则确定该数据包为异常数据包。又比如,技术人员可以事先设置指定单元标识符,若数据包中的单元标识符不为指定单元标识符,则确定该数据包为异常数据包。

下面对数据部分的检测过程进行说明。

示例地,图7是本申请实施例提供的一种数据部分的检测流程的示意图。参见图7,该检测流程包括对数据包进行功能码检测,以确定该功能码的操作对象是基本寄存器还是非基本寄存器。在该功能码的操作对象是基本寄存器的情况下继续进行操作对象类型检测、寄存器地址检测、操作数量检测、写入值检测,在该功能码的操作对象是非基本寄存器的情况下继续进行相应字段检测。

功能码的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。比如:通信协议标准规定功能码格式,若数据包中的功能码的格式与通信协议标准规定的格式不一致,则确定该数据包为异常数据包。又比如,技术人员可以事先设置指定功能码,若数据包中的功能码不为指定功能码,则确定该数据包为异常数据包。

操作对象类型的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。比如:通信协议标准规定操作对象类型格式,若数据包中的操作对象类型的格式与通信协议标准规定的格式不一致,则确定该数据包为异常数据包。又比如,技术人员可以事先设置指定操作对象类型,若数据包中的操作对象类型不为指定操作对象类型,则确定该数据包为异常数据包。

寄存器地址的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。比如:通信协议标准规定寄存器地址格式,若数据包中的寄存器地址的格式与通信协议标准规定的格式不一致,则确定该数据包为异常数据包。又比如,技术人员可以事先设置寄存器地址范围,若数据包中的寄存器地址不在该寄存器地址范围内,则确定该数据包为异常数据包。

操作数量的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。比如:通信协议标准规定操作数量格式,若数据包中的操作数量的格式与通信协议标准规定的格式不一致,则确定该数据包为异常数据包。又比如,技术人员可以事先设置操作数量范围,若数据包中的操作数量不在该操作数量范围内,则确定该数据包为异常数据包。

写入值的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。比如:通信协议标准规定写入值格式,若数据包中的写入值的格式与通信协议标准规定的格式不一致,则确定该数据包为异常数据包。又比如,技术人员可以事先设置写入值范围,若数据包中的写入值不在该写入值范围内,则确定该数据包为异常数据包。

非基本寄存器的相应字段的合法值可以是通信协议标准规定的合法值,还可以是技术人员参考通信协议标准事先设置的合法值。可以通过将非基本寄存器的相应字段与对应的合法值进行比对来确定该数据包是否为异常数据包。

需说明的是,若该数据包中所有关键信息均与对应的合法值相符,则可以直接确定这个数据包为正常数据包。

或者,若该数据包中所有关键信息均与对应的合法值相符,则可以根据该数据包中的关键信息确定该数据包所要进行的操作行为,根据该数据包所要进行的操作行为确定该数据包是正常数据包还是异常数据包。由于该数据包中的关键信息可以体现该数据包的语义,所以根据该数据包中的关键信息可以确定该数据包所要进行的操作行为。若该数据包所要进行的操作行为为异常操作行为,则可以确定该数据包为异常数据包。比如,发电设备在规定时间段进行发电。计算机设备采集到该数据包的时间在规定时间段内,但是该数据包的操作行为用于指示对发电设备进行下电,则此时可以确定该数据包的操作行为异常操作行为,也就可以确定该数据包为异常数据包。

进一步地,若该数据包所要进行的操作行为不为异常操作行为,则可以确定该数据包为正常数据包。或者,若该数据包所要进行的操作行为不为异常操作行为,则还可以在采集到该数据包时确定数据流量特征,若采集到该数据包时确定出的数据流量特征与预设的正常数据流量特征不匹配,则可以确定该数据包为异常数据包;若采集到该数据包时确定出的数据流量特征与预设的正常数据流量特征匹配,则可以确定该数据包为正常数据包。

通过对该数据包中的关键信息、该数据包的操作行为和/或仿真网络中的数据流量特征的检测可以确定该数据包为正常数据包还是异常数据包。据此,计算机设备可以确定出仿真网络中传输的所有正常数据包和所有异常数据包,然后可以获取仿真网络中传输的正常数据包中的关键信息和异常数据包中的关键信息。

步骤503:计算机设备根据仿真网络中传输的正常数据包中的关键信息和异常数据包中的关键信息,构建训练样本集。

训练样本集包括多个正训练样本和多个负训练样本。训练样本包括输入数据和样本标记。正训练样本中的输入数据为正常数据包的关键信息,正训练样本中的样本标记为正常类型。负训练样本中的输入数据为异常数据包的关键信息,负训练样本中的样本标记为异常类型。

可选地,步骤503的操作可以为:对于仿真网络中传输的任意的一个正常数据包,将这个正常数据包中的关键信息作为一个正训练样本的输入数据,将正常类型作为这个正训练样本的样本标记,构建这个正训练样本。对于仿真网络中传输的任意的一个异常数据包,将这个异常数据包中的关键信息作为一个负训练样本的输入数据,将异常类型作为这个负训练样本的样本标记,构建这个负训练样本。

步骤504:计算机设备使用训练样本集进行模型训练,得到异常检测模型,该异常检测模型用于对目标网络系统中传输的数据包进行异常检测。

异常检测模型是用于检测数据包是正常数据包还是异常数据包的模型。也即,将一个数据包的关键信息输入至异常检测模型后,异常检测模型可以输出检测结果,该检测结果可以指示这个数据包是正常数据包还是异常数据包。

示例地,计算机设备可以使用训练样本集对神经网络模型进行训练,得到异常检测模型。

该神经网络模型可以包括多个网络层,该多个网络层中包括输入层、多个隐含层和输出层。输入层负责接收输入数据;输出层负责输出处理后的数据;多个隐含层位于输入层与输出层之间,负责处理数据,多个隐含层对于外部是不可见的。

其中,计算机设备使用训练样本集对神经网络模型进行训练时,对于该训练样本集中的每个训练样本,可以将这个训练样本中的输入数据输入神经网络模型,获得输出数据;通过损失函数确定该输出数据与这个训练样本中的样本标记之间的损失值;根据该损失值调整该神经网络模型中的参数。在基于该训练样本集中的每个训练样本对该神经网络模型中的参数进行调整后,参数调整完成的该神经网络模型即为异常检测模型。

其中,计算机设备根据该损失值调整该神经网络模型中的参数的操作可以参考相关技术,本申请实施例对此不进行详细阐述。

比如,计算机设备可以通过公式

进一步的,在得到异常检测模型后,还可以基于搭建的测试平台对异常检测模型进行验证。具体来讲,技术人员通过入侵模块构建一批异常数据包,将这些异常数据包发送到仿真网络中。技术人员通过仿真网络产生一批正常数据包。检测模块获取仿真网络中传输的数据包,解析得到数据包中的关键信息,再将数据包中的关键信息输入异常检测模型,以获得数据包的检测结果。技术人员可以根据数据包的检测结果确定该异常检测模型的检测准确度。在该异常检测模型的准确度较高的情况下可以确定该异常检测模型验证成功,后续可以将该异常检测模型投入到目标网络系统中对数据包的异常检测中。在该异常检测模型的准确度较低的情况下可以确定该异常检测模型验证失败,此时需要重新对该异常检测模型进行训练,以期提高该异常检测模型的检测准确度。

示例地,在实际使用时,可以将异常检测模型安装至目标网络系统的检测模块中,检测模块采集目标网络系统中传输的数据包,并对采集的数据包进行解析得到数据包中的关键信息,将数据包中的关键信息输入到异常检测模型中,由异常检测模型输出检测结果,该检测结果用于指示该数据包是正常数据包还是异常数据包。由于异常检测模型可以较为准确地实现对目标网络系统中传输的数据包的异常检测,所以可以有效提升目标网络系统的安全性。

在一些实施例中,目标网络系统中的检测模块在输出数据包的检测结果后,若该检测结果指示该数据包为异常数据包,则可以发送告警消息,以指示目标网络系统被攻击。示例地,该告警消息可以包括该异常数据包的操作行为、该异常数据包中的关键信息等。如此,可以让技术人员快速获知目标网络系统所遭受的攻击的具体信息,以便可以针对性的快速解决相关问题。

在本申请实施例中,解析仿真网络中传输的数据包,得到数据包中的关键信息。对数据包中的关键信息进行检测,获得正常数据包中的关键信息和异常数据包中的关键信息,根据获得的正常数据包中的关键信息和异常数据包中的关键信息构建训练样本集,最后根据训练样本集进行模型训练,得到可以对目标网络系统中传输的数据包进行异常检测的异常检测模型。由于仿真网络中传输的正常数据包和异常数据包可以较为全面准确地模拟出目标网络系统中传输的正常数据包和异常数据包,所以根据仿真网络中传输的正常数据包和异常数据包的关键信息训练得到的异常检测模型可以较为准确地实现对目标网络系统中传输的数据包的异常检测,从而可以有效提升目标网络系统的安全性。

图8为本申请实施例提供的一种计算机设备的结构示意图。如图8所示,计算机设备8包括:处理器80、存储器81以及存储在存储器81中并可在处理器80上运行的计算机程序82,处理器80执行计算机程序82时实现上述实施例中的模型构建方法中的步骤。

计算机设备8可以是一个通用计算机设备或一个专用计算机设备。在具体实现中,计算机设备8可以是台式机、便携式电脑、网络服务器、掌上电脑、移动手机、平板电脑、无线终端设备、通信设备或嵌入式设备,本申请实施例不限定计算机设备8的类型。本领域技术人员可以理解,图8仅仅是计算机设备8的举例,并不构成对计算机设备8的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。

处理器80可以是中央处理单元(Central Processing Unit,CPU),处理器80还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。

存储器81在一些实施例中可以是计算机设备8的内部存储单元,比如计算机设备8的硬盘或内存。存储器81在另一些实施例中也可以是计算机设备8的外部存储设备,比如计算机设备8上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)等。进一步地,存储器81还可以既包括计算机设备8的内部存储单元也包括外部存储设备。存储器81用于存储操作系统、应用程序、引导装载程序(Boot Loader)、数据以及其他程序等。存储器81还可以用于暂时地存储已经输出或者将要输出的数据。

本申请实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。

本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。

应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

相关技术
  • 基于模型的产品构建方法、装置、计算机设备及存储介质
  • 存储设备测试方法、存储设备测试系统及存储介质
  • 性能测试平台脚本存储方法、装置、设备及存储介质
  • 测试方法、装置、计算机可读存储介质和计算机设备
  • 测试数据表的处理方法、装置、计算机设备和存储介质
  • 测试题构建方法和设备、使用该方法制作的试卷以及存储用于执行该方法的测试题构建程序的计算机可读记录介质
  • 细胞共培养模型及细胞模型构建方法、计算机设备及存储介质
技术分类

06120116514323