日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

java解析mqtt_物联网安全系列 | MQTT协议安全

發布時間:2024/9/19 c/c++ 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java解析mqtt_物联网安全系列 | MQTT协议安全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MQTT 全稱為 Message Queuing Telemetry Transport(消息隊列遙測傳輸)是是ISO 標準(ISO/IEC PRF 20922)下基于發布/訂閱范式的消息協議,由 IBM 發布。由于其輕量、簡單、開放和易于實現的特點非常適合需要低功耗和網絡帶寬有限的IoT場景。比如遙感數據、汽車、智能家居、智慧城市、醫療醫護等。

MQTT協議為大量計算能力有限,低帶寬、不可靠網絡等環境而設計,其應用非常廣泛。目前支持的服務端程序也較豐富,其PHP,JAVA,Python,C,C#等系統語言也都可以向MQTT發送相關消息。?

目前最新的版本為5.0版本,可以在 https://github.com/mqtt/mqtt.github.io/wiki/servers?這個連接中看到支持MQTT的服務端軟件。其中hivemq中提到針對汽車廠商的合作與應用,在研究過程中會發現有汽車行業應用了MQTT協議。

以下列舉我們關心的幾項:

1. 使用發布/訂閱的消息模式,支持一對多的消息發布;

2. 消息是通過TCP/IP協議傳輸;

3. 簡單的數據包格式;

4. 默認端口為TCP的1883,websocket端口8083,默認消息不加密。8883端口默認是通過TLS加密的MQTT協議。

MQTT協議中有三種角色和一個主要概念,三種角色分別是發布者(PUBLISHER)、訂閱者(SUBCRIBER)、代理(BROKER),還有一個主要的概念為主題(TOPIC)。

消息的發送方被稱為發布者,消息的接收方被稱為訂閱者,發送者和訂閱者發布或訂閱消息均會連接BROKER,BROKER一般為服務端,BROKER存放消息的容器就是主題。發布者將消息發送到主題中,訂閱者在接收消息之前需要先“訂閱主題”。每份訂閱中,訂閱者都可以接收到主題的所有消息。

其MQTT協議流程圖如下:

這里不對協議進行過多介紹,感興趣的大家可以結尾處的引用查看。

根據其特性,可以擴展如下幾個攻擊點:

1. 授權:匿名連接問題,匿名訪問則代表任何人都可以發布或訂閱消息。如果存在敏感數據或指令,將導致信息泄漏或者被惡意攻擊者發起惡意指令;

2. 傳輸:默認未加密,則可被中間人攻擊。可獲取其驗證的用戶名和密碼;

3. 認證:弱口令問題,由于可被爆破,設置了弱口令,同樣也會存在安全風險;

4. 應用:訂閱端明文配置導致泄漏其驗證的用戶名和密碼;

5. 漏洞:服務端軟件自身存在缺陷可被利用,或者訂閱端或服務端解析內容不當產生安全漏洞,這將導致整個系統。

MQTT的利用

目前已經有針對MQTT的開源利用工具,這里主要以mqtt-pwn這塊工具為主。mqtt-pwn這塊工具功能強大易用。github地址為https://github.com/akamai-threat-research/mqtt-pwn,使用文檔地址為https://mqtt-pwn.readthedocs.io/en/latest/。

工具安裝

mqtt-pwn的安裝很簡單。可以直接安裝到本機,也可以直接使用docker的方式。文本直接使用docker方式。首先確保已經安裝docker和docker-compose,然后運行如下命令進行安裝:

git clone https://github.com/akamai-threat-research/mqtt-pwn.git

cd mqtt-pwn

docker-compose up --build --detach

運行:

docker-compose ps

docker-compose run cli

即可看到mqtt-pwn的界面。

MQTT匿名訪問?

有一些MQTT的服務端軟件默認是開啟匿名訪問,如果管理員沒有網絡安全意識或懶惰,只要對公網開放,任何人都可以直接訪問。

使用mqtt-pwn的connect命令進行連接。connect -h 顯示幫助信息,其他命令也是如此,使用時,多看幫助和文檔,很快就可以熟悉使用。對于開啟匿名的服務,直接connect -o host即可,當然該命令也支持輸入用戶名和密碼。如果沒有顯示連接異常,就表示連接成功。連接成功后,可使用system_info 查看系統信息。

接下來就可以查看topic信息等內容。這時先執行discovery,等待顯示scan ?#1 has finished,接下來執行scans -i 序號,在執行topics命令即可看到topic信息。其中disconvery可以使用-t參數設置超時時間。topics命令可以使用-l參數設置查看條數。

可以輸入messages查看topic的內容。使用-l限制條數,-i參數查看某個單挑消息內容等。

MQTT用戶名密碼爆破?

metasploit帶有MQTT的爆破模塊,經過實際測試,效果并不理想。這里仍然以mqtt-pwn來進行介紹。mqtt-pwn具有bruteforce功能,并帶了一個簡單的字典,可以爆破MQTT的用戶名和密碼。

bruteforce --host host --port -uf user_dic -pf pass_dic

端口默認是1883,用戶和密碼字典默認會在mqtt-pwn的resources/wordlists 文件夾下。

例如執行bruteforce --host 127.0.0.1爆破。爆破成功后就可以使用上面將到的內容進行連接進行操作,在連接時加上用戶名和密碼選項即可。

mqtt-pwn還支持更多功能,如Owntracks (GPS Tracker)、Sonoff Exploiter等。感興趣的大家自己去看下文檔去進行測試。

應用中發現

在實際的使用場景我們可以通過中間人劫持從流量中捕獲驗證信息。以下為wireshark抓包內容。

除此之外,由于目前多種語言實現了mqtt的客戶端,web應用中還有webscoket的mqtt。這使得可以通過web的網頁源碼或網絡請求獲得驗證的信息。

服務端漏洞 ?

這里列舉一些歷史上MQTT的漏洞供參考。

CVE-2017-7296

CVE-2017-7650?

CVE-2018-17614?

CVE-2019-5432?

CVE-2020-13849

Mosquitto漏洞列表

功能強大的nmap是支持MQTT協議的識別的,可以直接通過nmap進行識別MQTT協議。另外,除上面提到的默認端口外,有的管理員會修改默認端口,這時也可以嘗試1884,8084,8884等臨近端口以進行快速探測,或前面增加數字等作為組合,如果針對單個目標,則可以探測全部端口。如果進行大規模的掃描或者提升掃描效率,則可以使用masscan、zmap、RustScan等先進性端口掃描,在使用nmap進行協議識別即可。nmap舉例命令如下:

sudo nmap -p1883,8083,8883 -sS -sV --version-intensity 9 -Pn --open target_ip

nmap也有相關的MQTT lua腳本可以使用,其MQTT版本為3.1.1。腳本地址為https://svn.nmap.org/nmap/nselib/mqtt.lua。

如果想要自己編寫代碼去進行探測,只需要根據MQTT的協議標準,通過socket即可進行收發報文。關于MQTT協議的詳細內容可以查看文檔,地址為https://docs.oasis-open.org/mqtt/mqtt/

現有的網絡空間測繪平臺基本都實現了對MQTT進行探測。可直接通過這些搜索引擎獲取大量對外使用MQTT協議的服務。

· 知風

在針對IoT和ICS探測的搜索引擎知風中搜索,直接搜索mqtt關鍵字,可以發現15萬個對外開放的服務。

· fofa?

搜索關鍵字為protocol=mqtt,一年內有25萬個對外開放。

· shodan?

搜索關鍵字:??

product:"MQTT" ? ?

product:"Mosquitto"

shodan上搜索后共有超過11萬個對外開放。

通過以上的搜索結果,各引擎各有優劣。shodan和知風針對該協議的探測均會列出topic;而fofa從發現數量上最多,但是僅識別了協議,并未列出topic;除此之外知風系統的地理位置定位精度較高,可以定位百米范圍內。

1. 請勿啟用匿名訪問,對服務端(BROKER)設置認證,增加用戶名密碼驗證。

2. 根據實際情況,優先使用加密傳輸數據,防止中間人攻擊。

3. 加密payload后在進行安全傳輸。

4. 使用最新的服務端程序架設服務。

5. 不要將實現的代碼上傳到github等代碼公開平臺。

寫這篇文章時,網絡上關于MQTT安全的文章并不多,但是通過對其了解,仍然有不少內容可以探索,比如在工業上有MQTT網關,以及眾多支持MQTT的服務端軟件、加上廣泛的應用場景。本文簡單介紹MQTT安全的內容,還有更多的內容等待探索。感興趣的朋友也歡迎大家多多交流討論。

最后,提醒一下大家,在學習和研究過程中自己搭建服務進行學習。請勿對網絡上的目標進行測試、破壞等活動。

https://dzone.com/articles/exploiting-mqtt-using-lua https://www.hindawi.com/journals/wcmc/2018/8261746/ https://github.com/akamai-threat-research/mqtt-pwn https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b https://book.hacktricks.xyz/pentesting/1883-pentesting-mqtt-mosquitto https://hackmd.io/@QwmL8PAwTx-bYDnry-ONpA/H1nm2tHzb?type=view https://ttm4175.iik.ntnu.no/prep-iot-mqtt.html https://mobilebit.wordpress.com/tag/mqtt/ https://www.hivemq.com/blog/seven-best-mqtt-client-tools/ https://nmap.org/nsedoc/lib/mqtt.html

http://mqtt.p2hp.com/

總結

以上是生活随笔為你收集整理的java解析mqtt_物联网安全系列 | MQTT协议安全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。