一、 MQTT协议简介
MQTT协议是1999年IBM公司发布的一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议。MQTT协议的底层构建基于TCP/IP协议,它的特点是其规范简单,非常适用于低性能、低开销和有限带宽的物联网场景。作为一种轻量级的传输协议,MQTT协议的传输过程有三方构成,分别是发布者(Publish)、代理(Broker)和订阅者(Subscribe)。如图1所示。
图1 MQTT发布订阅过程
其中,发布者和订阅者由客户端充当,而代理则又服务器端充当。
MQTT协议的报文结构组成如表1所示。
表1 MQTT报文组成结构
Fixed header | 固定报头 | 所有控制报文都包含 |
Variable header | 可变报头 | 部分控制报文包含 |
Payload | 有效载荷 | 部分控制报文包含 |
一条控制报文分为三个部分:第一部分是固定报头,第二部分是可变报头,第三部分是有效载荷。
一条发布和订阅消息的主题部分是其主题和有效载荷部分。其中,主题位于第二部分的可变报头中。
二、MQTT服务探测
探测过程MQTT服务测绘过程如下:
- 搭建MQTT服务
调研市面上主流的MQTT服务器,包括 mosquitto、 EMQ X、ActiveMQ、HiveMQ等。搭建MQTT服务完成后,进行报文发布/订阅测试。
- 对搭建完成的MQTT服务进行探测扫描,测试扫描插件回传消息成功性及完整性。
- 调取国内及全球存在资产暴露情况的IP地址,存储为列表,对列表内全部的IP地址进行探测扫描。
- 解析扫描结果,统计各MQTT服务的状态信息。选择的统计指标为回传信息中可以反应物联网设备情况并且与端口安全性相关的端口开放状态、端口响应返回情况和端口所只用的MQTT服务版本。提取回传报文中的主题及有效载荷信息,并通过文本聚类和报文长度筛选的方法进行识别归类处理。
- 提取梳理有效载荷字段中的资产暴露信息。订阅存在资产暴露信息的端口,对收集到的报文信息进行二次解析。汇总整合所有的资产暴露信息,分析其中存在的安全性隐患。
三、MQTT测绘分析
202年3月对全球的的MQTT服务进行探测,本节将介绍具体的数据分析结果。
3.1 MQTT服务版本分析
探测到的MQTT服务以mosquitto为主,以下是分布排名靠前的几种MQTT服务。 除mosquitto外,也探测到了少量的EMQ X和hiveMQ服务。在所有探测到的MQTT服务中,国内使用最多的是mosquitto1.4.13版本,全球使用最多的是mosquitto1.4.15版本,具体分布如图2和3所示。
图2 国内MQTT服务版本情况
图3 全球MQTT服务版本情况
3.2 扫描端口返回分析
国内探测的58904个IP中有10323个可以识别出其主题和有效载荷信息,占比17.5%。全球探测的134886个IP中有22676个可以识别出其主题和有效载荷信息,占比16.8%。而剩余的IP端口由于连接失败、未授权、无消息回应等原因未识别到有效信息如表2和3所示。
表2 国内端口返回情况
扫描响应 | 个数 |
syn-ack | 52411 |
no-response | 5020 |
reset | 1145 |
host-prohibited | 273 |
host-unreach | 35 |
time-exceeded | 8 |
admin-prohibited | 7 |
port-unreach | 3 |
net-unreach | 2 |
表3 全球端口返回情况
扫描响应 | 个数 |
syn-ack | 119602 |
no-response | 13058 |
reset | 1419 |
host-unreach | 392 |
admin-prohibited | 286 |
time-exceeded | 61 |
net-unreach | 35 |
host-prohibited | 17 |
port-unreach | 15 |
3.3 主题及有效载荷包含情况分析
对可识别出主题和有效载荷的端口的报文内容进行解析和分类整理统计。其中“Topics and their most recent payloads”的服务可以获取到通信主题和消息,如图4和5所示。
图4 国内MQTT服务主题及有效载荷回传情况
图5 全球MQTT服务主题及有效载荷回传情况
通过简单文本聚类和报文长度筛选的方法提取到了一些资产暴露较严重的典型设备及厂商。以下是这些设备及厂商的资产暴露和隐私泄露情况:
- 路由器
该厂商是一家生产制造交换机、路由器、软件、安全防火墙、无线产品、存储等全系列的网络设备产品线的网络厂商,其制造的设备被广泛的用于政府、金融、医疗、教育以及各企业场景。
探测到的资产暴露信息是该厂商的路由器服务,别字段示例:
{ “type”: “stalog”, “typeid”: 4, “code”: 0, “msg”: { “sn”: “*”, “deviceAliasName”: “****”, “list”: [ { “mac”: “*”, “userIp”: “*.*.*.*”, “ssid”: “@****, “band”: “2.4G”, “rssi”: “-56”, “channel”: “1”, “onlineTime”: “2021-03-29 08:59:12”, “rxrate”: “26M”, “activeTime”: “119923”, “osType”: “Unknown”, “hostName”: “*” }, { “mac”: “da:74:8f:b7:30:7d”, “userIp”: “192.168.120.239”, “ssid”: “@****”, “band”: “2.4G”, “rssi”: “-79”, “channel”: “1”, “onlineTime”: “2021-03-30 12:10:03”, “rxrate”: “1M”, “activeTime”: “22071”, “osType”: “Android”, “hostName”: “*” }, { “mac”: “b0:e1:7e:3a:12:98”, “userIp”: “192.168.120.192”, “ssid”: “@****”, “band”: “2.4G”, “rssi”: “-79”, “channel”: “1”, “onlineTime”: “2021-03-30 18:08:30”, “rxrate”: “5M”, “activeTime”: “565”, “osType”: “Android”, “hostName”: “*” }, { “mac”: “d4:bb:c8:33:4a:1d”, “userIp”: “192.168.120.227”, “ssid”: “@**** “, “band”: “2.4G”, “rssi”: “-67”, “channel”: “1”, “onlineTime”: “2021-03-30 18:09:25”, “rxrate”: “17M”, “activeTime”: “509”, “osType”: “Android”, “hostName”: “*” }, { “mac”: “04:d3:b5:51:39:f5”, “userIp”: “192.168.120.103”, “ssid”: “@****”, “band”: “2.4G”, “rssi”: “-78”, “channel”: “1”, “onlineTime”: “2021-03-30 18:13:18”, “rxrate”: “8M”, “activeTime”: “277”, “osType”: “Android”, “hostName”: “*” } ] } }
可以从中提取出的资产信息包括,设备的产品序列号sn、设备的厂商是名、用户的IP地址、服务集标识ssid、用户的在线时间、路由器频段band、接收的信号强度指示rssi、路由器接受速度rxrate、路由器连接的各个设备信息(包括设备的手机型号以及设备使用的操作系统)。订阅该端口的特定主题,该IP地址的1883端口发送同类型报文消息的频率为一分钟13次。在全国的58904个IP探测结果中共检测到该厂商路由器相关字段26个。
- 智能家居设备
Hwacom是台湾的一家宽带应用集成服务提供商。探测到的是Hwacom的一款测量室内温度与湿度的家居设备。
识别字段示例:
b'{“timestamp”:1626518890771,”temperature”:41.771,”humidity”:43.405815,”status”:”monitoring”,”batteryTemperature”:25.0,”batteryLevel”:69,”upTime”:1622785035890,”wifiState”:{“ssid”:”\\”DemoRoom_NETGEAR\\””,”signalLevel”:4,”frequency”:2452,”linkSpeed”:72,”rssi”:-27},”storageState”:{“totalStorageMBytes”:5765120,”freeStorageMBytes”:4942256},”memoryUsage”:0,”cpuUsage”:0}’
可以从中提取出的信息包括,时间戳、当前室内温度、当前室内湿度、电池温度、电池电量、WiFi服务集标识ssid、信号强度signalLevel、频率frequency、连接速度linkSpeed、设备存储状态以及CPU占用状态。
订阅该端口的特定主题,该IP地址的1883端口发送同类型报文消息的频率为一分钟5次。在全国的58904个IP探测结果中共检测到Hwacom智能家居设备相关字段2个。
- HomeAssistant
HomeAssistant是一个基于Python的开源智能家居系统。用户可以将灯具、智能媒体、智能插座、智能开关等家居设备与HomeAssistant进行整合,构建属于自己的智慧空间系统。
某厂商是国内的一家以手机、智能硬件和IoT平台为核心的互联网公司。近几年,该厂商专注于智能手机、智能家居和互联网电视等产品的研究。本次探测到的是一款使用了HomeAssistant的该厂商智能开关。
识别字段示例:
{“unit_of_measurement”:”%”,”device_class”:”battery”,”value_template”:”{{ value_json.battery }}”,”state_topic”:”zigbee2mqtt/0x04cf8cdf3c75c16e”,”json_attributes_topic”:”zigbee2mqtt/0x04cf8cdf3c75c16e”,”name”:”0x04cf8cdf3c75c16e_battery”,”unique_id”:”0x04cf8cdf3c75c16e_battery_zigbee2mqtt”,”device”:{“identifiers”:[“zigbee2mqtt_0x04cf8cdf3c75c16e”],”name”:”0x04cf8cdf3c75c16e”,”sw_version”:”Zigbee2mqtt 1.12.2″,”model”:”****”,”manufacturer”:”****”},”availability_topic”:”zigbee2mqtt/bridge/state”}
可以从中提取出的信息包括,测量单位unit_of_measurement、电量信息、设备名称、设备制造商等。同一IP端口的其他报文信息内还保持了该智能开关设备的开关记录。
- 人脸识别终端装置
探测结果中可以提取到大量的有关人脸识别系统的信息。不同的厂商给出的具体字段略有不同,但大多都直接暴露了用户的隐私信息。以下为深圳某地人脸识别系统端口报文情况。
识别字段示例:
{\r\n”operator”:”RecPush”,\r\n”info”: {\r\n”customId”:”**”,\r\n”personId”:”5″,\r\n”RecordID”:”41″,\r\n”similarity1″:”91.199997″,\r\n”similarity2″:”0.000000″,\r\n”direction”:”unknow”,\r\n”otype”:”513″,\r\n”persionName”:”***”,\r\n”facesluiceId”:”**”,\r\n”facesluiceName”:”Face1″,\r\n”cardNum2″:”0″,\r\n”idCard”:”**”,\r\n”telnum”:”**”,\r\n”time”:”2021-07-22 11:50:08″,\r\n”temperature”: “36.1”,\r\n”temperatureAlarm”: “0”,\r\n”temperatureMode”: “0”,\r\n”pic”: “data:image/jpeg;base64,******”\r\n}\r\n}\r\n’
可以直接从报文信息中提取包括用户的身份证号、人脸匹配相似度、用户姓名、手机号、识别时间、人脸温度以及人脸识别图片在内的各项用户隐私信息。
- GPS追踪定位装置
探测结果中同样也获取到了一些跟GPS追踪定位相关的设备信息,如智能手表、汽车定位系统等。以下是其中某一款追踪定位装置的回传信息。
识别字段示例:
b'[{“DN”:”****”,”Longitude”:”1*.44093″,”Latitude”:”**.31341″,”speed”:0,”direction”:0,”height”:126,”status”:3,”startTime”:”2021-07-17 19:18:00″,”endTime”:”2021-07-17 19:18:00″,”totalRoute”:”1150.284000″,”route”:”1150.284000″,”clearTime”:”2019-09-29 15:40:31″}]’
可以从中提取出用户的手机号以及用户所在的经度、纬度、速度、方向、海拔、定位器状态、采集时间以及用户行动路程等信息。回传频率为每个设备一分钟1次。不同时段同时在线设备数不等,一般为5-10台。
在MQTT测绘数据分析过程中,我们发现的可识别服务不止这些,考虑篇幅和数据敏感性就不一一列举。
四、总结
本文对全网的MQTT协议分析,虽然对于网络空间来说只是一个很小的视角,但可以给网络空间测绘工作带来一些启发。首先,MQTT是上世纪出现的通信协议,但因为物联网的发展,这个协议也重新活跃在大众视野,技术使用一直都有趋势性,未来会有更多的人去使用该服务。仍然有大规模的类似MQTT的消息队列服务暴露在互联网上,如果配置不当,攻击者可以获得传输的敏感数据,甚至可以修改数据、控制终端,所以更应该关注其暴露面和攻击面。另一方面,可以对网络空间中的技术更迭进行描绘,这同样有助于安全能力建设和监管。此外,现在能关注到网络空间维度还远远不够,无论是网络资源的全量,还是资产的全维都还差的很远,就好比人类从16世纪开始探索海洋,直至今日我们对海洋的了解程度还不到10%。如果只是对于目前市场状况来说,网络空间测绘可能已是“红海”,但从研究的视角往远看是大片的“蓝色”,仍需我们共同去探索。
参考文献:
- https://en.wikipedia.org/wiki/MQTT
- 绿盟科技《2021网络空间测绘年报》,https://book.yunzhan365.com/tkgd/ccfz/mobile/index.html
版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。