網絡空間測繪——MQTT服務篇
一、MQTT協議簡介
MQTT協議是1999年IBM公司發布的一種基于發布/訂閱(Publish/Subscribe)模式的輕量級通訊協議。MQTT協議的底層構建基于TCP/IP協議,它的特點是其規范簡單,非常適用于低性能、低開銷和有限帶寬的物聯網場景。作為一種輕量級的傳輸協議,MQTT協議的傳輸過程有三方構成,分別是發布者(Publish)、代理(Broker)和訂閱者(Subscribe)。如圖1所示。

圖1 MQTT發布訂閱過程
其中,發布者和訂閱者由客戶端充當,而代理則又服務器端充當。MQTT協議的報文結構組成如表1所示。

表1 MQTT報文組成結構
一條控制報文分為三個部分:第一部分是固定報頭,第二部分是可變報頭,第三部分是有效載荷。
一條發布和訂閱消息的主題部分是其主題和有效載荷部分。其中,主題位于第二部分的可變報頭中。
二、 MQTT服務探測
探測過程MQTT服務測繪過程如下:
1. 搭建MQTT服務
調研市面上主流的MQTT服務器,包括 mosquitto、 EMQ X、ActiveMQ、HiveMQ等。搭建MQTT服務完成后,進行報文發布/訂閱測試。
2. 對搭建完成的MQTT服務進行探測掃描,測試掃描插件回傳消息成功性及完整性。
3. 調取國內及全球存在資產暴露情況的IP地址,存儲為列表,對列表內全部的IP地址進行探測掃描。
4. 解析掃描結果,統計各MQTT服務的狀態信息。選擇的統計指標為回傳信息中可以反應物聯網設備情況并且與端口安全性相關的端口開放狀態、端口響應返回情況和端口所只用的MQTT服務版本。提取回傳報文中的主題及有效載荷信息,并通過文本聚類和報文長度篩選的方法進行識別歸類處理。
5. 提取梳理有效載荷字段中的資產暴露信息。訂閱存在資產暴露信息的端口,對收集到的報文信息進行二次解析。匯總整合所有的資產暴露信息,分析其中存在的安全性隱患。
三、 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 國內端口返回情況

表3 全球端口返回情況
3.3、主題及有效載荷包含情況分析
對可識別出主題和有效載荷的端口的報文內容進行解析和分類整理統計。其中“Topics and their most recent payloads”的服務可以獲取到通信主題和消息,如圖4和5所示。

圖4 國內MQTT服務主題及有效載荷回傳情況

圖5 全球MQTT服務主題及有效載荷回傳情況
通過簡單文本聚類和報文長度篩選的方法提取到了一些資產暴露較嚴重的典型設備及廠商。以下是這些設備及廠商的資產暴露和隱私泄露情況:
1) 路由器
該廠商是一家生產制造交換機、路由器、軟件、安全防火墻、無線產品、存儲等全系列的網絡設備產品線的網絡廠商,其制造的設備被廣泛的用于政府、金融、醫療、教育以及各企業場景。
探測到的資產暴露信息是該廠商的路由器服務,別字段示例:
{ "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個。
2) 智能家居設備
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個。
3) 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端口的其他報文信息內還保持了該智能開關設備的開關記錄。
4) 人臉識別終端裝置
探測結果中可以提取到大量的有關人臉識別系統的信息。不同的廠商給出的具體字段略有不同,但大多都直接暴露了用戶的隱私信息。以下為深圳某地人臉識別系統端口報文情況。
識別字段示例:
{\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'
可以直接從報文信息中提取包括用戶的身份證號、人臉匹配相似度、用戶姓名、手機號、識別時間、人臉溫度以及人臉識別圖片在內的各項用戶隱私信息。
5) 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%。如果只是對于目前市場狀況來說,網絡空間測繪可能已是“紅海”,但從研究的視角往遠看是大片的“藍色”,仍需我們共同去探索。