9 KiB
1883 - Pentesting MQTT (Mosquitto)
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte Porodicu PEASS, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
WhiteIntel
WhiteIntel je dark-web pretraživač koji nudi besplatne funkcionalnosti za proveru da li je kompanija ili njeni korisnici kompromitovani od strane malvera za krađu podataka.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera za krađu informacija.
Možete posetiti njihovu veb stranicu i isprobati njihovu mašinu za besplatno na:
{% embed url="https://whiteintel.io" %}
Osnovne informacije
MQ Telemetry Transport (MQTT) poznat je kao protokol za razmenu poruka putem objavljivanja/pretplate koji se ističe po svojoj ekstremnoj jednostavnosti i lakoći. Ovaj protokol je posebno prilagođen za okruženja u kojima uređaji imaju ograničene mogućnosti i funkcionišu preko mreža koje se karakterišu niskom propusnošću, visokom latencijom ili nepouzdanim vezama. Osnovni ciljevi MQTT-a uključuju minimiziranje korišćenja mrežne propusnosti i smanjenje zahteva na resurse uređaja. Pored toga, cilj mu je održavanje pouzdane komunikacije i pružanje određenog nivoa sigurnosti isporuke. Ovi ciljevi čine MQTT izuzetno pogodnim za rastuće polje komunikacije mašina sa mašinama (M2M) i Interneta stvari (IoT), gde je esencijalno efikasno povezivanje različitih uređaja. Osim toga, MQTT je veoma koristan za mobilne aplikacije, gde je čuvanje propusnosti i trajanja baterije od suštinskog značaja.
Podrazumevani port: 1883
PORT STATE SERVICE REASON
1883/tcp open mosquitto version 1.4.8 syn-ack
Pregled saobraćaja
Kada MQTT posrednici prime paket CONNECT, šalju nazad paket CONNACK. Ovaj paket sadrži kod povratka koji je ključan za razumevanje statusa veze. Kod povratka 0x00 znači da su pristupni podaci prihvaćeni, što označava uspešnu vezu. S druge strane, kod povratka 0x05 signalizira da su pristupni podaci nevažeći, čime se sprečava veza.
Na primer, ako posrednik odbije vezu zbog nevažećih pristupnih podataka, scenario bi izgledao ovako:
{
"returnCode": "0x05",
"description": "Connection Refused, not authorized"
}
Brute-Force MQTT
Pentesting MQTT
Autentikacija je potpuno opcionalna i čak i ako se vrši autentikacija, podrazumevano se ne koristi šifrovanje (poverljivi podaci se šalju u čistom tekstu). MITM napadi i dalje mogu biti izvršeni radi krađe lozinki.
Za povezivanje 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 koristiti https://github.com/akamai-threat-research/mqtt-pwn
Možete takođe 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 biste pokušali da se povežete sa MQTT servisom bez autentifikacije, pretplatite 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
sa ovde: https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b
Šema objavljivanja/pretplate
Model objavljivanja/pretplate sastoji se od:
- Objavljivač: objavljuje poruku na jednu (ili više) temu(u) na brokeru.
- Pretplatnik: pretplaćuje se na jednu (ili više) temu(u) na brokeru i prima sve poruke poslate od objavljivača.
- Broker: usmerava sve poruke od objavljivača ka pretplatnicima.
- Tema: sastoji se od jednog ili više nivoa koji su odvojeni kosom crtom (npr. /pametna-kuća/dnevna-soba/temperatura).
Format paketa
Svaki MQTT paket sadrži fiksni zaglavlje (Slika 02).Slika 02: Fiksno zaglavlje
Vrste paketa
- CONNECT (1): Iniciran od strane klijenta zahtevajući vezu sa serverom.
- CONNACK (2): Potvrda servera o uspešnoj vezi.
- PUBLISH (3): Koristi se za slanje poruke od klijenta ka serveru ili obrnuto.
- PUBACK (4): Potvrda o PUBLISH paketu.
- PUBREC (5): Deo protokola isporuke poruke koji osigurava da je poruka primljena.
- PUBREL (6): Dodatno osiguranje u isporuci poruke, ukazujući na oslobađanje poruke.
- PUBCOMP (7): Završni deo protokola isporuke poruke, ukazujući na završetak.
- SUBSCRIBE (8): Zahtev klijenta za slušanje poruka sa teme.
- SUBACK (9): Potvrda servera o zahtevu za SUBSCRIBE.
- UNSUBSCRIBE (10): Zahtev klijenta za prestanak primanja poruka sa teme.
- UNSUBACK (11): Odgovor servera na zahtev UNSUBSCRIBE.
- PINGREQ (12): Poruka otkucaja srca poslata od strane klijenta.
- PINGRESP (13): Odgovor servera na poruku otkucaja srca.
- DISCONNECT (14): Iniciran od strane klijenta za prekid veze.
- Dve vrednosti, 0 i 15, označene su kao rezervisane i njihova upotreba je zabranjena.
Shodan
port:1883 MQTT
WhiteIntel
WhiteIntel je pretraživač pokretan dark-web-om koji nudi besplatne funkcionalnosti za proveru da li je kompanija ili njeni korisnici ugroženi od strane malvera za krađu.
Njihov primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za besplatno na:
{% embed url="https://whiteintel.io" %}
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRETPLATU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikova slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.