新闻资讯
全部分类

施耐德PLC产品的高危命令字

  • 分类:行业洞察
  • 作者:
  • 来源:
  • 发布时间:2017-12-29 17:10
  • 访问量:

【概要描述】

施耐德PLC产品的高危命令字

【概要描述】

  • 分类:行业洞察
  • 作者:
  • 来源:
  • 发布时间:2017-12-29 17:10
  • 访问量:
详情

  Modbus是20世纪70年代后期由Modicon(现为施耐德电气)为了配合其可编程逻辑控制器(PLC)一起使用,创建的基于串行的控制协议。Modbus是最常见的工业控制协议,主要是因为Modbus是一种开放的简单而强大的协议,可以在没有任何版税的情况下开放使用。自从引入Modbus以来,协议已被移植到以太网上工作。为了实现这一点,基于串行的协议被封装(基本上是“封装”)在TCP数据的头部,并且通过默认TCP端口502在以太网络上传输。由于其易于使用,Modbus可以在各种工厂甚至于变电站中找到。

  Modbus 分组帧可以分为两部分:应用数据单元(ADU)和协议数据单元(PDU)。ADU 由地址,PDU 和错误检查方法组成。PDU 由功能码和Modbus帧的数据段组成。

  Modbus 标准包含了大多数设备将支持的功能代码。这些功能码在 Modbus 标准中定义,如下图所示。

  ​

  图1 Modbus协议功能码

  Modbus协议的实现中常常包含一些厂商实现的非标准的功能码。一个典型的例子是施耐德PLC中的0x5a(90)功能码。和大多数专有协议一样,你必须使用工程软件来分析协议的工作原理。工控安全研究和顾问公司Digital Bond在知名项目ProjectBasecamp中最早在一个Metasploit模块(https://www.rapid7.com/db/modules/auxiliary/admin/scada/modicon_command)中,指出功能码 0x5a 的问题。该功能码实现了Modbus标准未允许的功能,如终止 CPU 的工作。这个高危功能码是通过记录工程软件(Unity Pro)与 Modicon PLC 的通信流量来发现的。

  图2 Unity Pro菜单项

  通过数据包重放,可以看到这个命令字终止了Modicon PLC所有的运行逻辑。对于需要实时控制的系统,这样的攻击可能导致灾难性后果。

  记录工程软件和PLC之间的通信可以从协议中提供一些可用的信息。执行功能代码90的情况下,PLC泄露了令人惊讶的信息,如图510所示,包括最后加载程序到设备的机器主机名。当检查捕获自PLC和工程软件的流量时,Modbus中常常是未编码的字符串,从而易于从设备的响应中解析。

  图3 功能码0x5a通信信息

  在示例中,项目名称为“Project“,十六进制值为”\x50\x72\x6f\x6a\x65\x63\x74“。进一步检查数据包,十六进制”\x08\x00\x00“是小端序似乎是项目修订号,通过程序解释后,会显示为0.0.8。”\x0c\x3b\x0c\x0e\x01\xde\x07“是项目文件上次修改的日期。

扫二维码用手机看

天地和兴

公司总部:北京市海淀区中关村软件园8号华夏科技大厦三层

服务热线:400-810-8981 / 010-82896289

版权所有:北京天地和兴科技有限公司      京ICP备17065546号-1

扫一扫关注

天地和兴微信公众号