# 1883 - MQTT (Mosquitto) Pentesting
Sıfırdan kahraman olmaya kadar AWS hackleme öğreninhtARTE (HackTricks AWS Red Team Expert) ile!
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
### [WhiteIntel](https://whiteintel.io)
[**WhiteIntel**](https://whiteintel.io), bir şirketin veya müşterilerinin **hırsız kötü amaçlı yazılımlar** tarafından **kompromize edilip edilmediğini** kontrol etmek için **ücretsiz** işlevler sunan bir **dark-web** destekli arama motorudur.
WhiteIntel'in başlıca amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye saldırılarıyla mücadele etmektir.
Websitesini ziyaret edebilir ve **ücretsiz** olarak motorlarını deneyebilirsiniz:
{% embed url="https://whiteintel.io" %}
---
## Temel Bilgiler
**MQ Telemetry Transport (MQTT)**, aşırı basitlik ve hafifliği ile öne çıkan bir **yayın/abone mesajlaşma protokolü** olarak bilinir. Bu protokol özellikle, cihazların sınırlı yeteneklere sahip olduğu ve düşük bant genişliği, yüksek gecikme veya güvenilmez bağlantılarla karakterize edilen ağlar üzerinde çalıştığı ortamlar için özel olarak tasarlanmıştır. MQTT'nin temel hedefleri arasında ağ bant genişliğinin kullanımını en aza indirgeme ve cihaz kaynaklarına olan talebi azaltma yer alır. Ayrıca, güvenilir iletişimi sürdürmeyi ve belirli bir teslimat güvencesi sağlamayı amaçlar. Bu hedefler, MQTT'yi **makine-makine (M2M) iletişimi** ve **Nesnelerin İnterneti (IoT)** alanı için son derece uygun hale getirir, burada birçok cihazın verimli bir şekilde bağlanması esastır. Ayrıca, MQTT, bant genişliğini ve pil ömrünü korumanın önemli olduğu mobil uygulamalar için son derece faydalıdır.
**Varsayılan port:** 1883
```
PORT STATE SERVICE REASON
1883/tcp open mosquitto version 1.4.8 syn-ack
```
## Trafik İncelenmesi
MQTT brokerları tarafından bir **CONNECT** paketi alındığında, bir **CONNACK** paketi geri gönderilir. Bu paket, bağlantı durumunu anlamak için önemli olan bir dönüş kodu içerir. **0x00** dönüş kodu, kimlik bilgilerinin kabul edildiğini ve başarılı bir bağlantıyı gösterir. Öte yandan, **0x05** dönüş kodu, kimlik bilgilerinin geçersiz olduğunu belirterek bağlantıyı engeller.
Örneğin, broker, geçersiz kimlik bilgileri nedeniyle bağlantıyı reddederse, senaryo şöyle görünecektir:
```
{
"returnCode": "0x05",
"description": "Connection Refused, not authorized"
}
```
![](<../.gitbook/assets/image (973).png>)
### [**Brute-Force MQTT**](../generic-methodologies-and-resources/brute-force.md#mqtt)
## MQTT Pentesting
**Kimlik doğrulama tamamen isteğe bağlıdır** ve kimlik doğrulaması yapılsa bile, **varsayılan olarak şifreleme kullanılmaz** (kimlik bilgileri düz metin olarak gönderilir). MITM saldırıları hala gerçekleştirilerek şifreler çalınabilir.
MQTT hizmetine bağlanmak için şu adımları kullanabilirsiniz: [https://github.com/bapowell/python-mqtt-client-shell](https://github.com/bapowell/python-mqtt-client-shell) ve tüm konulara kendinizi abone yapabilirsiniz:
```
> 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/#"
```
Ayrıca [**https://github.com/akamai-threat-research/mqtt-pwn**](https://github.com/akamai-threat-research/mqtt-pwn) adresini kullanabilirsiniz.
```bash
apt-get install mosquitto mosquitto-clients
mosquitto_sub -t 'test/topic' -v #Subscribe to 'test/topic'
mosquitto_sub -h -t "#" -v #Subscribe to ALL topics.
```
Ya da **bu kodu çalıştırarak kimlik doğrulaması olmadan bir MQTT servisine bağlanmayı deneyebilir, her konuya abone olabilir ve onları dinleyebilirsiniz**:
```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):
client.subscribe('#', qos=1)
client.subscribe('$SYS/#')
def on_message(client, userdata, message):
print('Topic: %s | QOS: %s | Message: %s' % (message.topic, message.qos, message.payload))
def main():
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__":
main()
```
## Daha fazla bilgi
buradan: [https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b](https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b)
### Yayın/Abone Olma Modeli
Yayın/abone olma modeli şunlardan oluşur:
- **Yayıncı**: mesajı broker'daki bir (veya birçok) konuya yayınlar.
- **Abone**: broker'daki bir (veya birçok) konuya abone olur ve yayıncıdan gönderilen tüm mesajları alır.
- **Broker**: yayıncılardan gelen tüm mesajları abonelere yönlendirir.
- **Konu**: bir veya daha fazla seviyeden oluşur ve bir ileri eğik çizgi ile ayrılır (örneğin, /smartshouse/livingroom/temperature).
### Paket Formatı
Her MQTT paketi sabit bir başlık içerir (Şekil 02). Şekil 02: Sabit Başlık
![https://miro.medium.com/max/838/1\*k6RkAHEk0576geQGUcKSTA.png](https://miro.medium.com/max/838/1\*k6RkAHEk0576geQGUcKSTA.png)
### Paket Türleri
- CONNECT (1): Sunucuya bağlantı isteğinde bulunmak için istemci tarafından başlatılır.
- CONNACK (2): Başarılı bir bağlantının sunucu tarafından onaylanması.
- PUBLISH (3): İstemciden sunucuya veya tersine bir mesaj göndermek için kullanılır.
- PUBACK (4): Bir PUBLISH paketinin onaylanması.
- PUBREC (5): Mesajın alındığından emin olmak için bir iletişim protokolünün parçası.
- PUBREL (6): Mesaj teslimatında daha fazla güvence sağlayarak bir mesajın serbest bırakılmasını belirtir.
- PUBCOMP (7): Tamamlanmayı belirten mesaj teslimatı protokolünün final kısmı.
- SUBSCRIBE (8): Bir istemcinin bir konudan gelen mesajları dinlemek için isteği.
- SUBACK (9): SUBSCRIBE isteğinin sunucu tarafından onaylanması.
- UNSUBSCRIBE (10): Bir istemcinin bir konudan gelen mesajları almaya son vermek için isteği.
- UNSUBACK (11): UNSUBSCRIBE isteğine sunucunun yanıtı.
- PINGREQ (12): İstemci tarafından gönderilen bir kalp atışı mesajı.
- PINGRESP (13): Kalp atışı mesajına sunucunun yanıtı.
- DISCONNECT (14): Bağlantıyı sonlandırmak için istemci tarafından başlatılır.
- 0 ve 15 olarak işaretlenen iki değer yasaklanmıştır ve kullanılmamalıdır.
## Shodan
- `port:1883 MQTT`
### [WhiteIntel](https://whiteintel.io)
[**WhiteIntel**](https://whiteintel.io), şirketin veya müşterilerinin **hırsız kötü amaçlı yazılımlar** tarafından **kompromize edilip edilmediğini** kontrol etmek için **ücretsiz** işlevsellikler sunan **dark-web** destekli bir arama motorudur.
WhiteIntel'in asıl amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye saldırılarıyla mücadele etmektir.
Websitesini ziyaret edebilir ve **ücretsiz** olarak motorlarını deneyebilirsiniz:
{% embed url="https://whiteintel.io" %}
Sıfırdan kahraman olmak için AWS hackleme öğreninhtARTE (HackTricks AWS Red Team Expert)!
HackTricks'ı desteklemenin diğer yolları:
- **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
- [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
- [**The PEASS Family'yi keşfedin**](https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin
- 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** takip edin.**
- **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.**