国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

一個基于客戶端-服務器的消息發布/訂閱傳輸協議MQTT簡析

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

掃碼添加小助手

加入工程師交流群

本環境是蛇矛實驗室基于"火天網演攻防演訓靶場"進行搭建,通過火天網演中的環境構建模塊,可以靈活的對目標網絡進行設計和配置,并且可以快速進行場景搭建和復現驗證工作。

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

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

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

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

蛇矛實驗室在后續將利用火天網境系列靶場中的相關目標仿真和環境構建的特性,將持續發布關于“物聯網安全-CVE實戰分析”系列的文章來幫助大家入門物聯網安全。

關于MQTT

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

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

MQTT介紹

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

MQTT的幾個要素:

1

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

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

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

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

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

1. Publisher 連接 Broker;

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

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

4. Broker 收到 Publisher 的消息,查出 Suscriber 訂閱了 Topic,然后將消息轉發到 Suscriber;

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

MQTT服務器搭建

Eclipse Mosquitto是一個開源消息代理,實現了MQTT協議版本3.1和3.1.1。Mosquitto輕量,適用于低功耗單板計算機到完整服務器的所有設備。Mosquitto項目還提供了用于實現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服務了,啟動可以查看一下mosquitto進程是否啟動。這里可以看到mosquitto -c參數后運行配置文件的路徑

sudo service mosquitto start

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

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

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

mosquitto_sub-t "topic_name"

然后再起一個終端,使用

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

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

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

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

sudomosquitto_password -c /etc/mosquitto/example example

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

接下來看MQTT協議的 Subcribe和Publish數據包??梢钥吹娇蛻舳薙ubcribe一個topic("test_topic/1111")

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

Broker返回了"90 03 99 47 00",其中"90"為 Subscribe ACK 報文固定報頭,"03" 為剩余長度,后面倆字節為id號,"00"結束。

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

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

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

MQTT相關漏洞

授權和認證漏洞

1

MQTT 是一種機器對機器連接協議,被設計為一種極其輕量級的發布/訂閱消息傳輸,并被全球數百萬的物聯網設備廣泛使用。

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

接下來,我們使用mqtt-pwn做一些mqtt授權和認證漏洞的演示,首先安裝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運行時狀態

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

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

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

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

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

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

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

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

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

可以輸入`messages`查看topic的內容

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

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

bruteforce --host host --port port

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

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

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

傳輸漏洞

2

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

sudodockerpullhivemq/hivemq4:4.3.2

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

環境搭建好以后,使用瀏覽器訪問ip地址,發現運行正常。

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

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

設置完畢后,點擊connect進行連接和發送。

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

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

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

點擊Clients,然后點擊“Refresh Snaphot”即可觸發執行payload

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

應用漏洞

3

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

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

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

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

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

其他漏洞

4

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

總結

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





審核編輯:劉清

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

    關注

    2576

    文章

    55041

    瀏覽量

    791336
  • 過濾器
    +關注

    關注

    1

    文章

    444

    瀏覽量

    20972
  • MQTT協議
    +關注

    關注

    0

    文章

    104

    瀏覽量

    6532

原文標題:物聯網安全實戰從零開始-MQTT協議分析

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    EtherCAT FOE工作原理揭秘:客戶端-服務器模型如何運轉?

    上期我們聊了EtherCATFOE的五大應用場景,本期深入解析其底層工作機制。FOE究竟是如何實現文件傳輸的?答案藏在客戶端-服務器模型中。核心架構:一客戶端
    的頭像 發表于 03-02 11:50 ?80次閱讀
    EtherCAT FOE工作原理揭秘:<b class='flag-5'>客戶端</b>-<b class='flag-5'>服務器</b>模型如何運轉?

    SOLIDWORKS PDM Professional安裝部署指南:從服務器客戶端的詳細步驟

    份詳盡的SOLIDWORKS PDM Professional安裝指南,面向IT管理員,涵蓋從SQL Server配置、服務器安裝到客戶端設置的全過程,確保您高效、正確地完成PDM系統部署
    的頭像 發表于 09-11 17:37 ?1598次閱讀

    【HZ-RK3568開發板免費體驗】MQTT服務搭建與客戶端移植

    發起,會建立會話,把客戶端附加到服務器上。服務器根據連接參數(ClientID,用戶名,密碼)對客戶
    發表于 08-30 21:05

    【嘉楠堪智K230開發板試用體驗】CanMV K230 MQTT通信

    話 連接由客戶端發起,會建立會話,把客戶端附加到服務器上。服務器根據連接參數(ClientI
    發表于 08-16 23:39

    完整指南:如何搭建樹莓派MQTT代理服務器?

    。MQTT通過TCP/IP運行,使用代理服務器管理客戶端之間的消息分發,允許設備訂閱特定主題,并且僅在發布相關數據時接收更新。其關鍵特性包括
    的頭像 發表于 08-04 17:03 ?900次閱讀
    完整指南:如何搭建樹莓派<b class='flag-5'>MQTT</b>代理<b class='flag-5'>服務器</b>?

    教你如何手搓樹莓派網絡服務器!

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

    Modbus與MQTT的區別

    Modbus和MQTT是工業領域中兩種不同的通信協議,在設計目標、應用場景、通信模式等方面存在顯著差異,以下從多個維度兩者的區別: 1.設計目標與起源 Modbus 誕生于1979
    的頭像 發表于 07-10 14:10 ?995次閱讀

    CYW20820 GATT服務器可以支持多少來自GATT客戶端的同時連接嗎?

    有人能告訴我 CYW20820 GATT 服務器可以支持多少來自 GATT 客戶端的同時連接嗎?
    發表于 06-30 07:47

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

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

    精通 MQTT:消息隊列遙測傳輸指南!

    ,解釋了其關鍵組件,并演示了如何使用Python實現MQTT客戶端。MQTT代理MQTT系統的核心是代理,它負責管理客戶端之間的消息交換。
    的頭像 發表于 06-16 16:56 ?1029次閱讀
    精通 <b class='flag-5'>MQTT</b>:消息隊列遙測<b class='flag-5'>傳輸</b>指南!

    如何在MQTT發布訂閱實體

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

    文詳解MCP傳輸機制

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

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

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

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

    實時可靠的消息服務。做為種低開銷、低帶寬占用的即時通訊協議MQTT在物聯網、小型設備、移動應用等方面有廣泛的應用,MQTT
    發表于 03-18 09:22

    MQTT物聯網平臺有哪些?有哪些功能?

    MQTT(Message Queuing Telemetry Transport)是種基于客戶端-服務器架構的發布/
    的頭像 發表于 03-15 14:23 ?1463次閱讀
    <b class='flag-5'>MQTT</b>物聯網平臺有哪些?有哪些功能?