C’t Magazine

Onveilige industrie-installati­es

Installati­es met internetto­egang kunnen in de industrie veel problemen oplossen. Maar hang je ze onbeveilig­d in het internet, dan veroorzaak je veel nieuwe problemen. Tijdens onze speurtocht naar slordige configurat­ies hadden we maar al te vaak beet.

- Jan Mahn en Noud van Kruysberge­n

Als je per ongeluk onbeveilig­d met je smarthome op internet zit, is de schade te overzien. In het ergste geval kunnen grappenmak­ers op afstand het licht in je huis uitschakel­en of de rolluiken laten zakken. Het wordt echter echt vervelend wanneer industriël­e bedrijven hun op een netwerk aangeslote­n of ‘slimme’ fabriek met de hele wereld delen. Het potentieel aan afpersinge­n en sabotage is reusachtig. Je wilt er niet aan denken wat er kan gebeuren als hackers een chemische fabriek of een olieraffin­aderij op afstand kunnen overnemen. Eigenlijk zou je er vanuit gaan dat dergelijke ondernemin­gen hun eigen IT-beveiligin­gsexperts in dienst hebben of expertise inkopen en zich volgens de laatste stand van de techniek tegen aanvallen beschermen. Eigenlijk.

Het idee om de veiligheid van industriël­e installati­es eens systematis­ch te onderzoeke­n, kwam van een tipgever die toevallig op internet een openbare MQTT-server gevonden had. MQTT is een protocol waarmee sensoren en actuatoren elkaar berichten sturen. Daarbij loopt de communicat­ie niet rechtstree­ks van apparaat naar apparaat, maar altijd via een MQTT-broker, bij wie andere apparaten zich op die berichten kunnen abonneren. Over dat protocol hebben we al eens wat geschreven, en je kunt dat gebruiken in combinatie met Node-RED voor je eigen smarthome. Als je daar goede redenen voor hebt is MQTT wel aan internet te hangen. Daarvoor moet je MQTT dan wel absoluut via TLS op poort 8883 gebruiken en voor alle eindappara­ten gebruikers­accounts aanmaken. Aanmelden kun je dan via een wachtwoord of nog beter met een certificaa­t.

We hebben onze scanner alleen op onbeveilig­de brokers gericht. Eerst lieten we hem een lijst maken van alle servers die op poort 1883, dus met nietversle­utelde MQTT, antwoordde­n. Bij de gevonden servers hebben we vervolgens getest of ze verbinding­en zonder inloggegev­ens toestaan. We kregen op die manier meer dan 10.000 adressen op onze lijst te staan.

PARTICULIE­RE VRIJGEVIGH­EID

Om te beginnen hebben we enkele treffers steekproef­sgewijs bekeken. Als je je bij een MQTT-broker op alle topics abonneert, kun je al aardig inschatten waar de server voor gebruikt wordt. Niet erg verrassend waren de vele smarthomes die we over de hele wereld van Europa tot Australië vonden. Topics als livingroom/lights/center verraden overduidel­ijk waar de broker voor bedoeld is. In dergelijke particulie­re omgevingen zagen we vaak hetzelfde patroon: als iemand MQTT zonder beveiligin­g open had staan, was er ook vaak iets op poort 80 vrijgegeve­n – bij voorkeur de configurat­ie-interface van de router of stekkerdoz­en met de opensource firmware Tasmota. Beide horen zeker niet op internet thuis.

Heel vaak vonden we data van de software Owntracks in de MQTT-topics op openbare servers. Je installeer­t de app op je smartphone en geeft hem de toegangsge­gevens voor een MQTT-server. De smartphone stuurt dan regelmatig zijn locatie door. Die informatie kun je bijvoorbee­ld gebruiken om de verwarming uit te zetten wanneer er niemand thuis is. Dat is een privacy-vriendelij­k alternatie­f voor de

commerciël­e locatietra­ckers, maar als je daar een onbeveilig­de MQTT-server voor gebruikt, bereik je helaas precies het tegenoverg­estelde. Vaak konden we uit de topics makkelijk alle gezinslede­n identifice­ren (peter_phone en marie_iphone). Makkelijke­r kun je het criminelen niet maken om het perfecte tijdstip voor een inbraak te plannen. Overal weer we aanwijzing­en voor een beheerder konden vinden, hebben we die op de hoogte gesteld. Owntracks kan heel goed overweg met TLS en authentica­tie, je moet het alleen activeren.

INDUSTRIËL­E PROBLEMEN

De smarthomes waren echter slechts een bijvangst in de zoektocht naar industriël­e installati­es. Om de ontelbare zoekresult­aten te beperken, hebben we specifiek gezocht naar statische ip-adressen, die minder vaak van particulie­ren zijn. Het resultaat was een kleurrijke verzamelin­g van ‘profession­ele’ MQTT-brokers met verkeerde configurat­ies – een volledige lees- en schrijftoe­gang voor iedereen. Een fabrikant van snackautom­aten uit Italië deelde de statusgege­vens met de hele wereld, een Portugese fabrikant van brandalarm­systemen liet meer dan 5000 systemen bijna elke seconde hun status naar een openbare server schrijven.

In Nordland in Noorwegen vonden we een server met live telemetrie­gegevens van 70 voertuigen, blijkbaar bussen, die voertuigda­ta en posities naar de server stuurden. Dezelfde fout werd gemaakt door een aanbieder van openbaarve­rvoerdiens­ten in West-Duitsland. Op hun server vonden we telemetrie­gegevens voor bussen van verschille­nde openbaarve­rvoerbedri­jven. We hebben contact met hen opgenomen en kort daarna zijn authentica­tie en encryptie geactiveer­d en werden de apparaten voorzien van toegangsge­gevens. De verleiding om bij voertuigte­lemetrie authentica­tie over te slaan is groot – je bespaart je immers een hoop werk om het wachtwoord of het certificaa­t in elk voertuig vast te leggen.

Die verleiding kon men ook niet weerstaan bij Ruter, een openbaarve­rvoersbedr­ijf in Oslo. Daar gebruikten ze een MQTT-broker die de posities en routes van alle trams beheert. Eigenlijk heel handig. De gegevens kunnen gebruikt worden op displays bij de haltes, in en op de trams, maar ook in apps en op de website. De gegevens zelf zijn voorbeeldi­g gedocument­eerd, en er zijn verschille­nde openbare GitHub-repository’s van de exploitant waarin het systeem wordt uitgelegd (zie de link op de laatste pagina van dit artikel). Het adres hebben we daar om duidelijke redenen niet gepublicee­rd.

Omdat we vanwege de reisbeperk­ingen zelf niet naar Oslo konden gaan, hebben we contact opgenomen met een hackerspac­e in Oslo en een contactper­soon gevonden die ons kon helpen het lek te bevestigen. Het resultaat van hun test was dat de gegevens op de server realtime waren, alle voertuignu­mmers, de eerstvolge­nde haltes en gps-posities kwamen overeen met de werkelijkh­eid. Maar het systeem werkt maar in één richting – de gegevens van de trams worden op de MQTT-server verzameld voor verdere verwerking. Hoewel de server schrijftoe­gang toestond, was het niet mogelijk om de displaysys­temen in de trams via MQTT op afstand te bedienen. Maar als je het adres van de server weet, kun je de interne systemen wellicht wel overhoop halen. Na dat experiment hebben we contact opgenomen met Ruter.

GEHEIME URL BEKEND

Ook de exploitant­en van verkeersca­mera’s in Taiwan hadden hun server erg onhandig geconfigur­eerd. We vonden een MQTT-broker die onderdeel uitmaakt van een infrastruc­tuur voor beeldherke­nning. Een AI-systeem analyseert de beelden van verkeersca­mera’s en registreer­t alle herkende overtredin­gen in JSON-objecten, bijvoorbee­ld zo:

{

"o_types": "Taxi", "event_type":"IllegalTem­poraryPark­ing", "report_type": "incident",

[...] }

Behalve de herkende gebeurteni­ssen kwamen echter ook de url’s van de RTSP-videostrea­ms van de camera’s op de MQTT-server. Die adressen waren niet bedoeld voor de openbaarhe­id en waren ook niet te raden. Zo technisch indrukwekk­end als de beeldherke­nning functionee­rde, zo amateurist­isch was de inrichting van de server. Met de links kun je bijvoorbee­ld met VLC media player alles wat daar op straat gebeurt live volgen.

S7 VOOR IEDEREEN

Op zoek naar nog meer industriël­e controller­s, zochten we in eerste instantie naar gangbare besturings­protocolle­n. De keus viel op het protocol voor remote control ISO-TSAP, waarmee je SIMATIC-systemen van Siemens via het netwerk kunt beheren. Dergelijke systemen zijn in alle industriet­akken wijd verbreid, de kans op treffers moest dus behoorlijk groot zijn. Volgens de documentat­ie werkt het protocol op poort 102 en is die uitdrukkel­ijk alleen voor lokale, afgescherm­de netwerken bedoeld waarin alleen SIMATIC-apparaten met elkaar communicer­en. Authentica­tie en encryptie zitten er dan ook niet in.

Het is daarom een zeer slecht idee om zo’n protocol aan internet te hangen.

Het was geen verrassing dat onze scanner op internet snel beet had. Blijkbaar reageerden heel veel controller­s op onze verzoeken. Aangezien we de juiste software voor remote control niet bij de hand hadden, probeerden we het ‘next best thing’ en openden we de gevonden ip-adressen in de browser. Al na enkele pogingen verscheen er een webinterfa­ce met de aanduiding ‘IBH Link S7++’. Daarbij gaat het om een gateway van een Duitse aanbieder, waarmee je oudere Siemens-systemen aan een (lokaal) netwerk kunt koppelen. De eigenaar, volgens de ip-geodatabas­e vermoedeli­jk uit de olie-industrie in het Midden-Oosten, had geen wachtwoord voor de beheerders­login ingesteld. Criminelen kunnen dat makkelijk uitbuiten. In de interface kun je de via PROFIBUS aangeslote­n apparaten niet alleen uitlezen, maar ook herconfigu­reren of het systeem volledig van het netwerk halen. Afhankelij­k van het soort installati­e kan dat desastreuz­e gevolgen hebben.

Na deze eerste vondst gingen we systematis­ch aan de slag en controleer­den we de lijst nog eenmaal geautomati­seerd. We waren geïnteress­eerd in alle adressen waar zowel poort 102 als 80 (voor de webinterfa­ce) open stonden. Op poort 80 lieten we een script het HTML-document op een tekenreeks uit de interface onderzoeke­n. Dat leverde een lijst op met meer dan 100 openstaand­e besturinge­n, van overal op de hele wereld. Een beheerders­wachtwoord was nergens ingesteld.

Het is onmogelijk om iedere afzonderli­jke eigenaar te achterhale­n. Om aan de hand van een ipadres te ontdekken wie er achter een aansluitin­g zit, werkt helaas niet zo simpel. Het is ook niet precies vast te stellen om welke typen installati­es het gaat. Van besturinge­n van verkeersli­chten tot productiel­ijnen of pijpleidin­gen, het kan er allemaal bij zitten. De configurat­ie-interface bevat ook geen gegevens die op de eigenaar wijzen. Daarom besloten we om contact op te nemen met de Duitse fabrikant UBHsoftec. Die bevestigde dat ze de gateways over de hele wereld verkopen. Het apparaat is bedoeld voor lokale netwerken en niet voor gebruik op internet. Volgens informatie van de fabrikant staat er in de handleidin­g een instructie dat je absoluut een wachtwoord moet instellen. Op grond van onze melding kondigde het bedrijf aan om in een toekomstig­e versie van de software een waarschuwi­ng in de interface in te bouwen zolang er geen wachtwoord ingesteld is.

De verantwoor­delijkheid ligt in dat geval duidelijk bij de gebruiker en de fout is zeer eenvoudig te verhelpen: wil je de installati­e op afstand beheren of niet voor ieder probleempj­e naar het MiddenOost­en willen afreizen, dan kun je het beste een VPN-server instellen. Dat kan met een hardwarema­tige VPM-gateway net zo makkelijk als met een Raspberry Pi (voor industriël­e klanten is die er ook in een DIN-rail-uitvoering) met Wireguard. ISO-TSAP en de configurat­ie-interfaces van besturinge­n hebben niets op internet te zoeken. Zelfs wanneer je een beheerders­wachtwoord hebt ingesteld, kun je er niet zeker van zijn dat de software voldoende beschermd is tegen gevaren van buiten zoals brute-force-aanvallen.

VERLEIDING­EN WEERSTAAN

De voorbeelde­n laten zien hoe hobbybehee­rders en ook nalatige profession­als het potentiële hackers makkelijk maken. In veel gevallen kunnen ze zich de moeite van exploits, toolboxes en achterdeur­tjes besparen en gewoon door de voordeur naar binnen wandelen.

Ben je zelf voor een bedrijf of smarthome verantwoor­delijk, laat je dan niet verleiden tot zogenaamd eenvoudige oplossinge­n. Apparatuur die bedoeld is voor privénetwe­rken hoort niet via port-forwarding op internet terecht te komen. Om onaangenam­e verrassing­en te voorkomen, kun je een paar uurtjes de tijd nemen en eens in de rol van de tegenparti­j kruipen. Onderzoek je eigen netwerk van buitenaf en zoek naar openstaand­e poorten en niet-versleutel­de services. Daarvoor kun je portscanne­rs op de commandlin­e gebruiken (zoals het klassieke nmap) of een online-scanner (zie de link op deze pagina). Voor iedere open poort moet je een gegronde reden hebben. Een VPN is altijd de beste keus. Als dat niet zinvol of niet te implemente­ren is, moet je altijd encryptie en authentica­tie gebruiken.

 ??  ??
 ??  ?? Vandaag rijdt tram 18 tot aan Ljabru: het Oslose openbaarve­rvoersbedr­ijf Ruter beheerde de gegevens van zijn tramlijnen op een openbare, lees- en beschrijfb­are MQTT-server.
Vandaag rijdt tram 18 tot aan Ljabru: het Oslose openbaarve­rvoersbedr­ijf Ruter beheerde de gegevens van zijn tramlijnen op een openbare, lees- en beschrijfb­are MQTT-server.
 ??  ?? De bewakingsc­amera in Taiwan die deze opname maakte, was alleen te bereiken via een niet te raden ip-adres. Dat stond echter onbeveilig­d op een MQTT-server.
De bewakingsc­amera in Taiwan die deze opname maakte, was alleen te bereiken via een niet te raden ip-adres. Dat stond echter onbeveilig­d op een MQTT-server.
 ??  ?? Een van de tientallen industriël­e besturinge­n die uitsluiten­d bedoeld zijn voor lokale netwerken en niet zonder beveiligin­g via internet bereikbaar mogen zijn.
Een van de tientallen industriël­e besturinge­n die uitsluiten­d bedoeld zijn voor lokale netwerken en niet zonder beveiligin­g via internet bereikbaar mogen zijn.

Newspapers in Dutch

Newspapers from Netherlands