研选课堂
HOME
研选课堂
正文内容
施耐德plc编程ld 西门子,施耐德,罗克韦尔PLC程序设计漏洞探秘
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

西门子、施耐德、罗克韦尔PLC程序设计漏洞探秘

作者:绿盟科技 格物实验室 陈杰

来源:

网络安全应急技术国家工程实验室

写在前面(文中链接仅在同名微信公众号有效)

前面我们谈到了不论是西门子、施耐德、罗克韦尔,或者其它工控系统,都不存在绝对的安全,并分享了工业控制相关的安全案例:

施耐德PLC漏洞历险记—一次与施耐德PLC的非正常接触

罗克韦尔 MicroLogix PLC漏洞的复现及解决方案

基于S7协议对西门子PLC S7-1500的漏洞分析与复现(附演示视频)

PS: 可以看到西门子S7-1500,施耐德Quantumn,罗克韦尔MicroLogix等均不例外,大家也不用就说这几家的工控系统不安全,没有哪家的工控系统是100%安全的~

西门子PLC

西门子S7系列PLC提供了不同方式的PLC组态编程,例如原理图表示(LAD或FBD)、类似于Pascal的编程语言(SCL)以及类似于汇编的编程语言(STL)等。不管输入源的类型如何,PLC程序都将程序编译为MC7字节码(STL甚至是较低级的表示形式)。

当组态软件编译好工程文件(MC7文件格式)后,通过西门子的S7COMM/S7COMM-PLUS协议下装到PLC中,然后由PLC中的MC7 虚拟机进行调度并解释执行MC7字节码,由于虚拟机可以对程序所访问的资源进行限制,编译出的字节码无法直接操作硬件,只能访问虚拟机提供的资源,如通过FB块中TCON以及TDISCON去建立TCP连接发送接收数据,也就是说编译出的组态程序有进行恶意网络活动的能力。

西门子并没有对MC7字节码进行文档化,只能通过一些逆向手段去理解字节码中对应的汇编指令,好在有人已经做了这一部分工作(可以使用JEB的插件),只需要使用该工具就可以对MC7文件进行反汇编甚至反编译来理解组态程序中的代码逻辑,通过此方法在分析 Stuxnet这类西门子蠕虫病毒尤其有用。

施耐德PLC

在施耐德PLC中,无论是梯形图(LD),结构化文本(ST)还是功能块语言(FBD)都会被统一编译成ARM机器码,由ARM处理器直接执行的,所以可以完全访问PLC上的软硬件资源。

当施耐德的组态软件编译好工程后,可以直接通过施耐德的ModBus 90功能码(UMAS协议)下装到PLC中,PLC启动后会执行编译好的ARM机器码。如果ARM字节码中被攻击者注入恶意代码,那么攻击者便可以完全控制PLC,拥有对网络,文件系统,硬件IO等关键资源的访问控制权。

漏洞详情

本次以施耐德某漏洞为例进行讲解(其余如西门子S7-1500,施耐德Quantumn,罗克韦尔MicroLogix等相关实例漏洞操作和复现见以下推荐阅读),该漏洞出现的根本原因,主要是施耐德PLC把组态程序直接编译成ARM机器码,在执行时没有对其访问的资源进行限制,导致了针对施耐德PLC的蠕虫病毒可能具有更强的隐蔽性和更大的破坏力。

施耐德PLC漏洞历险记—一次与施耐德PLC的非正常接触

罗克韦尔 MicroLogix PLC漏洞的复现及解决方案

基于S7协议对西门子PLC S7-1500的漏洞分析与复现(附演示视频)

Unity Pro逆向工程

Unity Pro是施耐德PLC对应的组态编程软件,通过该软件可以对PLC进行编程。为了在编译后的ARM代码中注入代码,应该先找到实现代码编译的地方。如下图所示,asmarm.dll导出函数MyAsmArmStream就是负责将ARM汇编代码编译成ARM机器码。

在该函数第一个参数指向ARM汇编字符串,返回的是编译好的ARM的机器码数据:

为了定位用户编写的代码在整个ARM汇编中的位置,可以编写测试代码(如下图):

生成的代码肯定包含立即数1000(0x3e8),通过搜索该立即数,就可以快速定位到用户代码在组态程序中的位置,并获得相应的汇编代码。

只需要hook该函数,并修改传入的汇编代码,即可实现在施耐德PLC中执行任意代码。

代码编写

施耐德PLC使用的是Vxworks操作系统,该系统已经提供了利用所需要的函数,只需要在固件中找到所需要的函数地址(网络访问,账号管理,文件访问等),并在ARM汇编中直接调用即可。

这些函数的原型官网已有相关文档,只需要构造好参数,调用即可。如下图的loginUserAdd函数可以添加一个账号,攻击者可以通过该函数来向PLC添加一个后门账号。

利用思路

1. 将原始asmArm.dll重命名为asm_Arm.dll ,方便调用自定义的dll动态库。

2. 将恶意asmArm.dll(该dll主要劫持MyAsmArmStream,修改传入的ARM汇编代码,并调用原始的asmArm.dll)放入Unity文件夹。

3. 运行Unity并加载PLC工程。

4. 重新编译项目。

5. 停止PLC。

6. 将工程上传到PLC

7. 启动运行PLC 后,恶意的代码将会被执行。

漏洞修复

施耐德已经发布了安全通告,并给出了安全补丁和安全建议。在上位机的修复中,主要检查了组件的完整性,如果某个组件被修改的话,将会导致软件不可启动,必须重新安装。

严格来说,这只是缓解措施,有很多技术可以达到绕过安全性检查(patch安全性检查的地方,远程注入,直接伪造恶意的客户端下装恶意工程等),设计上的漏洞从软件层面并不是那么容易修复。

总结

本文主要探讨了施耐德CVE-2020-7475漏洞产生的根本原因,并且简单介绍了漏洞的原理和一些利用的思路。可以预见的是,该漏洞并不容易从根本上完全修复,只能通过其他技术手段进行规避,这也说明了工业控制系统不仅在实现上要考虑安全,在设计之初也需要考虑安全,安全应该贯穿整个生命周期。

参考连接

https://airbus-cyber-security.com/applying-a-stuxnet-type-attack-to-a-modicon-plc/

硬核专辑

工业技术热点 | 数据采集

WinCC技术 | 工业网络 |

MES技术相关| 工业巨头战略布局 |

工业通讯案例 | 仿真与虚拟调试

职业感悟、认知提升 | 自动化控制标准合集

应用与库(西门子、罗克韦尔、倍福等)

最全盘点卡中国脖子的35项技术,折射中国工业水平的真实现状

2020-09-05

自动化设备数据采集项目中S7-1500和PC的时间同步

2020-09-02

一文了解西门子、达索、施耐德、罗克韦尔等巨头数字化工厂仿真软件

2020-08-27

134页官方PPT解读西门子数字化工业服务

2020-08-24

美国如何靠软件卡死中国制造?工业软件从业者超硬核科普

2020-08-21

国内第一份公开的工信部含有物流仿真的行业标准(下载)-物流数字化仓储

2020-08-20

解读西门子的工业软件帝国,巨头的数字化工业战略

2020-08-18

【C#上位机必看】从零开始练手IT与OT融合通信项目

2020-08-17

深度解析SCADA、物联网IOT和MES之间的联系与区别

2020-08-14

软件定义PLC与制造的时代,工程师的职业未来在哪里?

2020-08-12

Modbus 的RTU、ASCII、TCP傻傻搞不清楚?一文最全解读

2020-08-10

IT大举入侵OT,自动化早已成为一个“软件”行业

2020-08-09

笔记-新学施耐德M580编程

年后有个项目,是施耐德的M580的PLC以及施耐德的SCADA,没用过,记录下学习过程。

一个新的PLC的编程思路,和以往的其他品牌应该是差不多,我觉得无非是考虑到几个地方:

前提:弄清楚使用的软件;

1、弄清楚硬件配置和硬件地址,DIDO,AIAO;

2、查看数据存储和数据的使用方法,比如存储区M,S,以及特殊存储器SM;

3、使用的语音,LD,ST以及类似GRAPH的语言;

4、变量表变量定义的方式和结构体的使用;

5、基本命令及使用方法,库函数,功能,功能块;

6、HMI和上位机

针对以上几点,查找资料,下载PLC硬件手册,编程手册和软件使用手册。

一、编程软件:Control Expert Classic,

因为是学习使用,在网上寻找相应的资源,并安装成功。

二、下载手册

进入施耐德官网,搜索M580,会弹出相应搜索到的资料。

下载样本(选型使用),CAD文件(EPLAN画图用),硬件手册(接线,配件,设置等使用),

再搜索Control Expert,下载安装手册,参考手册。

三、打开Control Expert参考手册,开始前面讲到的6点编程顺序和方法资料的查找。

未完后续

相关问答

485通讯控制交流电机应该如何实现?

测...Busy表示功能块执行情况的输出,如果为高电平,表示功能块正在执行。我们读取它的下降沿,来触发下一次操作。Error是功能块的错误,可能你会有疑问,为什么通...

PFXGP3500SADproface施耐德怎么选

[回答]PFXGP4603TAD10.4英寸人机界面PFXGP4501TAA10.4英寸人机界面PFXGP4501TMAPFXGP2500LD5.7英寸触摸屏PFXGP4301TADC5.7英寸触摸屏...

远程智能照明控制器PN-HCD-100是哪家生产的

全球强的厂商:邦奇、施耐德(C-BUS、莫顿)、ABB、路创、快思聪。希望可以帮助到...可编程智能照明控制器由可编程作面板和控制模块构成.显示功能:能显示每路输...

电气控制柜内元器件如何接地

压器SCB10-80KVA低压额定电流是:80*1.44=115.2A变压器大概在12万型号SJD-LD-...PLC控制柜、消防控制柜、砖机控制柜等等。以上价格来源于网络,仅供参考10有...

安装照明母线槽需要什么资质

西门子母线槽插接箱封闭母线配件绝缘件铜插¥580.CCXXLC西门子母线槽插接箱母线桥插接母线¥570西门子LD空气加强绝缘型母线系统母线槽低压母线¥100...

在线的老表你们谁清楚!服务优质的100A集电器型号参数,100A...

[回答]电气和机械性能,且耐温、耐磨...产品具有更好的电气和机械性能,且耐温、耐磨、耐腐蚀、抗老化、节能环保、安全耐用及较高的性价比等优点。产品具...

东莞厚街}广东小型密炼机带加热吗?教期待大神解答

[回答]东莞厚街东莞厚街变频调速系统PLC触控系统小型密炼机贯穿式加热系统,加热效率快,提速快,温度均衡。小型密炼机橡胶,塑胶等可使用,加热带通水双功能...

插座线槽的价格大概多少

1,基站走线架:要求成本低,安装简便,承重在每米150KG以上,可选用SP-ZXJ--L-LD系列;SP-ZXJ--L-34H系列;SP-ZXJ-L-KII系列;SP-ZXJ-L-KX系列。以上系列...

 火锅节  黄锦淼 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部