Odprtokodni projekti imajo ključno vlogo pri tehnološkem napredku in razvoju skupnosti, zato tudi mi v podjetju Viris prispevamo svoj delež. V tej objavi predstavljamo, kako smo odprtokodno orodje Responder nadgradili s podporo protokola MQTT, ki se med drugim uporablja tudi za avtomatizacijo pametnih domov.

S 13. avgustom 2023 je bil naš dodatek k projektu Responder sprejet v glavno vejo projekta (https://github.com/lgandx/Responder/pull/236).
Kaj je MQTT?
Če si se kdaj ukvarjal z avtomatizacijo pametnega doma ali povezoval večje število senzorjev v eno skupno točko, si najverjetneje že slišal za protokol MQTT.
MQTT (angl. Message Queuing Telemetry Transport) je protokol za sporočilno komunikacijo, ki temelji na vzorcu založnik-naročnik (angl. publisher-subscriber). Zasnovan je za komunikacijo v telemetriji in podobnih aplikacijah, kjer je potrebna lahka in učinkovita izmenjava podatkov, pogosto v omrežnih okoljih z omejenimi viri ali slabšo povezljivostjo.
Protokol se pogosto uporablja v aplikacijah, povezanih z internetom stvari (IoT), saj omogoča komunikacijo med številnimi napravami z nizko porabo energije in širokim dosegom. Zaradi svoje preprostosti in učinkovitosti je priljubljen tudi v industrijskih okoljih, kjer je zanesljiva komunikacija med napravami ključnega pomena.
Kljub široki uporabi pa MQTT prinaša tudi določena varnostna tveganja, predvsem kadar komunikacija ni ustrezno zaščitena. Brez šifriranja lahko napadalec ne le prestreza sporočila med založnikom in naročnikom, temveč jih lahko tudi ponareja ali spreminja, kar predstavlja resno varnostno ranljivost.
Izboljšanje varnosti s praktičnim eksperimentom
V okviru eksperimenta, namenjenega konfiguracijam strežnika Mosquitto, smo se poglobili v varnostno okolje MQTT. Naš cilj je bil zajeti vse poverilnice MQTT, ki se prenašajo po nezavarovani povezavi. Za lažje doseganje tega cilja smo se osredotočili na izboljšavo orodja Responder. To orodje omogoča zastrupljanje DNS-zapisov in podpira številne omrežne protokole, vendar prvotno ni bilo združljivo s protokolom MQTT. Zato smo razvili lastno nadgradnjo.
V orodje Responder smo dodali strežnik MQTT na naslovu 1883, ki je zasnovan tako, da analizira vsako dohodno povezavo. Prepozna različico protokola (v3.1, v3.1.1 ali v5) in iz paketov pridobi ključne podatke, kot so ime gostitelja, uporabniško ime in geslo. Ta dodatek ni le okrepil zmogljivosti orodja Responder, temveč je omogočil tudi globlji in podrobnejši vpogled v morebitne ranljivosti.
Na spodnji sliki je prikazan poskus povezave na izmišljeno domeno »mojsenzor.si«.

Če pogledamo dnevniško datoteko »Responder-Session.log«, lahko vidimo, da smo uspešno zabeležili prej vpisane poverilnice.

S pomočjo tega razširjenega orodja Responder, ki zdaj uspešno beleži poverilnice, bi se potencialni napadalec lahko povezal s strežnikom MQTT in prisluškoval ali pošiljal zlonamerne podatke in tako nadziral celoten sistem naprav.
Na primer: V stavbi se za spremljanje temperature uporabljajo brezžični termometri, ki preko protokola MQTT pošiljajo podatke o temperaturi in vlažnosti zraka. Sistem je prav tako konfiguriran na način, da v primeru požara (dviga temperature) sproži alarm in odklene vsa zaklenjena vrata. Potencialni napadalec bi lahko s pomočjo orodja Responder in naše nadgradnje prestregel poverilnice senzorja temperature ter na strežnik poslal ponarejeno vrednost senzorja, katera bi sprožila alarm in mu tako omogočila vstop v stavbo. Če bi ključavnice na vratih uporabljale MQTT, bi napadalec lahko vstopil v stavbo brez proženja alarma.
V digitalni dobi, ko tehnologija nenehno napreduje, odprtokodni projekti omogočajo skupno ustvarjanje in pospešujejo inovacije. Prispevanje k tem projektom ni le tehnično sodelovanje, temveč tudi izražanje zaveze k transparentnosti, sodelovanju in razvoju skupnosti. Zato z veseljem prispevamo k odprtokodni skupnosti, saj verjamemo, da skupaj ustvarjamo bolj varen in inovativen svet.