DDP协议是数据终端单元(DTU)与数据服务中心(DSC)之间的通讯协议,用于数据的传输和DTU管理,国内工业物联网发展迅速,无线数据采集与传输是工业物联网数据通信中重要的采集方式和组网方式,DTU在无线数据采集所涉及到的供热、燃气、气象等市政重点工业领域应用及其广泛。DDP协议适用于DTU产品在各种工业监控、交通管理、气象等场合的数据通信,特别是需要与数据中心进行复杂数据交换的场景,适用于工业级环境,包括高温、高湿、高干扰等恶劣环境,保证7×24小时稳定传输,在工业现场中,存在许多现场是有线无法到达的场景,DTU无线数据终端基于GPRS/CDMA数据通信网络,可专门用于将串口数据转换为IP数据或将IP数据转换为串口数据,并通过无线通信网络进行传输。DDP协议支持GPRS和CDMA 1x网络,能够在这些网络上提供TCP/IP连接,本文主要针对DDP协议基于tcp/ip的数据传输方式进行的分析研究。
![针对ddp协议的物联网设备的脆弱性分析 针对ddp协议的物联网设备的脆弱性分析](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2024/07/8-1720536638.png)
对于DSC的探测,DDP协议本身对于一些关键字段如手机号,ip地址,端口号等没有进行有效的效验,所以我们可以通过构造注册包的方式来进行探测DSC设备,注册包构造如下:
起始标志:7b(1B)
数据包类型:01(1B)(终端请求注册)
数据包长度:0016(2B)
DTU身份识别:3133393131313131313132(11B)(对于身份识别ddp协议并未验证有效性,因此设置任意11位数字即可)
ip地址:c0a80101(4B)(ip地址也未进行校验,可以设置任意合法的ip地址,这里我们设置的是192.168.1.1)
端口号:1390(2B)(端口号同样未校验,可以设置任意合法端口,这里我们设置的为5008)
结束标志:7b(1B)
将上述注册包发送给DSC后可以看到已经注册成功:
wireshark抓包如下:
判断方法为响应包的起始两位为7b81,结束为7b,只要符合该数据格式,我们就可以认定我们探测的目标为DSC了。
为了不对DSC造成任何影响,当我们探测成功后最好发送一个注销包,格式如下:
起始位:7b(1B)
数据包类型:02(1B)
数据包长度:0010(2B)
DTU身份识别:3133393131313131313132(11B)(与注册包的一致)
结束位:7b(1B)
发送注销包之后,我们之前的注册信息将不会在DSC上存留
由于DDP协议缺少有效的验证,所以导致DSC容易受到如下几种方式的攻击:
1.恶意注册大量非法DTU,在同一时间内发送大量的注册包到DSC上,消耗DSC的大量资源甚至导致系统崩溃
2.恶意注销已经注册的正常DTU,因为DSC在注销DTU的时候仅将DTU身份识别号作为唯一特征,所以我们在构造注销包的时候可以将身份识别号任意改变,这样可以通过爆破的方式对DSC不断发送注销包,导致已经注册的DTU非正常下线。以上述工具的DSC,DTU为例,身份识别号为22222222222的DTU已经注册到DSC上,这时候我们发送一个携带该身份识别号的注销包发送到DSC上,其结果如图所示:
可以看到DSC上已经显示22222222222的DTU已经下线了,但是该DTU端却依然是登录状态。
wireshark抓到我们恶意注销包的响应包如下:
起始和结束为均为7b,第二位82代表注销成功,5-15表示成功注销掉的DTU的身份识别号。
由于DTU是客户端,所以仅支持UDP传输方式的DTU探测,经过研究发现,针对已经注册成功的DTU,我们构造如下数据包:
起始位:7b(1B)
数据包类型:81(1B)
数据包长度:0010(2B)
任意11位数字:3131313131313131313131(11B)
结束位:7b(1B)
对于DTU设备,收到上述数据包后,会返回一个携带自己身份识别号的数据包,这样我们不仅可以探测到该设备为DTU,甚至可以获得DTU的身份识别号,整个过程wireshark抓包如下:
其中第一个包为真实DTU向DSC的注册包,第二个为DSC响应的注册成功包,图中展示的第三个包就是我们构造向DTU发送的数据包,DTU的响应包如下:
可以看到响应包中携带了DTU的****识别号,因此我们探测DTU的方法为发送构造的数据包,判断响应包的特征位,如果符合,则进一步提取DTU的身份识别号。
由于在探测过程中我们可以获取DTU的****识别号,所以我们可以利用该身份识别号绕过DSC直接强制DTU下载,我们接着第五步介绍的继续进行操作,此时我们已经获取了DTU的身份识别号为222222222222,然后我们利用该识别号构造如下数据包:
起始位:7b(1B)
数据包类型:82(1B)
数据包长度:0010(2B)
DTU的身份识别号:3232323232323232323232(11B)
结束为:7b(1B)
正常状态如图所示:
然后我们发送上述构造的数据包后,状态如图所示:
可以看到DTU端已经下线,但是DSC依然显示DTU在线。
终端使用GPRS/CDMA直接经过互联网与中心站的固定/动态IP进行通信,这种快捷、廉价的组网应用广泛,目前虽然没有出现专门针对此类系统公开的攻击事件,但对于DDP协议这种ICS协议暴露将缩短攻击者发现重要工业控制系统入口的时间,随着DDP服务的开放易导致该IP目标成为针对性的被攻击对象,我们建议使用此类组网的用户,尤其应该做好边界入口的安全防护、应用服务(Web、Telnet、SSH)的安全加固、主机安全配置。
博智安全自主研发的工控漏洞挖掘系统是用于发现工控设备未知漏洞、验证其安全状况的黑盒测试产品,采用智能Fuzzing技术,对工控设备(PLC等)、工控系统(DCS、SCADA等)进行未知漏洞挖掘、安全性和健壮性测试,可以有效地帮助用户发现安全隐患,做好安全防护。
原文始发于微信公众号(博智非攻研究院):针对ddp协议的物联网设备的脆弱性分析