Penetration Testing¶
Een penetration test (pentest) is een belangrijke methode om de veiligheid van applicaties, systemen en netwerken te testen. Je gaat met toestemming van de eigenaar van de systemen een echte aanval simuleren. Het doel is om zwaktes in applicaties, systemen en netwerken op te sporen en te rapporteren, zodat de eigenaar deze kan verhelpen voordat kwaadwillenden er misbruik van maken.
Waarschuwing
Tenzij je toestemming hebt van de eigenaar van de systemen, is het uitvoeren van een pentest strafbaar als een misdrijf (max. 2 jaar cel of € 22.500). Zorg er dus altijd voor dat je (schriftelijke) toestemming hebt voordat je een pentest uitvoert.
Stappenplan¶
De onderstaande beschrijving is een beknopte samenvatting van de hoofdpunten. Een uitgebreidere beschrijving van pentesting, inclusief de basisprincipes en zaken om op te letten, is te vinden op de PTES
: Penetration Testing Execution Standard.
- Scope bepalen (Pre-engagement)
- Inventariseren (Intelligence Gathering)
- Aanpak bepalen (Threat Modeling + Vulnerability Analysis)
- Uitvoeren (Exploitation & Post Exploitation)
- Rapportage (Reporting)
tussen haakjes staan de termen die de PTES gebruikt voor deze stappen.
Scope bepalen¶
De pentest begint met het bepalen van de scope. De scope beschrijft wat je als pentester wel en niet mag controleren - welke IP-adressen zijn vrij spel, welke systemen mag je benaderen, en welke applicaties/websites kan je checken? Het zijn de spelregels van de engagement, die je in overleg met de opdrachtgever vaststelt.
In de scope leg je onder andere vast:
- Wat er getest wordt;
- Start- en eindtijd;
- Toegestane IP-adressen;
- Toegestane domeinnamen;
- Eventuele derde partijen die ook getest moeten worden, of betrokken zijn bij de test;
- Doelen, zoals:
- Het vinden van een specifieke zwakte;
- Voldoen aan een bepaalde richtlijn of certificering;
- Black box, grey box, of white box aanpak.
- Noodcontact, mocht er iets fout gaan;
- Rules of Engagement: hoe ga je om met eventueel gevoelig materiaal;
- Toestemmingsformulieren om te mogen testen (vrijwaringsverklaring).
Inventariseren¶
Zodra je weet wat je wel of niet mag aanvallen, ga je kijken waar precies eventuele openingen zitten in het systeem. Deze openingen noem je ook wel attack surfaces
, zwaktes in digitale omgevingen waar je gebruik van kan maken. Vaak zijn de meest voor de hand liggende attack surfaces plekken waar het systeem input verwacht van buitenaf: een formulier waar gebruikers gegevens kunnen invullen of een openstaande port
zodat applicaties data kunnen ontvangen.
Er zijn een aantal manieren om deze inventarisatie te doen. Voor (kleine) websites kan je meestal handmatig alle pagina’s langsgaan, en kijken wat er op die pagina gebeurt. Bij grotere of complexere websites, of hele infrastructuren, is de handmatige controle onbegonnen werk. Daarom dat er veel standaard-programma’s zijn die dit voor je doen. Wappalyzer
is een goede tool om de architectuur achter websites in kaart te brengen. Programma’s zoals NMAP
worden gebruikt om netwerken te scannen.
Zodra je een overzicht hebt van alle potentiele attack surfaces ga je aan de slag met de volgende stap.
Aanpak bepalen¶
Afhankelijk van de attack surfaces die je in kaart brengt, kies je een aanpak, ook wel bekend als een attack path
. Je gaat systematisch controleren of applicatie-onderdelen gevoelig zijn voor bepaalde exploits. Zo zijn veel webformulieren, waarbij wordt gecommuniceerd met de database, gevoelig voor SQL Injection attacks. Systemen waarbij je kan registreren of inloggen zijn gevoelig voor brute force attacks. Afhankelijk van de manier waarop gegevens worden versleuteld met encryptie kan je meer succes hebben met packet sniffers.
Een goede bron voor potentiele aanpakken is de Open Worldwide Application Security Project
, ook wel bekend als OWASP
. Hun OWASP Top 10 is een lijst van de 10 meest-voorkomende security zwaktes. Voor elke zwakte zijn er testing guides beschikbaar: lijsten met commando’s die je kan uitproberen om te zien of er een zwakte in het systeem zit.
Aanval uitvoeren¶
Zodra je weet hoe je de pentest wilt uitvoeren, ga je aan de slag. Belangrijk is dat je in de gaten houdt of je niet aan je scope voorbij gaat. Daarnaast gelden er een aantal standaard regels voor hoe je omgaat met de systemen die je pentest:
- Als je settings aanpast in systemen, hou dan bij wat de originele settings zijn en wat je hebt aangepast.
- Als je data uit een systeem haalt, mag je die gegevens alleen versleuteld opslaan.
- Na de pentest moet je zo goed mogelijk de systemen terugzetten naar de basis-configuraties, en eventuele backdoors verwijderen.
Deze regels gelden des te meer zodra je pentests uitvoert op live omgevingen, omgevingen waar op dat moment (kritieke) onderdelen van de bedrijfsvoering draaien. Deze live tests geven het beste inzicht in de paraatheid van organisaties om te reageren op hacks, maar bieden ook een groot risico voor de organisatie.
Rapportage¶
Na afloop schrijf je een rapportage van je bevindingen. Mestal bestaat de eindrapportage uit twee delen: een executive summary en een technisch rapport.
Executive summary¶
De executive summary is een soort samenvatting van de bevindingen. Hierin worden de volgende punten beschreven:
- Achtergrond en doel van de test;
- Risico-score van de test;
- Algemene bevindingen;
- Aanbevelingen.
Dit rapport is bedoeld voor de opdrachtgever, en moet dus in begrijpelijke taal zijn geschreven.
Technisch rapport¶
Het tweede document is technischer, en beschrijft in detail hoe de pentest is uitgevoerd. Hierin komen de volgende punten terug:
- Scope;
- Gevonden vulnerabilities;
- Gekozen attack path;
- Impact op de organisatie;
- Aanbevolen oplossingen.
Dit rapport is bedoelt voor de technische mensen die de gevonden zwaktes moeten oplossen. Het rapport moet dus in technische taal zijn geschreven, en moet zo veel mogelijk informatie bevatten om de zwaktes te reproduceren.
Meer informatie¶
- Een zeer uitgebreide beschrijving van pentesting, inclusief de basisprincipes en zaken om op te letten, is te vinden op de
PTES
: Penetration Testing Execution Standard. - Owasp is een goede bron voor potentiele aanpakken, zeker voor webapplicaties. Hun OWASP Top 10 is een lijst van de 10 meest-voorkomende security zwaktes.
- Kali linux is een besturingssysteem dat speciaal is ontwikkeld voor pentesting. Het bevat een groot aantal tools die je kan gebruiken om pentests uit te voeren. Kali Linux. Je kan Kali Linux ook als virtuele machine draaien.
- Burp suite is een tool die je kan gebruiken om webapplicaties te testen. Burp Suite. Owasp ZAP is een open source alternatief voor Burp Suite. Owasp ZAP.