hacktricks/network-services-pentesting/1883-pentesting-mqtt-mosquitto.md

124 lines
8.3 KiB
Markdown
Raw Normal View History

2023-07-07 23:42:27 +00:00
# 1883 - MQTTのペンテストMosquitto
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
2022-04-28 16:01:33 +00:00
</details>
2023-07-07 23:42:27 +00:00
## 基本情報
2023-07-07 23:42:27 +00:00
MQTTはMQ Telemetry Transportの略です。これは、制約のあるデバイスや低帯域幅、高遅延または信頼性の低いネットワーク向けに設計された、パブリッシュ/サブスクライブ型の**非常にシンプルで軽量なメッセージングプロトコル**です。設計原則は、ネットワーク帯域幅とデバイスのリソース要件を最小限に抑えると同時に、信頼性と一定の配信保証を確保することです。これらの原則は、接続されたデバイスの「マシン間通信」M2Mまたは「モのインターネット」の新興世界や、帯域幅とバッテリー電力が貴重なモバイルアプリケーションにとっても理想的なプロトコルとなっています。
2023-07-07 23:42:27 +00:00
**デフォルトポート:** 1883
```
2020-09-24 18:58:31 +00:00
PORT STATE SERVICE REASON
1883/tcp open mosquitto version 1.4.8 syn-ack
```
2023-07-07 23:42:27 +00:00
## トラフィックの検査
2020-09-24 18:58:31 +00:00
2023-07-07 23:42:27 +00:00
MQTTブローカーは、CONNECTパケットに対する応答としてCONNACKパケットを送信します。**リターンコード0x00**は資格情報が有効であることを示し、**リターンコード0x05は無効であることを示します。0x05の例:**
2022-02-19 19:42:58 +00:00
2022-03-09 12:12:51 +00:00
![](<../.gitbook/assets/image (645) (1).png>)
2022-02-19 19:42:58 +00:00
2023-07-07 23:42:27 +00:00
### [**MQTTのブルートフォース攻撃**](../generic-methodologies-and-resources/brute-force.md#mqtt)
2023-07-07 23:42:27 +00:00
## MQTTのペントテスト
2023-07-07 23:42:27 +00:00
**認証は完全にオプション**であり、認証が実行されている場合でも、**デフォルトでは暗号化は使用されません**資格情報は平文で送信されます。MITM攻撃を実行してパスワードを盗むことはまだ可能です。
2023-07-07 23:42:27 +00:00
MQTTサービスに接続するには、[https://github.com/bapowell/python-mqtt-client-shell](https://github.com/bapowell/python-mqtt-client-shell)を使用し、次のようにすべてのトピックに自分自身をサブスクライブします:
```
> connect (NOTICE that you need to indicate before this the params of the connection, by default 127.0.0.1:1883)
> subscribe "#" 1
> subscribe "$SYS/#"
```
2023-07-07 23:42:27 +00:00
[**https://github.com/akamai-threat-research/mqtt-pwn**](https://github.com/akamai-threat-research/mqtt-pwn)を使用することもできます。
2023-07-07 23:42:27 +00:00
また、以下も使用できます:
2022-02-19 19:42:58 +00:00
```bash
apt-get install mosquitto mosquitto-clients
mosquitto_sub -t 'test/topic' -v #Subscriribe to 'test/topic'
```
2023-07-07 23:42:27 +00:00
または、このコードを実行して、認証なしでMQTTサービスに接続し、すべてのトピックにサブスクライブしてリスンすることを試すこともできます。
```python
#This is a modified version of https://github.com/Warflop/IOT-MQTT-Exploit/blob/master/mqtt.py
import paho.mqtt.client as mqtt
import time
import os
HOST = "127.0.0.1"
PORT = 1883
def on_connect(client, userdata, flags, rc):
2023-07-07 23:42:27 +00:00
client.subscribe('#', qos=1)
client.subscribe('$SYS/#')
def on_message(client, userdata, message):
2023-07-07 23:42:27 +00:00
print('Topic: %s | QOS: %s | Message: %s' % (message.topic, message.qos, message.payload))
def main():
2023-07-07 23:42:27 +00:00
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(HOST, PORT)
client.loop_start()
#time.sleep(10)
#client.loop_stop()
if __name__ == "__main__":
2023-07-07 23:42:27 +00:00
main()
```
2023-07-07 23:42:27 +00:00
## 追加情報
2023-07-07 23:42:27 +00:00
ここから: [https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b](https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b)
2023-07-07 23:42:27 +00:00
### パブリッシュ/サブスクライブパターン <a href="#b667" id="b667"></a>
2023-07-07 23:42:27 +00:00
パブリッシャー: ブローカー内の1つまたは複数のトピックにメッセージを公開します。
サブスクライバー: ブローカー内の1つまたは複数のトピックにサブスクライブし、パブリッシャーから送信されたすべてのメッセージを受信します。
ブローカー: パブリッシャーからのすべてのメッセージをサブスクライバーにルーティングします。
トピック: 1つ以上のレベルで構成され、スラッシュ/)で区切られています(例:/smartshouse/livingroom/temperature
2022-02-19 19:42:58 +00:00
![](https://miro.medium.com/max/1073/1\*sIxvchdgHSqAGebJjFHBAg.png)
2023-07-07 23:42:27 +00:00
### パケット形式 <a href="#f15a" id="f15a"></a>
2023-07-07 23:42:27 +00:00
すべてのMQTTパケットには固定ヘッダーが含まれています図02。図02固定ヘッダー
![](https://miro.medium.com/max/838/1\*k6RkAHEk0576geQGUcKSTA.png)
2020-09-21 23:14:27 +00:00
2023-07-07 23:42:27 +00:00
固定ヘッダーの最初のフィールドは、MQTTパケットのタイプを表します。すべてのパケットタイプは、表01にリストされています。表01MQTTパケットタイプ
2020-09-21 23:14:27 +00:00
2021-11-30 16:46:07 +00:00
![](https://miro.medium.com/max/1469/1\*z0fhdUVzGa0PLikH\_cyBmQ.png)
2020-09-21 23:14:27 +00:00
2022-08-12 14:24:34 +00:00
## Shodan
2020-09-21 23:14:27 +00:00
* `port:1883 MQTT`
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですかまたは、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!**
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**公式のPEASSHackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
2022-04-28 16:01:33 +00:00
</details>