Programvare har garantert feil. Det kan være mange tusen linjer med kode i programvare, og menneskelig feilbarlighet betyr at i det minste noen av dem ikke blir hele som tiltenkt. Programvareutviklingens livssyklus er en prosess designet for å prøve å minimere disse problemene ved regelmessig testing.
Problemet er at testing ofte gjøres av utviklere, som kanskje har lært å kode noe, men kanskje ikke har lært sikker kodingspraksis. Selv i grundig testede systemer kan det å ha en ekstern observatør blikk og bringe inn et nytt perspektiv bidra til å identifisere nye problemer.
En vanlig måte å gjøre dette på er via en penetrasjonstest, vanligvis forkortet til en pentest. Dette innebærer å få en profesjonell, etisk hacker, en pentester, til å se på systemet og finne eventuelle sikkerhetsproblemer.
Tips: Det er «pentest» og «pentester», ikke «pennetest». En pentester tester ikke penner. "Penn-test" er litt mer akseptabelt enn "penn-test", men bør generelt også unngås.
Målet til en Pentest
Målet med enhver pentest er å identifisere alle sikkerhetssårbarhetene i systemet som testes og rapportere dem til klienten. Vanligvis er imidlertid engasjementer noe tidsbegrenset basert på kostnad. Hvis et selskap har et internt pentester- eller pentest-team, kan de jobbe permanent for selskapet. Likevel har mange selskaper med skala for det en bred portefølje av systemer som må testes. Dette inkluderer både produkter som selges og selskapets forretningssystemer.
Som sådan kan de ikke bruke all sin tid på å teste én ting. Mange bedrifter foretrekker å ansette et eksternt pentestingfirma for å utføre engasjementet. Dette er fortsatt tidsbegrenset basert på kostnaden. Kostnaden er drevet av det faktum at en pentest er en veldig manuell prosess og at ferdighetssettet er mangelvare.
Vanligvis vil en pentest være tilpasset en bestemt tidsramme. Dette gjøres basert på det aktuelle målet og hvor lang tid det skal ta å være rimelig sikker på å ha funnet alt. Tidslinjen for å finne sårbarheter er generelt en klokkekurve. Ikke mye blir funnet umiddelbart når pentesteren ser seg rundt i applikasjonen. Da kan de aller fleste funn oppnås innenfor en bestemt tidsskala før avtrapping. På et tidspunkt er kostnaden ved å bruke mer tid på å lete ikke verdt sjansen for at det ikke er noe annet å finne.
Noen ganger er selv den oppgitte prisen for den anbefalte tiden for mye. I dette tilfellet kan testen være "time boxed." Det er her kunden aksepterer at de ikke tester så mye som anbefalt, men at de ønsker at pentesterne skal gjøre det beste de kan i en redusert tidsramme. Vanligvis er dette tatt med som et forbehold i rapporten.
Manuell prosess
Noen verktøy er tilgjengelige for å utføre sikkerhetstesting automatisk. Disse kan være nyttige. Imidlertid har de ofte høye falske positive og falske negative priser. Dette betyr at du må bruke tid på å grave gjennom å verifisere problemer, vel vitende om at det kanskje ikke er omfattende. De fleste av disse verktøyene ser etter spesifikke indikatorer, for eksempel kjente sårbare versjoner av programvare eller kjente sårbare funksjoner. Imidlertid er det mange måter for disse ikke å være faktiske problemer eller dempet i praksis.
Sikkerhetssårbarheter kan komme sammen fra en haug med tilsynelatende uskyldige deler. Den beste måten å oppdage dette på er gjennom manuell menneskelig innsats. Pentesters bruker verktøy, men vet hvordan de skal tolke resultatene, manuelt verifisere dem og utføre uavhengige manuelle handlinger. Denne manuelle innsatsen skiller en pentest fra en sårbarhetsskanning eller sårbarhetsvurdering.
Typer Pentest
Vanligvis innebærer en pentest å teste et helt produkt slik det vil bli distribuert. Ideelt sett skjer dette i et ekte produksjonsmiljø. Dette er imidlertid ikke alltid praktisk. For det første er det frykten for at den peneste kan slå målet offline. Generelt er denne frykten i hovedsak ubegrunnet. Pentests genererer vanligvis ikke for mye nettverkstrafikk, kanskje tilsvarende noen få ekstra aktive brukere. Pentesters vil heller ikke bevisst teste for problemer med tjenestenekt, spesielt i produksjonsmiljøer. I stedet vil de vanligvis rapportere mistenkte tjenestenektproblemer for å la klienten undersøke det selv.
I tillegg er det verdt å merke seg at hvis systemet er koblet til Internett, er det konstant gjenstand for "gratis pentests" fra ekte black hat hackere og deres roboter. En annen grunn til å unngå produksjonsmiljøer er personvernproblemer med live brukerdata. Pentesters er etiske hackere under NDAer og kontrakter, men hvis et testmiljø eksisterer og ligner, kan det brukes.
Tips: En "gratis pentest" er en spøkefull måte å referere til å være under angrep fra svarte hatter på Internett.
Pentests kan utføres mot stort sett ethvert teknisk system. Nettsteder og nettverksinfrastruktur er de vanligste typene tester. Du får også API-tester, "tykk klient"-tester, mobiltester, maskinvaretester og mer.
Variasjoner over temaet
Realistisk sett er phishing-, OSINT- og red team-øvelser relatert, men litt annerledes. Du er sannsynligvis klar over trusselen om nettfisking. Noen tester involverer testing for å se hvordan ansatte svarer på phishing-e-poster. Ved å spore hvordan brukere samhandler – eller ikke gjør – med phishen, er det mulig å lære hvordan man skreddersyr fremtidig phishing-opplæring.
OSINT står for Open Source Intelligence. En OSINT-test dreier seg om å skrape offentlig tilgjengelig informasjon for å se hvordan verdifulle data kan samles inn og hvordan de kan brukes. Dette innebærer ofte å generere lister over ansatte fra steder som LinkedIn og selskapets nettsted. Dette kan gjøre det mulig for en angriper å identifisere seniorfigurer som kan være gode mål for et spyd-phishing-angrep, phishing spesielt skreddersydd for den enkelte mottakeren.
Et rødt teamengasjement er vanligvis mye mer dyptgående og kan involvere noen eller alle andre komponenter. Det kan også inkludere testing av fysisk sikkerhet og overholdelse av sikkerhetspolicy. På den politiske siden involverer dette sosial ingeniørkunst. Det er å prøve å overbevise deg inn i bygningen. Dette kan være så enkelt som å henge i røykeområdet og komme tilbake med røykerne etter en røykpause.
Det kan være å utgi seg som en tjenestemann eller å be noen om å skaffe en dør til deg mens du bærer et kaffekoppbrett. På den fysiske sikkerhetssiden kan det til og med innebære forsøk på å bryte seg inn fysisk, teste kameradekning, kvalitet på låser og lignende. Røde teamengasjementer involverer vanligvis et team med mennesker og kan løpe over mye lengre tidsskalaer enn vanlige pentests.
Røde lag
En rød teamøvelse kan virke mindre etisk enn en standard pentest. Testeren jakter aktivt på intetanende ansatte. Nøkkelen er at de har tillatelse fra selskapets ledelse, typisk fra styrenivå. Dette er den eneste grunnen til at det er ok for en rød lagspiller å prøve å bryte seg inn. Ingenting tillater det imidlertid å være voldelig. En øvelse for rødt lag vil aldri prøve å skade eller underkue en sikkerhetsvakt, å omgå eller lure dem.
For å forhindre at den røde lagspilleren blir arrestert, vil de vanligvis bære en signert kontrakt med underskrifter fra de godkjennende styremedlemmene. Hvis de blir tatt, kan dette brukes til å bevise at de hadde tillatelse. Selvfølgelig, noen ganger, brukes dette som en dobbel bløff. Den røde teameren kan bære to tillatelsessedler, en ekte og en falsk.
Når de blir tatt, overleverer de først den falske tillatelsesslippen for å se om de kan overbevise sikkerheten om at den er legitim selv når den ikke er det. Til det formål vil den ofte bruke de faktiske navnene på selskapets styre, men inkludere et bekreftelsestelefonnummer som går til en annen red teamer som er informert om å bekrefte forsidehistorien. Selvsagt, hvis sikkerheten gjennomskuer dette, overleveres den virkelige tillatelsesslippen. Dette kan imidlertid behandles med stor mistenksomhet.
Avhengig av hvordan den røde teameren ble tatt, kan det være mulig å fortsette testen, forutsatt at de har omgått den enkelte sikkerhetsvakten som har tatt dem. Det er imidlertid mulig at testerens identitet kan være "blåst", og i det vesentlige fjerne dem fra ytterligere personlig testing. På dette tidspunktet kan et annet teammedlem bytte inn med eller uten å informere sikkerheten.
Konklusjon
En pentest er et engasjement der en profesjonell cybersikkerhetsekspert blir bedt om å teste sikkerheten til et datasystem. Testen innebærer manuelt å søke etter og verifisere tilstedeværelsen av sårbarheter. Automatiserte verktøy kan brukes som en del av dette. På slutten av testen leveres en rapport som beskriver problemene som er funnet og gir råd om utbedring.
Det er viktig at denne rapporten ikke bare er det automatiserte resultatet fra et verktøy, men at alt er manuelt testet og verifisert. Ethvert datasystem, maskinvare, nettverk, applikasjon eller enhet kan testes. Ferdighetene som trengs for hver av dem varierer, men er ofte komplementære.