原创 | 百尺竿头 更进一步 探秘西门子软PLC

admin 2022年9月14日16:27:32IoT评论8 views4022字阅读13分24秒阅读模式

作者 | 绿盟科技 格物实验室 高剑 陈杰 任心

一. 引言

随着工业数字化、网络化、智能化的快速发展,工业互联网已经成为国家先进制造的重要基础设施,尤其是工业控制系统(Industrial Control System,ICS)安全已成为实施制造强国和网络强国战略的重要保障。然而,ICS安全问题频出,对工控系统造成了极其严重的影响。

  • 2010年6月,发现袭击伊朗核设施的震网病毒,该病毒通过修改step7的项目文件并下装到PLC中以此篡改PLC的控制流程,并修改WinCC的二进制文件隐藏代码的更改。

  • 2019年8月,以色列安全研究人员通过对S7 COMM PLUS协议的逆向工程,成功开发出模仿TIA Portal 的伪工作站,只要设置这样一个伪工作站,就可与同一型号和固件版本的西门子S7 PLC交互。

  • 2019年12月,研究人员发现西门子S7 1200 PLC存在隐藏功能,使用该功能的攻击者可在PLC启动的半秒内绕过引导程序的固件完整性检查,加载恶意代码夺取PLC的控制权。

  • 2021年5月,Claroty的研究人员公开披露了西门子PLC中的一个远程代码执行漏洞CVE-2020-15782,利用该漏洞可绕过PLC CPU中的PLC沙箱,在受保护的内存区域中写入或读取数据,远程执行恶意代码,且无需经过身份验证即可利用。

由于任何产品在设计上都不可能做到尽善尽美,缺陷和漏洞不可避免存在。了解对工业控制系统的潜在安全威胁,对工业控制系统现场设备逆向工程,可以及时有效地发现安全问题,提前建立预防措施做好相关准备。

2022年8月10日,来自以色列理工学院的研究人员(Maxim Barsky、Alon Dankner、Idan Raz、Eli Biham、Sara Bitan)在BlackHat USA 2022上分享《sOfT7:揭开西门子S7 PLC的神秘面纱(sOfT7:Revealing the Secrets of Siemens S7 PLCs)》议题。从传统PLC向软PLC的发展引入话题,披露了西门子ET200SP开放式控制器最新的安全研究成果。

二. PLC发展

PLC的应用广度和深度已经成为个国家工业先进度的一个重要的标志。但随着科技的发展和市场需求的多样化,传统PLC逐渐显露出一些缺点。传统的PLC种类繁多且系统与硬件之间的封闭性较强,兼容性、开放性与扩展性均受到限制。这迫使ICS供应商提出了包含整个标准操作系统环境(例如Windows或Linux)的新一代PLC。它们通常称为基于PC的PLC或软PLC,软PLC的出现弥补了这些不足,以通用操作系统和PC为软硬件平台,用软件实现传统硬件PLC的控制功能,兼容性和通用性强。

三. ET200SP架构

3.1 ET200SP介绍

2015年1月,SIEMENS ET200SP Open Controller上市公开销售,这是第一款采用实时虚拟机管理器技术的工业控制器。一套硬件上运行两个操作系统,实时虚拟机管理器用于控制Windows和RTOS两个虚拟机,西门子称之为SWCPU。

SWCPU是加密的(存放在PLC存储器),在PLC启动过程中由虚拟机管理器加密和解密。SIEMENS的实时虚拟机管理器和RTOS都是SIEMENS自己开发的私有产品,实时虚拟机管理器将硬件资源完全虚拟化成两套硬件,每套硬件上运行不同的操作系统,有各自独立支配的硬件资源,可以并行运行互不干扰,使系统具有高可用性。RTOS运行可编程控制逻辑,具有运行PLC、运动控制等实时功能,Windows运行HMI/SCADA或者数据库等非实时应用。即使Windows在操作期间重启也不会对控制器的控制逻辑产生影响,因此可以无影响的更新Windows系统、安装其他工业类的程序文件。

原创 | 百尺竿头 更进一步 探秘西门子软PLC

3.2 Intel VT

Intel VT指的是Intel推出的基于x86架构的硬件辅助虚拟化技术。Intel VT提供了2 个运行环境:根(Root)环境和非根(Non-root),这两种模式都有相应的特权级0至特权级3。VMM运行在根模式的特权级0,GuestOS的内核运行在非根模式的特权级0,GuestOS的应用程序运行在非根模式的特权级3。ET200SP使用了Intel VT技术对PLC进行虚拟化,使用VT指令开启虚拟化以及模式的切换,大大提高了虚拟机性能。

原创 | 百尺竿头 更进一步 探秘西门子软PLC

3.3 启动流程

来自以色列工学院的研究人员指出,ET200SP的启动过程并不安全,通过Ubuntu启动,可以直接挂载ET200SP的硬盘分区。如图2,sda1分区为Windows Embedded,sda5分区为ROTS,将sda5挂载到/mnt后可查看TIA_porject_files,也就是说攻击者可以启动他所选择的操作系统并读取整个文件系统,包括实时虚拟机管理器的二进制文件、加密的SWCPU和GRUB配置文件。

原创 | 百尺竿头 更进一步 探秘西门子软PLC


根据以色列工学院的研究人员会议中披露的内容,我们分析了Boot/GRUB2/menu.cfg配置,获取到虚拟机映射的本地信息和启动流程,在进入到菜单选择界面执行SWCPU会将VMM_1st_stage.elf、VMM_2st_stage.elf逐个加载到内存执行。

原创 | 百尺竿头 更进一步 探秘西门子软PLC


总体流程图如下所示:

原创 | 百尺竿头 更进一步 探秘西门子软PLC

四. 解密

4.1 解密逻辑

CPU.elf是加密的软PLC固件,以“S3”字符串开头,下图表明这个固件已经被加密,解密逻辑在VMM 2nd Stage中进行。

原创 | 百尺竿头 更进一步 探秘西门子软PLC

分析代码便能很快地定位到解密函数,该函数先对比文件的前四个字节,如果符合加密特征就执行解密流程。

原创 | 百尺竿头 更进一步 探秘西门子软PLC

SWCPU解密算法相当复杂,西门子为了对抗逆向工程,还对一些函数指针,关键常量进行了加密,这对于静态分析来说并不直观。所以议题中使用的方法是

使用Intel研发的动态二进制插桩框架Pin平台,先执行环境初始化,替换一些函数(如malloc代替vm_alloc、 printf代替VM_print等),同时读取加密的ELF数据传入到解密函数中,再执行解密函数后将解密完成的ELF数据dump下来,如下所示:

原创 | 百尺竿头 更进一步 探秘西门子软PLC

4.2 Unicorn模拟执行

在议题中,作者使用的方法可以在内存中解密软件,但是无法提取,绿盟科技格物实验室工控安全研究员发现其方法过度依赖原始系统,需要绕过的检测策略太多,导致解密后的软件获取会失败。通过分析,绿盟科技工控安全研究员另辟蹊径,使用Unicorn框架模拟执行解密函数,从而获得解密后的程序,相关代码如下所示:

原创 | 百尺竿头 更进一步 探秘西门子软PLC

解密之后是lzma压缩的数据,对数据进行解压得到原始的ELF数据。

原创 | 百尺竿头 更进一步 探秘西门子软PLC

通过使用模拟执行成功解密得到原始的ELF数据

原创 | 百尺竿头 更进一步 探秘西门子软PLC

通过简单的分析可以知道,整个PLC固件一共识别得到13W+的函数,是个庞大而复杂的固件。系统大部分上由C++编写,使用了ACE框架。TCP/IP协议栈移植了Open BSD的协议栈,这一点和最新的PLC设备使用的协议栈保持一致。

五. 调试

5.1 调试难点

基于硬件方案的调试限制诸多,首先需要购买西门子厂商的IPC或者ET 200SP系列开放控制器,再次需要确认这类设备中是否有底层调试的接口,即便开放了调试接口也需要购买Intel专业的调试设备,该类调试设备价格不菲。

基于软件的调试一般采用虚拟化方案,但是对于西门子的软件PLC来说很有挑战,因为软件PLC在加载过程中需要对BIOS类型、硬盘接口、网卡总线、IO卡件、工业以太网卡件类型等做检查和初始化,虚拟化方案很难完全运行起软件PLC的所有功能。

5.2 int3调试器

以色列的研究人员使用了自带的诊断输出页面来查看数据,只要插入int3指令即可看到寄存器和栈上的相关数据,但是无法扩展出更为强大的真正调试器。如下图为int3调试的输出。

原创 | 百尺竿头 更进一步 探秘西门子软PLC

5.3 如何解决

由于绿盟科技格物实验室没有真实的ET 200SP设备,所以使用VMware进行仿真,并使用GDB调试,通过patch来绕过各种检查,然后直接到达解密CPU.elf的代码,在内存中找到完全解密ELF数据,最后dump得到ELF数据。

原创 | 百尺竿头 更进一步 探秘西门子软PLC

六. 影响&缓解措施

2019年西门子PLC的市场份额占31%,广泛应于电厂、水利设施、运输系统、核反应堆等关键信息基础设施。以色列工学院的研究人员从解密的固件发现,与S7-1500共享99%的软件。在工业环境下固件更低的更新频率,将使整个Simatic S7-1500产品线容易受到已知漏洞的攻击。

此外,还有项研究正在进行中,研究人员声称已经找到了一种方法,获得Windows虚拟机管理权限的攻击者可以用自己制作的流氓PLC固件替换PLC固件,他们与西门子厂商分享了全部细节,但在本次BlackHat大会尚未披露此漏洞的细节。最后研究人员给出了针对西门子ET200SP的缓解措施:

原创 | 百尺竿头 更进一步 探秘西门子软PLC

七. 总结

议题《sOfT7:揭开西门子S7 PLC的神秘面纱》在诸多工控相关类的议题中脱颖而出,足以说明了它的创新性,研究人员着眼于软件PLC的工作机制研究并在加载过程中找到了设计缺陷,通过二进制插桩技术得到了可分析的固件,通过分析固件可以获知西门子大型PLC系列诸多功能的实现也作为后续深入研究的切入点。条条大路通罗马,通过学习后,我们采用了另外2种方法(模拟执行和动态调试)得到了解密后的固件。

未来可能的研究方向还有如下几点:

1.研究西门子PLC的漏洞。

2.了解S7 COMM PLUS 服务端的实现流程。

3.MC7P代码的解释执行流程。

4.学习业务功能的实现方式,比如冗余机制、web服务器、OPC-UA服务器等。

参考链接:

[1]https://www.blackhat.com/us-22/briefings/schedule/#soft-revealing-the-secrets-of-siemens-s-plcs-26307



转载请注明来源:网络安全应急技术国家工程研究中心

“投稿联系方式:孙中豪 010-82992251   [email protected]
原创 | 百尺竿头 更进一步 探秘西门子软PLC

原文始发于微信公众号(网络安全应急技术国家工程实验室):原创 | 百尺竿头 更进一步 探秘西门子软PLC

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月14日16:27:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  原创 | 百尺竿头 更进一步 探秘西门子软PLC http://cn-sec.com/archives/1294376.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: