Penetrasjonstesting: Sikkerhetshull før hackerne finner dem

Introduksjon til Penetrasjonstesting

I 1967 samlet datasikkerhetseksperter fra Rand Corporation, inkludert Willis Ware, Rein Turn, Harold Petersen og Benard Peters, seg for å utarbeide en rapport etter en felles datakonferanse. Rapporten konkluderte med at kommunikasjonskanaler mellom datamaskiner var lett tilgjengelige for uautorisert inntrengning. Denne innsikten markerte begynnelsen på en ny æra innen datasikkerhet, og resulterte i utviklingen av penetrasjonstesting.

Den første registrerte hendelsen av datasikkerhetsbrudd førte til at James P. Anderson utviklet en trinnvis tilnærming som la grunnlaget for det vi i dag kjenner som penetrasjonstesting. Denne metoden innebærer at sikkerhetsteam går gjennom en rekke stadier, fra å identifisere sårbarheter til å utvikle metoder for å motvirke dem. Du kan lese mer om denne historiske utviklingen her.

Det å utnytte et selskaps sikkerhet er en kompleks prosess som krever både ferdigheter og tid. Moderne teknologi gjør det imidlertid enklere for ondsinnede aktører å finne sårbarheter i en organisasjon. Penetrasjonsforsøk fokuserer ofte på bedriftens ressurser som er synlige på internett, slik som webapplikasjoner, nettsider, domenenavnservere (DNS) og e-postsystemer, med mål om å få tilgang til og stjele verdifulle data.

Ved å utføre penetrasjonstester, kan bedriften din identifisere og forsterke sine potensielle angrepsflater før de blir utnyttet av kriminelle. Forskning bekrefter viktigheten av dette, med hele 73 % av vellykkede dataangrep som skyldes sårbarheter i webapplikasjoner.

Det er viktigere enn noen gang at organisasjoner verifiserer sikkerheten til sine applikasjoner, systemer og nettverk. Simulerte tester er en effektiv metode for å bekrefte et systems sikkerhetsstyrke og kontrolltiltak. Dette er ikke en engangsaktivitet, men en løpende prosess. Hyppigheten av testene bør baseres på organisasjonens struktur og de risikofaktorer som er identifisert gjennom vurderinger.

Heldigvis er penetrasjonstesting ikke så komplisert som det kan virke. Med riktig opplæring og verktøy kan IT-teamet ditt implementere robuste sikkerhetsprotokoller, spesielt når det gjelder betydelige oppdateringer av infrastrukturen eller introduksjon av nye digitale tjenester og ressurser. Alt starter med en forståelse av selve prosessen.

Hva er Penetrasjonstesting?

Før vi ser på hvordan penetrasjonstesting fungerer, er det viktig å forstå hva og hvorfor. Penetrasjonstester, ofte forkortet til pen-tester, er kontrollerte cyberangrep rettet mot virksomheter i et trygt og overvåket miljø. I kombinasjon med sikkerhetsrevisjoner, søker pen-tester å avdekke sårbarheter innenfor et definert omfang av organisasjonens miljø. Disse testene etterligner de taktikkene en hacker ville benytte seg av. Det er flere hovedgrunner til at en bedrift bør gjennomføre penetrasjonstester:

  • Avdekke skjulte sårbarheter før ondsinnede aktører gjør det.
  • Styrke sikkerhetsprosesser og strategier.
  • Redusere kostnadene ved utbedringer og forkorte nedetid.
  • Sikre overholdelse av gjeldende lover og regler for sikkerhet og personvern.
  • Beskytte merkevarens omdømme og opprettholde kundelojalitet.

Penetrasjonstester evaluerer en virksomhets motstandskraft mot angrep og demonstrerer hvor lett det er for hackere å bryte seg inn i systemene. Informasjonen som samles inn, kan brukes til å prioritere investeringer i cybersikkerhet, følge bransjestandarder og forbedre de defensive strategiene for å beskytte bedriften mot potensielle trusler. Dette er muliggjort gjennom automatiske testverktøy, også kjent som penetrasjonsverktøy.

Hva er Penetrasjonsverktøy?

En etisk hacker bruker penetrasjonsverktøy for å vurdere motstandskraften til datainfrastruktur ved å simulere angrep som kan oppstå i virkeligheten. Disse verktøyene hjelper sikkerhetsteam med å automatisere repeterende oppgaver, generere testrapporter raskere og redusere kostnadene for flere skannere. Det finnes mange ulike typer penetrasjonsverktøy: åpen kildekode, webapplikasjoner, nettverk, mobilapplikasjoner, sky, manuelle, automatiserte og «penetrasjonstesting som en tjeneste». Når du velger verktøy, bør du se etter funksjoner som handlingsrettede rapporter, CI/CD-integrasjon, utbedringsstøtte og sertifisering for penetrasjonstesting (merk at det kun er et fåtall tilbyr offentlig tilgjengelige sertifiseringer).

Med dette grunnlaget, la oss se nærmere på prosessen for penetrasjonstesting.

Stadier i Penetrasjonstesting

En typisk penetrasjonstest består av flere stadier. Selv om ulike kilder kan beskrive prosessen i forskjellige trinn, endrer ikke den grunnleggende strukturen seg. Prosessen omfatter rekognosering, skanning, vurdering av sårbarheter, utnyttelse og rapportering.

Dyktige testere benytter seg av et bredt spekter av verktøy for å kunne anvende det mest hensiktsmessige i hver fase av testen. La oss se nærmere på hvert trinn i prosessen:

Informasjonsinnhenting

Denne fasen, som ofte overses, hjelper organisasjonen din med å etablere et felles grunnlag med penetrasjonstesteren. Her defineres arbeidsomfang, engasjementsregler, tidslinjer og nøyaktig logistikk, i tillegg til klare mål. For å gjennomføre en fullstendig og nyttig penetrasjonstest, hjelper denne fasen med å forstå hvilke områder som krever testing, samt de beste metodene for å gjennomføre dette. Dette er et viktig første trinn som aldri må ignoreres.

Før testingen kan starte, må organisasjonen innhente samtykke fra testeren. Ellers kan handlingene deres betraktes som ulovlige. Organisasjoner definerer klare regler (i form av en kontrakt) for å sikre en smidig arbeidsflyt. Avtalen bør også beskrive kritiske ressurser, testmål og forholdsregler. Dette første trinnet vil påvirke alle de påfølgende handlingene, og sikre at alle planer er tilpasset de forventede testresultatene.

Rekognosering / OSINT-Innsamling

I denne fasen samler testeren all tilgjengelig informasjon om systemet. Dataene som samles inn, er relevant for de kommende testene og er basert på resultatene fra det første trinnet. Dette gjør at testerne kan samle inn den mest relevante informasjonen og implementere effektive strategier. I aktiv rekognosering vil testeren ha direkte kontakt med systemene, mens passiv rekognosering innebærer innsamling av offentlig tilgjengelig informasjon. For en mest mulig omfattende evaluering er det best å benytte seg av begge teknikkene.

Aktiv datainnsamling omfatter arbeid med nettverk, operativsystemer, brukerkontoer, domenenavn, e-postservere og applikasjoner. Passiv datainnsamling baserer seg på åpen kildekodeinformasjon (OSINT), som sosiale medier, skatteinformasjon, nettsider og andre offentlige kilder. Her er noen OSINT-verktøy som kan være nyttige under denne prosessen. Ved å bruke OSINT-rammeverket kan du lage en omfattende sjekkliste for inngangspunkter og sårbarheter. Det er viktig å merke seg at dette trinnet er avgjørende for både interne og eksterne penetrasjonstester, men ikke for testing av webapplikasjoner, mobilapper og API-er.

Skanning

En grundig teknisk gjennomgang av systemet er neste steg. Ved hjelp av skanningsverktøy, som automatiske sårbarhetsskannere og nettverkskartleggere, kan man forstå hvordan målsystemet reagerer på ulike inntrengninger, åpne porter, nettverkstrafikk osv.

Hovedelementene i denne fasen er skanning og analyse av eiendeler. Verktøy som Nmap kan brukes til å oppdage datatjenester og verter, sende pakker og analysere respons. Ved slutten av dette stadiet vil du ha detaljert informasjon om eiendeler, inkludert operativsystemer, aktive tjenester og åpne porter.

Ved å analysere resultatene, kan man legge grunnlaget for å planlegge en utnyttelse. Man kan kartlegge systemets digitale landskap og lokalisere potensielle angrepspunkter. Statisk og dynamisk analyse kan utføres for å få en klar forståelse av systemets respons på ulike forhold. Statisk analyse undersøker koden til applikasjonene dine før de kjøres, med verktøy som kan brukes for å sømløst skanne kodebaser. Dynamisk analyse evaluerer koden mens applikasjonen kjører. Det er viktig at informasjonen som samles inn her er nøyaktig og korrekt, da dette påvirker suksessen til de påfølgende fasene.

Vurdering / Tilgangsgevinst

På dette stadiet hjelper all informasjon som er samlet inn i de foregående trinnene med å finne sårbarheter og vurdere om de kan utnyttes. Dette trinnet er særlig kraftfullt når det kombineres med de andre prosessene innenfor penetrasjonstesting.

For å evaluere de tilknyttede risikoene ved sårbarhetene som er oppdaget, benytter testerne seg av ulike ressurser, som for eksempel National Vulnerability Database (NVD), som analyserer programvarefølsomheter publisert i Common Vulnerabilities and Exposures (CVEs).

Deretter identifiseres mål og angrepsvektorer kartlegges. Målområder inkluderer verdifulle eiendeler som ansattdata, kundeinformasjon, partner- og leverandørkjeder, leverandører, porter, applikasjoner og protokoller. Webapplikasjonsangrep lanseres, der de vanligste er SQL-injeksjon, skripting på tvers av nettsteder og bakdører. Systemet utnyttes ved å eskalere privilegier, avlytte trafikk og stjele data for å avdekke potensielle skadevirkninger. Testeren jobber innenfor det omfanget som er definert i informasjonsinnhentingsfasen.

Utnyttelse

Også kjent som «vedlikeholdstilgang»-stadiet, vil testeren her sjekke om de identifiserte sårbarhetene kan brukes. Denne fasen innebærer et faktisk brudd og et forsøk på å få tilgang til systemet. Ved hjelp av verktøy som Metasploit simulerer testeren et angrep fra den virkelige verden.

Det er viktig å understreke at testeren er ansvarlig for organisasjonens ressurser i denne fasen, og må sørge for at systemene ikke kompromitteres etter simuleringene.

Metasploit foretrekkes for sin smidighet og effektivitet i å utnytte sårbarheter. Denne fasen måler effekten av et brudd. Testeren kan forsøke å kryptere eller stjele data, samt simulere løsepengevirus og «zero-day»-angrep. Nøkkelen til en vellykket penetrasjonstest er å finne balansen mellom å teste grenser og samtidig opprettholde et systems integritet.

Det er best å engasjere erfarne eksperter for denne fasen, da de kan utnytte sårbarheter som automatiserte verktøy kan gå glipp av. Ved slutten av denne fasen skal testeren ha forsøkt å oppnå høyest mulig tilgang i system- og nettverksinformasjonen ved å identifisere tilgjengelige data. Den etiske hackeren skal også forklare resultatene av utnyttelsen av målene med høy verdi.

Risikoanalyse og Anbefaling, Gjennomgang, Rapportering

Etter utnyttelsesfasen utarbeider testeren en rapport som dokumenterer funnene. Denne rapporten vil danne grunnlaget for utbedring av sårbarhetene som er oppdaget.

En god penetrasjonstestrapport skal være en samling av veldokumenterte sårbarheter, som hjelper organisasjonen med å rette opp sikkerhetsrisikoene. En omfattende rapport vil inneholde alle sårbarheter som er oppdaget, deres CVSS-score, en oppsummering av de tekniske risikoene, en analyse av den potensielle innvirkningen på virksomheten, en detaljert dekning av utnyttelsesproblemer, samt konkrete råd.

Rapporten skal dokumentere alle faser, testmodeller, teknikker som er brukt og de spesifikke målene. Testeren skal også kommentere om testen oppfyller de gjeldende kravene. Til slutt bør rapporten presenteres med en generell forklaring samt en teknisk veiledning.

Etter rapportering og presentasjon er det viktig å rydde opp i systemet. Dette innebærer å tilbakestille systemet til sin opprinnelige tilstand før testingen startet. Oppryddingen omfatter blant annet å fjerne alle kjørbare filer, midlertidige filer og skript fra systemet, slette brukerkontoer som ble opprettet under testingen, og fjerne eventuelle rootkits.

Det siste trinnet er utbedringen, som utføres av organisasjonen. Med utgangspunkt i penetrasjonstestrapporten fokuserer organisasjonen på å rette opp sårbarhetene, analysere de potensielle konsekvensene, informere om beslutninger som må tas og implementere utbedringsstrategier. Dette stadiet tar sikte på å fikse tidligere feil, og det er viktig å utbedre alle utnyttbare sårbarheter innen rimelig tid. Denne fasen kan i noen tilfeller strekke seg over tid, ettersom det er nødvendig med gjentatte tester på oppdateringene som er gjort.

Praktisk Anvendelse av Pen-Tester: En Steg-For-Steg Guide

I dette eksemplet vil vi bruke Metasploit-rammeverket. Du kan tilpasse arbeidsflyten, men her er et forslag til hvordan du kan starte. Først må du installere rammeverket:

For Linux/macOS, bruk kommandoen:

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
  chmod 755 msfinstall && \
  ./msfinstall

For Windows, bruk den nyeste Windows installasjonsfilen. Eventuelt kan du bruke denne Shell-kommandoen:

[CmdletBinding()]
Param(
    $DownloadURL = "https://windows.metasploit.com/metasploitframework-latest.msi",
    $DownloadLocation = "$env:APPDATA/Metasploit",
    $InstallLocation = "C:\Tools",
    $LogLocation = "$DownloadLocation/install.log"
)

If(! (Test-Path $DownloadLocation) ){
    New-Item -Path $DownloadLocation -ItemType Directory
}

If(! (Test-Path $InstallLocation) ){
    New-Item -Path $InstallLocation -ItemType Directory
}

$Installer = "$DownloadLocation/metasploit.msi"

Invoke-WebRequest -UseBasicParsing -Uri $DownloadURL -OutFile $Installer

& $Installer /q /log $LogLocation INSTALLLOCATION="$InstallLocation"

Deretter:

  • Start et prosjekt: Dette vil være din lagringsplass for data og arbeidsområde. Det er viktig å organisere arbeidet, siden ulike avdelinger i organisasjonen kan ha ulike krav. Hvis du for eksempel gjennomfører en penetrasjonstest for IT- og HR-avdelingene, bør du generere separate rapporter.
  • Bildekilde – MetaSploit
  • Hent måldata: Her legger du til data til prosjektet ditt ved hjelp av en oppdagelsesskanning, eller ved å importere eksisterende data. Skann målene for å oppdage åpne porter og identifisere nettverkstjenester. Bruk skannealternativet, og legg til de IP-adressene du ønsker å jobbe med. Du kan også bruke import-alternativet for å hente data fra en lokal fil.
  • Bildekilde – MetaSploit
  • Vis/administrer vertsdata: Du kan vise data fra verts- eller prosjektnivå. Bytt mellom IP-adresser for å få en enkel vertsvisning.
  • Bildekilde – MetaSploit
  • Skann etter sårbarheter: Start en sårbarhetsskanning med Nexpose-alternativene. Dette trinnet bruker sårbarhetsdatabaser for å identifisere eventuelle funn.
  • Utnytt sårbarheter: Du kan utnytte sårbarheter gjennom en sømløs valideringsveiviser. Eventuelt kan du bruke Nexpose.
  • Aktivitet etter utnyttelse: Samle inn data fra utnyttelsen via øktfanen. Klikk på «samle inn».
  • Bildekilde – MetaSploit
  • Rydd opp: Når du er ferdig med å samle inn data, bruk «rydde opp»-alternativet for å avslutte økten og rydde opp i systemet.
  • Generer rapporter: Metasploit tilbyr en rekke rapporter som kan brukes som utgangspunkt for datakonsolidering og resultatkompilering.

En detaljert hurtigstartguide for penetrasjonstester finner du i Metasploits hurtigstartguide.

Vanlige Pen-Test Verktøy

Noen vanlige verktøy inkluderer Sn1per, Metasploit og Commix.

#1. Sn1per

Sn1per er et verktøy for sårbarhetsundersøkelser som brukes til å validere effekten av angrep på klientsiden under hacking-scenarier. Sn1per kan brukes til å simulere fjernangrep og brukerangrep i et kontrollert miljø. Sn1per har 6000 stjerner på GitHub. Verktøyet fungerer også som en mediekanal. Sn1per sparer tid ved å automatisere åpen kildekode og kommersielle verktøy for å finne sårbarheter.

#2. Metasploit

Metasploit er et omfattende rammeverk for penetrasjonstesting, utviklet gjennom samarbeid mellom et åpent kildekode-fellesskap. Med 31.200 stjerner på GitHub er det tydelig at verktøyet vekker stor interesse i programvareverdenen. Metasploit støttes av et nettverk av sikkerhetsentusiaster som ønsker å løse sårbarheter og øke sikkerhetsbevisstheten.

#3. Commix

Commix er et effektivt verktøy for å utnytte OS kommandoinjeksjon. Commix spesialiserer seg på sårbarheter knyttet til kommandoinjeksjon og er brukervennlig, gratis og åpen kildekode, kompatibel med flere plattformer, portabel og modulbasert. Verktøyet har 4000 stjerner på GitHub.

Konklusjon

Det er avgjørende for bedrifter å forstå de ulike stadiene i penetrasjonstesting for å forbedre motstandskraften til sine digitale produkter i en tid med økende cyberangrep. Ettersom cyberkriminelle stadig finner nye metoder for å omgå tradisjonelle sikkerhetsløsninger, er simulering av reelle angrep gjennom penetrasjonstesting en effektiv måte å navigere i det stadig utviklende trusselbildet.

Ved å tilpasse penetrasjonstesten til organisasjonens spesifikke behov, kan du sørge for effektivitet i sikkerhetstiltakene. Det å gå gjennom alle stadiene i penetrasjonstesten vil sikre at du får mest mulig ut av investeringene dine i cybersikkerhet.

For å gjennomføre en vellykket penetrasjonstest, er det viktig å starte med å innhente informasjon om testen, og deretter jobbe deg opp til rekognoseringsnivået. Et godt utgangspunkt for rekognoseringen er å definere omfanget og målene for testen. Skann deretter systemet for å få en grundig forståelse av det og identifisere sårbarheter. Deretter starter du et simulert angrep samtidig som du sørger for ikke å skade systemet. Til slutt genererer du en rapport som skal gi veiledning for utbedringstiltak. Husk å rydde opp og gjenopprette systemet til sin opprinnelige tilstand.

Korrekt gjennomførte penetrasjonstester forbedrer organisasjonens sikkerhet ved å identifisere og utbedre sårbarheter. I en tid der mange organisasjoner migrerer til skyen og omfavner ny teknologi, blir penetrasjonstester stadig viktigere innen informasjonssikkerhet. Faktisk viser undersøkelser at 75 % av bedrifter benytter seg av penetrasjonstester for å undersøke sikkerhetsstatus eller for å overholde gjeldende regler. Hvis du sørger for å legge tilstrekkelig vekt på hvert trinn i testen, vil du alltid se verdien av å gjennomføre penetrasjonstester.

Du kan også se på gratis verktøy for penetrasjonstesting (Pentest) for å teste sikkerheten til dine applikasjoner.