Penetration Testing¶
Voor veel mensen is de penetration test (pentest) de meest bekende vorm waarop je applicaties, systemen, en netwerken kan testen op veiligheid. Pentests zijn een cruciaal onderdeel van security - het is actief inbreken op systemen, vaak in opdracht van de eigenaar. 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¶
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 vaak 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;
- Doelen, zoals:
- Het vinden van een specifieke zwakte;
- 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.
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 potentiële 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 web-formulieren, 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 potentiële 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.
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. Vaak zijn er twee rapporten die worden geschreven.
Het eerste rapport omvat een executive summary, 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.
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.