Software bevat gegarandeerd bugs. Er kunnen vele duizenden regels code in software zitten, en menselijke feilbaarheid betekent dat in ieder geval sommige ervan niet volledig zijn zoals bedoeld. De levenscyclus van softwareontwikkeling is een proces dat is ontworpen om te proberen deze problemen te minimaliseren door regelmatig te testen.
Het probleem is dat testen vaak wordt gedaan door ontwikkelaars, die misschien hebben geleerd hoe ze iets moeten coderen, maar misschien niet hebben geleerd hoe ze veilig moeten coderen. Zelfs in grondig geteste systemen kan een externe waarnemer kijken en een nieuw perspectief inbrengen, helpen bij het identificeren van nieuwe problemen.
Een gebruikelijke manier om dit te doen is via een penetratietest, meestal afgekort tot een pentest. Dit houdt in dat een professionele, ethische hacker, een pentester, naar het systeem moet kijken en eventuele beveiligingsproblemen moet vinden.
Tip: het is 'pentest' en 'pentester', niet 'pentest'. Een pentester test geen pennen. "Pen-test" is iets acceptabeler dan "pen-test", maar moet over het algemeen ook worden vermeden.
Het doel van een pentest
Het doel van elke pentest is om alle beveiligingsproblemen in het systeem dat wordt getest te identificeren en deze aan de klant te rapporteren. Doorgaans zijn opdrachten echter enigszins in de tijd beperkt op basis van kosten. Als een bedrijf een interne pentester of pentestteam heeft, mogen deze permanent voor het bedrijf werken. Toch hebben veel bedrijven met de schaalgrootte daarvoor een breed portfolio aan systemen die getest moeten worden. Dit omvat zowel producten die worden verkocht als de bedrijfssystemen van het bedrijf.
Als zodanig kunnen ze niet al hun tijd besteden aan het testen van één ding. Veel bedrijven huren bij voorkeur een extern pentestbureau in om de opdracht uit te voeren. Dit is nog steeds beperkt in de tijd op basis van de kosten. De kosten worden gedreven door het feit dat een pentest een zeer handmatig proces is en dat er een tekort aan vaardigheden is.
Doorgaans wordt een pentest beperkt tot een specifiek tijdsbestek. Dit gebeurt op basis van het doel in kwestie en hoe lang het zou moeten duren om er redelijk zeker van te zijn dat alles gevonden is. De tijdlijn voor het vinden van kwetsbaarheden is over het algemeen een belcurve. Er wordt niet direct veel gevonden terwijl de pentester rondkijkt in de applicatie. Dan kan de overgrote meerderheid van de bevindingen worden bereikt binnen een bepaalde tijdschaal voordat deze afbouwt. Op een gegeven moment zijn de kosten van meer tijd besteden aan zoeken de kans niet waard dat er niets anders te vinden is.
Soms is zelfs de vermelde prijs voor de aanbevolen tijd te veel. In dit geval kan de test "timeboxed" zijn. Dit is waar de klant accepteert dat ze niet zoveel testen als aanbevolen, maar dat ze willen dat de pentesters hun best doen in een korter tijdsbestek. Meestal wordt dit als voorbehoud in het rapport opgenomen.
Handmatig proces
Er zijn enkele tools beschikbaar om beveiligingstests automatisch uit te voeren. Deze kunnen nuttig zijn. Ze hebben echter vaak hoge fout-positieve en fout-negatieve percentages. Dit betekent dat u tijd moet besteden aan het doorzoeken van verificatieproblemen, wetende dat het misschien niet volledig is. De meeste van deze tools zoeken naar specifieke indicatoren, zoals bekende kwetsbare versies van software of bekende kwetsbare functies. Er zijn echter tal van manieren waarop dit in de praktijk geen echte problemen zijn of worden verzacht.
Beveiligingsproblemen kunnen samenkomen uit een aantal ogenschijnlijk onschuldige stukken. De beste manier om dit te herkennen is door handmatige menselijke inspanning. Pentesters gebruiken tools, maar weten hoe ze de resultaten moeten interpreteren, ze handmatig moeten verifiëren en onafhankelijke handmatige acties moeten uitvoeren. Deze handmatige inspanning scheidt een pentest van een kwetsbaarheidsscan of kwetsbaarheidsbeoordeling.
Soorten pentest
Doorgaans omvat een pentest het testen van een heel product zoals het zou worden ingezet. Idealiter gebeurt dit in een echte productieomgeving. Dit is echter niet altijd praktisch. Ten eerste is er de angst dat de pentest het doelwit offline zou kunnen halen. Over het algemeen is deze angst in wezen ongegrond. Pentests genereren over het algemeen niet al te veel netwerkverkeer, misschien het equivalent van een paar extra actieve gebruikers. Pentesters zullen ook niet opzettelijk testen op problemen van het type denial-of-service, vooral niet in productieomgevingen. In plaats daarvan rapporteren ze meestal vermoedelijke denial-of-service-problemen, zodat de klant het zelf kan onderzoeken.
Bovendien is het vermeldenswaard dat als het systeem is verbonden met internet, het voortdurend wordt onderworpen aan "gratis pentests" van echte black hat-hackers en hun bots. Een andere reden om productieomgevingen te vermijden, zijn privacykwesties met live gebruikersgegevens. Pentesters zijn ethische hackers onder geheimhoudingsverklaringen en contracten, maar als er een testomgeving bestaat en vergelijkbaar is, kan deze worden gebruikt.
Tip: een "gratis pentest" is een grappige manier om te verwijzen naar het feit dat je wordt aangevallen door zwarte hoeden op internet.
Pentests kunnen tegen vrijwel elk technisch systeem worden uitgevoerd. Websites en netwerkinfrastructuur zijn de meest voorkomende soorten tests. U krijgt ook API-tests, "thick client"-tests, mobiele tests, hardwaretests en meer.
Variaties op het thema
Realistisch gezien zijn phishing-, OSINT- en rode teamoefeningen gerelateerd, maar enigszins verschillend. U bent zich waarschijnlijk bewust van de dreiging van phishing. Bij sommige tests wordt getest hoe medewerkers reageren op phishing-e-mails. Door bij te houden hoe gebruikers al dan niet omgaan met de phishing, is het mogelijk om te leren hoe toekomstige phishingtrainingen kunnen worden aangepast.
OSINT staat voor Open Source INTELLIGENTIE. Een OSINT-test draait om het schrapen van openbaar beschikbare informatie om te zien hoe waardevolle gegevens kunnen worden verzameld en hoe die kunnen worden gebruikt. Dit omvat vaak het genereren van lijsten met werknemers van plaatsen zoals LinkedIn en de bedrijfswebsite. Hierdoor kan een aanvaller senior figuren identificeren die een goed doelwit kunnen zijn voor een spear-phishing-aanval, phishing die specifiek is toegesneden op de individuele ontvanger.
Een rode teambetrokkenheid is doorgaans veel diepgaander en kan enkele of alle andere componenten omvatten. Het kan ook het testen van fysieke beveiliging en naleving van het beveiligingsbeleid omvatten. Aan de beleidskant gaat het om social engineering. Dat is je weg naar binnen proberen te lokken. Dit kan zo simpel zijn als rondhangen in de rookruimte en na een rookpauze weer binnenkomen met de rokers.
Het kan zijn dat je je voordoet als een ambtenaar of iemand vraagt om een deur voor je te openen terwijl je een dienblad met koffiekopjes draagt. Wat de fysieke beveiliging betreft, kan het zelfs gaan om fysiek inbreken, het testen van cameradekking, kwaliteit van sloten en dergelijke. Bij rode teambetrokkenheid is doorgaans een team van mensen betrokken en deze kunnen veel langere tijdschalen beslaan dan normale pentests.
Rode teams
Een rode teamoefening lijkt misschien minder ethisch dan een standaard pentest. De tester jaagt actief op nietsvermoedende medewerkers. De sleutel is dat ze toestemming hebben van de leiding van het bedrijf, meestal op directieniveau. Dit is de enige reden waarom een rode teamer mag proberen in te breken. Niets staat echter toe dat het gewelddadig is. Een oefening van het rode team zal nooit proberen een bewaker te verwonden of te onderwerpen, hem te omzeilen of te misleiden.
Om te voorkomen dat de rode teamer wordt gearresteerd, zullen ze over het algemeen een ondertekend contract bij zich hebben met handtekeningen van de goedkeurende bestuursleden. Als ze worden betrapt, kan dit worden gebruikt om te bewijzen dat ze wel toestemming hadden. Natuurlijk wordt dit soms gebruikt als dubbele bluf. De rode teamer kan twee toestemmingsformulieren bij zich hebben, een echt en een nep.
Wanneer ze worden betrapt, overhandigen ze in eerste instantie het valse toestemmingsformulier om te zien of ze de beveiliging kunnen overtuigen dat het legitiem is, zelfs als dat niet zo is. Daartoe zal het vaak de daadwerkelijke namen van het bedrijfsbestuur gebruiken, maar een verificatietelefoonnummer bevatten dat naar een andere rode teamer gaat die is geïnformeerd om het omslagverhaal te verifiëren. Als de beveiliging dit doorziet, wordt natuurlijk het echte toestemmingsformulier overhandigd. Dit kan dan echter met grote argwaan worden behandeld.
Afhankelijk van hoe de rode teamer is betrapt, kan het mogelijk zijn om door te gaan met de test, ervan uitgaande dat ze de individuele bewaker die hen heeft betrapt, hebben omzeild. Het is echter mogelijk dat de identiteit van de tester wordt "opgeblazen", waardoor hij in wezen wordt verwijderd van verdere persoonlijke tests. Op dit punt kan een ander teamlid inwisselen met of zonder de beveiliging te informeren.
Conclusie
Een pentest is een opdracht waarbij een cybersecurityprofessional wordt gevraagd de veiligheid van een computersysteem te testen. De test omvat het handmatig zoeken naar en verifiëren van de aanwezigheid van kwetsbaarheden. Hierbij kunnen geautomatiseerde tools worden ingezet. Aan het einde van de test wordt een rapport verstrekt met de gevonden problemen en advies voor herstel.
Het is belangrijk dat dit rapport niet alleen de geautomatiseerde uitvoer van een tool is, maar dat het allemaal handmatig is getest en geverifieerd. Elk computersysteem, hardware, netwerk, applicatie of apparaat kan worden gepentest. De vaardigheden die nodig zijn voor elk variëren, maar zijn vaak complementair.