由PLC未授权访问引发的工程重置漏洞

在这里插入图片描述

前言

MAC1100 PLC可编程逻辑控制器(PLC)是大连计控(DCCE)可编程逻辑控制器(PLC)系列中的一款产品。

早在2018年6月,CNVD官网通报了DCCE MAC1100 PLC存在任意程序覆盖漏洞 ,其编号为CNVD-2018-19112。DCCE MAC1100 PLC存在任意程序覆盖漏洞,漏洞源于MAC1100 PLC可编程逻辑控制器向PLC下载程序时未验证相关权限,攻击者可通过远程下载程序的数据包,利用漏洞覆盖任意程序。
在这里插入图片描述
通过对DCCE PLC的学习,成功复现了此漏洞,笔者将其记录下来以供大家学习与交流~

一、PLC编程与工程

PLC编程是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字式、模拟式的输入和输出,控制各种类型的机械或生产过程。可编程序控制器及其有关设备,都应按易于使工业控制系统形成一个整体,易于扩充其功能的原则设计。

简言之,对于PLC工程可以理解为:PLC在程序执行阶段按用户程序指令存放的先后顺序扫描执行每条指令,经相应的运算和处理后,其结果再写入输出状态寄存器中,输出状态寄存器中所有的内容随着程序的执行而改变。

编写PLC工程所用语言大概有五种,分别是梯形图语言、指令表语言、功能模块图语言、顺序功能流程图语言和结构文本化语言。

二、漏洞复现

2.1 环境需求
此次实验笔者用到了Mac 1100PLC、PLC_Config编程软件、PLC工程示例等。

2.2 复现过程
1、下载一个空程序并获取其数据包

首先下载一个空的PLC工程到PLC,并将该下载过程进行Wireshark抓包,其目的是获取PLC下载空工程的流量进行重放。
在这里插入图片描述
声明:为了减少PC机与PLC之间数据包的交互,用户可以在下载程序时根据需求进行网络注释、子程序指令注释、带符号变量的下载。

通过上述Wireshark抓取到的数据包,可以看到MAIN关键字,即一个PLC工程/空工程的入口函数,与C语言编程类似。

PLC工程下载流程 (1)将PLC控制器切换为STOP状态; (2)清空PLC原有工程; (3)写入新下载的工程; (4)重启PLC
CPU的状态为RUN; (5)将编程软件切换为监视模式;

2、下载正常工作的PLC程序至PLC

为了复现此实验,需要下载一段正常工作的PLC工程到PLC中,而Dcce Mac 1100的编程软件PLC_Config支持S7-200工程的导入。因此,这里直接在CSDN下载了S7-200的工程示例(以剪板机控制工程为例),下载的s7-200工程为.mwp格式,此处需要用到“STEP-7MicroWIN V4.0 SP9完整版”软件将.mwp导出为PLC_Config支持的.awl格式。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值