《电子技术应用》
您所在的位置:首页 > 电子元件 > 业界动态 > 工控安全之PLC私有协议安全

工控安全之PLC私有协议安全

2020-12-01
来源: 关键基础设施安全应急响应中心

  在工业控制系统中,各种不同的型号系列的PLC除了使用公开的工业控制协议(例如 modbus,opcua等),还使用了厂家自己开发的私有协议(例如施耐德的UMAS,西门子的S7comm/S7commPlus等),这一系列协议主要用于和自家的组态软件进行通信来执行一些高权限的操作,例如启动停止,工程的上载和下装等。这些操作无疑会给工业现场造成巨大的安全隐患,对工业控制私有协议分析也成了工业控制系统安全的重点和难点。本文通过分析如今的PLC私有协议的现状,提出一些研究思路和安全建议。

  私有协议实例

  施耐德UMAS

  施耐德UMAS协议是施耐德M340/M580和上位组态软件Unity Pro通信使用的一种私有协议,由于其下层协议使用的modbus 90功能码,所以服务端口也是502端口。通过阅读isf(https://github.com/dark-lbp/isf/)工业控制系统漏洞利用框架的源码找到针对施耐德系列PLC的启停脚本源码可以分析该协议的基本流程,如下:

微信图片_20201201150940.jpg

  该攻击脚本先是通过0x10功能码获取UMAS的会话key,再通过0x40(启动功能码)/0x41(停止功能码)来控制PLC设备的启动停止。如下即为Wireshark抓取到的数据包,UMAS协议解析插件可以自己编写。

微信图片_20201201150943.jpg

  通过协议分析可以知道,该协议是未加密的状态,可以使用简单的重放进行PLC攻击,该种私有协议相对简单,没有加密流量以及完整性校验,安全性相对不足。

  西门子S7comm系列

  S7comm是S7-300/S7-400和上位组态软件TIA通信的私有协议,下层协议为COTP,使用的服务端口号为102。通过阅读isf框架源码可以知道到该协议也没有加密,也没有完整性校验。

微信图片_20201201150945.jpg

  抓取到的数据流量如下所示,这种类型的协议也可以通过的简单的重放来控制PLC。

微信图片_20201201150948.jpg

  但是S7-1200/S7-1500使用的是S7协议加强版S7commPlus,该协议握手阶段使用了一系列复杂的算法来建立安全的会话链接,同时为接下来的每一个操作数据包都加上了完整性校验。

微信图片_20201201150950.jpg

  如下选中的地方即为完整性校验字段:

微信图片_20201201150953.jpg

  针对这类复杂的算法协议可以通过逆向关键的dll或者直接调用核心的dll来完成对PLC的攻击。下图为针对S7commPlus攻击工具。

微信图片_20201201150955.jpg

  密码设置

  通过上面的分析可以知道,现在的工业控制私有协议安全性还有很大的不足,为了在工业系统中限制其他人使用私有协议执行高权限的操作,可以使用组态软件给PLC加上保护密码。

  施耐德unitypro设置如下:

微信图片_20201201150957.jpg

  西门子TIA可以进行如下设置:

微信图片_20201201150959.jpg

  在设置密码后,可以有效保护PLC,阻止利用私有协议发起的恶意操作。

  密码绕过

  密码绕过属于工业控制系统安全里面的高级技术,只要绕过PLC中的密码,基本上就可以让PLC执行恶意操作,比如替换一个恶意工程等。在今年的看雪峰会上,已经有工控安全研究员着手这方面的研究,通过包括物理接触和非物理接触方式突破了施耐德,西门子,罗克韦尔等多个PLC的密码保护机制。总结如下两点:

  1.   不正确的校验方式,包括把密码从PLC读到组态软件进行比较的设计。

  2.   厂商留下的后门,包括未文档化的PLC内存读写功能。

  详情请参考

  https://zhuanlan.kanxue.com/article-14166.htm

  总结

  通过分析可以看出,工业控制系统上私有协议有复杂的、也有简单的,种类繁杂。不同的厂商有不同的私有协议,这对工控安全研究人员的协议逆向分析能力提出了较大的要求。同时本文还提到了通过设置密码来阻止私有协议的滥用,然而设置PLC密码不是万能的,它依赖于工业控制系统厂商在密码保护机制实现上的安全性。为了限制私有协议的访问,最好还是在工业现场部署专门针对工业控制业务环境的IDS/IPS,最大程度的提高工业现场的安全性。


本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。