Wat is ethisch hacken en hoe ga je ermee aan de slag?
Een hacker is iemand die probeert binnen te dringen in andermans computer. Het is strafbaar wanneer dat zonder toestemming van de eigenaar van de gegevens gebeurt. Hackers hebben vaak als doel gegevens te stelen, computers over te nemen of onbruikbaar te maken. Maar een ethisch hacker kent zijn grenzen, denkt goed na over wat hij doet en handelt verantwoordelijk. De professionals kunnen leuke premies opstrijken en worden zelfs ingehuurd door bedrijven.
Ethisch hacken is belangrijk en noodzakelijk geworden, omdat hiermee aanvallen van kwaadwillende hackers kunnen worden tegengegaan. Dat gebeurt door te anticiperen op de methodes die zij gebruiken om in systemen in te breken. Bedrijven willen hiermee voorkomen dat hackers toegang krijgen tot de informatiesystemen van hun organisaties. Ze willen kwetsbaarheden in systemen ontdekken en het potentiële risico ervan onderzoeken, voordat kwaadwillende hackers die ontdekken en misbruiken. Daarnaast willen bedrijven de beveiliging van hun organisatie analyseren, verbeteren en versterken. Ook het beleid wordt hierbij vaak onder de loep genomen.
Strafbaar
Digitaal inbreken, oftewel computervredebreuk, is strafbaar. Op het inbreken zelf staat al twee jaar celstraf. Maar wanneer ook informatie gestolen wordt of wordt afgetapt, kan deze straf al sneller oplopen richting vier jaar. Op het platleggen van systemen van anderen met bijvoorbeeld een DDoS-aanval (Distributed Denial Of Service) kan zelfs vijf jaar cel staan wanneer het vitale infrastructuur betreft. Bij ethisch hacken is het daarom ook belangrijk dat de aanvaller niet verdergaat dan strikt noodzakelijk is, want het overtreden van de wet brengt anders wel risico’s met zich mee.
©PXimport
Digitale vaardigheden
Een ethisch hacker heeft diepgaande kennis van de belangrijkste besturingssystemen, zoals Windows, Unix, Linux en macOS en weet alles van netwerkconcepten, verschillende technologieën en gerelateerde hardware en software. Doorgaans zijn ethisch hackers erg bekwaam in het gebruik van de Linux-shell, waarmee efficiënte interactie met computersystemen mogelijk is. Ook goede kennis van de basis van cryptografie is erg belangrijk: dat wordt namelijk gebruikt om elke systeem afzonderlijk digitaal te kunnen beschermen. Daarnaast hebben hackers vaak een programmeerachtergrond. Daardoor weten ze hoe software werkt en hoe ze zwakke plekken kunnen vinden en gebruiken. Een veelgebruikte programmeertaal is bijvoorbeeld Python: die is relatief gemakkelijk te leren en geschikt om snel beveiligingstaken mee te automatiseren.
Specialisaties
Een goede hacker heeft niet alleen veel technische kennis, maar ook andere vaardigheden die belangrijk zijn: bijvoorbeeld het vermogen om zich snel nieuwe technologieën eigen te maken. Ook het goed en analytisch kunnen benaderen van problemen speelt een grote rol en uiteraard moet je als ethisch hacker ook toegewijd zijn aan het beveiligingsbeleid van de organisatie en je bewust zijn van de lokale normen en wetten.
Behalve over veel kennis moet een ethisch hacker ook beschikken over allerlei ‘soft skills’, bepaalde persoonlijke eigenschappen. Zo zijn communicatieve vaardigheden uiterst belangrijk. Het schrijven en communiceren van opgedane bevindingen aan klanten vormt een groot onderdeel van het werk. Een rapportage moet gedetailleerd, duidelijk en beknopt zijn.
En natuurlijk speelt het creatief denkvermogen een belangrijke rol. Tijdens het hacken is het handig om na te denken vanuit het perspectief van een ontwikkelaar. Hoe heeft de ontwikkelaar de applicatie gebouwd? Heeft hij iets gemist? Hoe kan die fout worden misbruikt?
Responsible disclosure
Tegenwoordig kennen we ook de zogenaamde responsible disclosure of Coordinated Vulnerability Disclosure. Als een gebruiker of (ethisch) hacker een beveiligingsprobleem of kwetsbaarheid ontdekt, kan hij dit bij de betreffende organisatie melden en hen voldoende tijd geven om de gevonden zwakke plek aan te pakken, voordat de kwetsbaarheid aan de buitenwereld bekendgemaakt wordt. Veel organisaties hebben inmiddels een beleid opgesteld over hoe ze hiermee omgaan. Er kan bijvoorbeeld in staan dat de organisatie geen aangifte zal doen als de melder geen misbruik maakt van de zwakke plek. De melder moet dan natuurlijk geen malware plaatsen, data kopiëren, wijzigen of verwijderen of andere wijzigingen aanbrengen in het computersysteem.
©PXimport
Bug bounty-platform
Responsible disclosure wordt verder ook wel bug bounty hunting genoemd. Op een speciaal daarvoor opgezet bug bounty-platform kan een klant ethisch hackers vinden die zichzelf beschikbaar stellen voor het hacken van websites. Vaak wordt hierbij vooraf een heel duidelijke scope en specifieke bedragen per gevonden soort kwetsbaarheid afgesproken. De klant betaalt de hackers voor het vinden daarvan. Het bedrag hangt uiteindelijk vaak af van hoe kritisch een kwetsbaarheid is. De eigenaren van het bug bounty-platform controleren de gevonden problemen en leveren de rapportage aan de klant.
De hackers op het platform zijn mensen die dit fulltime doen of studenten met kennis van informatica, freelancers die graag wat extra geld willen verdienen enzovoort. Er zijn inmiddels veel bedrijven met een eigen bug bounty-platform, zoals Facebook, Google, Apple en Github, maar er zijn ook algemene bug bounty-platformen waar meerdere bedrijven zich bij aansluiten. Er zijn veel betrouwbare en kwalitatief goede platformen, zowel nationaal als internationaal. HackerOne, BugCrowd en Intigriti zijn een aantal van de bekendste platformen.
©PXimport
Penetratietesten
Steeds meer bedrijven zetten ethisch hackers in om hun security te testen. Dat doen deze hackers door security assessments en penetratietests uit te voeren. Ze werken daarbij volgens bepaalde methodieken en voeren hun hacks systematisch uit.
Voordat een penetratietest (vaak afgekort tot pentest) daadwerkelijk wordt uitgevoerd, worden eerst de zogenoemde ‘rules of engagement’ opgesteld: een set vereisten en afspraken. Hierin is gedefinieerd hoe een penetratietest wordt uitgevoerd, welke methodologieën gebruikt worden, wat de begin- en einddatum van de test is, welke mijlpalen er zijn, welke doelen de penetratietest heeft, welke verplichtingen en verantwoordelijkheden er zijn enzovoort. Deze afspraken moeten onderling overeengekomen worden tussen zowel de klant als de tester, voordat aan de penetratietest begonnen kan worden.
Rules of engagement
De belangrijkste vereisten en afspraken voor een penetratietest zijn:
- Toestemming om te mogen hacken en een geheimhoudingverklaring, door beide partijen ondertekend.
- De omvang of scope van de opdracht: welk deel of onderdeel van de organisatie moet precies getest worden?
- De duur van het project. Hierin worden zowel de start- als de einddatum genoemd.
- De te gebruiken methodologie voor het uitvoeren van de penetratietest.
- Het doel of de doelen van de penetratietest.
- De technieken die zijn toegestaan om te gebruiken, maar ook de technieken die niet toegestaan zijn, zoals een denial-of-service-test (DDoS).
- Alle verplichtingen en verantwoordelijkheden, zoals de omgang met aangetroffen gevoelige informatie (bijvoorbeeld creditcardgegevens).
Type penetratietest
Ook moet het type penetratietest worden bepaald. Een penetratietest kan black box, white box of grey box zijn, afhankelijk van wat de organisatie wil testen. Bij de black box-test wordt er weinig of geen informatie gegeven over het gespecificeerde doel. Het enige wat verstrekt wordt, zijn bijvoorbeeld de ip-adressen die getest moeten worden als het een netwerkpenetratietest betreft. Over de besturingssystemen, serverversies, open poorten enzovoort wordt niks vrijgegeven. En als het om een penetratietest van een webapplicatie gaat, wordt er geen broncode verstrekt, maar alleen de domeinnaam of url waartegen getest mag worden.
Bij een white box-penetratietest wordt juist bijna álle informatie verstrekt. Gaat het om een netwerkpentest, dan krijgt de hacker informatie over de applicatie, versienummers, type besturingssystemen enzovoort, en soms zelfs netwerktekeningen. Bij een webapplicatie-penetratietest wordt de broncode van de applicatie verstrekt, zodat er statische en dynamische broncode-analyse op uitgevoerd kan worden. White box komt het meest voor bij interne of on-site penetratietests, waarbij organisaties zich zorgen maken over het lekken van informatie.
Bij een grey box-penetratietest wordt wel wát informatie verstrekt, maar sommige informatie wordt, al dan niet met opzet, verborgen gehouden. De hacker krijgt bijvoorbeeld wel de ip-adressen die getest moeten worden, maar niet de exacte versienummers van achterliggende applicaties of services. Ook in het geval van webapplicaties kan extra informatie worden verstrekt, zoals accounts om mee te kunnen testen, database-informatie enzovoort.
Methodologieën
Er zijn verschillende soort methoden voor het uitvoeren van penetratietests. We gaan kort in op drie daarvan.
OSSTMM (Open Source Security Testing Methodology Manual) omvat in feite bijna alle stappen die geassocieerd worden met een penetratietest. De methode is beknopt, maar het proces is wel omslachtig, wat het moeilijk maakt om te implementeren. Wil je je echt verdiepen in OSSTMM, dan kun je een uitgebreide handleiding vinden op www.isecom.org/research.html.
NIST is uitgebreider dan OSSTMM en kan in kortdurende opdrachten toegepast worden. De stappen van deze methodologie zijn: plannen, ontdekken, aanvallen en rapporteren. Het testen begint al in de planningsfase; daar wordt ook besloten hoe de opdracht uitgevoerd wordt. De ontdekkingsfase is tweeledig, namelijk het verzamelen van informatie, netwerk scannen, service-identificatie en besturingssysteem-detectie, en in het tweede deel worden de kwetsbaarheden beoordeeld. Daarna volgt de aanvalsfase. Wordt er een nieuw doel (bijvoorbeeld een computer of server) ontdekt, dan wordt er weer teruggegaan naar de ontdekkingsfase. Dit proces wordt herhaald tot er geen doelen meer te ontdekken zijn. Een doelwit wordt aangevallen en vervolgens worden de resultaten gerapporteerd.
Naast de methodologieën die vooral gericht zijn op het uitvoeren van een netwerkpenetratietest is er ook een methodologie die speciaal gebouwd is voor het testen van webapplicaties. De OWASP-methodologie, die je vindt op www.owasp.org, wordt gevolgd bij het uitvoeren van applicatie-penetratietests. De OWASP testing guide bevat in feite alles waarop een webapplicatie getest zou moeten worden. Deze gids is uitgebreid en opgesteld door verschillende securitytesters voor webapplicaties.
©PXimport
Fases van penetratietests
Een penetratietest bestaat meestal uit een aantal standaardfases die doorlopen moeten worden. Scoping In deze fase wordt de opdracht duidelijk gespecificeerd en wordt de offerte opgesteld. Er wordt een scope voor de opdracht bepaald: wat mag wel en niet getest worden en welke technieken zijn toegestaan. Tevens wordt de tijdsduur afgesproken. Die kan variëren van een paar dagen tot enkele weken. Kick-off De kick-off meeting worden gehouden nadat de offerte getekend is en de scope overeengekomen is. Hiermee wordt de start van het project gemarkeerd. Tijdens een kick-off meeting worden technische en niet-technische zaken besproken, zoals de tijd en locatie van de test, contactpersonen, technische details, benodigde voorbereiding enzovoort. Ook worden NDA’s (Non Disclosure Agreement) en autorisatieformulieren getekend, zodat het hacken niet op illegale wijze gebeurt. Voorbereiding Tijdens deze fase worden eventuele filters of tussenliggende systemen uitgeschakeld, zodat alleen de afgesproken doelsystemen getest worden. Verder worden testgebruikersaccounts uitgeprobeerd met de verstrekte wachtwoorden, om er zeker van te zijn dat alles werkt zodra de test begint. Penetratietest In deze fase wordt de test zelf uitgevoerd. Review Tijdens een reviewmeeting of debriefing wordt de rapportage doorgelopen met de klant en de ethisch hacker(s). Zo kunnen eventuele vragen beantwoord worden, zodat de klant duidelijk weet hoe de kwetsbaarheden gevonden zijn en eventueel opgelost kunnen worden.
Soorten penetratietests
Er zijn verschillende soorten penetratietests. In een netwerkpenetratietest wordt een netwerkomgeving getest op potentiële beveiligingskwetsbaarheden en bedreigingen. De netwerkpenetratietest is onder te verdelen in een interne en een externe test. Bij de externe test worden de openbare ip-adressen getest, terwijl bij een interne test de tester onderdeel wordt van het interne netwerk. Dit kan door bijvoorbeeld toegang te krijgen via een VPN-verbinding of door fysiek achter een werkplek binnen het bedrijf plaats te nemen.
Social engineering is een test die onderdeel zou kunnen zijn van de netwerkpenetratietest. Hierbij worden de gebruikers binnen de organisatie aangevallen, bijvoorbeeld door middel van spear phishing-aanvallen en browser exploits.
De webapplicatie-penetratietest is er een die tegenwoordig veel voorkomt. Webapplicaties bevatten veel kritieke gegevens – zoals creditcardnummers, gebruikersnamen en wachtwoorden, zoals bij een webshop. De webapplicatie-pentest is daarom gebruikelijker dan de netwerkpenetratietest.
Een van de nieuwere soorten penetratietests is die voor mobiele applicaties. Bijna elke organisatie biedt tegenwoordig diensten aan klanten aan via een Android- en/of iOS-app. Omdat gebruikers daarin vaak persoonlijke gegevens verstrekken, is het natuurlijk heel belangrijk dat ook deze mobiele applicaties veilig zijn.
Als laatste noemen we nog de fysieke penetratietest. Hierbij probeert de tester bijvoorbeeld ongezien een gebouw van een organisatie binnen te lopen om zo fysieke beveiligingscontroles zoals sloten en RFID-kaartlezers te testen.
Rapportage
Het eindrapport is het cruciaalste onderdeel van de penetratietest. Dat is waar de klant uiteindelijk voor betaalt en dat is waar alle bevindingen en aanbevelingen in staan beschreven. De rapportage moet eenvoudig, duidelijk en begrijpelijk zijn. Correcte spelling en grammatica en ook een consistente stijl wat betreft schrijfwijze zijn belangrijk, net als een overzichtelijke hoofdstuk- en alinea-indeling.
Inhoudelijk mag het rapport uiteraard geen vragen oproepen. Zo moet de rapportage over gevonden kwetsbaarheden voorzien zijn van een gedetailleerde analyse met screenshots die het bewijs aantonen van een bevinding. False positives (kwetsbaarheden die dat eigenlijk niet zijn) moeten goed onderzocht en geëlimineerd zijn.
Doelgroep
Uiteraard is het belangrijk om een duidelijk beeld te hebben van het publiek waarvoor je het rapport schrijft. Is het bedoeld voor managers en leidinggevenden of voor techneuten en ontwikkelaars? Een CEO is vaak niet geïnteresseerd in de exploit die gebruikt is om toegang te krijgen tot een bepaald systeem, terwijl een ontwikkelaar waarschijnlijk weer niet geïnteresseerd is in de risico’s en potentiële verliezen van het bedrijf. De ontwikkelaar wil graag de code begrijpen en gedetailleerde bevindingen lezen. De CEO zal voornamelijk geïnteresseerd zijn in het lezen van de samenvatting. Het is voor een ethisch hacker dus essentieel om het publiek voor zijn rapportage goed te kennen.
Onderdelen rapportage
Een goede rapportage van een penetratietest bestaat in ieder geval uit de volgende onderdelen:
- Management-samenvatting: hierin worden de bevindingen in grote lijnen samengevat. Deze samenvatting wordt gebruikt voor het rapporteren aan het hoger management.
- Alle opgedane bevindingen die in detail een beschrijving geven van elk veiligheidsprobleem.
- Een score die de impact op de software of het systeem aangeeft. Hiermee kan de juiste prioriteit bepaald worden bij het geven van aanbevelingen.
- Aanbevelingen met een aantal adviezen voor het verbeteren van het veiligheidsniveau op de korte en de lange termijn.
- Scenario’s waarin manieren worden beschreven voor het combineren van meerdere kwetsbaarheden om te komen tot een specifieke aanval. Dit is meestal ook een soort worst case-scenario.
Kwetsbaarhedenscan of pentest?
Bij een kwetsbaarhedenscan (ook wel vulnerability assessment genoemd) worden kwetsbaarheden of zwakheden binnen toegankelijke diensten geïdentificeerd. Hierbij wordt in de breedte gekeken naar kwetsbaarheden; de informatie in de rapportage blijft daarbij vrij oppervlakkig. De kwetsbaarheid wordt gemeld, maar er wordt over het algemeen niet verder geprobeerd om deze actief uit te buiten om verder te kunnen binnendringen. Meestal wordt zo’n scan uitgevoerd met geautomatiseerde tools, zoals Nessus en OpenVAS. De gevonden kwetsbaarheden kunnen handmatig worden geverifieerd, om eventuele fouten eruit te halen.
Een penetratietest wordt meestal ook gestart met een kwetsbaarhedenscan. Maar waar een vulnerability assessment niet verder gaan dan het identificeren van kwetsbaarheden, gaat een pentest juist verder de diepte in. Er zal geprobeerd worden om via de gevonden kwetsbaarheid verder het netwerk binnen te dringen. Ook wordt gekeken in hoeverre het mogelijk is om meerdere gevonden kwetsbaarheden te kunnen combineren.
Het grote verschil tussen deze twee tests is dus de diepte én breedte waarin gekeken wordt. Bovendien wordt bij een pentest gekeken of specifieke onderzoeksvragen beantwoord kunnen worden, iets wat bij een kwetsbaarhedenscan niet het geval is.
©PXimport
Social engineering
Hoewel een hacker voornamelijk in het digitale domein werkt, is social engineering vaak een belangrijk gereedschap. Bij social engineering wordt geprobeerd om via de gebruikers van een systeem of de werknemers van een bedrijf binnen te komen. Een systeem is immers zo sterk als de zwakste schakel en dat zijn vaak mensen die met deze systemen werken.
Bij social engineering wordt feitelijk gebruikgemaakt van menselijke zwakheden en niet van kwetsbaarheden in software of systemen. Deze fouten zijn dan ook veel lastiger te voorkomen dan inbraken via software. Daardoor behoort deze manier van aanvallen ook tot een van de grootste risico’s voor de beveiliging van een organisatie.
Bij social engineering wordt gebruikgemaakt van menselijk interactie en worden mensen vaak gemanipuleerd om daarmee normale beveiligingsprocedures te doorbreken. Zo kan een hacker vervolgens toegang krijgen tot bijvoorbeeld systemen, netwerken of fysieke locaties. Social engineers spelen vaak in op emoties en rekenen op de behulpzaamheid van de meeste mensen. Ze doen zich bijvoorbeeld voor als een collega met een urgent probleem – en natuurlijk wil je die wel even helpen door bijvoorbeeld het wachtwoord van het bedrijfsnetwerk door te mailen. Ook onzorgvuldigheid, nieuwsgierigheid, angst, verlangen en onwetendheid zijn psychologische ‘zwakke plekken’ waar dit soort hackers zich veel op richten.
Eerste stap
Hackers gebruiken social engineering vaak als eerste stap voor grotere aanvallen. In een eerste fase wordt onderzoek gedaan en verkenning uitgevoerd van het doelwit. Een veelvoorkomende tactiek is dat de social engineer focust op het gedrag en de patronen van werknemers die lage toegangsrechten hebben, maar wel zorgen voor de eerste toegang, zoals de receptionist of bewaker. Maar het kan ook zijn dat iemand wordt verleid tot het downloaden van software of het onthullen van bepaalde vertrouwelijke informatie.
Vormen van social engineering
Er zijn veel verschillende vormen van social engineering. De populairste vormen leggen we nader uit. Daarnaast zijn er nog meer social engineering vormen, zoals pretexting, water-holing, baiting, quid pro quo enzovoort. Wil je je echt verder verdiepen in social engineering, dan vind je online veel informatie over deze minder bekende soorten. Zoals gezegd kijken we hier vooral naar de bekendste. Phishing Bij phishing stuurt een hacker frauduleuze e-mails vermomd als legitieme e-mail, waarbij hij probeert inlognamen en wachtwoorden te verkrijgen of malware in computeromgeving te introduceren door gebruikers te verleiden een e-mailbijlage te openen. Vaak lijkt het alsof de e-mail afkomstig is van een vertrouwde bron: zo wordt de ontvanger misleid om informatie te delen of een bepaalde actie uit te voeren. Spear-phishing Deze vorm van phishing is vergelijkbaar met de normale phishing, maar is specifiek gericht op een bepaald individu of bepaalde organisatie. Vishing Bij vishing wordt social engineering uitgevoerd via de telefoon. Deze vorm van phishing wordt ook wel voice phishing genoemd. Het doelwit wordt gebeld door een automatisch systeem van spraakberichten en zo gevraagd naar gevoelige informatie. Smishing Bij smishing word je via een sms-bericht benaderd en wordt op die manier geprobeerd inloggegevens, pincodes of creditcard-informatie te verkrijgen. Tailgating/piggybacking Het binnendringen van een elektronisch beveiligde zone door al dan niet gebruik te maken van de beleefdheid van andere mensen wordt tailgating of piggybacking genoemd. Een ander houdt bewust of onbewust de deur voor je open, waardoor je binnenkomt.
©PXimport