1883 - Pentesting MQTT (Mosquitto)
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Basic Information
MQ Telemetry Transport (MQTT) is bekend as 'n publiseer/teken in boodskap protokol wat uitstaan vir sy uiterste eenvoud en ligtheid. Hierdie protokol is spesifiek ontwerp vir omgewings waar toestelle beperkte vermoëns het en oor netwerke werk wat gekenmerk word deur lae bandwydte, hoë latensie, of onbetroubare verbindings. Die kern doelwitte van MQTT sluit in om die gebruik van netwerkbandwydte te minimaliseer en die vraag op toestel hulpbronne te verminder. Boonop poog dit om betroubare kommunikasie te handhaaf en 'n sekere vlak van afleweringswaarborg te bied. Hierdie doelwitte maak MQTT uiters geskik vir die opkomende veld van masjien-tot-masjien (M2M) kommunikasie en die Internet van Dinge (IoT), waar dit noodsaaklik is om 'n menigte toestelle doeltreffend te verbind. Verder is MQTT baie voordelig vir mobiele toepassings, waar die bewaring van bandwydte en batterylewe van kardinale belang is.
Default port: 1883
Inspecting the traffic
Wanneer 'n CONNECT pakket deur MQTT-brokers ontvang word, word 'n CONNACK pakket teruggestuur. Hierdie pakket bevat 'n terugkode wat van kardinale belang is om die verbindsstatus te verstaan. 'n Terugkode van 0x00 beteken dat die geloofsbriewe aanvaar is, wat 'n suksesvolle verbinding aandui. Aan die ander kant dui 'n terugkode van 0x05 aan dat die geloofsbriewe ongeldig is, wat die verbinding voorkom.
Byvoorbeeld, as die broker die verbinding weier weens ongeldig geloofsbriewe, sal die scenario iets soos volg lyk:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F843477771-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FC6PyZhjUxJWWaN3uLo1y%252Fuploads%252Fgit-blob-4f2c9b7583562686a3dc4fc33b54f634b494d704%252Fimage%2520%28976%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=9edba63e&sv=1)
Pentesting MQTT
Outentisering is heeltemal opsioneel en selfs al word outentisering uitgevoer, word versleuteling nie standaard gebruik nie (akkrediteer is in duidelike teks gestuur). MITM-aanvalle kan steeds uitgevoer word om wagwoorde te steel.
Om met 'n MQTT-diens te verbind, kan jy gebruik maak van: https://github.com/bapowell/python-mqtt-client-shell en jouself aan al die onderwerpe te integreer deur:
U kan ook gebruik maak van https://github.com/akamai-threat-research/mqtt-pwn
U kan ook gebruik maak van:
Of jy kan hierdie kode uitvoer om te probeer om met 'n MQTT-diens te verbind sonder outentisering, op elke onderwerp te inteken en hulle te luister:
Meer inligting
van hier: https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b
Die Publiseer/Inteken Patroon
Die publiseer/inteken model bestaan uit:
Publisher: publiseer 'n boodskap na een (of meer) onderwerp(e) in die broker.
Subscriber: teken in op een (of meer) onderwerp(e) in die broker en ontvang al die boodskappe wat van die publisher gestuur word.
Broker: roeteer al die boodskappe van die publishers na die subscribers.
Onderwerp: bestaan uit een of meer vlakke wat geskei word deur 'n skuins streep (bv., /smartshouse/livingroom/temperature).
Pakket Formaat
Elke MQTT-pakket bevat 'n vaste kop (Figuur 02). Figuur 02: Vaste Kop
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fmiro.medium.com%2Fmax%2F838%2F1*k6RkAHEk0576geQGUcKSTA.png&width=768&dpr=4&quality=100&sign=442a4199&sv=1)
Pakket Tipes
CONNECT (1): Begin deur die kliënt om 'n verbinding met die bediener aan te vra.
CONNACK (2): Die bediener se erkenning van 'n suksesvolle verbinding.
PUBLISH (3): Gebruik om 'n boodskap van die kliënt na die bediener of omgekeerd te stuur.
PUBACK (4): Erkenning van 'n PUBLISH-pakket.
PUBREC (5): Deel van 'n boodskap afleweringsprotokol wat verseker dat die boodskap ontvang word.
PUBREL (6): Verdere sekerheid in boodskapaflewering, wat 'n boodskapvrystelling aandui.
PUBCOMP (7): Finale deel van die boodskap afleweringsprotokol, wat voltooiing aandui.
SUBSCRIBE (8): 'n Kliënt se versoek om na boodskappe van 'n onderwerp te luister.
SUBACK (9): Die bediener se erkenning van 'n SUBSCRIBE versoek.
UNSUBSCRIBE (10): 'n Kliënt se versoek om te stop om boodskappe van 'n onderwerp te ontvang.
UNSUBACK (11): Die bediener se reaksie op 'n UNSUBSCRIBE versoek.
PINGREQ (12): 'n Hartklop boodskap wat deur die kliënt gestuur word.
PINGRESP (13): Die bediener se reaksie op die hartklop boodskap.
DISCONNECT (14): Begin deur die kliënt om die verbinding te beëindig.
Twee waardes, 0 en 15, is gemerk as gereserveer en hul gebruik is verbode.
Shodan
port:1883 MQTT
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated