Inbreken via smb
Aanvallen op de IT-omgevingen van bedrijven zijn soms wel ongelofelijk simpel. Vaak kun je gegevens wegsluizen of de besturing van industriële installaties overnemen, zelfs zonder veiligheidsmechanismen te hoeven omzeilen. We hebben het internet eens systematisch doorzocht op onbeveiligde servers.
Het moet een overzichtelijke wereld zijn geweest toen de voorlopers van het internet werden uitgevonden. Het hele netwerk bestond uit een handvol vriendelijke gebruikers van onderzoeksinstellingen, en wie een dienst aanbood kon rekenen op dankbaarheid en goedbedoelde adviezen. Dat het er op internet tegenwoordig anders aan toegaat is inmiddels algemeen bekend – dat zou je tenminste aannemen. Het internet zit niet alleen vol met vriendelijke mensen en zelfs als normale gebruiker moet je constant op je hoede zijn.
Maar nog veel voorzichtiger moet je zijn wanneer je zelf een dienst op internet wilt aanbieden. Als je de configuratie-interface van je router opent en een port-forwarding instelt, moet je je ervan bewust zijn welke verantwoordelijkheid je daarmee op je neemt. Een standaardrouter, die ook als firewall dienst doet, weigert in principe alle externe requests en beschermt de apparaten in je netwerk tegen toegang vanuit het internet. Met port-forwarding boor je een gat in die firewall en bepaal je welke poort naar welk apparaat in het privénetwerk moet worden doorgestuurd. Dat kan een webserver zijn, de besturing van je smarthome of een mailserver. Daarbij is het volgende van belang: de aangeboden dienst moet per se een inlogprocedure hebben, versleuteld zijn en de gebruikte software moet altijd up-to-date zijn. Maar als je niet helemaal zeker van je zaak bent moet je vooral van port-forwarding afblijven.
POORTEN ONNODIG OPEN?
Wanneer je poorten onnadenkend openzet, loop je het risico dat er gegevens van je worden gestolen of dat anderen op je privénetwerk rondneuzen en er schade aanrichten. Maar helaas zijn dergelijke verkeerde configuraties niet ongewoon. In het verleden werden we herhaaldelijk gewezen op individuele gevallen die men toevallig ontdekt had. Denk daarbij bijvoorbeeld aan een dokterspraktijk of een autoverhuurbedrijf. In dergelijke gevallen komen dan onbeveiligde gedeelde bestanden op straat te liggen. Maar zijn dergelijke problemen uitzonderingen of eerder regel? Om daar achter te komen, hebben we het internet systematisch onderzocht. In dit en de volgende artikelen presenteren we een selectie van onze bevindingen. Die gevallen zijn symptomatisch voor vele andere gevallen – we geven je dan ook adviezen hoe je dergelijke fouten als beheerder kunt voorkomen.
In dit artikel beschrijven we hoe we te werk zijn gegaan en laten we aan de hand van het SMB-protocol zien wat de gevolgen van een verkeerde configuratie kunnen zijn. Vanaf pagina 98 gaan we specifiek in op industriële besturingen en het IoT-protocol MQTT – bij industriële installaties kunnen openstaande systemen in korte tijd veel schade aanrichten. Daarnaast zijn verkeerd geconfigureerde WordPressomgevingen veel te mededeelzaam over zichzelf – meer daarover op pagina 102.
IP-ADRESSEN ZIJN NIET GEHEIM
Veel onbedoelde dienstverleners maken een grote vergissing, die je ook steeds weer bij forums en blogs als goedbedoeld advies leest: zolang je geen domein instelt dat via DNS naar je ip-adres verwijst, zou dat adres vrijwel niet te vinden zijn in de uitgestrektheid van het internet. Er zijn immers meer dan 4 miljard adressen, dus het is onmogelijk te raden dat er op een willekeurig adres een service openstaat.
Die verhalen behoren absoluut tot het rijk der fabelen. Zelfs de veronderstelde 4,2 miljard ipadressen bestaan slechts in theorie. Om te beginnen kun je alle broadcast-adressen en alle gereserveerde adresbereiken daarvan aftrekken – in totaal ongeveer 600 miljoen. De resterende 3,6 miljard IPv4-adressen zijn zeker niet voldoende om een dienst anoniem te laten blijven. Een gerenommeerde tool onder veiligheidsonderzoekers is de zoekmachine Shodan.io. De ontwikkelaars achter Shodan hebben servers met portscanners opgezet en zo’n portscanner probeert alle poorten op een adres na elkaar en registreert op welke poorten hij een reactie heeft ontvangen. Als je het hele internet wilt doorzoeken, moet je dat 3,6 miljard keer herhalen. Shodan gaat dan nog een stap verder en zet met een groot aantal protocollen een verbinding op en bewaart de responses in zijn database. Via een webinterface kun je gericht zoeken op protocollen of responses. Een soortgelijke dienst is er bij censys.io. Eenvoudige zoekacties zijn daarbij gratis, voor commercieel gebruik en filters moet je betalen.
GERICHT AAN DE SLAG
Voor onze veiligheidsrapportage wilden we niet vertrouwen op gefilterde en bewerkte datasets van anderen. Dergelijke zoekmachines zetten de resultaten in een eigen volgorde en vinden sommige adressen helemaal niet. Daarom besloten we om zelf een systeem voor het systematisch scannen van het hele IPv4-internet op te zetten. Daarvoor hoefden we het wiel niet opnieuw uit te vinden, want het uitgangspunt voor onze automatische scanner is het opensource commandline-programma ZMap. Dat loopt het hele internet af en zet alle ip-adressen met een open poort in een bestand.
Opmerkelijk is de snelheid die ZMap daarbij aan de dag legt. Een scan voor een poort op alle adressen duurt volgens de ontwikkelaar slechts 5 minuten als je een verbinding van 10 Gbit/s zou gebruiken. We besloten om de scans op de hardware bij een hoster te starten en beperkten ZMap tot minder dan 25 Mbit/s. Daarom moesten we soms enkele dagen op een volledige scan van het internet wachten.
NETWERKSCHIJVEN VOOR IEDEREEN
De eerste scan startten we op SMB-poort 445. Windows-gebruikers kennen dat protocol voor filesharing onder Windows, maar ook Linux-machines en NAS-apparaten kunnen SMB ondersteunen. De lijst met resultaten was lang. Bij circa 63.000 ip-adressen meldde zich een SMB-service. Op die lijst lieten we een script los, dat een SMB-verbindingsopbouw zonder toegangsgegevens uitprobeerde.
De meeste servers verbraken de verbinding of wilden een inlognaam en wachtwoord. Ongeveer 1500 servers beantwoordden onze requests bereidwillig en lieten de beschikbare shares zien. Sommige servers boden zelfs nog SMB 1 aan, waarvoor al jaren exploits bekend zijn. We waren – vooral om elk juridisch gedoe te vermijden – alleen geïnteresseerd in de shares die zonder enige aanmelding leesof beschrijfbaar waren. En daar waren er veel van. Zo vonden we de complete boekhouding van twee Zuid-Amerikaanse bouwbedrijven en van een vakantieclub uit Midden-Amerika, contracten, rekeningen en besluiten van een regionale overheid uit Azië en een heleboel NAS-apparaten.
Bij de NAS-apparaten gaat het om een systematisch probleem en niet altijd heeft de gebruiker de port-forwarding handmatig in de router geactiveerd. Veel routers staan apparaten in het netwerk toe om via UPnP zo’n port-forwarding zelf in te stellen, en als de NAS dan poort 445 in de firewall opent, dan is de ramp compleet. Deactiveer UPnP-shares daarom in je router. Bij een Fritzbox vind je die bij ‘Internet / Toegangd verlenen’ op het tabblad Vrijgaven alle apparaten met open poorten zien. Verwijder alle vinkjes in de kolom ‘Zelfstandige poortvrijgave’ en klik op Toepassen. Daarnaast kun je die poortvrijgave voor alle toekomstige apparaten integraal deactiveren.
Veel NAS-apparaten bieden shares voor het back-upsysteem Time Machine van Apple, die in principe zonder aanmelden toegankelijk zijn. In een lokaal netwerk is dat wellicht handig om de Mac te back-uppen, maar in combinatie met een open poort is dat desastreus. We vonden veel complete back-ups van Apple-gebruikers van over de hele wereld. Bij veel NAS-systemen waren we ook niet de eerste bezoekers – daar had ransomware al toegeslagen.
Een handelaar in kantoormeubelen had zijn Windows-server aan internet gekoppeld, zodat medewerkers makkelijk bij de gegevens konden – helaas kon iedere niet aangemelde bezoeker dat ook. De hele communicatie van het bedrijf was via SMB voor iedereen toegankelijk. Daarbij zaten de facturen van de laatste jaren, klantenlijsten, omzetoverzichten en offertes. We hebben de eigenaar daarop attent gemaakt en hij heeft het lek meteen gedicht en toegezegd dat bij de betreffende autoriteit te zullen melden.
De shares stonden ook niet op een machine in het eigen netwerk, maar op een virtuele machine bij een hoster. Die hebben vaak geen aparte firewall, zodat je er zelf voor moet zorgen om de firewall van het besturingssysteem in te stellen. In het gesprek was degene die verantwoordelijk was voor de ICT van het kleine bedrijf verbaasd dat de share op internet gevonden kon worden. Naar aanleiding van dat voorval besloot hij een aanbieder in de arm te nemen voor een VPN-oplossing.
WAT MOET JE DOEN?
Al die shares vonden we met een oppervlakkige scan, we hoefden geen toegangsbeveiligingen te hacken. Het beveiligen van je shares met een authenticatie is al een eerste stap, maar helpt niet tegen hackers. SMB behoort tot de zeer loslippige protocollen. Ook als je van buitenaf geen toegang tot de shares zelf hebt, maar alleen tot het directory-overzicht, of details van de gebruikte software kunt zien, is dat al te veel. Naar onze mening moet SMB beperkt blijven tot het lokale netwerk en hoort het niet op internet thuis. Als je netwerkshares nodig hebt, gebruik dan een VPN.
Als alternatief kun je nog een zelf gehoste Nextcloud-instantie overwegen (voor zover je systeembeheerervaring hebt). En zelfs servers van Google, Amazon en Microsoft bieden altijd nog een privacy-vriendelijkere omgeving dan een amateuristisch op internet aangesloten SMB-share.