胆囊息肉

注册

 

发新话题 回复该主题

终于有人讲清楚了工业协议如何识别 [复制链接]

1#

1概况

应用协议识别技术是通过对TCP/IP协议的最高层进行分析,从而识别出运行在TCP/IP协议以上的具体应用。应用层协议识别技术是实现更细化的网络应用监控和网络安全管理的基础和前提。随着工业互联网改革的推进,越来越多的工业控制设备接入工业互联网,对于网络安全设备来说,为了保护和监测这些设备,识别它们之间使用的工控协议是第一步。

如图1所示,网络安全设备处理报文时,一般依次经过数据包解码、协议识别、工控协议深度解析和工控安全业务处理等流程。其中,协议识别是报文进入后续业务处理的基础,它是网络报文进入工控协议深度解析的分流器。协议识别的准确率、覆盖率和处理效率直接决定了网络安全设备的功能完备性和处理速度。

图1网络安全设备业务处理流程

根据TCP/IP协议模型,如图2所示,数据包解码模块主要用来解析数据链路层、网络层和传输层的数据,协议识别模块一般根据网络层、传输层和应用层的数据来识别协议,工控协议深度解析模块根据协议识别的结果,对应用层数据进行深度解析,最后将解析的数据交给工控安全业务处理模块进行安全规则校验。

图2TCP/IP协议模型

目前应用协议识别主流技术主要包括:

√基于TCP/UDP端口的识别技术

√基于报文负载特征的识别技术

√基于关联分析的检测和识别技术

√基于行为特征的识别技术

本文将简要介绍上述识别技术,并分析这些技术在工业网络中的适用性。

2协议识别技术介绍

2.1.基于TCP/UDP端口的识别技术

传统的应用协议识别算法仅使用TCP/UDP端口进行识别协议。在Internet编号分配管理机构IANA(InternetAssignedNumberAuthority)中有各个协议详细的注册端口号。例如,常用的工业互联网协议OPC基于的DCERPC协议的端口号是,Modbus的端口号是,IEC的端口号是,部分常用应用使用端口见下表。由于基于TCP/UDP端口的识别算法简单,需要的相关信息少,基于TCP/UDP端口的识别算法的时间复杂度和空间复杂度是所有协议识别算法中最低的。

表1部分常用端口

在传统的IT网络中,网络环境是开放的,许多新的应用协议使用的不在Internet编号分配管理机构IANA(InternetAssignedNumberAuthority)中分配的端口号,或者使用知名端口传输其他的用户数据,同时应用程序还可以使用可变的端口号,这使得此算法所能识别的应用协议在总应用协议中所占的比重逐渐减少。因此,在IT网络中,基于TCP/UDP端口识别技术的准确性已经低于50%。

然而,在工业网络中,网络环境是封闭的,网络中可连接的设备、服务、拓扑结构等都是已知的。在封闭的网络中,不会大量出现未知的新应用,已知服务的端口号变更情况也是可以获取的,基于TCP/UDP端口的识别技术完全可以保证报文的覆盖率和识别率。另外,工控网络对网络安全设备的处理速度有比较高的要求,基于TCP/UDP端口的识别技术是目前常用的协议识别技术中效率最高的,它可以有效的提高网络安全设备的处理速度,因此,基于TCP/UDP端口的识别技术非常适用于工业网络环境。

2.2.基于报文负载特征的识别技术

为了提高应用协议识别的准确性,从年开始,有很多研究者利用网络数据报文的负载部分对应用层协议进行识别。此方法需要事先详细分析待识别的应用协议的报文负载内容,找出其通信过程中不同于其他任何应用协议的内容作为该应用协议的特征,也称作该应用协议的指纹特征。在应用协议识别过程中,该类算法检查数据流中每个数据包TCP首部或UDP首部之上的应用层负载部分,若匹配到某应用协议的指纹特征,则将该数据流标记为相应的应用协议。基于报文负载特征的识别技术的准确性较高,但是该识别技术依然存在以下几个问题:

√该方法需要检查大量报文的应用层负载内容以判断是否命中上述特征,此外,该方法需要额外存储规则数据和数据报文的负载部分,时间和空间复杂度都比较高;

√使用该方法需要持续的跟踪待识别协议的发展,当应用层通信过程发生变化或者新的应用协议出现时,网络设备必须重新加载记录特征数据的文件以应对上述问题;

√对于协议特征比较弱的协议,该方法存在较高的误报率;

在工业网络中,常见的工业协议的指纹特征都比较弱,即可以用来识别的负载特征比较短,例如OPC,Modbus,IEC,可以用来作为指纹特征的字段长度不多于两个字节,如果使用基于报文负载特征的识别技术,将带来比较高的误报率。图3为Modbus负载部分示例,Modbus是一个典型的二进制协议,负载中没有可以区分其他协议的特征。

图3Modbus协议负载示例

但是,当使用基于TCP/UDP端口的识别技术无法识别协议时,例如S7协议和MMS协议使用了相同的端口,这时就需要使用报文负载特征的识别技术来区分它们了,如图4所示。

图4S7和MMS报文在wireshark中的显示信息

2.3.基于关联分析的检测和识别技术

在网络中,有一些应用协议使用不止一条连接流传输数据。此类业务应用的控制通道和数据通道是分离的,数据通道没有任何指纹特征和端口特征,因此,需要使用关联分析的识别技术对数据流进行识别。该技术首先识别出控制通道,其次分析控制通道数据流中协商数据通道信息的数据,得到数据通道的IP和端口特征,最后,根据上述IP和端口特征来识别数据流。我们常见的FTP,OPCDA等协议的数据通道就需要靠关联分析的检测和识别技术来进行识别。图5展示了OPCDA控制通道和数据通道流量信息,其中是OPCDA控制通道端口,、和都是协商出来的数据通道端口。图6是OPCDA控制流报文,服务器通过负载报文告诉客户端开放其所有IP地址的端口,以便客户端跟其交换数据。

图5OPC控制流及其数据流

图6OPC协商数据流报文

关联分析具有特殊的适用性,因此一般需要和基于TCP/UDP端口的识别技术等其他技术配合使用,能够很大的提高应用协议识别的准确率。由于工业网络中常见的协议OPCDA也使用多条数据流的方式传输数据,因此,此技术依然适用于工业网络。

2.4.基于行为特征的识别技术

基于行为特征的识别技术利用统计学原理,根据应用协议数据流的统计学特征,即:不同的应用协议体现在会话连接状态或者数据流上的状态各有不同。例如,基于P2P下载应用的流量的统计学特征为长流大报文,平均包长都在byte以上,下载时间长,连接速率高,优先使用的传输层协议为TCP等。在基于行为特征的识别技术的使用过程中,通过分析数据连接流的包长、连接速率、传输字节量、包与包之间的时间间隔等信息来与已知标准答案的流量特征模型对比,从而实现识别应用类型,即所使用的协议类型。因此,该方法要进行多元判断分析。同时,由于该方法不需要逐包读取报文内容,其识别速度也比较快。

总体上,基于行为分析识别协议方法近年来逐渐成为研究的热点。每种协议的规范不同,数据通信行为便会不同,此种技术理论上可以识别出所有的应用协议。但此算法需要对应用协议作深入的研究,掌握该应用协议的统计学特征,进而找出其区别于其他应用协议的统计学特征;对于一些特征相近的应用协议,基于行为特征的识别技术的误报率较高。

对于工业网络,网络安全设备误识别流量的代价比较大,可能会造成网络的意外中断等现场事故,因此,基于行为特征的识别技术不适用于工控网络。

表2常用识别技术对比

3结论

不同于传统IT网络,工控网络环境是封闭的,网络中可连接的设备、服务、拓扑结构等都是已知的。在工控网络环境中,对于使用一条连接流传输数据的协议,例如Modbus,IEC,CIP,DNP3,只需要使用基于特征端口的识别技术进行识别即可,在保证识别率的情况下还能极大的提高网络设备的处理效率;对于使用多条连接流传输数据的协议,例如OPCDA,除了使用基于特征端口的识别技术外,辅助使用关联分析的检测和识别技术即可识别OPCDA协议使用的全部数据流;对于使用相同端口的协议,例如S7,MMS,除了使用基于特征端口的识别技术外,辅助使用基于负载内容特征的识别技术即可识别出这些应用。

除此之外,出于安全的考虑,工控网络环境中可能使用非标准IANA端口传输数据,例如修改Modbus传输数据的端口为TCP。由于端口的修改都是已知的,因此,我们依然可以使用基于特征端口的识别技术对其进行识别,同时,我们可以在识别时同时匹配提供服务的设备的IP地址信息,来进一步提高识别的准确率。上述识别技术虽然比较简单,但是却是最适合工控网络环境的识别技术并能有效守护最终用户网络流量的安全。

分享 转发
TOP
发新话题 回复该主题