Zo maak je je systeem en netwerk veiliger
Je hebt phishingmails zo door en je hebt natuurlijk een firewall en een antivirustool draaien, maar zijn je systeem en je (thuis)netwerk nu helemaal veilig? Microsoft en andere softwareontwikkelaars waarschuwen namelijk geregeld voor nieuwe kwetsbaarheden. Hoe detecteer je die en hoe dicht je de gaten in Windows en in je netwerk?
Elke softwareontwikkelaar hoort zich ook met vulnerability management bezig te houden. Anders gezegd: hij dient grondig na te gaan welke mogelijke kwetsbaarheden de (systeem)software op elk moment bevat, bij voorkeur voor ze daadwerkelijk worden geëxploiteerd. Dat is een arbeidsintensieve en lastige taak. Immers, dat er vandaag geen kwetsbaarheid is, betekent niet dat die er morgen ook niet is. Het zou namelijk best kunnen dat er nieuwe en krachtiger aanvalstechnieken ontwikkeld worden die een eerdere beveiliging zomaar onderuithalen.
Ook Microsoft is zich daarvan bewust (zie ook www.tiny.cc/msvulna). Zo zijn er, naast allerlei ‘bug bounty’-programma’s en geautomatiseerde kwetsbaarheidsscans op basis van AI, ook zogeheten red teams van ethisch hackers die continu bezig zijn met het uitvoeren van penetratiestests.
Dat neemt niet weg dat er nog vaak nieuwe kwetsbaarheden worden gemeld en niet alleen door of van Microsoft. Als (thuis)systeembeheerder doe je er dus goed aan hiervan zo goed mogelijk op de hoogte te zijn. Bruikbare en doorzoekbare informatiebronnen zijn onder meer https://cve.mitre.org/cve (Common Vulnerabilities and Exposures), https://seclists.org/fulldisclosure en www.exploit-db.com (met onder meer de Google Hacking Database).
In deze masterclass gaan we na op welk niveaus kwetsbaarheden zich zoal kunnen voordoen en hoe je die, met behulp van veelal gratis tools, kunt opsporen en als het goed is, neutraliseren.
©PXimport
Kwetsbaarheidsniveaus
Elke goed geïnformeerde gebruiker weet dus dat er altijd wel kwetsbaarheden zijn die zijn systeem of netwerk kunnen compromitteren. De vraag is wel: op welke niveaus komen ze voor? Als we fysieke bedreigingen buiten beschouwing laten, waarbij een aanvaller zich toegang weet te verschaffen tot de fysieke machine, resten eigenlijk alleen aanvallen van buitenaf, via het internet of het netwerk. Dat maakt dat je router (alias de centrale toegangspoort) van cruciaal belang is, zeker wanneer je services bewust van buitenaf toegankelijk wilt maken, zoals een web- of mailserver. In dat geval kan een netwerkscanner absoluut zinvol zijn. Een web-kwetsbaarheidsscanner is ook nuttig wanneer je een dynamische site of webapplicatie draaien hebt, zoals op basis van JavaScript en/of een SQL-database.
Naast de ‘network edge’ dien je ook de individuele netwerkclients op potentiële kwetsbaarheden te scannen. Ongeacht het gebruikte besturingssysteem focus je je hierbij het best op diverse aspecten. We denken onder meer aan updates van het besturingssysteem en van (kritische) applicaties, accountbeheer en (netwerkgerelateerde) configuratie-instellingen, zoals die van je firewall, browser en netwerkprofielen (privé, openbaar, domein). Laten we met zulke clientcontroles beginnen. We richten ons hier op Windows-systemen.
Security suite
Met Windows Defender heb je al een degelijke antimalwaretool in huis en is er eigenlijk weinig reden om een extern antiviruspakket aan te schaffen. Wel is het zo dat de meeste antivirustools deel uitmaken van een security suite en die biedt vaak wel nuttige extra’s. Zo bevat Bitdefender Total Security (vanaf 34,99 euro per jaar voor vijf toestellen), naast modules als antispam, ransomwareprotectie en VPN, onder meer een kwetsbaarheidsanalyse. Die huldigt helaas het black box-principe (lees: niet altijd even duidelijke oorzaken of remedies) maar is toch leerzaam. Via www.bit.ly/bitdefdown vind je een gratis proefversie voor dertig dagen. Ruimschoots de tijd dus om op Kwetsbaarheidsscan te klikken en de resultaten te bestuderen. Ook deze scan focust op verouderde en kwetsbare software, ontbrekende Windows-veiligheidspatches en potentieel onveilige systeeminstellingen. Dit laatste gaat dan onder meer over het automatisch verbinden met publieke hotspots of het niet afdwingen van versleuteling over wifi.
©PXimport
Updatebeheer
Kwetsbaarheidsbeheer kan niet zonder gestructureerd update- en patchbeheer. Nu is het wel zo dat Windows (ga naar Instellingen / Bijwerken en beveiliging / Windows Update) en veel applicaties automatisch op updates kunnen checken en die vaak ook downloaden en installeren. Maar je doet er toch goed aan de update-instellingen regelmatig te controleren en na te gaan of alle nodige updates daadwerkelijk zijn geïnstalleerd.
Twee populaire tools om eventuele lacunes op te sporen (Secunia PSI en MBSA oftewel Microsoft Baseline Security Analyzer) worden helaas niet langer doorontwikkeld en zijn dus ook niet langer betrouwbaar. Het probleem met zulke tools is niet zozeer het bijwerken van de GUI-app maar het actualiseren van de koppeling met achterliggende databases. Verderop in dit artikel bespreken we een paar alternatieven in de vorm van scripts.
Wel zijn er nog diverse tools die nagaan in hoeverre geïnstalleerde applicaties up-to-date zijn en je geautomatiseerde downloads aanbieden. We zijn helaas geen voorstander van dit laatste, omdat niet altijd de juiste downloads (in de gewenste taal) worden opgehaald.
Een gratis en tegelijk een van de grondigste tools is SUMo. Klik na het opstarten op Geïnstalleerde software automatisch detecteren en vervolgens op Controleren. Je ziet nu welke applicaties aan een (grote of minder grote) update toe zijn en welke dat is, waarna je de update na controle zelf kunt downloaden van de ontwikkelaarssite. Via SUMO kan dat alleen als je de PRO-versie aanschaft.
©PXimport
Updatebeheer hoort deel uit te maken van elk kwetsbaarheidsbeheer
-
WSUS offline scan
Tools als SUMo richten zich vooral op updates van bekende applicatiesoftware. Om zeker te weten dat je ook over de alle nodige updates en patches voor Windows zelf beschikt moet je dus naar een andere geautomatiseerde oplossing uitkijken. Een bruikbaar alternatief voor MBSA is de ingebouwde Windows Update Agent (WUA) in combinatie met een WSUS offline scanbestand. Die richt zich in de eerste plaats op domeinnetwerken, maar is ook elders inzetbaar. Download eerst het betreffende scanbestand via www.tiny.cc/wsus2. (let op: het cab-bestand in kwestie wordt gelijk gedownload). Via een script kun je dan op basis van dit bestand een grondige offline scan uitvoeren. Dat kan zowel een VBS-script zijn als een PowerShell-script. Je vindt een voorbeeld voor een VBS-script via www.tiny.cc/wsusvbs (dit verwacht het scanbestand standaard in C:\) en een voorbeeld voor een PowerShell-script via www.bit.ly/wsuspower (zoekt naar het scanbestand in C:\Temp).
We kijken kort naar het PowerShell-script, maar de werking van beide is vergelijkbaar. Start PowerShell als administrator op (wij werken met PowerShell 7.x) en voer het volgende commando uit:
Install-Script -Name Scan-UpdatesOffline
Voeg met Y het scriptpad toe aan de path-variabele en bevestig dat je het script van de repository wilt downloaden. Met:
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted
geef je aan dat je deze vertrouwt.
Ten slotte voer je Scan-UpdatesOffline.ps1 uit. Na afloop van de (langdurige) scan verschijnt het resultaat.
©PXimport
WES-NG
Een andere, snelle methode om kwetsbaarheden op te sporen is met de Python-tool Windows Exploit Suggester - Next Generation (WES-NG). Deze tool richt zich op informatie gegenereerd door de ingebouwde opdrachtregeltool systeminfo.exe, waarna die tegen databases met kwetsbaarheden wordt afgezet: Microsoft Security Bulletin, MSRC en NVD (NIST National Vulnerability Database).
Ga naar de GitHub-pagina van WES-NG via www.bit.ly/gitwesng en download het code-zipbestand. Pak dit uit naar een lege map, bijvoorbeeld naar C:\wesng. Download en installeer de complete Python-installer voor Windows via www.python.org/downloads/windows. Gemakshalve plaatst je hier ook een vinkje bij Add Python [x.y] to PATH. Vervolgens voer je de drie volgende commando’s uit op de opdrachtprompt:
pip install chardet
systeminfo.exe > sysinfo.txt
wes.py sysinfo.txt
Met het eerste commando installeer je een (aanbevolen) Python-library en het tweede zorgt ervoor dat de uitvoer van systeminfo in een tekstbestand terechtkomt. Het derde commando voert de eigenlijke kwetsbaarheidsscan uit, op basis van de gegevens uit sysinfo.txt. Als het goed is, krijg je een overzicht van de gedetecteerde kwetsbaarheden met onderaan de aangewezen patches om die gaten te dichten (zie ook kader ‘Knowledge base’). Na de installatie van de patch(es) en de herstart van Windows voer je het best opnieuw een scan uit. Via parameters kun je de uitvoer van WES-NG ook filteren, als volgt:
wes.py sysinfo.txt -s critical of
wes.py sysinfo.txt -e
Het eerste commando somt alleen kritieke kwetsbaarheden op, met het tweede check je op kwetsbaarheden waar reeds exploits voor beschikbaar zijn.
©PXimport
Knowledge base
WES-NG (en ook wel andere kwetsbaarheidsscanners) leveren je de noodzakelijk geachte patches aan in de vorm van een KB-nummer. Dat staat voor Knowledge Base, en verwijst naar Microsofts online database met Windows- en andere Microsoft-updates en patches. Op www.catalog.update.microsoft.com kun je gericht zoeken naar KB’s. We raden je aan eerst goed de bijbehorende informatie te lezen voor je een update downloadt en installeert. Zorg er ook voor dat je de juiste update voor je systeemarchitectuur te pakken hebt. Mocht je zo’n update onverhoopt toch weer willen verwijderen en lukt dat echt niet vanuit Instellingen / Bijwerken en beveiliging / Windows Update, probeer het dan als volgt: open als administrator de Opdrachtprompt en voer het volgende uit: *wusa /uninstall /kb:
©PXimport
AutoLogger
AutoLogger is strikt genomen geen kwetsbaarheidsscanner, aangezien die vooral achteraf naar sporen zoekt. Anders gezegd, naar mogelijke indicaties dat je systeem al is besmet met enigerlei vorm van malware, spyware of adware. We bewandelen hier dus in zekere zin de omgekeerde weg: aan de hand van typische kenmerken van malwaresporen proberen we uit te zoeken aan welke exploits en dus kwetsbaarheden ons systeem wellicht blootstond of -staat. We bekijken kort de werking van het AutoLogger-script van Russische origine.
Met de installatie belanden onder meer de tools AVZ (zie ook www.tiny.cc/kasavz) en HiJackThis Fork (zie ook www.bit.ly/hijackfork) op je systeem.
Je downloadt AutoLogger via www.bit.ly/autologger via de oranje knop. Pak het zip-bestand uit naar een lege map en start AutoLogger.exe op. Even later start het script automatisch een voor een de geïnstalleerde tools op en wordt je systeem grondig gescand. Dit proces kan wel even duren. Na afloop wordt de logbestanden in een zip-bestand opgenomen, in de submap \AutoLogger. Nu kun je dit zip-bestand, na je aanmelding bij GitHub, wel uploaden via een bug-tracking issue-sectie waarna je mogelijk zinvolle feedback ontvangt, maar we raden je toch aan dit bestand eerst uit te pakken en de vier logbestanden zelf te bestuderen. Mogelijk schrikt de detaillering van de gegevens je toch wat af om die data zomaar te uploaden en bovendien zijn deze logs ook best leerzaam. In het kader vertellen we je wat meer over de logs van HiJackThis Fork.
©PXimport
HiJackThis
Veel computergebruikers zullen HiJackThis, van Nederlandse origine, nog kennen als een grondige scanner voor allerlei spyware en andere malware. Helaas is de officiële ondersteuning van de tool al jaren stopgezet, maar gelukkig wordt die wel nog door derden onderhouden op GitHub. De logs zijn vaak erg uitgebreid, maar wel goed gestructureerd via secties met getalcodes. De Help-knop van dit programma geeft je op het tabblad Sections feedback over de diverse secties. Op het tabblad Keys kun je terecht voor een reeks parameters waarmee je HiJackThis verder kunt aansturen.
©PXimport
Poortscan
We verschuiven onze zoektocht naar mogelijke kwetsbaarheden nu naar de netwerkzijde van je systeem. Daar hoort natuurlijk een grondige poortscan bij. Je kunt weliswaar specifieke poorten scannen, bijvoorbeeld als je een ip-camera hebt waarvan je de beelden via een webinterface bekijkt en je wilt weten of die poort ook van buitenaf bereikbaar is. Dat kan heel eenvoudig door het adres www.grc.com/x/portprobe=<poortnummer> in je browser in te voeren. Is het juist je bedoeling dat die poort openstaat, dan ga je in elk geval na of de bijbehorende service up-to-date is en of er geen kwetsbaarheden of exploits van bekend zijn.
We raden je aan om een poortscan op een zo ruim mogelijk poortbereik uit te voeren. Immers, je kunt altijd wel een service of applicatie over het hoofd zien.
Een poortscan van binnenuit uitvoeren is uiteraard een optie, maar gezien hackpogingen doorgaans van buitenaf gebeuren, laat je er het best (ook) een online poortscan op los. Een populaire en snelle scan kan via ShieldsUP!. Klik op Proceed / All Service Ports, zodat de poorten 0 tot 1055 worden gescand.
Een blauw vakje wijst op een gesloten poort, maar nog veiliger is een groen vakje (stealth), aangezien die poort helemaal niet op binnenkomende datapakketjes reageert, wat maakt dat de hacker in principe niet weet dat er een poort aanwezig is. Een rood vakje geeft een open poort aan.
©PXimport
Poortscan: interpretatie
Klik op zo’n poortvakje voor meer details over het poortgebruik en eventuele kwetsbaarheden. Je moet wel even opletten met het interpreteren van de poortscanresultaten. Vergeet immers niet dat al het netwerkverkeer van buitenaf – dus ook de poortscans van ShieldsUP! – je router moet passeren. Voer je zo’n scan uit vanaf een netwerkclient en geven de resultaten open poorten aan, dan betekent dat niet noodzakelijk dat die openstaan op het systeem waarmee je de scan startte. Het zou zomaar kunnen dat je, ik noem maar wat, twee IoT-apparaten of ip-camera’s deze poorten gebruiken en dat je beide poorten via port forwarding (helaas) ongefilterd vanuit je router naar die apparaten hebt doorgelust. Maar het werkt ook in de andere richting: het zou kunnen dat je veel meer groene vakjes te zien krijgt, precies omdat je NAT-router deels ook als firewall fungeert.
Om echt te weten hoe je eigen systeem scoort, kun je dat ofwel rechtstreeks met je modem verbinden ofwel als DMZ in je router configureren. Je kunt ook nagaan in hoeverre het in- of uitschakelen van je firewall een verschil maakt. Besef wel dat het systeem tijdens zo’n test mogelijk onbeschermd is tegen potentiële aanvallen!
©PXimport
Een kwetsbaarheidsscan kun je ook (eerst) in een virtueel testlab uitvoeren
-
Virtueel testlab
Er bestaan natuurlijk ook gespecialiseerde kwetsbaarheidsscanners en wanneer je googelt naar ‘vulnerability scanner’ kom je al snel bij enkele kandidaten uit. Wil je het gratis doen, dan kun je de pentesting-distributie Kali Linux overwegen. Deze heeft namelijk een fraaie rubriek Vulnerability Analysis beschikbaar.
Kali Linux is beschikbaar voor WSL, maar laat zich net zo goed bare metal of in dual boot, als live bootmedium of in een virtuele machine (VM) installeren. Voor je hiermee in een productieomgeving aan de slag gaat, doe je er goed aan ervaring op te bouwen in een virtueel testlab, bijvoorbeeld met VirtualBox.
Start de tool op en ga naar Bestand / Voorkeuren. Bij Netwerk ga je naar het tabblad NAT-netwerken, klik je op de groene plus-knop en dubbelklik je op het toegevoegde item. Eventueel pas je hier de Netwerknaam (NatNetwork) en/of de Netwerk-CIDR (10.0.2.0./24) aan. Plaats een vinkje bij Inschakelen netwerk en bevestig met OK.
Je kunt nu Kali Linux ophalen, bijvoorbeeld via www.osboxes.org/kali-linux (pak het gedownloade 7z-archiefbestand uit) en als VM installeren. Bij deze download is de standaard login voor Kali Linux osboxes (User) en osboxes.org (Password; ook voor root).
Vervolgens installeer je de gewenste doelsystemen in afzonderlijke VM’s. Dat kan net zo goed ook een geïnstalleerd Windows-systeem zijn dat je met de gratis tool Disk2vhd naar een virtuele harde schijf (VHD) hebt omgezet. Deze is in PCM 11/2021 aan bod gekomen, op pagina 92.
©PXimport
Kali: kwetsbaarheidsscanners
Kali bevat al een paar handige kwetsbaarheidsscanners, zoals de populaire en krachtige tool Nikto voor het scannen op kwetsbaarheden in webservers en -applicaties. Sommige hiervan tref je helaas niet meer in Kali Linux aan, maar laten zich met wat moeite alsnog integreren, zoals netwerk-kwetsbaarheidsscanner OpenVAS (Open Vulnerability Assessment System).
OpenVAS is eigenlijk een afgeleide van de ooit zo populaire kwetsbaarheidsscanner Nessus, toen die nog opensource was. Nessus is intussen gecommercialiseerd, maar er bestaan talloze plug-ins voor, geschreven in de scripttaal NASL (Nessus Attack Scripting Language). Handig is wel dat ook OpenVAS met NASL-scripts overweg kan.
Voer de volgende gebruikelijke commando’s uit om alles te updaten:
sudo apt update
sudo apt dist-upgrade
Nu kun je OpenVAS installeren met:
sudo apt install -y openvas
Voor de verdere configuratie en het opstarten vind je meer informatie via www.bit.ly/openvas.
©PXimport
Nessus Essentials
Spreekt de kwetsbaarheidsscanner in Kali je toch niet aan en vind je het integreren van extra tools, zoals OpenVAS, wat lastig, dan heb je aan Nessus Essentials een uitstekend alternatief (dat je overigens ook wel in Kali kunt opnemen: zie www.bit.ly/kaliness).
Je vindt dit op www.tenable.com/products/nessus. Deze gratis editie beperkt je wel tot het scannen van zestien ip-adressen, wat voor veel thuisnetwerken wellicht volstaat. De onbeperkte versie is helaas stevig aan de prijs: zo’n 3450 euro per jaar. Na je registratie met je e-mailadres kun je de tool downloaden, onder meer voor Windows.
De installatie is rechttoe rechtaan en na het invullen van de ontvangen activatiecode en het aanmaken van een beheerdersaccount haalt Nessus de nodige plug-ins op en compileert die. Dit proces kan wel even duren.
Na afloop kun je aan de slag vanuit de Nessus-webclient, standaard op het adres https://localhost:8834. In principe volstaat het om het gewenste ip-bereik of een subnet in CIDR-notatie (bijvoorbeeld 192.168.0.0/24) in te vullen, waarna een zogeheten host discovery en een poortscan worden uitgevoerd. Eventuele kwetsbaarheden vind je op een afzonderlijk tabblad, op basis van ernst (severity).
©PXimport
Nessus heeft inmiddels vele tienduizenden plug-ins geïntegreerd
-
Nessus: plug-ins
Zoals vermeld, schuilt de ware kracht van Nessus in de ondersteuning van plug-ins. Die maken het mogelijk dat je voor je netwerkclients modulaire scans uitvoert, samengesteld uit de plug-ins van jouw keuze. Je vindt een overzicht van de meer dan 160.000 plug-ins op www.tenable.com/plugins, die samen bijna 65.000 CVE’s aanpakken.
Ga naar het tabblad Scans en klik op New Scan: in de Essentials-versie zijn er vijftien scan-sjablonen (templates) beschikbaar, zoals Basic Network Scan, Malware Scan, Spectre and Meltdown enzovoort. Geef een naam op en de gewenste doelsystemen, bevestig met Save en voer de scan uit. Je kunt ook eigen beleidsregels (policies) creëren, die dan als basis voor een scansjabloon fungeren.
We geven je hier al een eerste aanzet voor. Open de rubriek Policies en kies New Policy. Kies een basissjabloon en vul bij Settings / Basic een naam in. Op het tabblad Credentials vul je eventueel de nodige referenties of inloggegevens in. Ga vervolgens naar het tabblad Plugins en klik (eventueel) op Disable all. In het linkervenster open je bijvoorbeeld (een van) de drie Windows-collecties. Rechts verschijnen de bijbehorende plug-ins. Klik op Enable naast de plug-ins die je in je scan wilt opnemen. Bestig met Save. Wanneer je nu op New Scan klikt, vind je de aangepaste scan terug op het tabblad User Defined en kun je die op de gewenste doelsystemen uitvoeren.
©PXimport