freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

DCCE MAC1000 PLC漏洞测试二
山石网科 2022-04-07 10:47:35 156636
所属地 广东省

1、PLC指令可被利用发起蠕虫传播

问题名称

PLC“自由通讯指令”可被利用发起蠕虫传播

检测工具

Arpspoof  Python PLC_Config

问题描述

通过劫持PLC_Config下载程序流程,篡改PLC下载程序内容,导致PLC向局域网设备发送任一带功能报文(例:发送停止指令),从而导致其他局域网内PLC设备停机,实现类似PLC感染病毒功能

测试步骤描述

1、    “自由通讯”指令中的“UDP_AFC”,可以向其他PLC发送任意UDP数据,若构造恶意控制指令(如启停),将造成网络内其他设备宕机。可通过编程,实现plc自动向内网发送udp报文。

1649299932_624e51dc6839814cc0b1e.png!small

2.    UDP报文内容可使局域网内其他plc设备停止的命令,可以使其他内网中plc设备停止。

1649299937_624e51e1988fb13be2d83.png!small

其他说明

此方法也可结合其他攻击方法,实现更多功能,例如重写其他plc设备中某些内存值或者IO输出值

其他说明


2、PLC远程控制任意I/O读写

问题名称

PLC远程控制任意I/O读写

检测工具

Python发包脚本 wireshark

问题描述

EPA协议可以实现PLC内部参数配置、程序上下载和变量监控,由于没有认证,攻击者可远程向PLC发送特殊构造的数据包实现这些操作的远程操纵。

测试步骤描述

1、可利用EPA变量读写报文访问各变量区,通过0c读操作码实现对控制器的监控。通过0d写操作码可以对各种位变量、单字双字多字变量修改

2、

3、

其他说明


3、PLC软件多种配置文件易篡改

问题名称

PLC编程软件多种配置文件易被篡改

检测工具

Notepad

问题描述

软件安装目录“C:\Program Files\DCCE\PLC_Config”下存在7个扩展名为.cfg的配置文件,明文存储,虽然文件中提示了“请勿手工编辑此文档”,但恶意篡改此类配置文件中的参数,将导致软件使用异常,逻辑功能错误,编写PLC程序时会产生安全风险,具体文件列表请见截图中打开的TXT窗口标题:

测试步骤描述

1649299956_624e51f43eba9d230992a.png!small

1、打开软件安装目录“C:\Program Files\DCCE\PLC_Config”

2、可见目录下存在7个扩展名为.cfg的配置文件

3、以打开编辑nc.cfg文件为例,包含了‘opcode’操作码明文,如果随意更改操作码,将导致编写出的组态程序无法实现正确操作,在生产环境中可能造成高速运转的刀具碰撞等严重问题。

1649300003_624e52231d58a01836e58.png!small

其他说明


4、PLC软件卸载不全导致敏感信息泄露

问题名称

PLC软件卸载不全导致敏感信息泄露

检测工具

软件目录下uninst.exe

问题描述

软件卸载时处理不完全,残留的文件中记录了工程文件打开列表,若包含敏感信息,存在泄密风险;

测试步骤描述

1、运行...软件目录下uninst.exe卸载

2、在询问“保留工程文件夹”时选择否(无论选是还是否,原软件安装目录下都会有残留,且重启也不会消失)

3、卸载完成后,原软件安装目录下仍有残留文件,包括最近使用工程列表,最近打开文件,软件配置等文件。

1649300029_624e523db9369a0442ee4.png!small

4、打开残留的ProjSave.txt后,可以看到之前使用过的工程文件名称,若包含涉密信息,则存在敏感信息泄露安全风险。如图该文件,可见“绝密-核电反应堆冷却塔项目”、“绝密-歼10航空发动机零件生产项目”等记录,存在情报安全隐患。

1649300049_624e5251f02ccfc49ad5f.png!small

其他说明


5、PLC软件存在未加固等安全问题

问题名称

PLC软件存在未加固和DLL劫持风险

检测工具

IDA Pro

问题描述

PLC没有对PLC编程软件做加固,可轻易逆向其软件结构,甚至可以通过逆向PLC编程软件DLL库,可以发现关键加密函数、编译函数等敏感函数、明文保存密码、口令。

测试步骤描述

1、逆向分析plc_config.exe可以找到明文保存的用户名密码:admin/123456 user1/123456 user2/123456,疑为内置账户。如图:

1649300057_624e5259ef92cd0541827.png!small

2、逆向plc_config.exe还可发现其大量调用ShellExecuteA函数执行外部命令,存在高危风险。

3、 软件目录下面的dll中,core.dll,ReadWriteDll.dll等为系统设置相关:

逆向其core.dll核心dll,可以看到核心系统参数,可以修改这些参数达到修改plc_config系统的目的。

4、 逆向readWrite.dll可以发现其读写函数,可以通过劫持dll达到执行任意代码目的。

其他说明

本身plc_config 程序没有加壳保护,很容易被逆向

6、PLC存在未知变量区

问题名称

扫描变量区,发现未知的变量区

检测工具

Python 脚本

问题描述

发现使用特殊的读变量区指令,指定变量区号,可以发现10022,11001,11003,11005,11007,11008,11014。这些变量区未在文档中说明。

测试步骤描述

1、    编写Python脚本直接发送‘区读取’命令,逐一测试变量区。

1649300095_624e527f328b64b65ae5f.png!small

2、    发现了以下变量区,以及读取的结果。

1649300102_624e528626acc65e41897.png!small

其他说明


7、PLC软件上载程序报错内存不足

问题名称

PLC远程控制任意I/O读写

检测工具

Python发包脚本 wireshark

问题描述

当需要上载PLC程序时,经常提示内存不足,无法进行。

测试步骤描述

1、将组态软件目录下的PLC_Config\Sample\灯板管理下载到PLC上,运行后取消监控,再上载,这时软件会发生内存不足异常,程序长时间无响应。如图:

1649300118_624e529644c1d3f678737.png!small

2、此时无法获取PLC上运行程序。

其他说明



# 漏洞
本文为 山石网科 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
山石网科 LV.7
山石网科安研院
  • 94 文章数
  • 90 关注者
Linux内核攻击面研究
2023-03-13
详解Flask SSTI 利用与绕过技巧V2
2023-03-06
Shadowsocks 重定向攻击
2023-02-09
文章目录