一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議MQTT簡析

蛇矛實驗室 ? 來源:蛇矛實驗室 ? 作者:c4se ? 2022-11-23 14:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本環(huán)境是蛇矛實驗室基于"火天網(wǎng)演攻防演訓靶場"進行搭建,通過火天網(wǎng)演中的環(huán)境構(gòu)建模塊,可以靈活的對目標網(wǎng)絡(luò)進行設(shè)計和配置,并且可以快速進行場景搭建和復現(xiàn)驗證工作。

自 2005年國際電信聯(lián)盟正式提出“物聯(lián)網(wǎng)IoT)”這一概念以來,物聯(lián)網(wǎng)在全球范圍內(nèi)迅速獲得認可,并成為信息產(chǎn)業(yè)革命第三次浪潮和第四次工業(yè)革命的核心支撐。

同時,數(shù)以億計的設(shè)備接入物聯(lián)網(wǎng),這些設(shè)備如今已滲透到我們生活的方方面面,從家居到工廠無處不在。一方面物聯(lián)網(wǎng)設(shè)備使我們的生活更加便捷,而另一方面物聯(lián)網(wǎng)安全事件頻發(fā),全球物聯(lián)網(wǎng)安全支出不斷增加。

當前,大量物聯(lián)網(wǎng)設(shè)備及云服務(wù)端直接暴露于互聯(lián)網(wǎng),這些設(shè)備和云服務(wù)端存在的漏洞一旦被利用,可導致設(shè)備被控制、用戶隱私泄露、云服務(wù)端數(shù)據(jù)被竊取等安全風險,甚至會對基礎(chǔ)通信網(wǎng)絡(luò)造成嚴重影響。

從2018年全球統(tǒng)計數(shù)據(jù)來看,路由器、視頻監(jiān)控設(shè)備暴漏數(shù)量占比較高。路由器暴漏數(shù)量超過3000萬臺,視頻監(jiān)控設(shè)備暴露數(shù)量超過1700萬臺,并且這些設(shè)備往后幾年會一年比一年多,物聯(lián)網(wǎng)安全的事件也會越來越多。由此,物聯(lián)網(wǎng)安全行業(yè)需要大力發(fā)展,物聯(lián)網(wǎng)安全人才的培養(yǎng)也刻不容緩。

蛇矛實驗室在后續(xù)將利用火天網(wǎng)境系列靶場中的相關(guān)目標仿真和環(huán)境構(gòu)建的特性,將持續(xù)發(fā)布關(guān)于“物聯(lián)網(wǎng)安全-CVE實戰(zhàn)分析”系列的文章來幫助大家入門物聯(lián)網(wǎng)安全。

關(guān)于MQTT

MQTT是一個基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議。MQTT協(xié)議是輕量、簡單、開放和易于實現(xiàn)的,這些特點使它適用范圍非常廣泛。

在很多情況下,包括受限的環(huán)境中,如:機器與機器(M2M通信和物聯(lián)網(wǎng)(IoT)。其在,通過衛(wèi)星鏈路通信傳感器、偶爾撥號的醫(yī)療設(shè)備、智能家居、及一些小型化設(shè)備中已廣泛使用。

MQTT介紹

4bccdd54-3ed3-11ed-9e49-dac502259ad0.png

MQTT的幾個要素:

1

1. 客戶端(Client):使用MQTT的程序或設(shè)備,一般分為發(fā)布者和訂閱者

2. 服務(wù)端(Server):發(fā)布者和訂閱者之間的Broker

3. 主題(Topic):附加在消息上的一個標簽,Broker會將該消息發(fā)送給所有訂閱該主題的訂閱者

4. 主題過濾器(Topic Filter):訂閱者訂閱時可使用通配符同時訂閱一個或多個主題

MQTT基于發(fā)布和訂閱模型,MQTT 協(xié)議的訂閱與發(fā)布是基于主題的(Topic),MQTT工作在 TCP/IP協(xié)議族上。一個典型的 MQTT 消息發(fā)送與接收的流程如下:

1. Publisher 連接 Broker;

2. Suscriber連接 Broker,并訂閱主題 Topic;

3. Publisher 發(fā)送一條消息給 Broker,主題為 Topic;

4. Broker 收到 Publisher 的消息,查出 Suscriber 訂閱了 Topic,然后將消息轉(zhuǎn)發(fā)到 Suscriber;

我們可以簡單理解,將MQTT理解為微博工作模式,當你(Suscriber)點擊關(guān)注一個博主(Publisher)后,你就訂閱了博主(連接到了Broker),當博主發(fā)微博消息時(Publish message),微博的服務(wù)器(Broker)會將你訂閱博主的微博消息轉(zhuǎn)發(fā)給你(Subcribe message),這樣就完成了消息傳遞。

MQTT服務(wù)器搭建

Eclipse Mosquitto是一個開源消息代理,實現(xiàn)了MQTT協(xié)議版本3.1和3.1.1。Mosquitto輕量,適用于低功耗單板計算機到完整服務(wù)器的所有設(shè)備。Mosquitto項目還提供了用于實現(xiàn)MQTT客戶端的C庫,以及非常受歡迎的mosquitto_pub和mosquitto_sub命令行的MQTT客戶端(來自于翻譯)。

安裝Mosquitto的過程,首先添加mosquitto的ppa源:

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa

4c26d3e0-3ed3-11ed-9e49-dac502259ad0.png

安裝mosquitto程序和mosquitto-clients客戶端程序

sudo apt installmosquitto
sudo apt installmosquitto-clients

4f41baea-3ed3-11ed-9e49-dac502259ad0.png

我們接下來就可以啟動mosquitto服務(wù)了,啟動可以查看一下mosquitto進程是否啟動。這里可以看到mosquitto -c參數(shù)后運行配置文件的路徑

sudo service mosquitto start

ps -aux | grep mosquitto
或者
sudo service mosquitto status

4fb43f7a-3ed3-11ed-9e49-dac502259ad0.png

接下來,我們就可以測試mqtt協(xié)議的工作流程了,首先啟動一個終端

mosquitto_sub-t "topic_name"

然后再起一個終端,使用

mosquitto_pub-t "topic_name"-m "this is a test"

這時,客戶端就會接受到訂閱的消息,服務(wù)器再次發(fā)送后,客戶端將又會接受到訂閱消息

4febd34a-3ed3-11ed-9e49-dac502259ad0.png

我們可以添加一個用戶,這里我創(chuàng)建了一個example用戶,密碼為example

sudomosquitto_password -c /etc/mosquitto/example example

50118b08-3ed3-11ed-9e49-dac502259ad0.png

進入到"/etc/mosquitto"目錄下,可以看到剛剛創(chuàng)建example用戶名和密碼的配置文件

503746e0-3ed3-11ed-9e49-dac502259ad0.png

接下來我們可以添加一個用戶的配置文件,使用用戶的配置文件進行運行,我們先停止"mosquitto"服務(wù),然后在"/etc/mosquitto/conf.d"目錄下創(chuàng)建一個default.conf(這里也可以拷貝"/usr/share/doc/mosquitto/example/mosquitto.conf"文件根據(jù)需求進行修改),然后重新啟動mosquitto服務(wù),查看一下服務(wù)是否啟動。

505b87e4-3ed3-11ed-9e49-dac502259ad0.png

此時重復上面的信息發(fā)送過程,使用-u參數(shù)指定用戶名,-P參數(shù)輸入密碼

5073f2a2-3ed3-11ed-9e49-dac502259ad0.png

以上操作均在linux終端下運行,在Windows上可以使用MQTT X工具,MQTTX 是EMQ 開源的一款跨平臺 MQTT 5.0 桌面客戶端,它能運行在 macOS,Linux,Windows上。

MQTT X 的用戶界面借助聊天軟件的形式簡化了頁面的操作邏輯,用戶可以快速創(chuàng)建連接保存并同時建立多個連接客戶端,方便用戶快速測試 MQTT/TCP、MQTT/TLS 的連接、發(fā)布/訂閱功能及其他特性。

打開MQTT X官網(wǎng)下載好以后,我們可以使用wireshark進行抓包進行分析整個的流程。

首先啟動wireshark進行監(jiān)聽,然后打開MQTTX軟件新建一個鏈接,如下圖,這里名稱我設(shè)置的"mqtt_test",Client ID我使用默認分配的,服務(wù)器地址協(xié)議為"mqtt://",后面填"broker.emqx.io"。這里的EMQ X Cloud 提供的公共 MQTT 服務(wù)器,可以供我們免費使用。

下面的端口號為1883,可以進行修改,賬號和密碼隨意設(shè)置。設(shè)置好以后,就可以點擊連接了。

50ba9932-3ed3-11ed-9e49-dac502259ad0.png

修改下面msg的值為我們要發(fā)送的內(nèi)容,點擊小飛機進行發(fā)送。就可以看到消息的發(fā)布和訂閱過程了。

510917e2-3ed3-11ed-9e49-dac502259ad0.png

整個流程完畢后,點擊MQTTX上面的關(guān)閉連接按鈕。然后wireshark輸入"mqtt"進行過濾。

按時間排序,可以看到MQTT協(xié)議給Broker發(fā)送了一個Connect登錄請求,然后,服務(wù)器回應一個ACK,表示登錄成功。再雙擊Connect Command這條數(shù)據(jù)包,我們可以從下面窗口中看到數(shù)據(jù)包詳細的十六進制字節(jié)內(nèi)容。

51267b0c-3ed3-11ed-9e49-dac502259ad0.png

接下來,查看Connect Ack數(shù)據(jù)包可以看到到服務(wù)器回應了"20 02 00 00",這里表示登錄成功。

52e4dcea-3ed3-11ed-9e49-dac502259ad0.png

接下來看MQTT協(xié)議的 Subcribe和Publish數(shù)據(jù)包。可以看到客戶端Subcribe一個topic("test_topic/1111")

530b24cc-3ed3-11ed-9e49-dac502259ad0.png

Broker返回了"90 03 99 47 00",其中"90"為 Subscribe ACK 報文固定報頭,"03" 為剩余長度,后面?zhèn)z字節(jié)為id號,"00"結(jié)束。

5365d4a8-3ed3-11ed-9e49-dac502259ad0.png

當Publisher往這個topic 推送 Payload 時,Broker 就會把 Payload 轉(zhuǎn)發(fā)給定閱這個topic的Subcriber。這樣就完成了整個流程。

53c35fe2-3ed3-11ed-9e49-dac502259ad0.png

MQTT相關(guān)漏洞

授權(quán)和認證漏洞

1

MQTT 是一種機器對機器連接協(xié)議,被設(shè)計為一種極其輕量級的發(fā)布/訂閱消息傳輸,并被全球數(shù)百萬的物聯(lián)網(wǎng)設(shè)備廣泛使用。

MQTT-PWN 旨在成為 IoT Broker 滲透測試和安全評估操作的一站式商店,因為它結(jié)合了枚舉、支持功能和開發(fā)模塊,同時將其全部打包在命令行界面中,并易于使用和可擴展的類殼環(huán)境(來自翻譯)。

接下來,我們使用mqtt-pwn做一些mqtt授權(quán)和認證漏洞的演示,首先安裝mqtt-pwn

git clone https://github.com/akamai-threat-research/mqtt-pwn.git
cdmqtt-pwn
sudo docker-compose up--build --detach

543898a2-3ed3-11ed-9e49-dac502259ad0.png

然后就可以啟動MQTT-PWN了

sudo docker-compose ps
sudo docker-compose run cli

下圖為MQTT-PWN運行時狀態(tài)

546eca94-3ed3-11ed-9e49-dac502259ad0.png

有一些公網(wǎng)開放的MQTT服務(wù)端軟件默認是開啟匿名訪問,我們可以在shodan、fofa、zoomeye等,搜索MQTT,可以看到"MQTT Connection Code: 0"。

這里如果連接某個Broker,返回結(jié)果中"MQTT Connection Code"為0就代表成功連接,如果返回值為4說明賬號密碼錯誤,如果返回值為5說明該Broker不支持用戶密碼登陸。

549ea80e-3ed3-11ed-9e49-dac502259ad0.png

我們接下來使用mqtt-pwn進行連接,help 顯示幫助信息,可以使用connect命令進行連接。對于開啟匿名登錄的服務(wù)端,直接使用"connect -o host"命令就可連接,如果沒有報錯,就表示連接成功。

連接成功后,可使用system_info 查看系統(tǒng)信息。接下來使用discovery建立掃描,等待Scans完成才可進行下一步,否則會報錯。

54cf5d5a-3ed3-11ed-9e49-dac502259ad0.png

使用"scans -i id",id為建立discovery的線程id。然后就可以使用"topics"查看所有topic了。

550b26f0-3ed3-11ed-9e49-dac502259ad0.png

可以輸入`messages`查看topic的內(nèi)容

5558507e-3ed3-11ed-9e49-dac502259ad0.png

我們可以用MQTT-PWN使用弱口令爆破某個MQTT Broker,得到其賬號密碼,然后接入Broker。

bruteforce --host host --port port

57b3083c-3ed3-11ed-9e49-dac502259ad0.png

這里的暴力破解,主要還是看自己收藏的字典是否強大,另一方面就是網(wǎng)速的快慢。我們可以使用如下命令進行爆破,爆破成功后會顯示用戶名和密碼。"mqtt-pwn/resources/wordlists"目錄下存放了mqtt-pwn的爆破的用戶名和密碼字典,這里可以添加我們自己收藏的字典。

57fab56a-3ed3-11ed-9e49-dac502259ad0.png

傳輸漏洞

2

MQTT可造成XSS攻擊,這里測試CVE-2020-13821漏洞,本次測試搭建的版本為hivemq 4.3.2。我們使用docker搭建環(huán)境進行復現(xiàn),比較方便。

sudodockerpullhivemq/hivemq4:4.3.2

sudodockerrun-p8080:8080-p1883:1883hivemq/hivemq4:4.3.2

環(huán)境搭建好以后,使用瀏覽器訪問ip地址,發(fā)現(xiàn)運行正常。

582d80da-3ed3-11ed-9e49-dac502259ad0.png

使用上面提到的MQTTX工具進行連接。創(chuàng)建一個新的連接,名稱隨意填寫,Client ID為漏洞點,payload為"",然后端口填寫docker映射出的相對端口。

設(shè)置完畢后,點擊connect進行連接和發(fā)送。

586e5772-3ed3-11ed-9e49-dac502259ad0.png

連接成功后,去瀏覽器進行驗證。

589a316c-3ed3-11ed-9e49-dac502259ad0.png

點擊Clients,然后點擊“Refresh Snaphot”即可觸發(fā)執(zhí)行payload

58d3bc48-3ed3-11ed-9e49-dac502259ad0.png

應用漏洞

3

以EMQX為例,EMQX 是一款大規(guī)模可彈性伸縮的云原生分布式物聯(lián)網(wǎng) MQTT 消息服務(wù)器。作為全球最具擴展性的 MQTT 消息服務(wù)器,EMQX 提供了高效可靠海量物聯(lián)網(wǎng)設(shè)備連接,能夠高性能實時移動與處理消息和事件流數(shù)據(jù),幫助您快速構(gòu)建關(guān)鍵業(yè)務(wù)的物聯(lián)網(wǎng)平臺與應用。

我們可以搜索EMQX的相關(guān)文檔信息,獲取有用信息。

5989c088-3ed3-11ed-9e49-dac502259ad0.png

以默認用戶名和密碼為例,我們在fofa或者shodan等搜索18083端口,并且title有dashboard,就可以搜索出EMQX的相關(guān)站點,我們使用默認用戶名和密碼即可進行登錄查看。

59cba05c-3ed3-11ed-9e49-dac502259ad0.png

其他漏洞

4

對于無法通過一般途徑獲取賬號密碼的客戶端,我們可以通過提取設(shè)備的固件,對其逆向分析,然后把文件系統(tǒng)中的證書或是賬號密碼提取出來。亦或者MQTT使用加密通信,通過提取固件分析其加密流程進行解密,并進行后續(xù)攻擊操作。

總結(jié)

這一小節(jié)我們本文簡單介紹MQTT安全相關(guān)內(nèi)容,使用mosquito和mqttx完成了整個mqtt信息傳輸流程,然后復現(xiàn)了幾個分類中常見的MQTT漏洞。最后提醒一下大家,自己在學習過程中最好自己搭建服務(wù)進行測試,請勿對網(wǎng)絡(luò)上的機器目標進行測試和破壞。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2565

    文章

    52971

    瀏覽量

    767173
  • 過濾器
    +關(guān)注

    關(guān)注

    1

    文章

    439

    瀏覽量

    20380
  • MQTT協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    99

    瀏覽量

    5938

原文標題:物聯(lián)網(wǎng)安全實戰(zhàn)從零開始-MQTT協(xié)議分析

文章出處:【微信號:蛇矛實驗室,微信公眾號:蛇矛實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    教你如何手搓樹莓派網(wǎng)絡(luò)服務(wù)器!

    使用樹莓派的定義和好處網(wǎng)絡(luò)服務(wù)器是指利用HTTP及其他協(xié)議進行數(shù)據(jù)傳輸,處理通過萬維網(wǎng)提交的客戶端請求的軟硬件組合。網(wǎng)絡(luò)服務(wù)器的主要功能是存
    的頭像 發(fā)表于 07-12 08:23 ?56次閱讀
    教你如何手搓<b class='flag-5'>一</b><b class='flag-5'>個</b>樹莓派網(wǎng)絡(luò)<b class='flag-5'>服務(wù)器</b>!

    請問Phy DLE Max TX Octets 由客戶端還是服務(wù)器控制?

    Phy DLE Max TX Octets 由客戶端還是服務(wù)器控制?
    發(fā)表于 06-25 08:28

    如何在MQTT發(fā)布訂閱實體

    消息發(fā)送到MQTT代理(Broker)上的特定主題(Topic)。發(fā)布者無需知道有哪些客戶端訂閱了該主題,只需將消息發(fā)送到代理即可。 訂閱
    的頭像 發(fā)表于 05-20 17:21 ?322次閱讀

    文詳解MCP傳輸機制

    MCP 傳輸機制(Transport)是 MCP 客戶端與 MCP 服務(wù)器通信的橋梁,定義了客戶端
    的頭像 發(fā)表于 04-14 14:03 ?1575次閱讀
    <b class='flag-5'>一</b>文詳解MCP<b class='flag-5'>傳輸</b>機制

    MKW45B41Z客戶端無法從服務(wù)器獲取服務(wù)是為什么?

    。MKW45B41Z (自定義板) 充當中央設(shè)備客戶端角色。MKW45 客戶端掃描外圍設(shè)備(NRF 連接)設(shè)備并連接到外圍設(shè)備(NRF 連接)設(shè)備。連接 MKW45(自定義板卡)后,客戶端無法從
    發(fā)表于 03-28 07:40

    《DNESP32S3使用指南-IDF版_V1.6》第五十五章 基于MQTT協(xié)議連接阿里云服務(wù)器

    實時可靠的消息服務(wù)。做為種低開銷、低帶寬占用的即時通訊協(xié)議,MQTT在物聯(lián)網(wǎng)、小型設(shè)備、移動應用等方面有廣泛的應用,MQTT
    發(fā)表于 03-18 09:22

    MQTT物聯(lián)網(wǎng)平臺有哪些?有哪些功能?

    MQTT(Message Queuing Telemetry Transport)是種基于客戶端-服務(wù)器架構(gòu)的發(fā)布/
    的頭像 發(fā)表于 03-15 14:23 ?823次閱讀
    <b class='flag-5'>MQTT</b>物聯(lián)網(wǎng)平臺有哪些?有哪些功能?

    百問MQTT協(xié)議分析 - MQTT簡述及協(xié)議報文格式組成

    16.1 mqtt協(xié)議介紹 16.1.1 概述 ?MQTT客戶端
    發(fā)表于 12-13 09:29

    socket 客戶端服務(wù)器的實現(xiàn)

    1. 理解Socket 在計算機網(wǎng)絡(luò)中,socket是種通信機制,允許兩程序(客戶端
    的頭像 發(fā)表于 11-12 14:30 ?811次閱讀

    物聯(lián)網(wǎng)行業(yè)中MQTT通信協(xié)議詳解以及使用

    在物聯(lián)網(wǎng)、小型設(shè)備、移動應用等方面有較廣泛的應用。 二 MQTT協(xié)議特點 MQTT基于 客戶端
    的頭像 發(fā)表于 09-20 17:08 ?2616次閱讀
    物聯(lián)網(wǎng)行業(yè)中<b class='flag-5'>MQTT</b>通信<b class='flag-5'>協(xié)議</b>詳解以及使用

    NTP網(wǎng)絡(luò)時間服務(wù)器能帶同步多少客戶端?

    NTP網(wǎng)絡(luò)時間服務(wù)器能帶同步多少客戶端
    的頭像 發(fā)表于 09-04 10:43 ?876次閱讀
    NTP網(wǎng)絡(luò)時間<b class='flag-5'>服務(wù)器</b>能帶同步多少<b class='flag-5'>客戶端</b>?

    IG902如何連接公有MQTT測試平臺?

    使用MQTT客戶端訂閱相同的Topic,接收IG設(shè)備發(fā)送的數(shù)據(jù)。 1)使用MQTTBox 充當MQTT協(xié)議
    發(fā)表于 07-25 08:06

    使用windows版mosquitto軟件自建服務(wù)器

    通 e.打開第一個CMD終端,啟動代理服務(wù)器(指定配置文件): f.打開第二CMD終端,作為客戶端1,訂閱主題(指定IP、端口、用戶名
    發(fā)表于 07-24 06:39

    使用ESP8266板和AT命令集構(gòu)建客戶端HTTP服務(wù)器遇到的疑問求解

    我們正在嘗試使用ESP8266板和 AT 命令集構(gòu)建客戶端 HTTP 服務(wù)器,通過串行端口連接到 Arduino 板。我們正在使用 Arduino Mega 2560 板。它有更
    發(fā)表于 07-18 08:03

    如果ESP上的TCP客戶端服務(wù)器斷開連接,如何啟用自動重連?

    ESP - TCP 客戶端 嵌入式 Linux 服務(wù)器 - TCP 服務(wù)器 如果ESP上的TCP客戶端服務(wù)器斷開連接,如何啟用自動重連?
    發(fā)表于 07-17 06:25