Penetratietesten

Expertblogs

In dit expertblog gaat Erwin, CTI-Specialist van het NCSC, dieper in op wat een pentest is, vanuit zijn eigen kennis en ervaring op dit gebied. Hij is zelf zelf 20 jaar actief geweest als ethisch hacker en heeft in die jaren een grote verscheidenheid aan netwerken, systemen en applicaties getest. In dit blog behandelt hij een aantal belangrijke aandachtspunten om jou te helpen voor het succesvol uitvoeren van een kwalitatief hoogwaardige penetratietest.

Vanwege de aanstaande NAVO-top is er een verhoogde kans dat Nederland doelwit wordt van sabotage, spionage en politiek beïnvloeding. Cyberaanvallen worden steeds vaker ingezet om deze doelen te bereiken. Het is daarom goed dat bedrijven kritisch kijken naar de beveiliging van hun eigen systemen en applicaties, bijvoorbeeld door het uitvoeren van een penetratietest (pentest).

Een andere recente ontwikkeling op dit gebied  is de motie van het Tweede Kamerlid Six Dijkstra over Overheidsbreed toewerken naar een gestandaardiseerde methodiek voor het opdrachtgeverschap van pentests.  MIAUW (Methodiek voor Informatiebeveiligingsonderzoek met Audit Waarde) werd genoemd als mogelijke uitgangspunt. Ik zal in dit stuk kort aandacht besteden hoe het eventueel van waarde kan zijn, maar niet voordat een belangrijke vraag is beantwoord.

Wat is een penetratie test?

Een ogenschijnlijk simpele vraag die in de praktijk nog best lastig te beantwoorden is. Een eenduidige definitie is lastig te geven en in de praktijk worden verschillende gebruikt. Ik ga er niet nog een aan toevoegen, maar verwijs graag naar het Cybersecurity woordenboek van Cyberveilig Nederland (1):

“Handmatige controle waarbij men zo diep mogelijk wil binnendringen in een digitaal systeem om zwakke plekken te vinden en de gevolgen hiervan te kennen. Men gebruikt de zwakke plekken om nog wat dieper in het systeem te komen. Doel van de test is niet om zoveel mogelijk zwakke plekken te vinden, maar om te onderzoeken of een systeem zwakke plekken kent. Het zoeken naar zoveel mogelijk zwakke plekken gebeurt wel bij een vulnerability scan.”

Het woordenboek bevat ook doorverwijzingen naar andere vormen van securitytesten, dus lees die vooral ook door om goed het verschil te begrijpen.

"Handmatige controle waarbij men zo diep mogelijk wil binnendringen in een digitaal systeem om zwakke plekken te vinden en de gevolgen hiervan te kennen."

Het belangrijkste punt wat ik even wil uitlichten is ‘handmatige controle’, eventueel ondersteund door automatisering waar mogelijk, waar bij de tester verkennend het systeem test.

Wat ik daarmee bedoel is dat een tester met kennis en ervaring van het systeem en aanvalstechnieken kijkt hoe een systeem of een applicatie reageert op bijvoorbeeld afwijkende invoer. Daardoor is een penetratietest meer dan enkel het afwerken van een standaard checklist en kan daarom naar mijn mening ook nooit volledig geautomatiseerd worden, zoals soms wel eens in de markt wordt beweerd. Een checklist kan helpen om alle relevante punten te controleren. Het minimale wat je kunt doen is om een lijst van punten doorlopen. Je wilt eigenlijk vooral de werking van de systemen binnen de scope doorgronden en daarin mogelijk aanwezige kwetsbaarheden ontdekken. Tijdens een pentest wordt overigens wel gebruik gemaakt van geautomatiseerde tools om de eenvoudige en repetitieve taken efficiënt uit te voeren.

Wat een penetratietest onderscheidt van een vulnerability scan of vulnerability assessment is dat geïdentificeerde kwetsbaarheden en zwakheden worden misbruikt om toegang te krijgen tot het systeem. Vanuit die verkregen positie wordt opnieuw onderzocht welke kwetsbaarheden kunnen worden misbruikt. Daarmee biedt een penetratietest meer diepgang dan een vulnerability scan of vulnerability assessment, waar meer in de breedte naar kwetsbaarheden of configuratiezwakheden wordt gekeken, zonder deze daadwerkelijk uit te buiten.

Een belangrijke beperking van een penetratietest is dat het doel niet persé is om alle kwetsbaarheden te vinden. De pentester kijkt naar een combinatie van kwetsbaarheden en configuratiezwakheden die kunnen worden omgezet in een aanvalspad, waarmee toegang wordt verkregen tot een systeem of vertrouwelijke data.

Voorbereiding

Bepaal je doel

De eerste stap is om duidelijk te hebben wat je wil laten testen en waarom. Als eigenaar of verantwoordelijke van een systeem bepaal je de onderzoeksvraag, de scope (hoe diep mag de tester graven?) en wanneer de test moet worden uitgevoerd.

Daarmee stuur je het onderzoek in de richting van een risico waarvan jij mogelijk ’s nachts wakker ligt, bijvoorbeeld:

  • Is het mogelijk dat toegang tot systeem a,b,c of vertrouwelijke data x,y,z wordt verkregen?

Of nog wat concreter:

  • Kunnen al mijn klantgegevens gelekt worden door misbruik te maken van een kwetsbaarheid in applicatie a?

Denk ook na over wat een handig moment is. Voer geen wijzingen aan in scope-systemen of applicaties door tijdens de uitvoer van een penetratietest, dit kan de kwaliteit van de uitgevoerde pentest negatief beïnvloeden. Gewijzigde onderdelen moeten opnieuw getest worden of systemen zijn ineens onbeschikbaar terwijl updates worden uitgevoerd, zonder dat de tester weet of dit het gevolg is van de test of een andere oorzaak heeft.

Hou rekening met het feit dat bevindingen oplossen tijd kost. Plan daarom niet een pentest voor een nieuwe applicatie een dag voordat je live gaat. Daarnaast hebben pentestleveranciers ook een vrij volle agenda, dus anticipeer hierop en wacht niet tot het laatste moment.

Hoe selecteer je een leverancier?

Het laten uitvoeren van een pentest begint met het selecteren van een leverancier. Ga in gesprek met meerdere pentestleveranciers waarin je zo duidelijk mogelijk uitlegt wat je wil laten testen. Dit heet een scoping-gesprek. Als er vertrouwelijke informatie wordt uitgewisseld teken dan een geheimhoudingsverklaring, zodat een vrije informatie-uitwisseling mogelijk is en de leverancier kan meedenken over de scope en meest geschikte aanpak.

Vraag de leverancier naar hun aanpak, ervaring, certificeringen, en gevolgde trainingen. Het kan helpen om bij het scoping- en offertetraject gebruik te maken van onderdelen uit de MIAUW-methodiek. Deze methodiek biedt handvatten voor opdrachtgevers om gericht te bevragen, kaders te stellen en duidelijke afspraken te maken over wat er wordt opgeleverd. Zo voorkom je onduidelijkheden over verwachtingen en heb je beter inzicht of de test daadwerkelijk aansluit bij je doel.

Persoonlijk vind ik het altijd een goed teken als een leverancier veel vragen stelt over het doel van de test, de scope, en de inrichting van de systemen. Dit zijn namelijk vaak de partijen die maatwerk willen leveren en hun best doen om de klantvraag zo goed mogelijk te begrijpen. Vraag vooral ook naar een voorbeeldrapportage, want dat is het enige tastbare eindproduct dat wordt opgeleverd na een penetratietest. Het moet daarom een compleet en duidelijk beeld geven van de uitgevoerde test.

Vergelijk offertes van meerdere leveranciers en kijk daarbij niet alleen naar de prijs, maar ook naar de kwaliteit en hoe goed de offerte aansluit bij je vraag.

Proces

Als er een pentestleverancier is geselecteerd en de test is ingepland is het belangrijk om vooraf af te stemmen hoe de test verloopt. Denk daarbij aan de tijden en dagen waarop wordt getest, maar ook vanaf welke IP adressen de test wordt uitgevoerd, zodat de test is te onderscheiden van echte aanvallen. Vergeet daarbij ook niet het juridische gedeelte in de vorm van vrijwaringsverklaring, ook voor eventuele derde (cloud)partijen. Spreek duidelijk af wanneer bevindingen worden gedeeld, bijvoorbeeld als het gaat om een bevinding met een hoge of zelfs kritieke impact. Dit wil je direct weten, zodat tijdig maatregelen kunnen worden genomen. Stem ook af wanneer de rapportage wordt opgeleverd en in welke vorm het wordt gepresenteerd.

MIAUW adviseert om deze afspraken vast te leggen in een formeel testplan. Hierin staan onder andere de scope, doelstelling, testvorm, verwachte uitkomsten en verantwoordelijkheden. Dit draagt bij aan een transparante uitvoering.

Hoe borg ik de resultaten in mijn organisatie?

Rapportage

De rapportage is een belangrijk onderdeel van de test aangezien daarin wordt vastgelegd wat er allemaal is gevonden. Het is belangrijk dat een rapportage duidelijk beschrijft wie, wat, wanneer getest heeft, inclusief wat niet getest kon worden. Een goede rapportage gaat in op de bevindingen, ondersteund door bewijsmateriaal en voorzien van een inschatting van de impact. Daarnaast moet elke bevinding voorzien zijn van aanbevelingen hoe de bevinding te verhelpen is.

Naast de technische informatie, is het belangrijk dat een voor het management begrijpbare samenvatting in het rapport staat waarin duidelijk de onderzoeksvraag wordt beantwoord. Een algemene conclusie en aanbevelingen mag niet ontbreken. Hier staat aangegeven wat de algehele indruk is van het beveiligingsniveau van het geteste systeem of applicatie, of er kwetsbaarheden zijn die kunnen leiden tot een aanvalspad of dat er beveiligingsmaatregelen zijn die dit voorkomen. De algemene aanbevelingen moeten gericht zijn op punten die het beveiligingsniveau van het systeem of de applicatie structureel verhogen.

Vervolgstappen

Wat doe je met de resultaten? Die los je op, toch? Helaas heb ik dit in de praktijk te vaak mis zien gaan. Rapportages verdwijnen regelmatig in een la of worden vergeten, zonder dat er iets met de resultaten gebeurt. Zonde van het geld en daarnaast een risico.

Bespreek daarom de rapportage ook met de eigenaar, beheerder of ontwikkelaar. Zet vervolgacties uit en monitor die ook. Binnen de MIAUW-methodiek wordt het belang onderstreept van een aantoonbare opvolging van bevindingen. Ook raad ik aan om, nadat de punten zijn opgelost, een hertest te laten uitvoeren, want uit de praktijk weet ik dat gevonden kwetsbaarheden niet altijd correct worden opgelost.(2)

Reactie toevoegen

U kunt hier een reactie plaatsen. Ongepaste reacties worden niet geplaatst. Uw reactie mag maximaal 2000 karakters tellen.

* verplichte velden

Uw reactie mag maximaal 2000 karakters lang zijn.

Reacties

Er zijn nu geen reacties gepubliceerd.