新闻中心
联系我们

总机:  010-8250-9710

热线:  400-1066-819

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

施耐德 PLC 漏洞挖掘实战

返回

2026-10-09 公司原创

 

1、概述

施耐德电气是工业自动化领域的重要厂商之一,其可编程逻辑控制器(PLC)广泛应用于能源、制造、交通、水处理等工业控制场景。PLC作为工业控制系统中的核心控制设备,通常负责现场信号采集、逻辑运算、设备控制以及与上位机、工程站和其他控制设备之间的数据通信。随着工业控制网络逐渐由相对封闭的生产网络向以太网化、信息化方向发展,PLC所面临的网络攻击面也随之增加。

本文以施耐德Modicon M221为主要研究对象,从网络通信协议、设备硬件以及固件软件三个层面对其潜在攻击面进行分析。首先通过抓取EcoStruxure Machine Expert-Basic等工程软件与PLC之间的通信流量,对UMAS通信协议及其报文结构进行分析;随后获取并解包设备固件,分别针对嵌入式Web服务和PLC核心固件进行静态分析与逆向分析,从而梳理设备可能存在的安全风险与漏洞入口,并在此基础上提出相应的安全防护建议。

2、硬件拆解

M221是施耐德面向小型机械设备和基础自动化场景推出的一款紧凑型可编程逻辑控制器,具有体积小、集成度高、配置灵活等特点,可支持数字量、模拟量扩展以及Modbus TCP、Modbus串行通信等方式,常用于包装、输送和小型生产设备控制。下面对该PLC进行拆解和分析。

首先对目标 PLC 进行硬件拆解,对其内部电路板、核心处理器及存储器件进行识别与分析,并在此基础上完成设备固件的提取。

01、Renesas RX630 : MCU,32 位 RXv1 架构、最高 100 MHz、1.5 MB Code Flash、128 KB SRAM、32 KB Data Flash;

02、ISSI IS62WV25616EBLL-45TLI : 外部 SRAM,容量 512 KB,256K×16 位,45 ns,44-pin TSOP-II。

通过逆向分析确认,该固件由192字节厂商自定义头部和Motorola S-record文本数据组成,目标处理器采用32位Renesas RX架构,数据存储方式为小端序。在明确固件结构和处理器架构后,进一步使用逆向分析工具完成固件加载、反汇编、函数识别等工作,为后续漏洞挖掘提供代码分析依据。

3、协议分析

UMAS是施耐德部分 Modicon 系列PLC使用的一种专有工程通信协议,主要用于工程软件与PLC之间进行设备管理、状态查询以及工程操作。在M221的以太网通信过程中,UMAS通常基于Modbus/TCP进行传输,并使用TCP 502端口。与标准Modbus主要用于线圈、寄存器等过程数据读写不同,UMAS更多涉及PLC自身的工程管理和控制功能,因此其协议内容对设备安全分析具有较高价值。

通过抓取上位机与PLC之间的实际通信流量,可以对UMAS的连接过程、请求与响应关系以及不同类型报文进行分析,并进一步识别报文中的功能标识、字段结构和数据内容,为后续协议模糊测试、异常报文构造以及潜在漏洞挖掘提供基础。

3.1 通信流程

以太网通信场景中,UMAS 通常是封装在 Modbus/TCP 报文中的。更准确地说,UMAS 是施耐德基于 Modbus/TCP 扩展出来的专有工程协议。对 M221 通信的逆向分析显示,当Modbus功能码为0x5A时,后续Data 字段为 UMAS 数据。

 

3.2 报文解析

本次分析通过抓取上位机软件EcoStruxure Machine Expert - Basic和M221 PLC之间的通信报文进行分析,根据实际抓取的报文如下图:

UMAS协议共有4个字段:

●Function_Code:固定为0x5A表示这条报文承载 UMAS 私有协议。

●Pairing_Key:PLC 完成 reservation 后会向客户端返回一个 1 字节 Session Key,之 后涉及修改 PLC 状态 的请求需要携带它。

●Umas_Function_Code:UMAS 内部命令码,请求时说明要做什么。

●Umas_Data:该命令的参数或返回数据,格式由 UMAS 命令决定。

 

3.3 逆向代码分析

根据之前逆向工程的伪代码,对M221 502端口接收报文的逻辑进行分析后得到结果,M221 502端口根据功能码的不同,总共可以处理3种不同的报文。

1.Modbus协议,功能码为 01/02/03/04/05/06/0F/10/17/2B ...

2.UMAS协议。功能码为 5A

3.Legacy私有编程会话,功能码为 44

继续深入分析对UMAS协议的处理逻辑,可以得到UMAS协议的功能码,如下表:

4、PLC漏洞挖掘

M221是施耐德面向小型机械设备和基础自动化场景推出的一款紧凑型可编程逻辑控制器,具有体积小、集成度高、配置灵活等特点,可支持数字量、模拟量扩展以及Modbus TCP、Modbus串行通信等方式,常用于包装、输送和小型生产设备控制。

 

 

4.1 攻击面梳理

目前,施耐德仍把M221作为 Modicon 主力入门产品销售,一旦这种设备暴露在公网上,会导致严重的生产事故,以下是总结的PLC的攻击面:

●中间人攻击与报文重放风险:UMAS 协议在通信过程中缺少有效的加密保护机制,部分控制指令及管理操作以明文形式传输。攻击者在获取通信数据后,可能通过监听、修改或重放报文,实现未授权操作或影响 PLC 的正常控制逻辑。

●密码保护机制分析风险:通过对 PLC 固件进行逆向分析,可以发现设备认证及读写保护相关的实现逻辑。若密码存储方式、校验算法或密钥保护机制存在缺陷,攻击者可能恢复或破解保护密码,从而绕过设备访问控制限制。 

●拒绝服务(DoS)攻击风险:攻击者可利用 PLC 通信服务处理机制缺陷,通过大量建立异常连接、发送畸形数据包等方式消耗设备资源,使 PLC 通信异常甚至进入故障状态。此外,若协议处理过程中存在内存安全漏洞(如栈溢出),还可能触发系统异常,影响设备稳定运行。

 

4.2攻击验证

本次研究主要围绕两类攻击方式展开,分别为基于通信报文的重放攻击和面向PLC固件的0Day漏洞挖掘。首先通过抓取并分析正常通信流量,构造并重放关键控制报文,验证协议在身份认证与防重放机制方面存在的安全风险;随后结合固件逆向与模糊测试,对协议处理逻辑进行深入分析,并进一步挖掘出可导致设备异常及拒绝服务的栈溢出漏洞。

4.2.1 未授权控制PLC,重放攻击

抓取上位机软件发送给PLC的启动和停止命令

取得UMAS协议启停的报文数据如下:

58 34 00 00 00 06 01 5a dd 40 ff 00

抓包得到的启动/停止功能码分别是40/41,与之前逆向分析得到的UMAS功能码符合。同时根据之前的UMAS协议分析和真实数据流量分析发现,PLC在接收启停报文的时候,并没有对会话来源有任何要求,通信过程中缺少安全防护和身份认证机制,导致攻击者可以构造合理UMAS报文,从而达到对PLC的未授权控制。

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

4.2.2 栈溢出攻击漏洞挖掘

对协议的漏洞挖掘少不了模糊测试,使用M221官方最新固件,结合对502端口逻辑的逆向分析,然后对三种不同会话进行全量测试。本次漏洞挖掘使用珞安自研AI固件漏洞挖掘系统,使用模糊测试模块对M221的协议解析模块进行测试.

将UMAS协议的各个字段进行写入配置里面:

选取协议中的关键字段(如长度字段、功能码等)作为测试对象,对其进行不同长度及取值范围的变异测试,以分析协议处理逻辑的健壮性及潜在安全风险。

查看模糊测试探测到的使PLC崩溃的报文,将该报文做成py脚本进行测试,实测有效,发送该报文后,会导致PLC崩溃,无法接收任何报文,重启可恢复正常。

通过逆向分析,确认导致崩溃的原因是某个有关长度处理的函数,没有严格限制,导致栈溢出,触发系统异常。下图是逆向分析关键代码:

对于生产环境的PLC来说一次崩溃会导致严重的生产事故,该0Day漏洞已报送至施耐德官方。以下是在实验室受控环境对真实M221设备进行的攻击截图,再运行POC之前该设备可以ping通,攻击完成后该设备无法ping通。

 

5、安全防护

●PLC 不应直接暴露于互联网环境中,应采用工业网络分区隔离策略,通过防火墙、访问控制列表等措施限制非授权设备访问 PLC 通信端口。同时关闭不必要服务,降低攻击者扫描和控制设备的风险。

●针对 UMAS 协议缺少身份认证的问题,建议引入设备身份认证、通信完整性校验等安全机制,防止攻击者伪造合法报文。同时,在现有设备环境中可通过访问白名单、网络隔离等方式降低未授权控制风险。

●针对协议解析过程中存在的栈溢出风险,应加强输入数据校验,对长度字段、功能码等关键参数进行严格限制,避免异常数据触发内存错误。

●工业现场应建立完善的 PLC 设备管理机制,及时关注厂商安全公告并升级固件版本。同时做好工程文件备份、权限管理和资产管理,降低设备漏洞被利用后对生产系统造成的影响。

‍6、结语

上述研究表明,传统工业控制设备在协议设计、安全认证以及输入校验方面仍存在一定安全风险。随着工业设备逐渐向网络化、智能化方向发展,PLC 已成为工业网络攻击的重要目标。未来应从安全协议设计、固件安全开发、漏洞检测以及工业网络防护等多个层面提升 PLC 整体安全能力,降低漏洞被利用后对工业生产环境造成的影响。