一种识别OPC流量的方法及装置与流程

文档序号:17125678发布日期:2019-03-16 00:23阅读:501来源:国知局
一种识别OPC流量的方法及装置与流程

本发明实施例涉及工控网络安全技术领域,尤其是涉及一种识别opc流量的方法及装置。



背景技术:

随着it(informationtechnology,信息科技)与ot(operationtechnology,操作技术)一体化进程不断的推进,原有的封闭的工控内网也越来越多的与企业it网络打通。工控自动化、信息化为企业带来了很多便利,但同时也带来了安全隐患。目前安全隐患的防范主要是在it和工控网络边界部署工业安全网络设备,进行适当的网络风险隔离。

opc(oleforprocesscontrol,用于过程控制的ole,是一种工业标准。本申请中的opc指的是opc-classic)协议基于微软的dcom(分布式组件对象模式)实现,作为工控领域的重要标准使用很广泛。然而,现有的安全网关设备对opc的识别仅仅使用了简单粗糙识别技术,在tcp/ip网络模型中也仅仅使用了l4/l7(服务器框架)两个维度进行识别,即dcom服务和msrpc协议头部特征识别。目前的这种对opc进行识别的技术有很大误识别的概率,常常会将普通的msrpc流量识别成opc流量,造成系统的误报。如果误识别的流量分发给其他高级功能作进一步处理,可能会引发更严重的错误,甚至影响网络连通性,同时浪费系统资源影响性能。

在实现本发明实施例的过程中,发明人发现现有的对opc流量的识别方法仅基于dcom服务和msrpc协议头部特征进行识别,误识别率较高,使得数据传输存在安全隐患且不利于进行流量的精确统计。



技术实现要素:

本发明要解决现有的对opc流量的识别方法仅基于dcom服务和msrpc协议头部特征进行识别,误识别率较高,使得数据传输存在安全隐患且不利于进行流量的精确统计的问题。

针对以上技术问题,本发明的实施例提供了一种识别opc流量的方法,包括:

在检测到服务器和终端建立通信连接后,获取通过所述通信连接传输的目标数据包;

若所述目标数据包为调用dcom子连接协商接口传输的数据包,则判断是否创建了基于所述通信连接的子连接,若是,则获取所述子连接对应的第一动态端口;

根据所述第一动态端口、对应于opc的协议接口、传输所述目标数据包的第二动态端口和传输所述目标数据包对应的协议接口识别传输所述目标数据包生成的流量是否是opc流量。

本实施例提供了一种识别opc流量的装置,包括:

获取模块,用于在检测到服务器和终端建立通信连接后,获取通过所述通信连接传输的目标数据包;

判断模块,用于若所述目标数据包为调用dcom子连接协商接口传输的数据包,则判断是否创建了基于所述通信连接的子连接,若是,则获取所述子连接对应的第一动态端口;

识别模块,用于根据所述第一动态端口、对应于opc的协议接口、传输所述目标数据包的第二动态端口和传输所述目标数据包对应的协议接口识别传输所述目标数据包生成的流量是否是opc流量。

本实施例提供了一种电子设备,包括:

至少一个处理器、至少一个存储器、通信接口和总线;其中,

所述处理器、存储器、通信接口通过所述总线完成相互间的通信;

所述通信接口用于该电子设备和终端或者服务器的通信设备之间的信息传输;

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行对应于终端的任一所述的方法。

本实施例提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行对应于终端的任一项所述的方法。

本发明的实施例提供了一种识别opc流量的方法及装置,该方法在服务器和终端建立了通信连接后,获取传输的目标数据包,若判断出该目标数据包是调用dcom子连接协商接口传输的,则在检测到基于该通信连接创建了子连接后,检测目标数据包的传输的动态接口和协议接口,若传输目标数据包的动态接口就是该子连接的动态接口且协议接口也是属于opc的协议接口,则该目标数据包生成的流量是opc流量。该方法充分考虑opc通信业务的特点,结合通信过程中创建的动态接口和通信过程中使用的协议接口对传输的数据包生成的流量是否属于opc流量进行判断,实现了对opc流量的精准识别,消除了数据传输中存在的安全隐患,也为准确地进行opc流量的统计提供了保障。

附图说明

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

图1是本发明一个实施例提供的识别opc流量的方法的流程示意图;

图2是本发明另一个实施例提供的具体的识别opc流量的方法的流程示意图;

图3是本发明另一个实施例提供的识别opc流量的装置的结构框图;

图4是本发明另一个实施例提供的电子设备的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本实施例提供的一种识别opc流量的方法的流程示意图,参见图1,该方法包括:

101:在检测到服务器和终端建立通信连接后,获取通过所述通信连接传输的目标数据包;

102:若所述目标数据包为通过dcom协议传输的数据包,则判断是否创建了基于所述通信连接的子连接,若是,则获取所述子连接对应的第一动态端口;

103:根据所述第一动态端口、对应于opc的协议接口、传输所述目标数据包的第二动态端口和传输所述目标数据包对应的协议接口识别传输所述目标数据包生成的流量是否是opc流量。

本实施例提供的方法可以由网关设备、工控网络审计设备、专用的流量统计设备等执行,本实施例对此不做具体限制。本实施例中的服务器通常指opc服务器(用于存储工业生产的生产数据或者监控数据的服务器),终端通常指opc终端(用于从opc服务器或者工业生产数据的终端或者发送工业生产相关命令的终端),opc服务器和opc终端作为工控网络中的硬件设备,通常进行工业生产相关数据的传输。执行上述方法的设备通常设置在opc服务器和opc终端之间,以对opc服务器和opc终端之间传输的数据生成的流量是否为opc流量进行识别。服务器和终端之间建立的通信连接通常为tcp连接。

需要说明的是,rpc协议中有一些接口是用作dcom子连接协商接口的,通过接口的uuid(universallyuniqueidentifier,通用唯一识别码)判断该接口是否是dcom子连接协商接口。opc的通信过程是建立在dcom子连接的基础上的,且用于进行opc通信的协议接口也是rpc协议中的一些特定接口,因此,在判断目标数据包是通过子连接传输后,再进行协议接口的判断即可确定出传输的目标数据包生成的流量是否是opc流量。

本实施例提供了一种识别opc流量的方法,该方法在服务器和终端建立了通信连接后,获取传输的目标数据包,若判断出该目标数据包是调用dcom子连接协商接口传输的,则在检测到基于该通信连接创建了子连接后,检测目标数据包的传输的动态接口和协议接口,若传输目标数据包的动态接口就是该子连接的动态接口且协议接口也是属于opc的协议接口,则该目标数据包生成的流量是opc流量。该方法充分考虑opc通信业务的特点,结合通信过程中创建的动态接口和通信过程中使用的协议接口对传输的数据包生成的流量是否属于opc流量进行判断,实现了对opc流量的精准识别,消除了数据传输中存在的安全隐患,也为准确地进行opc流量的统计提供了保障。

进一步地,在上述实施例的基础上,所述根据所述第一动态端口、对应于opc的协议接口、传输所述目标数据包的第二动态端口和传输所述目标数据包对应的协议接口识别传输所述目标数据包生成的流量是否是opc流量,包括:

获取传输所述目标数据包的第二动态端口,判断所述第二动态端口与所述第一动态端口是否相同;

若所述第二动态端口与所述第一动态端口相同,则解析通过所述子连接传输所述目标数据包的rpc协议接口的uuid;

若解析出通过所述子连接传输所述目标数据包的rpc协议接口的uuid属于对应于opc的协议接口的uuid,则传输所述目标数据包生成的流量是opc流量;

若解析出通过所述子连接传输所述目标数据包的rpc协议接口的uuid不属于对应于opc的协议接口的uuid,则传输所述目标数据包生成的流量不是opc流量。

进一步地,在上述各实施例的基础上,还包括:

若所述第二动态端口与所述第一动态端口不相同,则传输所述目标数据包生成的流量不是opc流量。

第一动态接口是建立子连接时,通过dcom子连接协商接口协商出的动态接口。由于子连接是通过dcom子连接协商接口协商出的动态接口,因此子连接中数据传输的通信协议也是rpc协议。

在确定建立了通信连接的子连接后,从目标数据包的tcp头部获取通过子连接传输的第二动态接口,若第二动态接口和创建的子连接的第一动态接口相同,则进一步对目标数据包传输的协议接口进行解析,若解析出的接口的uuid属于对应于opc的协议接口的uuid,则目标数据包生成的流量是opc流量。

例如,在rpc协议中,用于在子连接中的opc的协议接口的uuid可以通过表1表示。

表1opc协议接口报文

本实施例提供了一种识别opc流量的方法,在子连接建立后,结合目标数据包的动态端口和协议接口对目标数据包生成的流量是否属于opc流量进行判断,能够准确识别出传输的opc数据。

进一步地,在上述各实施例的基础上,所述在检测到服务器和终端建立通信连接后,获取通过所述通信连接传输的目标数据包之后,还包括:

从所述目标数据包中获取目的端口,判断所述目的端口是否为预设端口;

若所述目的端口为所述预设端口,则判断所述目标数据包是否包含rpc协议特征;

若所述目标数据包包含rpc协议特征,则根据所述目标数据包解析出通过所述通信连接传输所述目标数据包的rpc协议接口的uuid,判断解析出的通过所述通信连接传输所述目标数据包的rpc协议接口的uuid是否属于对应于dcom子连接协商接口中的uuid;

若解析出的通过所述通信连接传输所述目标数据包的rpc协议接口的uuid属于对应于dcom子连接协商接口中的uuid,则所述目标数据包为调用dcom子连接协商接口传输的数据包;

其中,所述预设端口为进行dcom子连接协商的专用端口。

由于opc通信是建立在通过dcom子连接协商接口建立的子连接中,因此需要对建立的通信连接(子连接的父连接)的端口是否为进行dcom子连接协商的专用端口进行判断。在通信连接的端口是专用端口后,再进一步对协议接口进行判断。目前,本实施例中的预设端口为135端口。

目的端口从目标数据包的tcp头部即可得到。rpc协议特征是目标数据包首包的前两个字节中的0500的字符。对应于dcom子连接协商接口是rpc协议中的一些特定接口,这些接口的uuid可以通过表2表示。

表2dcom子连接协商接口报文

在获取到目标数据包后,从目标数据包的tcp头部获取目的端口,若该目的端口是135端口,则进一步确认目标数据包传输的通信协议。读取目标数据包首包前两个字符,若首包前两个字符为0500,则目标数据包传输的通信协议为rpc通信协议。若目标数据包传输的通信协议为rpc通信协议,则读取目标数据包中的bind数据包,解析出rpc协议接口uuid,若uuid是dcom子连接协商接口的uuid(如表2中所示的uuid),则目标数据包为调用dcom子连接协商接口传输的数据包。

本实施例提供了一种识别opc流量的方法,在父连接中通过目的端口、通信协议和协议接口一一判断,对目标数据包是否为调用dcom子连接协商接口传输的数据包进行判断,只有在目标数据包是调用dcom子连接协商接口传输的数据包的前提下,目标数据包生成的流量才可能是opc流量。

进一步地,在上述各实施例的基础上,还包括:

若所述目的端口不是所述预设端口,则所述目标数据包不是通过dcom协议传输的数据包;

若所述目标数据包不包含rpc协议特征,则所述目标数据包不是通过dcom协议传输的数据包;

若解析出的通过所述通信连接传输所述目标数据包的rpc协议接口的uuid不属于对应于dcom子连接协商接口中的uuid,则所述目标数据包不是调用dcom子连接协商接口传输的数据包。

本实施例提供了一种识别opc流量的方法,在父连接中,若目标端口不是预设端口、目标数据包不包含rpc协议特征或者通过所述通信连接传输所述目标数据包的rpc协议接口的uuid不属于对应于dcom子连接协商接口中的uuid,则目标数据包不是调用dcom子连接协商接口传输的数据包,目标数据包生成的流量也不是opc流量。

进一步地,在上述各实施例的基础上,所述若所述目标数据包为调用dcom子连接协商接口传输的数据包,则判断是否创建了基于所述通信连接的子连接,若是,则获取所述子连接对应的第一动态端口,包括:

若所述目标数据包为调用dcom子连接协商接口传输的数据包,判断是否检测到基于所述通信连接创建tcp连接,若是,则基于所述通信连接创建的tcp连接为所述子连接,获取创建的tcp连接的动态端口作为所述第一动态端口,否则,传输所述目标数据包生成的流量不是opc流量。

本实施例提供了一种识别opc流量的方法,由于子连接也是tcp连接,因此在判断目标数据包为调用dcom子连接协商接口传输的数据包后,直接对是否在父连接上创建了tcp连接。通过创建的tcp连接得到第一动态端口。

图2为本实施例提供的具体的识别opc流量的方法的流程示意图,图2中的s1表示dcom父连接。s2表示dcom子连接。x1表示dcom子连接协商接口集合,如表2所示。x2表示opc专有接口集合,如表1所示。参见图2,该识别opc流量的方法包括:

通信连接通过tcp三次握手建立,即父连接建立,获取父连接s1数据包,从s1数据包的tcp头部得到s1数据包的目的端口;

判断该目的端口是否是135端口,若是,则该s1数据包的传输协议疑似rpc协议,否则,s1数据包的传输协议不是rpc协议,s1数据包生成的流量也不是opc流量;

若目的端口是135端口,则判断s1数据包的首包前两个字节是否包含0500的rpc特征,若是,则s1数据包的传输协议是rpc协议,否则,s1数据包的传输协议不是rpc协议,s1数据包生成的流量也不是opc流量;

若s1数据包的传输协议是rpc协议,则解析rpc接口uuid,若解析出的uuid属于x1,则s1数据包属于dcom流量,s1数据包生成的流量有可能为opc流量,否则,s1数据包生成的流量不是opc流量;

解析出由x1集合中的端口协商的子连接s2,在检测到基于s1创建tcp连接得到子连接的操作后,判断s1数据包的动态端口是否和创建的子连接的动态端口相同,若是,则s1数据包对应的流量为dcom子连接流量,s1数据包生成的流量有可能为opc流量,否则,s1数据包生成的流量不是opc流量;

在判断s1数据包对应的流量为dcom子连接流量后,解析子连接上的rpc接口uuid,判断解析出的uuid是否属于集合x2,若是,则s1数据包生成的流量是opc流量,否则,s1数据包生成的流量不是opc流量。

通俗来说,opc-classic基于dcom实现,终端和服务器之间的通信一般是先建立dcom协商(135端口),然后在此基础上创建动态端口子连接,真正的opc通信业务,都是发生在子连接的,子连接所使用的端口是随机的。本实施例提供的识别opc流量的方法识别dcom子连接协商接口报文,并进行深入解析,从而识别出子连接的端口,进而可以将dcom父子连接进行关联分析。opc通信存在于dcom子连接中,本实施例提供的识别opc流量的方法在识别出dcom子连接的基础之上,进一步识别是否是真实opc通信;基于opc通信接口是固定有限的事实,针对子连接报文进行深度解析,对子连接的操作接口进行识别,与opc接口集合进行匹配。该方法针对opc-classic流量进行多维度分析判断,实现对opc流量的精准识别。

图3示出了本发明的实施例提供的一种识别opc流量的装置的结构框图,参见图3,本实施例提供的识别opc流量的装置包括获取模块301、判断模块302和识别模块303,其中,

获取模块301,用于在检测到服务器和终端建立通信连接后,获取通过所述通信连接传输的目标数据包;

判断模块302,用于若所述目标数据包为调用dcom子连接协商接口传输的数据包,则判断是否创建了基于所述通信连接的子连接,若是,则获取所述子连接对应的第一动态端口;

识别模块303,用于根据所述第一动态端口、对应于opc的协议接口、传输所述目标数据包的第二动态端口和传输所述目标数据包对应的协议接口识别传输所述目标数据包生成的流量是否是opc流量。

本实施例提供的识别opc流量的装置适用于上述实施例中提供的识别opc流量的方法,在此不再赘述。

本发明的实施例提供了一种识别opc流量的装置,该装置在服务器和终端建立了通信连接后,获取传输的目标数据包,若判断出该目标数据包是调用dcom子连接协商接口传输的,则在检测到基于该通信连接创建了子连接后,检测目标数据包的传输的动态接口和协议接口,若传输目标数据包的动态接口就是该子连接的动态接口且协议接口也是属于opc的协议接口,则该目标数据包生成的流量是opc流量。该装置充分考虑opc通信业务的特点,结合通信过程中创建的动态接口和通信过程中使用的协议接口对传输的数据包生成的流量是否属于opc流量进行判断,实现了对opc流量的精准识别,消除了数据传输中存在的安全隐患,也为准确地进行opc流量的统计提供了保障。

图4是示出本实施例提供的电子设备的结构框图。

参照图4,所述电子设备包括:处理器(processor)401、存储器(memory)402、通信接口(communicationsinterface)403和总线404;

其中,

所述处理器401、存储器402、通信接口403通过所述总线404完成相互间的通信;

所述通信接口403用于该电子设备和终端或者服务器的通信设备之间的信息传输;

所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:在检测到服务器和终端建立通信连接后,获取通过所述通信连接传输的目标数据包;若所述目标数据包为调用dcom子连接协商接口传输的数据包,则判断是否创建了基于所述通信连接的子连接,若是,则获取所述子连接对应的第一动态端口;根据所述第一动态端口、对应于opc的协议接口、传输所述目标数据包的第二动态端口和传输所述目标数据包对应的协议接口识别传输所述目标数据包生成的流量是否是opc流量。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:在检测到服务器和终端建立通信连接后,获取通过所述通信连接传输的目标数据包;若所述目标数据包为调用dcom子连接协商接口传输的数据包,则判断是否创建了基于所述通信连接的子连接,若是,则获取所述子连接对应的第一动态端口;根据所述第一动态端口、对应于opc的协议接口、传输所述目标数据包的第二动态端口和传输所述目标数据包对应的协议接口识别传输所述目标数据包生成的流量是否是opc流量。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如,包括:在检测到服务器和终端建立通信连接后,获取通过所述通信连接传输的目标数据包;若所述目标数据包为调用dcom子连接协商接口传输的数据包,则判断是否创建了基于所述通信连接的子连接,若是,则获取所述子连接对应的第一动态端口;根据所述第一动态端口、对应于opc的协议接口、传输所述目标数据包的第二动态端口和传输所述目标数据包对应的协议接口识别传输所述目标数据包生成的流量是否是opc流量。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的电子设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

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

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