晏腾飞
摘 要:DCP协议作为PROFINET协议的一部分,作用是对PROFINET设备进行名称分配以及设置网络参数等。介绍DCP报文的基本格式、含义,以菲尼克斯PLC模块及管理型交换机搭建的简单PROFINET工业以太网为例,结合网络报文分析工具Wireshark,对PROFINET设备名称、IP地址等网络参数设置的过程细节进行了分析,总结DCP的特点以及应用注意事项。
关键词:PROFINET;DCP;Wireshark;协议
中图分类号:TP391文献标识码:A文章编号:2096-6903(2022)08-0123-03
0 引言
PROFINET是一个开放式的工业以太网通讯协议,由PROFIBUS & PROFINET国际组织(PI)所提出。PROFINET吸收了多年成熟应用的PROFIBUS和工业以太网的技术特点,采用开放的IT标准,与以太网的TCP/IP标准兼容,并提供了实时功能,能满足所有自动化的需求[1]。自2003年起,PROFINET成为IEC 61158及IEC 61784标准中的一部分。成为市场上领先的工业以太网标准。根据PROFIBUS & PROFINET国际组织(PI)发布的最新数据,截至2021年底,总计已有4800多万台PROFINET设备安装于工业现场,与2019年相比增加了850万台,增长率22%。
分析PROFINET使用DCP协议对设备进行发现、名称分配、设定网络参数的过程,采用管理型交换机以及Wireshark对设备间的真实网络报文进行捕获与解析,以了解DCP协议工作的细节与特点。
1 DCP简介
DCP全称Discovery and Basic Configuration Protocol,意为发现和基本配置协议。在将PROFINET设备投入使用前,需要通过工程工具或者控制器设置该设备的名称、IP地址等参数。设备名称(Name of Station)对于PROFINET网络中设备来说是必须的,且同一网络中的设备名称不能重复。为防止重启后失效,参数需永久性地保存在设备的设置中[2]。
DCP工作在数据链路层,依靠设备的MAC地址区分不同设备,因此无须设置IP地址即可发现或者设定PROFINET设备,这个特性还带来一个影响:计算机只能发现和设定在同一子网中的PROFINET设备,即DCP数据帧不能穿过NAT设备,例如路由器。
2DCP帧结构
一个DCP帧具有以太网类型0x8892(表示PROFINET),其结构如图1所示,其中数据字段的长度及取值见表1。
服务ID代表了DCP的四大功能:Get、Set、Identify、Hello,最常用的功能是Set和Indentify。Set表明这是一个设置帧,当服务类型是Request时,收到该帧的设备将按照数据块中的内容设置自己的名称、IP地址、子网掩码、网关、闪烁识别、恢复出厂设置等,设置完成便向对方发送服务类型为Response Success的设置帧表示应答。Identify表明这是一个识别帧,功能是PROFINET设备的识别和应答,收到该帧的设备会向控制器回复自己的信息,包括设备名、型号、厂商、IP地址等。工程工具扫描网络中有一些PROFINET设备便是使用此功能。
Xid:请求和响应通常是成对出现,所有的响应都要包含和请求同样的Xid,以便控制器确定收到的响应是属于哪一个请求。
响应延迟:由于 DCP 可能同时查询网络上的所有设备,它们也会或多或少地立即发送回复,因此可能出现同时发送的情况。这将导致流量大幅增加,并可能导致拥塞,从而干扰设备间关键过程数据的交换。为了防止这种情况,响应延迟字段用于定义一个时间间隔,所有响应都应在该时间间隔内展开。有效值是从 1 到 6400,这意味着响应可以是最小10 ms和最大64 s。
3DCP报文监听
3.1 硬件设置
以菲尼克斯型号为AXC 3050的PLC及BK PN子站为主要研究对象,使用管理型交换机以及Wireshark网络分析工具来对DCP的工作过程进行具体分析。
将控制器AXC 3050连接至交换机端口1,将子站BK PN连接到交换机端口3,安装了Wireshark的计算机连接到交换机端口5,如图2所示。
3.2 軟件设置
设置管理型交换机,将端口5作为端口1 的镜像端口,即端口1的所有数据帧将会被复制到端口5,包括流出和流入的数据,接到端口5的Wireshark便可以捕获并分析所有AXC 3050与BK PN模块之间的通信。打开Wireshark,选择连接了交换机端口5的网卡,点击捕获,开始记录端口5上的数据。
在工程软件中新建一个项目DcpTest,将各设备做如表2的配置,其中,AXC 3050的MAC地址为a8:74:1d:02:6e:12,BK PN的MAC地址为00:a0:45:91:cf:c9。
在将项目下载到AXC 3050前,应先设置其名称及IP地址、子网掩码等,步骤如下,打开DCP Tool,扫描设备,找到AXC 3050,设置其名称为axc-30503,IP地址为10.11.11.2。
3.3 DCP数据帧分析
在Wireshark过滤器中输入pn_dpc以过滤掉无关的帧。可以观察到DCP Tool设置设备名称及IP的过程(如图3所示):
帧4为DCP Tool发送的设置名称请求,目的地址正是AXC 3050的MAC地址。内容是“站名称:axc-30503”。
帧5为AXC 3050的回复:设置完成,响应正常。
帧10为DCP Tool发送的设置IP请求,内容是“永久保存,IP地址10.11.11.2,子网掩码255.255.255.0等”。
帧11是AXC 3050的回复:设置完成,响应正常。
将项目下载到AXC 3050中,等控制器启动完成,可以观察到若干个识别请求。应该注意,DCP 识别请求对于 PROFINET 设备的识别和参数化至关重要。在控制器启动时,它们用于搜索组态中的 PROFINET 设备,这个过程循环重复,直到相应的设备响应。可在图4中观察到这种现象。
帧17~47表明控制器向MAC地址01:0e:cf:00:00:00发送识别请求帧,这个特殊的MAC是PROFINET的组播地址。这些报文的含义如下:哪个站的名称是axl-f-bk-pn,收到请响应。因为BK PN的设备名称还未设置,所以网络中没有设备能响应控制器的请求,控制器就一直重复发送这个组播帧。
控制器启动完成后,通常在 PROFINET 网络中不再发生DCP多播。可能的例外是临时可访问设备的配置,例如由于工具更改或无线链接。应该根据情况决定采取措施(例如临时注销节点)来最小化 DCP 多播的数量。如果控制器启动后需搜寻的设备数量大于20,则会导致组播负载太高,不能保证无故障运行[4]。
下一步使用DCP Tool设置BK PN模块的名称为axl-f-bk-pn,然后观察控制器和子站间的数据(如图5所示)。
帧89,控制器请求:设置子站的名称为axl-f-bk-pn。
帧90,子站回复:设置完成。
帧96,控制器组播:哪个站的名称是axl-f-bk-pn。
帧97,子站回复:本站的名字是axl-f-bk-pn。
帧117,控制器:设置IP为10.11.11.30等参数。
帧118,子站回复:设置完成。
打開DCP Tool,重新扫描设备,可以观察到子站BK PN的IP地址等网络参数已经分配,与DcpTest项目中的设置保持一致。
可以看出,DCP与常见的DHCP(动态主机配置协议)有相似之处[3],都是对网络中的设备分配IP地址等参数的协议,主要不同点是DCP由控制器主动查找设备,对符合硬件组态的设备主动进行分配设置,不能跨网段,而DHCP是设备向主机发起请求,主机再进行响应,其作用范围是跨网段的。
4 基于DCP的网络攻击
目前的DCP协议中并没有设计身份验证字段,而该协议又负责设备的配置,因此通过伪造报文,可以发动对PROFINET网络的攻击。例如数据包洪流攻击、数据包嗅探、Xid欺骗等[5]。以数据包洪流攻击为例,正常网络中,控制器识别出设备并收到响应之后便不再发送识别请求。而伪装成控制器的攻击者可以扫描出网络中的所有设备的名称,然后向网络中组播大量的识别请求,设备可能会忙于进行响应而不能处理正常的数据,甚至导致宕机(如图6所示)。
不过,正因为DCP报文使用的是第二层协议,不能通过路由设备,恶意设备必须能访问到控制器所在的同一网段才能起到作用,所以影响较小。当网络规模较大,难以控制接入设备时,被入侵的风险也随之增加了。
5结语
通过搭建一个PLC主站及子站构成的简单PROFINET网络,分析了DCP发挥作用的过程,挖掘DCP工具不能跨子网进行设置的原因,以及控制器如何发现并管理PROFINET设备的细节,还对利用DCP进行网络攻击的可能性进行了分析。有助于厘清DCP工作的基本原理、抓包网络的搭建以及工程工具的适用环境。
参考文献
[1] 廖常初,祖正容.西门子工业通信网络组态编程与故障诊断[M].北京:机械工业出版社,2009:336.
[2] 和淑芬,沈勇,范雄涛,等.深入解析 ProfiNet IO 系统启动前寻址的实时报文[J].电气技术,2018(2):96-101.
[3] 陈曦.PROFINET IO技术中的DCP协议[J].中国仪器仪表, 2016(10):27-30.
[4] PNO, PI.PROFINET Commissioning Guideline for PROFINET[C].PROFIBUS Germany,2019.
[5] Sangkyo Oh, Hyunji Chung, Sangjin Lee, et al. Advanced Protocol to Prevent Man-in-the-middle Attack in SCADA System[J].International Journal of Security and its Applications,2014(2):1-8.