En portscanner er et softwareværktøj designet til at finde netværksværter , der har de nødvendige porte åbne . Disse programmer bruges almindeligvis af systemadministratorer til at kontrollere sikkerheden på deres netværk og af angribere til at hacke sig ind på netværket. Den kan søge efter en række åbne porte på én vært eller én specifik port på mange værter. Sidstnævnte er karakteristisk for en række netværksormes aktiviteter .
Selve processen kaldes portscanning eller (i tilfælde af, hvor mange værter er kontrolleret) netværksscanning . Portscanning kan være det første trin i en brud- eller brudforebyggelsesproces ved at hjælpe med at identificere potentielle angrebsmål. Ved hjælp af passende værktøjer, ved at sende datapakker og analysere svarene, kan de tjenester, der kører på maskinen ( webserver , FTP-server , mailserver , osv.) undersøges, deres versionsnumre og det anvendte operativsystem kan etableres .
Den mest almindelige protokolstak på internettet i dag er TCP/IP . Hostede tjenester adresseres af to identifikatorer: en IP-adresse og et portnummer . Der er 65536 mulige portnumre. De fleste tjenester bruger et begrænset sæt portnumre (portnummeret er fastsat af IANA , hvis tjenesten bliver betydelig nok [1] ).
Nogle portscannere leder kun efter de mest almindeligt anvendte eller mest sårbare porte på en given vært eller et sæt værter.
Resultatet af en portscanning falder normalt i en af tre kategorier:
Sårbarheder forbundet med åbne porte er opdelt i:
Lukkede porte kan kun udgøre en fare på det andet punkt. Spærrede havne udgør på nuværende tidspunkt ikke en reel fare.
Portscanningsteknikker er baseret på den antagelse, at værten understøtter "Forward Control Protocol" ( ICMP ) defineret i RFC 792 [2] . Selvom dette er sandt i de fleste tilfælde, er det stadig muligt for en vært at svare med mærkelige pakker eller endda generere falske positiver, når den anvendte TCP/IP-stak ikke er RFC-kompatibel eller er blevet ændret.
I nogle tilfælde, før du starter den faktiske scanning, er det nyttigt at kontrollere, om der er et fungerende system på mål-IP-adressen. Dette problem kan løses ved at sende ICMP Echo-meddelelser ved hjælp af ping -værktøjet , sekventere alle netværksadresser eller sende en Echo-meddelelse til en broadcast-adresse.
Ved at analysere trafikken og overvåge de ekko-meddelelser, der sendes til alle noder på kort tid, er det muligt at identificere scanningsforsøg. I stedet for Echo-meddelelser kan TCP -segmenter med kodebit RST bruges , svar på ikke-eksisterende DNS - forespørgsler. Hvis scanneren modtager en ICMP Destination Unreachable-pakke med kode 1 ( host unreachable ) som svar, betyder det, at den testede node er slukket eller ikke er forbundet til netværket.
Det skal huskes, at (i praksis) ikke at modtage et svar på anmodninger ikke garanterer, at værten ikke eksisterer, da mange systemadministratorer af hensyn til "sikkerhed" går til overtrædelse af netværksstandarder.
Denne type scanning er den mest populære. I stedet for at bruge operativsystemets netværksfunktioner, genererer portscanneren selv IP-pakker og overvåger svarene på dem. Denne teknik omtales ofte som halvåben forbindelsesscanning, fordi en fuld TCP/IP-forbindelse aldrig åbnes. Portscanneren genererer en SYN-pakke. Hvis porten på målværten er åben, vil en SYN-ACK-pakke blive sendt fra den. Scannerværten svarer med en RST-pakke og lukker dermed forbindelsen, før forbindelsesetableringsprocessen er afsluttet.
Brugen af selvgenererede netværkspakker har en række fordele, som giver scanningssoftwaren fuld kontrol over de sendte pakker og svar på dem, svarforsinkelser og giver mulighed for detaljerede scanningsresultater.
Meningerne om den potentielle skade på en scannet vært er blandede. På den ene side har SYN-scanning den fordel, at individuelle applikationer aldrig modtager en indgående forbindelse (den afsluttes under installationsfasen), på den anden side kan afsendelse af en RST-pakke under oprettelse af forbindelse forårsage problemer for nogle netværksenheder, især simple dem, såsom netværksprintere .
Denne enklere metode bruger operativsystemets netværksfunktioner og bruges, når en SYN-scanning ikke er mulig af den ene eller anden grund. Operativsystemet, hvis porten er åben, fuldfører proceduren for etablering af tre-trins forbindelse og lukker derefter straks forbindelsen. Ellers returneres en fejlkode. Fordelen ved denne metode er, at den ikke kræver særlige adgangsrettigheder fra brugeren. Brugen af netværksfunktioner i operativsystemet tillader dog ikke kontrol på lavt niveau, så denne type er ikke så udbredt.
Den største ulempe ved denne metode er et stort antal åbne og umiddelbart afsluttede forbindelser, som skaber en belastning på det scannede system og gør det nemt at detektere portscanneraktivitet.
Scanning ved hjælp af UDP- pakker er også muligt, selvom det har en række ejendommeligheder. Der er intet forbindelseskoncept for UDP og intet tilsvarende til TCP SYN-pakken. Men hvis du sender en UDP-pakke til en lukket port, vil systemet svare med en ICMP "port not available"-meddelelse. Fraværet af en sådan besked tolkes som et signal om, at porten er åben. Men hvis porten bliver blokeret af en firewall , vil metoden fejlagtigt angive, at porten er åben. Hvis meddelelser, der ikke kan nås på ICMP-porten, er blokeret, vises alle porte åbne. Der kan også sættes en grænse for hyppigheden af at bruge ICMP-pakker, hvilket også påvirker resultaterne givet af metoden.
En alternativ tilgang er at sende applikationsspecifikke UDP-pakker i forventning om at modtage et svar fra applikationslaget. For eksempel vil afsendelse af en DNS -forespørgsel til port 53 resultere i et svar, hvis der er en DNS-server på den anmodede adresse. Problemet i dette tilfælde er, at der er en tilsvarende "prøve"-pakke for hver af portene. I nogle tilfælde kan en tjeneste være til stede, men konfigureret til ikke at reagere på kendte "probe"-pakker.
En hybrid tilgang er også mulig, der kombinerer begge de ovennævnte metoder. For eksempel kan en scanning starte med at sende en UDP-pakke for at tjekke for et ICMP "port not available"-svar, og derefter kan porte med et tvetydigt "åbent eller blokeret" resultat blive genscannet for applikationsspecifikke svar.
Denne scanning bruges til at afgøre, om en given port filtreres eller ej, og er især effektiv til at detektere tilstedeværelsen af firewalls og finde ud af deres regler. Simpel pakkefiltrering vil tillade pakker med ACK-bit-sættet (brugt til allerede etablerede forbindelser) at passere igennem, mens mere sofistikerede firewalls ikke vil.
Nogle servere er i stand til at spore et SYN-scanningsforsøg på deres porte. For eksempel kan et SYN-scanningsforsøg genkendes ved ankomsten af "falske" SYN-pakker på lukkede porte på den beskyttede server, og hvis flere porte polles, lukker serveren forbindelsen for at beskytte mod scanning.
Scanning med FIN-pakker giver dig mulighed for at omgå sådanne beskyttelser. Ifølge RFC 793 skal en FIN-pakke, der ankommer på en lukket port, besvares af serveren med en RST-pakke. FIN-pakker til åbne porte SKAL ignoreres af serveren. Ved denne forskel bliver det muligt at skelne en lukket port fra en åben.
Ikke alle operativsystemer følger denne RFC 793 - anbefaling . For eksempel er reaktionen af Windows i 95/98/NT-familien på en indkommende FIN-pakke ikke forskellig for en åben og en lukket port.
Og en anden måde er at sende segmenter med FIN (ikke flere data fra afsender), PSH (push funktion), URG (urgent pointer field significant) flag eller endda med et tomt kodebitfelt. Hvis porten er lukket, vil et segment med RST - flaget blive returneret som svar , hvis der ikke er noget svar, så er porten åben (da et sådant segment simpelthen ignoreres).
Scanningshastigheden afhænger af faktorer såsom antallet af kontrollerede porte, tilbøjeligheden af scannede systemer til ICMP-svar, den valgte scanningsmetode, antallet af kontrollerede værter og deres tilbøjelighed til at reagere på anmodninger, samt hvor bekymret den scannende part er med usynligheden af dets aktiviteter. For at forhindre sig selv i at blive opdaget, kan portscanneren strække afsendelsen af beskeder i tid. På den anden side, med et stort antal værter, der kontrolleres, kan de scannes parallelt, så belastningen på hver specifik vært bliver meget lav.
De fleste firewalls kan beskytte mod portscanninger. Firewallen kan åbne alle porte på systemet for at forhindre scanneren i at vise porte. Denne metode virker i de fleste tilfælde, men beskytter ikke mod nye portscanningsteknikker såsom ICMP-portscanning og NULL-scanning.
Nogle internetudbydere implementerer pakkefiltre eller åbne proxyer , der forhindrer udgående portscanningsaktivitet.
Mange internetudbydere forbyder udtrykkeligt brugere at udføre portscanninger. Typisk indgår dette forbud i servicereglerne, som klienten skal acceptere ved tilslutning.
Den Russiske Føderations straffelov indeholder strafferetligt ansvar for følgende forbrydelser [3] :