Hva er portskanning?
Porter er en av hovedårsakene til at datapakker finner veien til ønsket destinasjon. De fungerer som grensesnitt mellom datamaskiner og systemtjenester eller programmer, og brukes av nettverksprotokollene TCP og UDP. Sammen med IP-adressen kan operativsystemene finne ut hvilken datamaskin og hvilket program de skal sende data til.
Hva er portskanning? En kort forklaring
Portskanning er en målrettet prosess der man sjekker hvilke porter som er åpne i et datasystem ved hjelp av spesialverktøy. Før vi går nærmere inn på hva portskanning er, kan det være nyttig å først se på hva porter er. Porter fungerer som et grensesnitt mellom aktive programmer og internett. De brukes til å videresende innkommende og utgående datapakker til de riktige programmene, og administreres av operativsystemene.
For at et program skal kunne kommunisere via en port, må den være åpen. Å åpne porter medfører imidlertid en risiko. Hvis et av programmene som bruker porten har sikkerhetshull, kan porten fungere som et potensielt inngangspunkt for angripere. For å minimere risikoen for angrep bør du alltid ha oversikt over hvilke porter som er åpne på systemet ditt, og hvilke programmer som er knyttet til dem.
Du trenger ikke å være logget inn på målsystemet for å utføre en portskanning på det. Du må bare være koblet til det via et lokalt nettverk eller internett. Ved hjelp av portskannere kan du sende spesielle datapakker som tester til ulike porter. Du vil da motta svar eller feilmeldinger, som verktøyet du bruker vil analysere. Avhengig av skanningsprogrammets funksjonsomfang kan du få informasjon om hvilke porter som er åpne og hvilke som er lukkede. Du kan også motta data om hvilke tjenester og/eller applikasjoner de respektive portene bruker.
Portskanning gir systemadministratorer et svært effektivt verktøy for å overvåke datatrafikken i et nettverk. Ved hjelp av portskanning kan potensielle sårbarheter oppdages, og systemets angrepsflate kan reduseres. I noen tilfeller kan det hjelpe administratorer med å løse konkrete nettverksproblemer. I tillegg har verktøyene ingen merkbar innvirkning på ytelsen til systemene de skanner. Som et resultat kan de brukes til sikkerhetstiltak uten at man trenger å bekymre seg for utilsiktede effekter på systemets ytelse.
Portskannere er også nyttige for hjemme-PC-er. Så snart du begynner å bruke programmer som krever internettforbindelse, åpnes det automatisk porter, med mindre brannmuren din hindrer dette. En portskanning kan hjelpe deg med å holde oversikten og vise deg hvilke porter som ikke lenger er nødvendige. Du kan deretter lukke dem for å redusere sikkerhetsrisikoen.
Hvordan fungerer portskanning?
Portskannere benytter mange ulike metoder. De fleste av disse innebærer imidlertid det tilkoblingsorienterte protokollen TCP. For å forstå de grunnleggende prosessene som foregår under portskanning, er det nyttig å se nærmere på den generelle strukturen til TCP-tilkoblinger:
- Denne prosessen, også kjent som et treveis håndtrykk, starter med at klienten sender en SYN-pakke (synkronisering) til målporten.
- Når pakken når en applikasjon, mottar klienten en kombinert SYN/ACK-pakke (synkroniser/bekreft), som bekrefter at forbindelsen er opprettet.
- I det tredje og siste trinnet sender klienten en ACK-pakke (bekreftelse), som etablerer forbindelsen og gjør det mulig å starte datautvekslingen.
Hvis det oppstår kontakt med en lukket port, vil klienten motta en RST-pakke (reset) i løpet av det andre trinnet, noe som avslutter håndtrykket.
Siden det ville være vanskelig og tidkrevende å utveksle data med ulike typer applikasjoner, er portskanning begrenset til enkle forsøk på å opprette forbindelser, slik de følgende skanningsmetodene viser.
TCP-SYN-skanning
Målet med en TCP-SYN-skanning er ikke å opprette en fullstendig TCP-forbindelse. Derfor kalles denne typen skanning ofte en halvåpen portskanning. Ved hjelp av portskanneren sender denne metoden typiske SYN-pakker til enkelte porter og venter på et svar fra målværten. Hvis verten sender en SYN/ACK-pakke tilbake, indikerer dette at den aktuelle porten er åpen, og at det er mulig å opprette en forbindelse. Hvis svaret er en RST-pakke, betyr det at porten er lukket. Hvis det ikke kommer noe svar, kan dette sannsynligvis spores tilbake til et pakkefilter (f.eks. en brannmur) som befinner seg oppstrøms.
TCP-SYN-skanninger er ikke synlige for applikasjonene som blir vurdert, og genererer derfor ingen loggdata. Det er derfor de også kalles «stealth-skanninger».
TCP-tilkoblingsskanning
Hvis du utfører en «connect»-skanning med portskanneren din, er det ikke du selv som genererer og sender datapakken. I stedet bruker du systemkallet «connect». Dette er tilgjengelig på nesten alle operativsystemer. Hvis et tilkoblingsforsøk lykkes, betyr det at porten er åpen. Hvis tilkoblingsforsøket mislykkes, betyr det at porten er lukket. Hvis en tilkobling ble opprettet (dvs. en port var åpen), vil du kunne se at denne skanningsteknikken ble brukt i loggfilene til applikasjonen. Informasjon om filtreringsprogrammer som ble brukt, vil imidlertid ikke bli gitt. Hvis du ikke har rettigheter til å sende rå datapakker, kan TCP-tilkoblingsskanningen være et nyttig alternativ til SYN-skanninger.
TCP-FIN-, Xmas- og Null-skanninger
Disse tre metodene for portskanning gjør det også mulig å skille mellom åpne og lukkede porter. Her benyttes to grunnleggende konsepter, som er beskrevet i RFC 793:
- Lukkede porter bør alltid svare på pakker (så lenge det ikke er RST-pakker) med sin egen RST-pakke.
- Åpne porter bør ignorere alle pakker som ikke er merket som SYN, RST eller ACK.
Ved skanning av RCF-kompatible systemer utnytter disse skanningsmetodene disse prinsippene ved hjelp av egne pakker:
- Null-skanningen bruker ingen spesielle markeringer.
- Ved FIN-skanninger sender portskanneren FIN-pakker (finish)
- Xmas -skanninger bruker en kombinasjon av FIN-, PSH- (push) og URG-markeringer (urgent), noe som får pakkene til å lyse opp som et juletre.
Alle tre skanningsmetodene fungerer på samme måte. I henhold til RFC-reglene sørger testpakkene for at lukkede porter svarer med RST-pakker, mens åpne porter ikke gir noe svar. Ikke alle rutere sender feilmeldinger hvis en port er filtrert, noe som kan tyde på at det er en filtrert port hvis det ikke vises noen melding (i tillegg til muligheten for at det kan være en åpen port). Og selv om denne metoden er mye mer diskret enn SYN-skanninger, fungerer den kanskje ikke riktig hvis systemene ikke følger RFC 793 helt nøyaktig. Et godt eksempel på dette er Windows.
UDP-skanning
Ved UDP-skanning sendes tomme UDP-overskrifter uten data til alle ledige porter. Hvis en tjeneste svarer med en UDP-pakke, er den aktuelle porten åpen. Hvis portskanneren mottar feilmeldingen «Port unreachable» fra ruteren (type 3, kode 3), registrerer den porten som lukket. Andre feilmeldinger brukes til å informere brukerne om at det er pakkefiltre som blokkerer portene. Problemet med UDP-porttesting er den enorme mengden tid det krever. Dette skyldes at det for mange systemer kan ta lang tid å sende ut feilmeldinger av sikkerhetsmessige årsaker. Dessuten svarer mange av disse systemene bare sporadisk på porter. Linux-kjernen begrenser antall rapporter per sekund, noe som betyr at det vil ta rundt 18 timer å skanne 65 535 porter fullstendig.
Hvilke portskannere finnes det?
Det finnes mange ulike skannere som varierer i funksjonalitet. De fleste av disse verktøyene er tilgjengelige som gratisprogrammer eller åpen kildekode. Mange av disse har klassiske kommandolinjeprogrammer som kan brukes via separate grafiske grensesnitt. I tillegg finnes det mange nettbaserte løsninger som lar brukerne skanne porter direkte i en nettleser. Tjenester som portskanneren fra DNS Tools har begrensede funksjoner og tilbyr kun muligheten til å sjekke enkeltporter. Av denne grunn er de godt egnet for å utføre raske sjekker på personlige datamaskiner.
Netcat
Netcat (forkortet: nc) ble utgitt av en anonym utvikler kjent som «Hobbit» i 1996. Programmet ble opprinnelig utviklet for Unix-plattformer, men det finnes nå mange porteringer for systemer som Windows, samt andre utvidelser som GNU Netcat, OpenBSD Netcat, Cryptcat og Netcat6 (som også støtter IPv6), som er inkludert som standard i mange Linux-distribusjoner. Den grunnleggende versjonen av kommandolinjeverktøyet er primært designet for å sende eller lese data via TCP- og UDP-nettverkstilkoblinger. Det kan imidlertid også brukes til enkle portskanningsoppgaver. Dette lar brukerne sjekke statusen til portene 20 til 30 på et spesifisert system med enkle kommandoer som:
nc -zv localhost 20-30bashFor å sjekke UDP-porter må du bruke tilleggsparameteren*-u*. Du kan også bruke vertsnavnet eller IP-adressen til et eksternt system (hvis du kjenner den) i stedet for localhost.
Nmap
Et betydelig kraftigere verktøy, som er spesielt nyttig for portskanning, er Network Mapper, ofte kalt Nmap. Nmap er utviklet for Unix-lignende systemer, er lisensiert under GPL og har vært tilgjengelig for Windows-systemer siden 2000 (om enn med visse begrensninger). Dette innebærer at TCP-Connect-skanninger tar uforholdsmessig lang tid, og at skanning av egne systemporter kun er mulig via indirekte veier. Generelt kan Nmap betjenes via en kommandolinje. Zenmap har derimot et kraftig grafisk grensesnitt som gjør det enkelt for brukerne å bruke nettverksverktøyet.
Nmap-skaperen, Gordon Lyon, og Nmap-utviklerteamet står for videreutviklingen av programmet og dets funksjoner for portskanning. Spesielt teknologier som OS-fingeravtrykk (dvs. gjenkjenning av operativsystemet på en målvert) og identifisering av tjenester som skjuler seg bak porter, gjør Nmap til en av de mest populære løsningene for portskanning. Tabellen nedenfor viser de ulike metodene programmet har å tilby:
| Metoder for portskanning | Nmap-kommando | Beskrivelse |
|---|---|---|
| TCP-tilkoblingsskanning | nmap -sT vert | Klassisk sjekk for ikke-administratorer |
| TCP Syn-skanning | nmap -sS vert | Raske, ubemerkede inspeksjonsmetoder for administratorer. |
| TCP FIN-/XMAS-/Null-skanning | nmap -sF vert nmap -sX vert nmap -sN vert | Metoder som kan omgå brannmurer |
| TCP -ping -skanning | nmap -sP vert | For tradisjonelle portskanninger; hjelper med å sjekke tilgjengeligheten til en vert. |
| TCP ACK-skanning | nmap -sA host | Bestemmer leverte porter, men skiller ikke mellom åpne og lukkede porter |
| TCP-vindusskanning | nmap -sW vert | Sammenlignbar med ACK-skanningen; kan verifisere noen åpne og lukkede porter. |
| TCP Maimon-skanning | nmap -sM vert | Kombinasjon av FIN- og ACK-skanninger. |
| TCP-inaktivitetsskanning | nmap -sI zombie host host | Den minst merkbare, mest komplekse og dermed tregeste skannemetoden; kjøres via en tredje datamaskin som er merket som en «zombie» av Nmap. |
| UDP-skanning | nmap -sU vert | Skannemetoder for tilkoblingsløse UDP-porter |
| SCTP init-skanning | nmap -sY vert | Portskanning med SCTP, et alternativ til TCP og UDP |
| IP-protokollskanning | nmap -sO host | Ingen portskanning; sjekker hvilken IP-basert protokoll som støttes på målsystemet |
Du kan laste ned både Nmap og grensesnittet Zenmap for ditt operativsystem fra Nmaps offisielle nettside. Både den nåværende (stabile) versjonen og en betaversjon (utviklingsversjon) er tilgjengelig.
Hvorfor portskanning ikke alltid er lovlig
Det er ikke alltid lovlig å sjekke porter. Så snart det gjøres et forsøk pået sikkerhetsbrudd (et begrep som brukes av cybersikkerhetseksperter for å beskrive utnyttelse av en sikkerhetsfeil eller et sikkerhetshull), kan den ansvarlige personen eller gruppen risikere rettslige konsekvenser.
Det er imidlertid mindre klart hva den juridiske situasjonen er når et datasystem settes ut av drift på grunn av intensiv portskanning. På grunn av den høye frekvensen av tilkoblingsforespørsler kan slike overvåkingsmetoder utgjøre en utfordring for målsystemet, noe som i noen tilfeller kan føre til at systemet krasjer. Dessuten kan administratorene av det angrepne systemet bli oppmerksomme på angripernes aktiviteter før krasjet og tolke handlingene som de første trinnene i et angrep.
I slike tilfeller er det viktig å ikke utelukke rettslige konsekvenser. Hvis det angrepne systemet overbelastes med vilje, kan dette betraktes som et DDoS-angrep, noe som kan føre til at offeret for angrepet går til rettslige skritt.
Du bør alltid forsikre deg om at du har tillatelse til å utføre en portskanning på et system, og kun bruke denne teknikken av sikkerhetsmessige årsaker, ikke bare for å tilfredsstille din nysgjerrighet. Portskanningsmetodene som omtales her, understreker hvor viktig det er å holde øye med portene og nettverksdatamaskinene i ditt eget system, samt tjenestene som har tilgang til dem.