-
-
[原创]施耐德 M580 工业控制器固件安全分析与解密研究
-
发表于: 2026-7-10 10:14 1413
-
施耐德Modicon M580 系列可编程自动化控制器(PAC)作为高端工业控制设备,广泛部署于电力、石化、水处理等关键基础设施领域。其采用 ePAC 架构,运行 VxWorks 实时操作系统,支持 EtherNet/IP、Modbus TCP 等主流工业协议。如下图为产品的设计架构

随着 OT 与 IT 网络融合加速,PLC 已成为攻击者重点目标。该设备固件中不仅包含操作系统内核与协议栈实现,还可能隐藏默认凭证、未公开接口或后门逻辑。因此,对固件进行深度解密与逆向分析,是评估设备真实安全水位的前提。
然而,施耐德自 V3.x 起对固件实施 AES-256 加密保护,V4.x 更引入数字签名机制,形成“加密+认证”双重防护。这是否意味着固件安全无懈可击?本文将从实战攻防视角出发,系统性还原从协议层突破 → 内存读取 → 密钥提取 → 算法逆向 → 跨版本解密的全链路攻击路径,揭示其固件保护机制中的设计缺陷。
施耐德M340、M580等系列工业控制器采用其自研的私有协议,内部统称为UMAS协议,该协议是基于Modbus协议进行的魔改,包含有很多私有设计的功能码字段,如下所示,其中有pu_ReadMemoryBlock、pu_WriteMemoryBlock、pu_ReadBOL、pu_WriteVarList操作等等。

关于协议相关的研究笔者在各大会议上均有分享,不再赘述。我们本次聚焦于固件分析,通过对私有协议分析,发现V3.X版本固件中存在物理内存读取功能码且没有任何身份验证,因此可以利用0x28功能码读取多有的控制器内存数据,经过分析内存数据中包含固件代码,解密固件的AES密钥,工程数据,密码哈希等等关键数据。

Dump出内存后构建了完整的内存布局图如下所示

根据特征进行分析发现了AES相关密钥及IV值,如下所示。

安全缺陷分析:
明文存储:密钥未经混淆或加密,直接暴露;
静态共享:所有同型号设备使用相同密钥,单点突破影响全系列;
无访问控制:0x28关键私有功能码未实施认证,任意网络可达设备均可读取。
至此,V3.x 固件解密的“钥匙”已被掌握。
M580 V3.x 固件是以.ldx为结尾的压缩包文件,利用工具解压后可以得到如下所示的文件

核心固件文件以 .img 为扩展名,其结构如下

其中固件头标识为Magic: 27 05 19 56, Version: "vxWorks V03.20..."
通过逆向内存中代码段,我们识别出以下特征:
AES S-Box 查找表:标准 256 字节 S-Box 完整存在;
密钥长度 32 字节:对应 AES-256;
CBC 模式:解密前存在 IV 异或操作;
LZMA 头部:解密后数据以 5D 00 00 80 00... 开头,确认压缩算法为 LZMA。
完整的解密流程如下所示

跳过文件头:忽略前 0x40 字节;
AES-256-CBC 解密:使用提取的 Key 和 IV;
去除 PKCS7 填充:检测末尾 N 字节是否均为 0xN,若是则移除;
LZMA 解压:使用 lzma.decompress(..., format=lzma.FORMAT_ALONE);
切除头部 512 字节:获得最终固件文件镜像。
经过实验发现在V3.X的固件版本在LZMA 数据格式还是有细微差异,如下图所示

但所有版本的解密密钥及IV全部一致,经验证,该流程可成功解密 V3.10、V3.20、V3.99等多个版本固件。使用脚本编写解密SV3.99过渡固件版本的过程如下所示

解密后的文件二进制如下所示

施耐德在 V4.x 版本中引入了多项安全增强措施:
新加密密钥:更换了 AES 密钥和 IV
数字签名:引入 CMS/PKCS#7 签名机制
证书验证:使用 X.509 证书链验证固件完整性
新封装格式:采用 SEDP (Secure Encrypted Data Package) 格式
V4.x 固件采用 .sedp 扩展名,实际为 ZIP 压缩包,如下所示

解压后的文件如下所示

PackageMetadata.json 关键字段如下所示
M580.cms 文件采用 CMS (Cryptographic Message Syntax) / PKCS#7 格式:

证书链结构如下所示

由于工控设备的长生命周期决定了厂商必须要考虑老版本的升级问题,在研究过程中发现如果老旧设备要升级至V4.X固件版本,必须要先升级至V3.99固件版本,因此V3.99作为过渡版本,其解密后的固件镜像中必然包含了V4.x的加密密钥,否则无法作为衔接版本继续升级至较高版本。
基于此经验,先利用之前的分析的V3.X固件解密的思路将V3.99固件解密后进行分析,从字符串中搜索类似于AES密钥的字符串,发现内置了V4.X版本的AES密钥和IV值,因此提取出这些信息后即可解密V4.X的固件,整体的解密思路如下流程所示。

整体的V4.X固件解密流程如下所示

利用该思路编写对应的工具,针对2025年后半年发布的最新固件进行解密,过程如下所示

解密后的固件文件如下所示,包含了主固件镜像、固件升级 RTP 程序、HTTP 代理服务、控制系统服务器、Web 管理界面等。

至此最新版本的M580系列PLC加密固件已经完美解密,可以继续后面的安全分析工作。再次复盘整个解密过程,发现该产品设计中的如下几个缺陷:
[内核课程]《Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。