Bezpečnost | IoT | Hacking | Vyhledávače

Shodan už 10 let šmíruje internet. Podívali jsme se možná i k vám domů a zcela ovládli korejskou tiskárnu

  • Webový vyhledávač internetu věcí slaví 10. narozeniny
  • Bezpečnost se od té doby moc nezlepšila
  • Průnik do cizí sítě je otázkou několika sekund

Vyhledávač Shodan o víkendu oslavil desáté narozeniny a svým fanouškům, kteří bedlivě čtou jeho twitterový účet, nadělil nečekaný dárek. Během 24 hodin jste si mohli koupit jeho prémiový účet za pouhý jeden americký dolar.

Proboha, kdo by v roce 2019 platil za vyhledávač? Nu, Shodan má trošku jiného indexovacího robota. Zatímco na Googlu najdete všechno a na Seznamu – když má blbý den – nahé děti, Shodan je tu od toho, abyste na něm našli třeba tu sousedovu síťovou tiskárnu, která je zvesela dostupná i z veřejného internetu.

Shodan je totiž vyhledávač internetu věcí, který průběžně prochází všechny dostupné veřejné IP adresy a pokouší se zjistit, které TCP porty jsou na nich otevřené a které služby na nich běží. Když tedy narazí na IP adresu třeba našeho hypotetického souseda, prošmejdí otevřené porty, a pokud mu na některém z nich odpoví nějaká služba, pokusí se ji identifikovat.

Miliony síťových krabiček na jednom místě

V databázi Shodanu jsou dnes takových IP adres miliony a díky tomu, že obsahuje fulltextový vyhledávač včetně hromady filtrů, snadno si můžete zobrazit třeba některé typické služby, které používají konkrétní TCP port, a zkoumat, zdali nemají děravé zabezpečení.

6e4014be-a688-443d-86d9-d65cd2ebe4a3
Kde všude už byl indexovací robot Shodanu. Možná i u vás doma.

Díky tomu, že už Shodan prošmejdil valnou část všemožných krabiček internetu věcí, v jeho nitru dnes snadno vyhledáte i špatně zabezpečené webkamery a chůvičky, které jsou dostupné z veřejného internetu, protože jejich majitele nejspíše vůbec nenapadlo, že na statickou veřejnou IP adresu domácího internetu může narazit i někdo cizí.

Na hraně, ale legální

Přitom je třeba konstatovat, že je Shodan zcela legitimní internetovou službou, která se sice v některých aspektech pohybuje přinejmenším na hraně etiky, avšak jeho poslání je jasné: Nemá bezpečnost internetu a IoT snižovat, ale naopak zvyšovat – právě tím, že upozorňuje na jejich slabiny.

Stručně řečeno, pokud se o nějaké té chabě zabezpečené krabičce internetu věcí dozvěděl Shodan a zcela transparentně se tím pochlubil ve své rostoucí databázi, znamená to, že se o stejné krabičce nejspíše dozvěděl i celý zástup dalších internetových robotů, kteří už mají jediný cíl: aktivně škodit, krást data aj.

České routery Turris

Pojďme si kouzlo Shodanu vyzkoušet na několika příkladech. O moji domácí síť se stará český router Turris Omnia. Možná si vzpomínáte na jeho první generaci, kterou CZ.NIC rozdával zdarma za účelem experimentálního měření kvality tuzemského internetu.

Turris se tedy dodnes stará o internet i LAN v mnoha českých domácnostech, zároveň to ale nebude žádná velká masovka jako třeba TP-Link a další. A tak jsme dali Shodanu za úkol vyhledat všechna zařízení, v jejichž odpovědi se vyskytovalo slovíčko turris.

3dc47df9-a4ed-4f9a-9da3-e99ea4f68ec0
Výsledky na prostý dotaz „turris.“ Neznamená to, že se jedná o všechny indexované routery Turris, ale o ty, jejichž služby na otevřených portech to na ně práskly.

Vyskočilo na nás pouze 19 zařízení, což je dobrá zpráva. Znamená to, že na všech ostatních routerech nebyly do veřejného internetu otevřené žádné porty, jejichž služby by na sebe vše vykecaly – třeba webové administrace routeru jako na obrázku výše.

Mapa IP adres

Jak vidno z výpisu, Shodan v rychlém přehledu zobrazuje i úryvky komunikace, takže hned na prvním místě figuruje mašina s francouzskou IP adresou a FTP serverem ProFTPD. Další ze Španělska o několik příček níže zase hlásí, že i na této IP adrese běží FTP server – tentokrát FileZilla.

c456604f-7aa7-485f-908b-3d6892c021cb
Tak kdepak jste, panáčkové?

My se ale přepneme na mapu a podíváme se na Česko, kde těch puntíků svítí jen pár. Vybrali jsme si jeden z nich a po klepnutí nás zaujala hromada otevřených TCP portů. Více otevřených portů, více Adid… Chci říct větší šance, že na některém z nich bude poslouchat něco zajímavého.

7c6a4a15-143f-4270-adf9-64394d2005f1
Po klepnutí na puntík se zobrazí bublina s rychlým přehledem a zástupem otevřených portů. To je skvělá zpráva, na každém z nich totiž bude poslouchat nějaká internetová služba.

A taky že ano. Na portu 80 běží webové rozhraní QTS diskového úložiště QNAP. Přístup k souborům je naštěstí chráněný heslem, QTS je ale vtipálek a ve výchozím stavu nechrání heslem přístup do galerie. Rázem na nás vyskočí fotografie malých dětí. Kdybych nebyl Čížek, ale pedofilní indexovací bot, mám několik nových úlovků do sbírky.

28a012a7-dffc-49f4-ab41-68f3d7d765d2699e04d3-4c11-4d83-b921-8bb18d6dce75
Toto webové rozhraní NASu od QNAPu by asi chtělo lépe zabezpečit

Mám torrentové doupě! Ale zapomněl jsem ho zabezpečit

Koukněme se na další červený puntík na mapě a opět na nás vyskočí záplava otevřených portů, na kterých i tentokrát bude poslouchat něco zajímavého. Některé porty vypadají povědomě a Shodan naše podezření potvrzuje.

2dec807f-a423-43b7-8162-42f35b3e116f
Ha, na IP adrese poslouchá na portu 9091 webový klient bittorrentového programu Transmission. Zdalipak bude dostupný i pro anonymní návštěvu?

Ale, ale, tady někomu v domácí síti běží bittorentový webový klient Transmission. Jistě ale bude chráněný heslem!

Aha, není…

b314451d-a5ad-4b76-bf35-5fd0f0d3451c
Jaj...

Tak co si stáhneme? Nakonec nic, nabídka multimediálního warezu v čele s epizodami slovenského seriálu Horná Dolná nás nezaujala, a tak si alespoň ještě ověříme, jestli jako anonym nemáme pouze práva ke čtení. Nemáme! Můžeme všechny torrenty smazat, stáhnout nové, změnit konfiguraci a také se můžeme podívat na statistiku.

45849747-68de-49b8-8cc0-2ece758d655a
Ještě jedno a mnohem hlasitější jaj...

Transmission od své instalace před necelým rokem sdílel skoro 10 TB dat (!) a stáhnul 774 GB. Jedná se tedy o poměrně slušnou seedovací mašinu, jejíž autor je docela odvážný a riskuje. Pokud jsme totiž jeho zcela otevřený Transmission odhalili během několika desítek sekund my, protipirátský indexovací bot by měl být stejně úspěšný.

Děravé MQTT

Ale pojďme dál. Mnoho systémů chytré domácnosti používá populární komunikační protokol MQTT, přičemž větší, než malé množství majitelů podobných chytrých domácnosti zapomnělo svůj server MQTT jakkoliv zabezpečit a ještě k němu povolilo přístup z veřejného internetu. Loni jsme si to ostatně názorně ukázali na příkladu jisté rodiny z britského Brightonu, kterou jsme téměř dokonale odposlouchávali.

Co se od té doby změnilo? Nic… V Shodanu stačí vyhledat slovíčko mqtt a případně i vyfiltrovat otevřené TCP porty na čísle 1883, na kterém zpravidla běží MQTT server (tzv. broker) Mosquitto. MQTT funguje na principu stručných zpráv, které mezi sebou mohou posílat krabičky chytré domácnosti a k jejichž odběru se mohou přihlásit i ostatní klienti.

2607fb40-a3b9-49ea-8412-6775b845a4fa
Základní princip MQTT brokeru, který sbírá zprávy (topic) z koncových zařízení (publisher) a poskytuje je přihlášeným klientům (subscriber)

Správný broker, pokud už musí být vystavený do veřejného internetu, by měl být nakonfigurovaný tak, aby používal přinejmenším šifrovaný přenos dat a vyžadoval heslo, k hromadě brokerů indexovaných Shodanem se ale můžete bez problému připojit skrze jakýkoliv MQTT klient.

Pak už jen stačí pokusit se přihlásit k odběru všech zpráv, které má daný broker k dispozici, a pokud budete mít štěstí, rázem na vás budou vyskakovat údaje třeba z domácí meteostanice aj.

Zdravíme na horskou chatu 

Obyvatele Brightonu jsme tentokrát nechali na pokoj a podívali se na jeden zajímavý broker svítící do internetu z IP adresy kdesi v Southamptonu. Na IP adrese běžela hromada dalších webových služeb včetně webového serveru s prezentací hezké horské chaty Chalet Louis Winter Ski poblíž Ženevy. Majitelem je jistý britský pár, proto ta southamptonská IP adresa.

0af2ec30-3ada-44bc-ad8b-916a644d5765936b303e-9813-4f51-8014-c511b7ca179f
Zdravíme do Southamptonu. Tak copak vám běží na této IP adrese? Aha, webový server, ze kterého se dozvím, oč se jedná, a nezabezpečený MQTT broker Mosquitto.

Ale co ten broker? Zdá se, že Julie a Mike mají na své chaloupce, kterou pronajímají lyžařům, k internetu připojenou meteostanici, když totiž jejich MQTT broker poprosím o odběr všech zpráv, které nabízí, v záplavě systémových dat na mě vyskočí i dvě zajímavé zprávy /Chalet_Outside/Chalet_Outside/Temperature a /Chalet_Outside/Chalet_Outside/Humidity (názvy zpráv v systému MQTT mají stromovou strukturu).

6c2fd0b6-eadc-4794-b7c3-6b78d40f0fed
Odpovědi brokeru při požadavku na odběr všech zpráv, které má k dispozici

Jedná se tedy o venkovní teplotu a vlhkost vzduchu u chalupy, které zatím žádné zimní radovánky neslibují, ve 12 °C se totiž moc dobře nelyžuje.

Jak broker poprosit o odběr všech zpráv

Pomůže nám několik řádků kódu v Pythonu a knihovna pro MQTT paho-mqtt. Skript spion.py, který, se pokusí přihlásit k odběru všech dostupných zpráv, které pak začne v nekonečné smyčce průběžně vypisovat, může vypadat třeba takto:

import paho.mqtt.client as mqtt
import sys

def on_connect(client, userdata, flags, rc):
    print("Spojeni otevreno!")
    client.subscribe('#', qos = 1)
    client.subscribe('$SYS/#')

def on_message(client, userdata, msg):
    print("Topic: " + msg.topic)
    print(" → Data: " + msg.payload.decode())

client = mqtt.Client(client_id = "MqttClient")
client.on_connect = on_connect
client.on_message = on_message

if len(sys.argv) == 3:
    ip = sys.argv[1]
    port = int(sys.argv[2])
    client.connect(ip, port, 60)
    client.loop_forever()
else:
    print("Pouziti: python3 mqtt.py ip port")

Skript pak spustíme příkazem python3 spion.py ip port. Pokud bude vše fungovat a MQTT broker na druhé straně přijme náš anonymní požadavek, bude textový výstup  v terminálu/příkazové řádce vypadat takto:

9a47046b-a6e5-4b2f-805b-297218b7aab5
Anonymní spojení se vzdáleným brokerem navázáno!

(Ne)bezpečností MQTT brokerů dostupných na Shodanu se v minulosti věnoval třeba Morfeus Labs, který i je původním autorem skriptu výše a detailně jej rozebírá na svém blogu

Ahoj do Koreje, mohl bych si vypůjčit váš HP OfficeJet Pro?

Ale pojďme dál. Do evropských chat už se raději nabourávat nebudeme – autor tohoto článku nechce v příštích několika měsících umývat špinavé talíře kdesi ve vazební věznici, a tak zamíříme do Asie.

Proč do Asie? Protože tentokrát v Shodanu vyhledáme tyto textové řetězce:

"Serial Number:" "Built:" "Server: HP HTTP"

Naši bystří čtenáři už asi tuší, že tentokrát se pokoušíme vyhledat IP adresy, na kterých indexovací robot Shodanu objevil veřejný webový server tiskárny Hewlett-Packard. Zaujala nás jedna v Koreji, která svítí do okolí tolika otevřenými TCP porty jako brněnské vánoční kolo.

04d64f2e-6367-460a-9095-3ad9085f3c57
Ahoj, tady 4 540 síťových tiskáren od HP. Chcete si něco vytisknout? 

A tentokrát je to opravdu trefa do černého, Shodan totiž napovídá, že je na standardním portu 80 dostupná webová administrace mašinky HP OfficeJet Pro 8210! Klikáme na tlačítko a v prohlížeči rázem vidíme naprosto vše.

fc22da30-7780-4f25-9ea2-3c3d5e849e8e
Webová administrace síťové tiskárny dostupná z veřejného internetu a bez jakéhokoliv zabezpečení. Je libo něco vytisknout?

Webová administrace síťové tiskárny není nijak zabezpečená, a jelikož si dalo HP záležet, dokonce na nás vykouklo české rozhraní. Drobným testem ověříme, že se nejedná pouze o přehled ke čtení (read-only) bez práv k jakýmkoliv změnám. Ano, kdesi v korejském Seongnamu právě teď leze z tiskárny zkušební list papíru.

2142e741-437d-42ae-a524-f4878911930c
Tomu se nám nechce věřit. Změnit můžeme naprosto vše. V podstatě můžeme celou tiskárnu uloupit pro sebe a zabezpečit vlastním heslem. Ještě je tu plamínek naděje, že se jedná o falešnou vábničku.

Tiskárnu můžeme vypnout, odpojit, samozřejmě nechybí změna práv, abychom na korejské tiskárně mohli nadále tisknout jen my a nikdo jiný a tak dále. Je to naprosto k nevíře, ale do internetu svítí bez jakékoliv ochrany její kompletní administrace. I v tomto případě nejspíše majitele vůbec nenapadlo, že indexovací robot jednoduše prochází jednu IP adresu za druhou, takže i když její číslo nikomu nesdělí, robot na ni dříve či později zákonitě narazí!

3edca340-b86a-4e87-884f-3164d9ed39f9
Tisková úloha odeslána!

Na Shodanu najdete jakoukoliv síťovou elektroniku počínaje multimediálním centrem a konče 3D tiskárnou 

Podobných osvětových lumpáren bychom mohli demonstrovat ještě mnohem více, přičemž do veřejného internetu svítí i hromada nezabezpečených domácích NASů s povoleným anonymním přístupem, multimediální Plex servery (obdoba populárního Kodi), síťové tiskárny a multifunkce prakticky všech výrobců, domácí chytré reproduktory s Wi-Fi...

416da0ed-3339-45d8-88b6-ce0432ad3b22
Webové rozhraní pro správu 3D tisku s kamerou a ruka majitele, který netuší, že se dívá i někdo cizí a může stisknout tlačítko Cancel (Zdroj: Awesome Shodan Queries

A taky chromecasty, 3D tiskárny s kamerou namířenou na extruder a s možností dálkového přerušení tisku (!), těžební servery kryptoměn, špatně zabezpečené vzdálené plochy počítačů, otevřené SMB/CIFS disková úložiště, zástup nejrůznějších tenkých terminálů, nezabezpečených telnetů, SSH serverů, CRM a dalších podnikových systémů…

Vlastně cokoliv, co vás napadne. A tak není divu, že se dnes v hackerské komunitě těší velké popularitě vedle Shodanu také weby, které evidují úspěšné vyhledávací fráze. Některé jsme dnes vyzkoušeli i my a ty další najdete třeba na githubové stránce s příznačným názvem Awesome Shodan Queries.

Jak už jsme si ale řekli v úvodu, cílem není kohokoliv cíleně poškodit, ale dát veřejnosti najevo její laxní přístup k bezpečnosti, který výhledově zavání pořádným průšvihem.

Síťových krabiček internetu věcí exponenciálně přibývá a jejich přinejmenším základní zabezpečení by mělo být esenciální samozřejmostí.

Diskuze (34) Další článek: Mozilla ztrojnásobuje finanční odměny za nalezené chyby a dohání tak lépe platící konkurenci

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,