新闻中心
联系我们

总机:  010-8250-9710

热线:  400-1066-819

邮箱:  support@icssla.com
地址:  北京市海淀区上地东路1号院华控大厦7层

工控协议研究:Omron FINS协议安全分析

返回

2026-04-21 公司原创

 

一、概述

欧姆龙(Omron)作为全球知名的自动化控制与电子设备制造企业,长期专注于传感与控制核心技术的研发与应用,其产品广泛覆盖工业自动化控制系统、电子元器件及健康医疗设备等多个领域。在工业控制领域,欧姆龙中小型PLC产品在国内市场占有较高份额,主要包括CJ、CM、CP等系列,设备支持FINS、Host Link等多种通信协议,实现灵活高效的工业通信与控制。

自20世纪70年代初进入中国市场以来,欧姆龙始终与中国制造业协同发展,逐步构建起涵盖研发、设计、生产、销售及服务在内的一体化经营体系。

 

二、协议分析

在OSI模型中,FINS协议位于应用层,主要用于实现工业设备之间的数据交互与控制。基于以太网的FINS通信通过TCP/IP或UDP/IP协议进行数据封装与传输,即FINS报文作为应用层数据,承载于传输层之上的TCP或UDP数据报中进行收发。

在实际部署中,Omron 设备通常使用默认端口号 9600 进行FINS协议通信,该端口既可基于TCP,也可基于UDP方式进行数据传输,具体取决于设备配置及通信场景。

2.1 通信流程

FINS协议基于TCP/IP进行通信,其会话流程通常由客户端发起的请求帧触发。通信从连接建立开始,在会话期间依次完成指令交互、周期性数据查询与状态读取等操作;同时,根据业务需求,通信过程中还可能涉及异常处理及扩展命令的交互,从而形成完整且连续的通信过程。


数据包流量如下图:

2.2 协议详解

2.2.1 FINS UDP与TCP

欧姆龙(Omron)大多数产品支持FINS/UDP的通信方式。该方式具备较高的传输效率,主要在于UDP协议为无连接传输,在数据交互过程中无需建立显式的连接关系,提升了传输速度。

此外,FINS协议也支持基于TCP的通信方式(即FINS/TCP),该方式主要应用于如CS1W-ETN21、CJ1W-ETN21等以太网。在此模式下,FINS报文作为应用层数据封装于TCP/IP协议之上进行传输。相较于UDP方式,FINS/TCP通过建立可靠连接并提供重传机制,能够有效提升通信的稳定性与数据传输的可靠性,适用于对通信可靠性要求较高的场景。

2.2.2 FINS 帧格式

FINS通信是通过交换FINS命令帧和其响应帧进行的,命令帧和响应帧都为FINS头组成,用于存储传输控制信息,分别存储命令和响应信息。FINS的帧格式请求和响应差别不太大。

基于UDP的FINS协议的结构相对简单,整体结构由报头和数据两部分组成,其中报头部分为必要组成部分,为固定长度12个字节。

头部分由11个定长字段组合而成,前面10个字段分别简称为:ICF、RSV、GCT、DNA、DA1、DA2、SNA、SA1、SA2、SID,如下所示:

上述字段中,除最后一个Command Code字段为2个字节外,其余所有字段均只占1个字节。Command Code这个字段是FINS/UDP、FINS/TCP协议的实际负载部分,鉴于其涵盖内容较多,这里未做深入分析。

各字段含义释义:

针对不同功能,功能码不同,下面列举常见部分功能码:

2.2.3 数据包分析

通过对多个数据包进行分析可以发现,除Command Code与Data字段外,其余报文字段基本保持一致,整体结构与前文所述FINS报文格式无明显差异。因此,在协议分析过程中,可重点关注命令码及数据区内容。

以PLC启动与停止操作为例,对相关数据包进行进一步分析,从而明确不同控制指令在报文中的具体表现形式。对于FINS协议而言,定位特定功能的数据包相对便捷,通常可通过抓包工具中的Info字段快速判断报文类型及其功能。

在实际验证过程中,通过欧姆龙的上位机软件 CX-One 实现对PLC运行状态的管理。例如,在对应界面中切换PLC模式(Run/Stop),即可触发相应控制指令,从而获取对应的FINS通信数据包用于分析。

下图流量包可以看到运行的功能码为0x0401,其他相关字段对应功能码结合表格中内容理解。

PLC停止(编程模式)的功能码为0x0402

三、PLC分析

3.1 硬件拆解

Omron 的 PLC大概有CJ、CS、NJ、NX等系列的设备、支持的通信协议比较丰富,支持以太网的欧姆龙PLC 根据型号的不同,一般都会支持FINS协议,在此处我们研究的设备是CP1H型号,如下图:

整体图

蓝色框内为Flash存储芯片,型号S29JL032J70TFI32,属于32 Mbit(= 4MB)Flash存储,很多 PLC、工控设备、嵌入式主板里都会用到。黄色边框为SRAM临时存储芯片,型号为CY7C10411G30、RMLV0408EGSA、一般用作PLC 运行时数据缓存、I/O 状态存储  通信缓冲区  临时变量存储等。

主板正面图

四、攻击面与威胁

4.1.攻击面梳理

根据对全球的Omron设备资产测绘,发现仅暴露在公网使用FINS协议的设备就达到上千条数据,像是这种PLC的端口一旦暴露在公网上,就可以通过软件或协议直接操作设备。根据以往暴露的问题,针对FINS协议存在的攻击面与威胁总结如下:

未授权指令下发:若设备做安全配置,攻击者可以进行未授权读写、修改系统参数、控制PLC状态等影响设业务正常运行。

拒绝服务攻击:通过发送大量非法或高频率的FINS请求报文,耗尽PLC有限的连接资源和计算能力,致使PLC无法响应正常的操作员站请求。

中间人嗅探与攻击:FINS基于TCP 或 UDP 传输,由于不支持加密,攻击者可在网段中嗅探明文传输的指令,截获生产数据或指令逻辑,并进行篡改。

明文通信:FINS协议规格未对加密通信。因此,通信线路中的FINS消息以明文形式收发,易被监听。

4.2.攻击验证

4.2.1.认证密码爆破

上述分析表明,FINS协议在通信过程中采用明文传输。在设备启用密码保护后,部分关键操作需要进行身份认证,因此攻击者可以针对该密码实施暴力破解,为后续攻击奠定基础。详细操作如下:

通过在如下位置设置认证密码,此时PLC处于密码读保护状态。

通过抓包分析可以发现,密码在通信过程中以明文形式传输。这意味着在构造解除密码保护的数据包时,无额外的加密或校验处理。

分析PLC通信流量包,编写破解密码脚本,实现保护密码爆破,工控安全实验室通过自研工控安全检查工具,实现针对部分工业控制系统安全检测。

4.2.2.未授权实现PLC启停控制

上述分析表明,在默认初始化状态下,系统无有效的安全加固措施,通信过程中缺乏身份认证与访问控制机制,导致攻击者在网络可达的前提下即可构造合法的FINS报文,实现未授权指令下发。

基于对协议交互流程、字段结构及功能码的深入分析,通过编写定制化脚本实现关键命令下发,从而实现对PLC设备的远程控制与状态操作。下图四针对Omron CH1P PLC停止攻击演示。

五、安全防护

协议层防护:不用或者少用 FINS协议通信,针对部分设备支持禁用该协议通信,比如SYSMAC NJ 系列、SYSMAC NX1P 系列的设备。

访问控制:通过限制IP白名单、禁止非授权网络接入、启用 FINS 写保护、设置 PLC 密码以及使用硬件开关锁定程序修改等多重安全措施,有效提升 PLC 系统的整体防护能力。

网络隔离:通过实施 IT与OT 网络隔离、在防火墙上限制 9600 端口(FINS)访问、严格限定通信主机范围、关闭无用端口以及要求远程访问必须通过 VPN 进行等措施,全面提升工业控制系统的网络安全防护水平。

终端安全:设置强密码并定期更换、且严格限制人员访问权限、加强物理环境及对USB 等外设进行安全检测后方可使用等措施,有效提升整体安全管理水平。

六、总结

综上,FINS协议在工业控制中具有高效、简洁的通信优势,但由于缺乏认证与加密机制,在公网暴露环境下存在较大安全风险。一旦端口对外开放,攻击者可利用其特性实施未授权指令下发、数据篡改或拒绝服务等行为,影响设备稳定运行。因而在实际部署中,应通过限制协议使用、加强访问控制、实施网络隔离及完善安全管理措施,降低系统整体安全风险。