- 全部
- 企业新闻
- 行业动态
- 前沿技术
总机: 010-8250-9710
热线: 400-1066-819
工控协议研究:三菱PLC协议安全分析
返回2026-02-27 公司原创
一、概述
三菱电机是日本知名的综合性制造企业,业务涵盖工业自动化、能源、电力、轨道交通及电子与信息技术等领域,在 PLC 与工业控制系统方面处于全球领先地位。
三菱设备支持通信的协议比较多、比如Modbus、MC、Melsoft等,三菱 MELSOFT 协议作为三菱电机公司开发的私有组态协议,在工业控制系统中扮演着关键角色。该协议主要用于实现编程软件与三菱 PLC之间的通信交互,是构建自动化控制系统的基础通信框架。因此本文着重介绍Melsoft协议。
从技术架构来看,Melsoft协议采用分层设计思想,底层基于标准TCP/IP 协议栈实现,但在应用层采用了专有的数据封装格式和通信机制。
协议支持多种通信模式,包括面向连接的 TCP 通信和无连接的 UDP 广播通信,能够适应不同工业场景下的通信需求。
二、协议分析
2.1.三菱PLC协议
三菱PLC支持多种协议,常见的使用协议为Melsoft、MC、SLMP、CC-Link这几种:
Melsoft协议是三菱PLC的私有协议,常用端口为5560,用于编程软件与三菱PLC通信。场使用与程序下载、在线监控、调试等场景。
MC协议有多个版本,常见的MC-Protocol 采用了二进制的通讯格式,支持点对点和多点通信,并且具有较高的通信速率和稳定性。该协议可以通过串口、以太网等不同的物理介质实现,常用端口5007。
SLMP是以太网对PLC设备进行数据访问的一种协议,SLMP协议是基于TCP/IP,SLMP协议有两种不同的报文帧,分别为3E帧和1E帧。某种程度上与MC协议的报文格式有相似之处。
CC-Link现场总线协议,用于实现设备之间的数据通信和控制。它最初由三菱在1996年推出,现代主要用于工业以太网通信,具有高速通信、高可靠、灵活等特点。
下面针对这几种协议做一个简单总结:
2.2.通信流程
在这里,我们实验采用三菱 GX Works3 作为主要编程软件环境,该软件是三菱电机推出的专业 PLC 编程工具,支持多个系列的 PLC ,这里主要对三菱Melsoft协议做分析。
通信流程大概可分为如下步骤:
①连通性探测:首先是进行连通性探测,探测设备是否在线,设备如果在线PLC会反回应答。
②会话建立:上述步骤成功过后,开始请求建立 Melsoft 会话。
③获取Challenge Code:客户端请求PLC生成挑战码(Challenge Code),PLC随即响应返回。
④权限认证:客户端根据Challenge Code 计算响应值,PLC校验结果,如果成功就进入授权状态。
⑤业务通信:正常的Melsoft业务数据请求与响应。
⑥会话关闭:数据传递完成后,客户端结束会话。
流程图如下:
2.3.数据包结构
数据帧类型:
可以看到这里的响应帧ID是在请求帧的基础上加了0x80,例如0xDA= 0x5A + 0x80
数据包:
0x5A请求连接帧:
0xDA连接响应帧:
0x57读取信息请求帧:
0xD7读取信息响应帧:
Melsoft数据帧结构分类两类,根据用途和功能的不同,报文也存在一定差距,某些功能比较简单的,比如会话管理、绑定、确认等报文,相对简短。另一类就是数据传输类的,需要传输数据较大报文,包含功能码、数据、指令、参数等内容。
短报文结构:
长报文结构:
上面了解了Melsoft协议的结构,接下来对它的相关功能点位进行分析,可以看到上位机功能支持启动、停止、重置、暂停,这里主要介绍下启动和停止的数据包点位。
启动报文:
通过分析和对比查看,发现下图第一、二功能码是控制启停点位。
停止报文:
停止功能码点位如下图所示:
在PLC未做安全认证的情况下,可通过这些点位实现对PLC启停攻击。
通过分析,可以总结几个典型功能码:
三、PLC初步分析
三菱PLC型号比较多,根据用途和体积大小可分为大型、中型、小型PLC,其中大型PLC有Q系列,中型PLC有L系列,小型PLC有FX系列。
3.1.硬件分析
本文以FX5UJ为例,对PLC进行拆解分析。FX5UJ是三菱电机FX5系列中的一款经济型PLC,属于新一代高性能小型可编程控制器。
整体面
拆解面
蓝色框内为MCU,型号是R5F564MLDDFC,属于瑞萨RX600系列的32位微控制器,核心为RXv2,最高主频可达120MHz,同时拥有4MB Flash、512KB RAM,采用176引脚的LFQFP封装,集成丰富的通信与模拟外设,适合工业控制、电机驱动等场景。
黄色框内为存储芯片MX29GL640EBXEI-70G,MX29GL640EBXEI-70G 是旺宏电子生产的一款非易失性存储芯片,用于存储程序代码、配置数据或其他需要长期保存的数据。
3.2.存储芯片数据提取
查看芯片手册,发现该设备中的MCU与存储芯片都有存储代码的功能。通过RT809H编程器与BGA48烧录座进行数据提取,过程可参考《AB PLC固件提取与逆向分析》一文。
提取出来的文件包含PLC类型、程序等信息,如图所示:
通过Binwalk对提取的文件做初步分析,可以发现该文件主要由三类数据组成:
●LZMA压缩数据块
●HTML文档片段
●PNG图像资源
可以通过对LZMA数据解压后再分析,里面存储的是参数、标签和程序。由于该文件并非真正PLC固件代码,所以我们暂时不做进一步分析。
3.3.GX Works上位机分析
在GX WORKS3运行后,使用Windbg附加主进程,可以看到其加载的模块如下:
通过对send/sendto函数设置断点,执行上位机中的用户数据读取、写入等操作,通过调用栈分析,对涉及到的DLL进行简单分析,作用如下:
●ECUdp.dll:是对ws2_32.dll的简单封装,专门处理UDP数据包。
●ECUNIT_PLC_LN.dll主要负责数据封包和解包,实现PLC通信协议。
●ECCommunication2.dll:通信管理层,对CUNIT_PLC_LN.dll进一步封装,提供稳定通信管理。
●_DNavi.dll:调用ECCommunication2.dll中的相关函数。
●_DNaviPcEasyFunction.dll:调用_DNavi.dll中的相关函数。
四、攻击面分析
Melsoft协议常见的攻击方式如下:
暴力破解:Melsoft 协议在认证交互过程中对用户名的校验反馈较为明确,远程攻击者在无需预先身份验证的情况下,可通过构造登录请求并观察响应差异,对设备中已注册的合法用户名进行枚举。在此基础上,进一步结合弱口令或口令空间较小的场景,存在对 PLC 登录口令实施暴力破解的可能。
重放攻击:在未配置口令,或仅启用低强度权限认证的情况下,Melsoft 协议对控制指令缺乏有效的会话绑定与时序校验机制。攻击者在获取到合法通信数据包后,可直接对其进行重放,从而执行包括 PLC 启动、停止等关键控制操作,对生产过程造成影响。
拒绝服务:在监控软件与 PLC 通信过程中,攻击者若能接入通信链路,可通过向 Mitsubishi 监控软件注入畸形或特制的数据包,触发其异常处理缺陷,导致监控软件崩溃,从而形成拒绝服务攻击,影响运维与监控能力。
基于上述攻击面分析,本文进一步对 Melsoft 协议的登录流程进行了逆向分析,并编写自动化脚本对 PLC 登录口令进行爆破验证。在成功获取合法控制权限后,攻击者可远程向 PLC 下发停止指令,实现对设备运行状态的直接干预。相关攻击效果如下图所示。
五、总结
随着工业控制系统网络化趋势加速,以及当今时代攻击技术进步,Melsoft 协议在缺乏身份认证、加密与完整性保护的情况下,且在网络可达条件下使攻击者能够通过协议指令实现对 PLC 运行状态、重放、篡改等严重安全风险。因此,应推动 Melsoft 协议向具备身份认证、报文完整性保障以及关注该协议安全动态,若出现相关漏洞立即整改,并结合工业防火墙、安全网关与监测防护体系设备,监测整体工业网络安全性。