complete penetration testing guide with sample test cases
Het is het proces om beveiligingsproblemen in een app te identificeren door het systeem of netwerk te evalueren met verschillende kwaadaardige technieken. De zwakke punten van een systeem worden in dit proces uitgebuit door middel van een geautoriseerde gesimuleerde aanval.
Het doel van deze test is om belangrijke gegevens te beveiligen tegen buitenstaanders zoals hackers die ongeautoriseerde toegang tot het systeem kunnen hebben. Zodra de kwetsbaarheid is geïdentificeerd, wordt deze gebruikt om het systeem te misbruiken om toegang te krijgen tot gevoelige informatie.
Een penetratietest wordt ook wel de pentest genoemd en een penetratietester wordt ook wel een ethische hacker genoemd.
Wat je leert:
- Wat is penetratietesten?
- Gevolgtrekking
Wat is penetratietesten?
We kunnen de kwetsbaarheden van een computersysteem, een webapplicatie of een netwerk achterhalen door middel van penetratietesten.
Een penetratietest vertelt of de bestaande verdedigingsmaatregelen die op het systeem worden toegepast sterk genoeg zijn om beveiligingsinbreuken te voorkomen. Penetratietestrapporten suggereren ook de tegenmaatregelen die kunnen worden genomen om het risico dat het systeem wordt gehackt te verkleinen.
Oorzaken van kwetsbaarheden
- Ontwerp- en ontwikkelingsfouten : Er kunnen fouten zitten in het ontwerp van hardware en software. Deze bugs kunnen uw bedrijfskritische gegevens blootstellen.
- Slechte systeemconfiguratie : Dit is een andere oorzaak van kwetsbaarheid. Als het systeem slecht is geconfigureerd, kan het mazen in de wet introduceren waardoor aanvallers het systeem kunnen binnendringen en de informatie kunnen stelen.
- Menselijke fouten : Menselijke factoren zoals het onjuist weggooien van documenten, de documenten onbeheerd achterlaten, codeerfouten, bedreigingen van binnenuit, het delen van wachtwoorden via phishing-sites, enz. Kunnen leiden tot beveiligingsinbreuken.
- Connectiviteit : Als het systeem is verbonden met een onbeveiligd netwerk (open verbindingen), komt het binnen het bereik van hackers.
- Complexiteit : De beveiligingskwetsbaarheid neemt toe naarmate de complexiteit van een systeem toeneemt. Hoe meer functies een systeem heeft, hoe groter de kans dat het systeem wordt aangevallen.
- Wachtwoorden : Wachtwoorden worden gebruikt om ongeautoriseerde toegang te voorkomen. Ze moeten sterk genoeg zijn zodat niemand uw wachtwoord kan raden. Wachtwoorden mogen tegen elke prijs met niemand worden gedeeld en wachtwoorden moeten regelmatig worden gewijzigd. Ondanks deze instructies geven mensen soms hun wachtwoorden aan anderen, noteren ze ergens en bewaren ze gemakkelijke wachtwoorden die kunnen worden geraden.
- Gebruikers invoer : U moet hebben gehoord van SQL-injectie, bufferoverflows, enz. De gegevens die via deze methoden elektronisch worden ontvangen, kunnen worden gebruikt om het ontvangende systeem aan te vallen.
- Beheer : Beveiliging is moeilijk en duur om te beheren. Soms missen organisaties een achterstand in goed risicobeheer en wordt daardoor kwetsbaarheid in het systeem geïnduceerd.
- Gebrek aan opleiding van personeel : Dit leidt tot menselijke fouten en andere kwetsbaarheden.
- Communicatie : Kanalen zoals mobiele netwerken, internet, telefoon bieden mogelijkheden voor diefstalbeveiliging.
Penetratietesttools en bedrijven
Geautomatiseerde tools kunnen worden gebruikt om enkele standaardkwetsbaarheden in een applicatie te identificeren. Pentest-tools scannen de code om te controleren of er een schadelijke code aanwezig is die kan leiden tot een mogelijke inbreuk op de beveiliging. Pentest-tools kunnen beveiligingslekken in het systeem verifiëren door gegevensversleutelingstechnieken te onderzoeken en hardgecodeerde waarden zoals gebruikersnaam en wachtwoord te achterhalen.
Criteria om het beste penetratiegereedschap te selecteren:
- Het moet eenvoudig te implementeren, configureren en gebruiken zijn.
- Het zou uw systeem gemakkelijk moeten scannen.
- Het moet kwetsbaarheden categoriseren op basis van ernst die onmiddellijk moet worden opgelost.
- Het zou de verificatie van kwetsbaarheden moeten kunnen automatiseren.
- Het zou eerder gevonden exploits opnieuw moeten verifiëren.
- Het zou gedetailleerde kwetsbaarheidsrapporten en logboeken moeten genereren.
Als u eenmaal weet welke tests u moet uitvoeren, kunt u uw interne testbronnen trainen of deskundige consultants inhuren om de penetratietaak voor u uit te voeren.
Aanbevolen hulpmiddelen voor het testen van penetratie
# 1) Acunetix
Acunetix WVS biedt zowel beveiligingsprofessionals als software-engineers een reeks verbluffende functies in een eenvoudig, ongecompliceerd en zeer robuust pakket.
Probeer hier de beste pentesttool
# 2) Indringer
Indringer is een krachtige kwetsbaarheidsscanner die zwakke plekken in de cyberbeveiliging in uw digitale bezit opspoort, de risico's uitlegt en helpt bij het verhelpen ervan voordat een inbreuk kan plaatsvinden. Het is de perfecte tool om uw penetratietestinspanningen te automatiseren.
Belangrijkste kenmerken
- Meer dan 9.000 geautomatiseerde controles voor uw gehele IT-infrastructuur.
- Infrastructuur- en weblaagcontroles, zoals SQL-injectie en cross-site scripting.
- Scant automatisch uw systemen wanneer nieuwe bedreigingen worden ontdekt.
- Meerdere integraties: AWS, Azure, Google Cloud, API, Jira, Teams en meer.
- Intruder biedt een gratis proefperiode van 30 dagen van zijn Pro-abonnement.
Aanbevolen penetratietestbedrijf
# 1) ImmuniWeb®
ImmuniWeb® is een penetratietestbedrijf gevestigd in Genève, Zwitserland. Het DevSecOps-enabled applicatiepenetratietestplatform combineert mensen met kunstmatige intelligentie en wordt geleverd met nul vals-positieve SLA, detectie van de hoogste kwetsbaarheid en actiegerichte rapportage.
ImmuniWeb biedt uitgebreide applicatie-penetratietesten van interne en externe web- en mobiele apps, API's en webservices, mailservers, IoT-apparaten en meer.
Belangrijkste kenmerken:
- Continue detectie van nieuwe codes.
- Snel en kosteneffectief handmatig testen.
- Virtuele patchmogelijkheden met één klik.
- 24/7 toegang tot beveiligingsanalisten.
- DevSecOps en CI / CD-integratie.
- Directe bestelling en snelle levering.
- Multirol dashboard.
Andere gratis tools:
Commerciële diensten:
U kunt ook verwijzen naar de onderstaande lijst die beschikbaar is bij STH en die spreekt over 37 krachtige penetratietesttools => Krachtige penetratietesttools voor elke penetratietester
sommige softwarefouten wijzen op een fysiek verbindingsprobleem
Waarom penetratietesten?
U moet hebben gehoord van de WannaCry-ransomwareaanval die begon in mei 2017. Het sloot meer dan 2 lakh-computers over de hele wereld en eiste losgeld in de cryptocurrency Bitcoin. Deze aanval heeft veel grote organisaties over de hele wereld getroffen.
Met dergelijke massale en gevaarlijke cyberaanvallen die tegenwoordig plaatsvinden, is het onvermijdelijk geworden om met regelmatige tussenpozen penetratietests uit te voeren om de informatiesystemen te beschermen tegen inbreuken op de beveiliging.
Penetratietesten zijn dus voornamelijk vereist voor:
- Financiële of kritieke gegevens moeten worden beveiligd tijdens de overdracht tussen verschillende systemen of via het netwerk.
- Veel klanten vragen om pentesten als onderdeel van de softwarereleasecyclus.
- Om gebruikersgegevens te beveiligen.
- Om beveiligingsproblemen in een applicatie te vinden.
- Om mazen in het systeem te ontdekken.
- Om de zakelijke impact van succesvolle aanvallen te beoordelen.
- Om te voldoen aan de informatiebeveiliging in de organisatie.
- Om een effectieve beveiligingsstrategie in de organisatie te implementeren.
Elke organisatie moet beveiligingsproblemen in het interne netwerk en computers identificeren. Met behulp van deze informatie kan de organisatie een verdediging plannen tegen elke hackpoging. De privacy van gebruikers en gegevensbeveiliging zijn tegenwoordig de grootste zorgen.
Stel je voor dat een hacker erin slaagt om gebruikersgegevens van een sociale netwerksite zoals Facebook te achterhalen. De organisatie kan juridische problemen krijgen vanwege een kleine maas in een softwaresysteem. Daarom zijn grote organisaties op zoek naar PCI-nalevingscertificeringen (Payment Card Industry) voordat ze zaken doen met externe klanten.
Wat moet er worden getest?
- Software (besturingssysteem, services, applicatie)
- Hardware
- Netwerk
- Processen
- Gedrag van de eindgebruiker
Soorten penetratietesten
# 1) Social Engineering-test: In deze test wordt geprobeerd een persoon gevoelige informatie te laten onthullen, zoals een wachtwoord, bedrijfskritische gegevens, etc. Deze tests worden meestal gedaan via telefoon of internet en zijn gericht op bepaalde helpdesks, medewerkers en processen.
Menselijke fouten zijn de belangrijkste oorzaken van beveiligingslekken. Beveiligingsnormen en -beleid moeten door alle personeelsleden worden gevolgd om pogingen tot penetratie door social engineering te voorkomen. Een voorbeeld van deze standaarden is het niet vermelden van gevoelige informatie in de e-mail of telefoon. Beveiligingsaudits kunnen worden uitgevoerd om procesfouten te identificeren en te corrigeren.
# 2) Webapplicatietest: Met behulp van softwaremethoden kan worden nagegaan of de applicatie is blootgesteld aan beveiligingslekken. Het controleert de beveiligingskwetsbaarheid van web-apps en softwareprogramma's die zich in de doelomgeving bevinden.
# 3) Fysieke penetratietest: Er worden sterke fysieke beveiligingsmethoden toegepast om gevoelige gegevens te beschermen. Dit wordt over het algemeen gebruikt in militaire en overheidsfaciliteiten. Alle fysieke netwerkapparaten en accesspoints worden getest op de mogelijkheden van een inbreuk op de beveiliging. Deze test is niet veel relevant voor de reikwijdte van softwaretests.
# 4) Test netwerkdiensten : Dit is een van de meest uitgevoerde penetratietests waarbij de openingen in het netwerk worden geïdentificeerd aan de hand van welke invoer wordt gemaakt in de systemen op het netwerk om te controleren wat voor soort kwetsbaarheden er zijn. Het kan lokaal of op afstand worden gedaan.
# 5) Test aan de clientzijde : Het is bedoeld om kwetsbaarheden in softwareprogramma's aan de clientzijde te zoeken en te exploiteren.
# 6) War dial-up op afstand : Het zoekt naar modems in de omgeving en probeert in te loggen op de systemen die via deze modems zijn verbonden door wachtwoord te raden of brute-forcing.
# 7) Draadloze beveiligingstest : Het ontdekt de open, ongeautoriseerde en minder beveiligde hotspots of Wi-Fi-netwerken en maakt er verbinding via.
De bovenstaande 7 categorieën die we hebben gezien, zijn een manier om de soorten pentests te categoriseren. We kunnen de soorten penetratietesten ook in drie delen organiseren, zoals hieronder te zien is:
Laten we deze testbenaderingen een voor een bespreken:
- Black Box-penetratietesten : In deze benadering beoordeelt de tester het doelsysteem, netwerk of proces zonder medeweten van de details. Ze hebben gewoon een zeer hoog niveau van invoer, zoals URL of bedrijfsnaam waarmee ze de doelomgeving binnendringen. Bij deze methode wordt geen code onderzocht.
- White Box-penetratietesten : Bij deze benadering is de tester uitgerust met volledige details over de doelomgeving - Systemen, netwerk, OS, IP-adres, broncode, schema, enz. Het onderzoekt de code en ontdekt ontwerp- en ontwikkelingsfouten. Het is een simulatie van een interne veiligheidsaanval.
- Penetratietesten voor grijze dozen : Bij deze benadering heeft de tester beperkte details over de doelomgeving. Het is een simulatie van externe beveiligingsaanvallen.
Pentesttechnieken
- Handmatige penetratietest
- Met behulp van geautomatiseerde penetratietesttools
- Combinatie van zowel handmatig als geautomatiseerd proces
Het derde proces komt vaker voor om allerlei soorten kwetsbaarheden te identificeren.
Handmatige penetratietest
Het is moeilijk om alle kwetsbaarheden te vinden met geautomatiseerde tools. Er zijn enkele kwetsbaarheden die alleen door handmatige scan kunnen worden geïdentificeerd. Penetratietesters kunnen betere aanvallen uitvoeren op applicaties op basis van hun vaardigheden en kennis van het systeem dat wordt gepenetreerd.
De methoden zoals social engineering kunnen alleen door mensen worden uitgevoerd. Handmatige controle omvat ontwerp, bedrijfslogica en codeverificatie.
Penetratietestproces:
Laten we het feitelijke proces bespreken dat wordt gevolgd door testbureaus of penetratietesters. Het identificeren van in het systeem aanwezige kwetsbaarheden is de eerste belangrijke stap in dit proces. Op deze kwetsbaarheid worden corrigerende maatregelen genomen en dezelfde penetratietests worden herhaald totdat het systeem negatief is voor al die tests.
We kunnen dit proces op de volgende manieren categoriseren:
# 1) Gegevensverzameling: Er worden verschillende methoden, waaronder Google-zoekopdrachten, gebruikt om doelsysteemgegevens te verkrijgen. Men kan ook de analysetechniek van de broncode van webpagina's gebruiken om meer informatie te krijgen over het systeem, de software en de plugin-versies.
Er zijn veel gratis tools en services op de markt die u informatie kunnen geven, zoals database- of tabelnamen, DB-versies, softwareversies, de gebruikte hardware en verschillende plug-ins van derden die in het doelsysteem worden gebruikt.
# 2) Kwetsbaarheidsbeoordeling: Op basis van de gegevens die in de eerste stap zijn verzameld, kan men het beveiligingslek in het doelsysteem vinden. Dit helpt penetratietesters om aanvallen uit te voeren met behulp van geïdentificeerde toegangspunten in het systeem.
# 3) Daadwerkelijke exploitatie: Dit is een cruciale stap. Het vereist speciale vaardigheden en technieken om een aanval op het doelsysteem uit te voeren. Ervaren penetratietesters kunnen hun vaardigheden gebruiken om een aanval op het systeem uit te voeren.
# 4) Resultaat in analyse en rapportvoorbereiding: Na voltooiing van penetratietesten, worden gedetailleerde rapporten opgesteld voor het nemen van corrigerende maatregelen. Alle geïdentificeerde kwetsbaarheden en aanbevolen corrigerende methoden worden in deze rapporten vermeld. U kunt de indeling van het kwetsbaarheidsrapport (HTML, XML, MS Word of PDF) aanpassen aan de behoeften van uw organisatie.
Penetratietesten Voorbeeldtestgevallen (testscenario's)
Onthoud dat dit geen functionele tests zijn. Bij Pentest is het uw doel om beveiligingsgaten in het systeem te vinden. Hieronder staan enkele generieke testcases die niet noodzakelijk voor alle applicaties gelden.
- Controleer of de webapplicatie spamaanvallen op contactformulieren op de website kan identificeren.
- Proxyserver - Controleer of het netwerkverkeer wordt gecontroleerd door proxyapparaten. De proxyserver maakt het voor hackers moeilijk om interne details van het netwerk te achterhalen, waardoor het systeem wordt beschermd tegen aanvallen van buitenaf.
- Filters voor spammail - Controleer of inkomend en uitgaand e-mailverkeer wordt gefilterd en ongevraagde e-mails worden geblokkeerd.
- Veel e-mailclients worden geleverd met ingebouwde spamfilters die moeten worden geconfigureerd volgens uw behoeften. Deze configuratieregels kunnen worden toegepast op kopteksten, onderwerp of hoofdtekst van e-mail.
- Firewall - Zorg ervoor dat het hele netwerk of de computers zijn beveiligd met firewalls. Een firewall kan software of hardware zijn om ongeautoriseerde toegang tot een systeem te blokkeren. Een firewall kan voorkomen dat gegevens zonder uw toestemming buiten het netwerk worden verzonden.
- Probeer alle servers, desktopsystemen, printers en netwerkapparaten te misbruiken.
- Controleer of alle gebruikersnamen en wachtwoorden zijn gecodeerd en overgedragen via beveiligde verbindingen zoals https.
- Controleer de informatie die is opgeslagen in website cookies Het mag niet in een leesbaar formaat zijn.
- Verifieer eerder gevonden kwetsbaarheden om te controleren of de oplossing werkt.
- Controleer of er geen open poort in het netwerk is.
- Controleer alle telefoontoestellen.
- Controleer de wifi-netwerkbeveiliging.
- Controleer alle HTTP-methoden. PUT- en Delete-methoden mogen niet worden ingeschakeld op een webserver.
- Controleer of het wachtwoord voldoet aan de vereiste normen. Het wachtwoord moet minimaal 8 tekens lang zijn en moet minimaal één cijfer en één speciaal teken bevatten.
- De gebruikersnaam mag niet zijn als 'admin' of 'administrator'.
- De aanmeldingspagina van de toepassing moet worden vergrendeld na een paar mislukte aanmeldingspogingen.
- Foutmeldingen moeten algemeen zijn en mogen geen specifieke foutdetails vermelden, zoals 'Ongeldige gebruikersnaam' of 'Ongeldig wachtwoord'.
- Controleer of speciale tekens, HTML-tags en scripts correct worden verwerkt als invoerwaarde.
- Interne systeemdetails mogen in geen van de fout- of waarschuwingsberichten worden onthuld.
- Aangepaste foutmeldingen moeten aan eindgebruikers worden weergegeven in het geval van een webpagina crash.
- Controleer het gebruik van registervermeldingen. Gevoelige informatie mag niet in het register worden bewaard.
- Alle bestanden moeten worden gescand voordat ze naar de server worden geüpload.
- Gevoelige gegevens mogen niet worden doorgegeven in URL's tijdens de communicatie met verschillende interne modules van de webapplicatie.
- Er mag geen hardgecodeerde gebruikersnaam of wachtwoord in het systeem staan.
- Controleer alle invoervelden met een lange invoertekenreeks met en zonder spaties.
- Controleer of de functionaliteit voor het opnieuw instellen van het wachtwoord veilig is.
- Controleer de aanvraag voor SQL injectie
- Controleer de aanvraag voor Cross-site scripting
- Belangrijke invoervalidaties moeten aan de serverzijde worden uitgevoerd in plaats van JavaScript-controles aan de clientzijde.
- Kritieke bronnen in het systeem mogen alleen beschikbaar zijn voor geautoriseerde personen en services.
- Alle toegangslogboeken moeten worden bijgehouden met de juiste toegangsrechten.
- Controleer of de gebruikerssessie eindigt bij uitloggen.
- Controleer of het bladeren door mappen is uitgeschakeld op de server.
- Controleer of alle applicaties en databaseversies up-to-date zijn.
- Verifieer URL-manipulatie om te controleren of een webtoepassing geen ongewenste informatie weergeeft.
- Controleer geheugenlek en bufferoverloop.
- Controleer of inkomend netwerkverkeer wordt gescand om Trojan-aanvallen te vinden.
- Controleer of het systeem veilig is voor Brute Force Attacks - een methode van vallen en opstaan om gevoelige informatie zoals wachtwoorden te vinden.
- Controleer of het systeem of netwerk is beveiligd tegen DoS-aanvallen (denial-of-service). Hacker kan zich richten op het netwerk of op een enkele computer met continue verzoeken, waardoor bronnen op het doelsysteem overbelast raken, wat resulteert in het weigeren van service voor legitieme verzoeken.
- Controleer de toepassing op aanvallen met HTML-scriptinjectie.
- Verifieer tegen COM- en ActiveX-aanvallen.
- Verifieer tegen spoofing-aanvallen. Spoofing kan van meerdere typen zijn: IP-adres spoofing, e-mail-ID spoofing,
- ARP-spoofing, referrer-spoofing, beller-ID-spoofing, vergiftiging van netwerken voor het delen van bestanden, GPS-spoofing.
- Controleer op een ongecontroleerde aanval op de format string - een beveiligingsaanval die ervoor kan zorgen dat de applicatie crasht of het schadelijke script erop uitvoert.
- Verifieer XML-injectie-aanval - gebruikt om de beoogde logica van de applicatie te wijzigen.
- Verifieer tegen canonicalisatie-aanvallen.
- Controleer of de foutpagina's informatie weergeven die nuttig kan zijn voor een hacker om het systeem binnen te dringen.
- Controleer of kritische gegevens zoals het wachtwoord zijn opgeslagen in geheime bestanden op het systeem.
- Controleer of de applicatie meer gegevens retourneert dan nodig is.
Dit zijn slechts de basistestscenario's om met Pentest aan de slag te gaan. Er zijn honderden geavanceerde penetratiemethoden die handmatig of met behulp van automatiseringstools kunnen worden uitgevoerd.
Verder lezen:
Normen voor het testen van pennen
- PCI DSS (Payment Card Industry Data Security Standard)
- OWASP (Open Web Application Security Project)
- ISO / IEC 27002 OSSTMM (The Open Source Security Testing Methodology Manual)
Certificaten
- GPEN
- Associate Security Tester ( AST
- Senior beveiligingstester (SST)
- Gecertificeerde penetratietester ( CPT
Gevolgtrekking
Ten slotte moet u als penetratietester alle kwetsbaarheden in het systeem verzamelen en loggen. Negeer geen enkel scenario, aangezien het niet door eindgebruikers zal worden uitgevoerd.
ms sql interviewvragen en antwoorden
Als u een penetratietester bent, help dan onze lezers met uw ervaring, tips en voorbeeldtestcases over hoe u effectief penetratietesten kunt uitvoeren.
Aanbevolen literatuur
- 19 krachtige penetratietesttools die door professionals worden gebruikt in 2021
- Beginnershandleiding voor penetratietesten van webapplicaties
- Alfatesten en bètatesten (een complete gids)
- Netwerkbeveiligingstests en de beste hulpprogramma's voor netwerkbeveiliging
- Handleiding voor het testen van webapplicaties
- Build Verification Testing (BVT Testing) Complete Guide
- Functioneel testen versus niet-functioneel testen
- Beste softwaretesttools 2021 [QA Test Automation Tools]