Hvad er portscanning?
Porte er en af de vigtigste årsager til, at datapakker kan finde vej til deres ønskede destination. De fungerer som grænseflader mellem computere og systemtjenester eller programmer og anvendes af netværksprotokollerne TCP og UDP. Sammen med IP-adressen kan operativsystemerne dermed finde ud af, hvilken computer og hvilket program de skal sende data til.
Hvad er portscanning? En kort forklaring
Portscanning er en målrettet proces, hvor man ved hjælp af specialværktøjer undersøger, hvilke porte der er åbne i et computersystem. Inden vi går nærmere ind på, hvad portscanning er, kan det være en god idé først at se på, hvad porte er. Porte fungerer som en grænseflade mellem aktive programmer og internettet. De bruges til at videresende indgående og udgående datapakker til de rette programmer og administreres af operativsystemerne.
For at et program kan kommunikere via en port, skal denne være åben. At åbne porte udgør imidlertid en risiko. Hvis et af de programmer, der bruger porten, har sikkerhedsmæssige sårbarheder, kan porten fungere som en potentiel indgang for angribere. For at minimere risikoen for et angreb bør du altid være opmærksom på, hvilke porte der er åbne på dit system, og hvilke programmer der er knyttet til dem.
Du behøver ikke at være logget ind på målsystemet for at kunne udføre en portscanning af det. Du skal blot være forbundet til det via et lokalt netværk eller internettet. Ved hjælp af portscannere kan du sende særlige datapakker som test til forskellige porte. Du modtager derefter svar eller fejlmeddelelser, som det værktøj, du bruger, analyserer. Afhængigt af scanningsprogrammets funktionsomfang kan du få oplysninger om, hvilke porte der er åbne, og hvilke der er lukkede. Du kan også modtage data om, hvilke tjenester og/eller applikationer de respektive porte bruger.
Portscanning giver systemadministratorer et meget effektivt redskab til at overvåge datatrafikken i et netværk. Ved hjælp af portscanning kan potentielle sårbarheder afdækkes, og systemets angrebsflade kan reduceres. I nogle tilfælde kan det hjælpe administratorer med at løse konkrete netværksproblemer. Derudover har værktøjerne ingen mærkbar indflydelse på ydeevnen af de systemer, de scanner. Som følge heraf kan de bruges til sikkerhedsforanstaltninger uden at man behøver at bekymre sig om utilsigtede effekter på systemets ydeevne.
Portscannere er også nyttige til hjemmecomputere. Så snart du begynder at bruge programmer, der kræver en internetforbindelse, åbnes der automatisk porte, medmindre din firewall forhindrer dette. En portscanning kan hjælpe dig med at bevare overblikket og vise dig, hvilke porte der ikke længere er brug for. Du kan derefter lukke dem for at mindske sikkerhedsrisiciene.
Hvordan fungerer portscanning?
Portscannere benytter mange forskellige metoder. De fleste af disse involverer dog den forbindelsesorienterede protokol TCP. For at forstå de grundlæggende processer, der finder sted under en portscanning, er det nyttigt at se nærmere på den generelle struktur i TCP-forbindelser:
- Denne proces, der også kaldes et trevejs-håndtryk, begynder med, at klienten sender en SYN-pakke (synkronisering) til destinationsporten.
- Når pakken når frem til en applikation, modtager klienten en kombineret SYN/ACK-pakke (synkroniser/bekræft), som bekræfter, at forbindelsen er oprettet.
- I det tredje og sidste trin sender klienten en ACK-pakke (bekræftelse), som etablerer forbindelsen, så dataudvekslingen kan begynde.
Hvis der oprettes forbindelse til en lukket port, modtager klienten en RST-pakke (reset) i det andet trin, hvilket afslutter håndtrykket.
Da det ville være vanskeligt og tidskrævende at udveksle data med forskellige typer applikationer, er portscanning begrænset til enkle forsøg på at oprette forbindelser, som de følgende scanningsmetoder viser.
TCP-SYN-scanning
Formålet med en TCP-SYN-scanning er ikke at oprette en fuldstændig TCP-forbindelse. Derfor kaldes denne type scanning ofte en halvåben portscanning. Ved hjælp af portscanneren sender denne metode typiske SYN-pakker til enkelte porte og afventer et svar fra målværten. Hvis værten sender en SYN/ACK-pakke tilbage, indikerer det, at den pågældende port er åben, og at det er muligt at oprette en forbindelse. Hvis svaret er en RST-pakke, betyder det, at porten er lukket. Hvis der ikke kommer noget svar, kan dette sandsynligvis spores tilbage til et pakkefilter (f.eks. en firewall), der er placeret opstrøms.
TCP-SYN-scanninger er ikke synlige for de applikationer, der testes, og genererer derfor ingen logdata. Derfor kaldes de også for »stealth-scanninger«.
TCP-forbindelsesscanning
Hvis du udfører en connect-scanning med din portscanner, genererer og sender du ikke selv datapakken. I stedet bruger du systemkaldet connect. Dette findes på næsten alle operativsystemer. Hvis et forbindelsesforsøg lykkes, betyder det, at porten er åben. Hvis forbindelsesforsøget mislykkes, betyder det, at porten er lukket. Hvis en forbindelse blev oprettet (dvs. en port var åben), vil du kunne se, at denne scanningsteknik blev brugt i applikationens logfiler. Der vil dog ikke blive givet oplysninger om de filtreringsprogrammer, der blev brugt. Hvis du ikke har rettighederne til at sende rå datapakker, kan TCP-connect-scanningen være et nyttigt alternativ til SYN-scanninger.
TCP-FIN-, Xmas- og Null-scanninger
Disse tre metoder til portscanning giver dig også mulighed for at skelne mellem åbne og lukkede porte. Her anvendes to grundlæggende begreber, som er beskrevet i RFC 793:
- Lukkede porte bør altid svare på pakker (så længe det ikke er RST-pakker) med deres egen RST-pakke.
- Åbne porte skal ignorere alle pakker, der ikke er markeret som SYN, RST eller ACK.
Når der scannes efter RCF-kompatible systemer, udnytter disse scanningsmetoder disse principper ved hjælp af deres egne pakker:
- Null-scanningen bruger ingen særlige markeringer.
- Ved FIN-scanninger sender portscanneren FIN-pakker (finish)
- Xmas- scanninger bruger en kombination af FIN-, PSH- (push) og URG-markeringer (urgent), hvilket får pakkerne til at lyse op som et juletræ.
Alle tre scanningsmetoder fungerer på samme måde. I henhold til RCF-reglerne sikrer testpakkerne, at lukkede porte svarer med RST-pakker, og at åbne porte ikke returnerer noget svar. Ikke alle routere sender fejlmeddelelser, hvis en port er filtreret, hvilket kan betyde, at der er tale om en filtreret port, hvis der ikke vises nogen meddelelse (ud over muligheden for, at det kan være en åben port). Og selvom denne metode er langt mere diskret end SYN-scanninger, fungerer den muligvis ikke korrekt, hvis systemerne ikke overholder RFC 793 fuldstændigt. Et fremtrædende eksempel på dette er Windows.
UDP-scanning
Ved UDP-scanninger sendes tomme UDP-headere uden data til alle ledige porte. Hvis en tjeneste svarer med en UDP-pakke, er den pågældende port åben. Modtager portscanneren fejlmeddelelsen »Port unreachable« fra routeren (type 3, kode 3), registrerer den porten som lukket. Andre fejlmeddelelser informerer brugerne om, at det er pakkefiltre, der blokerer portene. Problemet med UDP-porttest er den enorme mængde tid, det kræver. Dette skyldes, at det for mange systemer kan tage lang tid at udsende fejlmeddelelser af sikkerhedsmæssige årsager. Desuden svarer mange af disse systemer kun sporadisk på porte. Linux-kernen begrænser antallet af rapporter pr. sekund, hvilket betyder, at det ville tage omkring 18 timer at scanne 65.535 porte fuldt ud.
Hvilke portscannere findes der?
Der findes mange forskellige scannere, der adskiller sig fra hinanden med hensyn til deres funktionsomfang. De fleste af disse værktøjer er tilgængelige som freeware eller open source -løsninger. Mange af disse indeholder klassiske kommandolinjeprogrammer, der kan bruges via separate grafiske grænseflader. Derudover findes der mange online-løsninger, der giver brugerne mulighed for at scanne porte direkte i en browser. Tjenester som portscanneren fra DNS Tools er begrænsede med hensyn til deres funktioner og tilbyder kun muligheden for at kontrollere individuelle porte. Af denne grund er de velegnede til at udføre hurtige kontroller på personlige computere.
Netcat
Netcat (forkortet: nc) blev udgivet af en anonym udvikler kendt som »Hobbit« i 1996. Programmet blev oprindeligt udviklet til Unix-platforme, men der findes nu mange portede versioner til systemer som Windows samt andre udvidelser som GNU Netcat, OpenBSD Netcat, Cryptcat og Netcat6 (som også understøtter IPv6), der som standard er inkluderet i mange Linux-distributioner. Den grundlæggende version af kommandolinjeværktøjet er primært designet til at sende eller læse data via TCP- og UDP-netværksforbindelser. Det kan dog også bruges til enkle portscanningsopgaver. Dette giver brugerne mulighed for at kontrollere status for port 20 til 30 på et specificeret system med enkle kommandoer som:
nc -zv localhost 20-30bashFor at kontrollere UDP-porte skal du bruge den ekstra parameter*-u*. Du kan også bruge værtsnavnet eller IP-adressen på et eksternt system (hvis du kender den) i stedet for localhost.
Nmap
Et betydeligt mere kraftfuldt værktøj, der er særligt nyttigt til portscanning, er Network Mapper, ofte kaldet Nmap. Nmap er udviklet til Unix-lignende systemer, er licenseret under GPL og har været tilgængeligt til Windows-systemer siden 2000 (dog med visse begrænsninger). Det betyder, at TCP-Connect-scanninger tager uforholdsmæssigt lang tid, og at scanning af ens egne systemporte kun er mulig via indirekte veje. Generelt kan Nmap betjenes via en kommandolinje. Zenmap har derimod en højtydende grafisk brugergrænseflade, der gør det nemt for brugerne at anvende netværksværktøjet.
Nmap-skaberen, Gordon Lyon, og Nmap-udviklerteamet står for den videre udvikling af programmet og dets portscanningsfunktioner. Især teknologier som OS-fingeraftryk (dvs. genkendelse af en målhosts operativsystem) og identifikation af tjenester, der gemmer sig bag porte, gør Nmap til en af de mest populære løsninger inden for portscanning. Nedenstående tabel viser de mange forskellige metoder, som programmet byder på:
| Metoder til portscanning | Nmap-kommando | Beskrivelse |
|---|---|---|
| TCP-forbindelsesscanning | nmap -sT host | Klassisk kontrol for ikke-administratorer |
| TCP Syn-scanning | nmap -sS host | Hurtige, ubemærkede inspektionsmetoder for administratorer. |
| TCP FIN-/XMAS-/Null-scanning | nmap -sF host nmap -sX host nmap -sN host | Metoder, der kan omgå firewalls |
| TCP -ping -scanning | nmap -sP host | Til traditionelle portscanninger; hjælper med at kontrollere en hosts tilgængelighed. |
| TCP ACK-scanning | nmap -sA host | Bestemmer leverede porte, men skelner ikke mellem åbne og lukkede porte |
| TCP-vindues-scanning | nmap -sW host | Svarer til ACK-scanningen; kan verificere nogle åbne og lukkede porte. |
| TCP Maimon-scanning | nmap -sM host | Kombination af FIN- og ACK-scanninger. |
| TCP-idle-scanning | nmap -sI zombie host host | Den mindst synlige, mest komplekse og dermed langsomste scanningsmetode; kører via en tredje computer, der af Nmap betegnes som en ‘zombie’. |
| UDP-scanning | nmap -sU host | Scanningsmetoder til forbindelsesløse UDP-porte |
| SCTP init-scanning | nmap -sY host | Portscanning med SCTP, et alternativ til TCP og UDP |
| IP-protokol-scanning | nmap -sO host | Ingen portscanning; kontrollerer, hvilket IP-baseret protokol der understøttes på målsystemet |
Du kan downloade både Nmap og brugergrænsefladen Zenmap til dit operativsystem på Nmaps officielle hjemmeside. Både den aktuelle (stabile) version og en betaversion (udviklingsversion) er tilgængelige.
Hvorfor portscanning ikke altid er lovligt
Det er ikke altid lovligt at scanne porte. Så snart der gøres forsøg pået exploit (et udtryk, som cybersikkerhedseksperter bruger om udnyttelse af en sikkerhedsfejl eller et sikkerhedshul), kan den person eller gruppe, der står bag, risikere juridiske konsekvenser.
Det er dog mindre klart, hvordan den juridiske situation ser ud, når et computersystem går ned på grund af intensiv portscanning. På grund af det store antal forbindelsesanmodninger kan sådanne overvågningsmetoder udgøre en udfordring for målsystemet, hvilket i nogle tilfælde kan føre til, at systemet går ned. Desuden kan administratorerne af det system, der er målet for angrebet, blive opmærksomme på angribernes aktiviteter inden nedbruddet og tolke handlingerne som de første skridt i et angreb.
I sådanne tilfælde er det vigtigt ikke at udelukke juridiske konsekvenser. Hvis det angrebne system bevidst overbelastes, kan det betragtes som et DDoS-angreb, hvilket kan føre til, at offeret for angrebet vælger at anlægge sag.
Du bør altid sikre dig, at du har tilladelse til at udføre en portscanning på et system, og kun anvende metoden af sikkerhedsmæssige årsager og ikke blot for at tilfredsstille din nysgerrighed. De portscanningsmetoder, der beskrives her, understreger, hvor vigtigt det er at holde øje med dit eget systems porte og netværkscomputere samt de tjenester, der har adgang til dem.