Vad är portskanning?
Portar är en av de viktigaste anledningarna till att datapaket kan hitta vägen till sin önskade destination. De fungerar som gränssnitt mellan datorer och systemtjänster eller program och används av nätverksprotokollen TCP och UDP. Tillsammans med IP-adressen kan operativsystemen ta reda på vilken dator och applikation de ska skicka data till.
Vad är portskanning? En kort förklaring
Portskanning avser den riktade processen att kontrollera öppna portar i ett datorsystem med hjälp av specialverktyg. Innan vi går in på vad portskanning är, kan det vara bra att först ta en titt på vad portar är. Portar fungerar som ett gränssnitt mellan aktiva program och internet. De används för att dirigera inkommande och utgående datapaket till rätt applikationer och hanteras av operativsystem.
För att en applikation ska kunna kommunicera via en port måste den vara öppen. Att öppna portar medför dock en risk. Om någon av de applikationer som använder porten har säkerhetsbrister kan porten fungera som en potentiell ingångspunkt för angripare. För att minimera risken för angrepp bör du alltid vara medveten om vilka portar som är öppna på ditt system och vilka applikationer som är kopplade till dem.
Du behöver inte vara inloggad på målsystemet för att kunna utföra en portskanning på det. Du behöver bara vara ansluten till det via ett lokalt nätverk eller internet. Med hjälp av portskannrar kan du skicka speciella datapaket som tester till olika portar. Du får då svar eller felmeddelanden som analyseras av det verktyg du använder. Beroende på skanningsprogrammets funktionsomfång kan du få information om vilka portar som är öppna och vilka som är stängda. Du kan också få data om vilka tjänster och/eller applikationer respektive portar använder.
Portskanning erbjuder systemadministratörer ett mycket effektivt sätt att övervaka datatrafiken i ett nätverk. Med portskanning kan potentiella svagheter filtreras bort och systemets attackyta minskas. I vissa fall kan det hjälpa administratörer att lösa konkreta nätverksproblem. Dessutom har verktygen ingen märkbar inverkan på prestandan hos de system de skannar. Det innebär att de kan användas för säkerhetsåtgärder utan att man behöver oroa sig för oönskade effekter på systemets prestanda.
Portskannrar är också användbara för hemdatorer. Så snart du börjar använda program som kräver internetanslutning öppnas portarna automatiskt, såvida inte din brandvägg förhindrar detta. En portskanning kan hjälpa dig att hålla koll på läget och visa vilka portar som inte längre behövs. Du kan sedan stänga dem för att minska säkerhetsriskerna.
Hur fungerar portskanning?
Portskannrar erbjuder många olika metoder. De flesta av dessa involverar dock det anslutningsorienterade protokollet TCP. För att förstå de grundläggande processerna som sker under portskanning är det bra att titta på den allmänna strukturen för TCP-anslutningar:
- Denna process, som även kallas trevägshandskakning, inleds med att klienten skickar ett SYN-paket (synkronisering) till destinationsporten.
- När paketet når en applikation får klienten ett kombinerat SYN/ACK-paket (synkronisering/bekräftelse), som bekräftar att anslutningen har upprättats.
- I det tredje och sista steget skickar klienten ett ACK-paket (bekräftelse), vilket upprättar anslutningen och gör det möjligt att påbörja datautbytet.
Om en stängd port kontaktas kommer klienten att få ett RST-paket (återställning) under det andra steget, vilket avslutar handskakningen.
Eftersom det skulle vara svårt och tidskrävande att utbyta data med olika typer av applikationer, är portskanning begränsad till enkla försök att upprätta anslutningar, vilket följande skanningsmetoder visar.
TCP-SYN-skanning
Målet med en TCP-SYN-skanning är inte att upprätta en fullständig TCP-anslutning. Det är därför denna typ av skanning ofta kallas för en halvöppen portskanning. Med hjälp av portskannern skickar denna metod typiska SYN-paket till enskilda portar och väntar på ett svar från målvärden. Om värden skickar tillbaka ett SYN/ACK-paket signalerar det att respektive port är öppen och att det är möjligt att upprätta en anslutning. Om svaret är ett RST-paket betyder det att porten är stängd. Om det inte kommer något svar kan detta troligen spåras tillbaka till ett paketfilter (t.ex. en brandvägg) som finns uppströms.
TCP-SYN-skanningar är inte synliga för de applikationer som utvärderas och genererar därför inga loggdata. Det är därför de också kallas stealth-skanningar.
TCP-anslutningsskanning
Om du utför en anslutningsskanning med din portskanner genererar och skickar du inte själva datapaketet. Istället använder du systemanropet connect. Detta finns tillgängligt på nästan alla operativsystem. Om ett anslutningsförsök lyckas betyder det att porten är öppen. Om anslutningsförsöket misslyckas betyder det att porten är stängd. Om en anslutning lyckades (dvs. en port var öppen) kan du se att denna skanningsteknik användes i applikationens loggfiler. Information om vilka filtreringsprogram som användes kommer dock inte att tillhandahållas. Om du inte har rättigheter att skicka rådatapaket kan TCP-anslutningsskanning vara ett användbart alternativ till SYN-skanningar.
TCP-FIN-, Xmas- och Null-skanningar
Dessa tre metoder för portskanning gör det också möjligt att skilja mellan öppna och stängda portar. Här används två grundläggande begrepp, som dokumenteras i RFC 793:
- Stängda portar ska alltid svara på paket (så länge de inte är RST-paket) med sitt eget RST-paket.
- Öppna portar ska ignorera alla paket som inte är markerade som SYN, RST eller ACK.
Vid skanning av RCF-kompatibla system utnyttjar dessa skanningsmetoder dessa principer med hjälp av sina egna paket:
- Null-skanningen använder inga speciella markeringar.
- Vid FIN-skanningar skickar portskannern FIN-paket (finish).
- Xmas -skanningar använder en kombination av FIN-, PSH- (push) och URG-markeringar (urgent), vilket får paketen att lysa upp som en julgran.
Alla tre skanningsmetoderna fungerar på samma sätt. På grund av RCF-reglerna säkerställer testpaketen att stängda portar svarar med RST-paket och att öppna portar inte ger något svar. Alla routrar skickar inte felmeddelanden om en port filtreras, vilket kan innebära att en filtrerad port är inblandad om inget meddelande visas (förutom möjligheten att det kan vara en öppen port). Och även om denna metod är mycket mer diskret än SYN-skanningar, kanske den inte fungerar korrekt om systemen inte följer RFC 793 till punkt och pricka. Ett tydligt exempel på detta är Windows.
UDP-skanning
Vid UPD-skanningar skickas tomma UDP-rubriker utan data till alla tomma portar. Om en tjänst svarar med ett UDP-paket är motsvarande port öppen. Om portskannern får felmeddelandet ”Port unreachable” från routern (typ 3, kod 3) identifierar den porten som stängd. Andra felmeddelanden informerar användarna om att paketfilter är ansvariga för att blockera portar. Problemet med UDP-porttestning är den enorma tid det tar. Detta beror på att det för många system kan ta lång tid att skicka ut felmeddelanden av säkerhetsskäl. Dessutom svarar många av dessa system endast sporadiskt på portar. Linux-kärnan begränsar antalet rapporter per sekund, vilket innebär att det skulle ta cirka 18 timmar att skanna 65 535 portar fullständigt.
Vilka portskannrar finns det?
Det finns många olika skannrar som skiljer sig åt i fråga om vilka funktioner de erbjuder. De flesta av dessa verktyg finns tillgängliga som freeware eller open source -alternativ. Många av dessa har klassiska kommandoradsprogram som kan användas via separata grafiska gränssnitt. Dessutom finns det många online-lösningar som låter användare skanna portar direkt i en webbläsare. Tjänster som portskannern från DNS Tools är begränsade i fråga om funktioner och erbjuder endast möjligheten att kontrollera enskilda portar. Av denna anledning är de väl lämpade alternativ för att utföra snabba kontroller på persondatorer.
Netcat
Netcat (förkortat: nc) publicerades 1996 av en anonym utvecklare som kallade sig ”Hobbit”. Programmet skrevs ursprungligen för Unix-plattformar, men finns nu i många portade versioner för system som Windows samt andra tillägg som GNU Netcat, OpenBSD Netcat, Cryptcat och Netcat6 (som även stöder IPv6), vilka ingår som standard i många Linux-distributioner. Den grundläggande versionen av kommandoradsverktyget är främst utformat för att skicka eller läsa data via TCP- och UDP-nätverksanslutningar. Det kan dock också användas för enkla portskanningsuppgifter. Detta gör det möjligt för användare att kontrollera statusen för portarna 20 till 30 på ett specifikt system med enkla kommandon som:
nc -zv localhost 20-30bashFör att kontrollera UDP-portar krävs den extra parametern*-u*. Du kan också använda värdnamnet eller IP-adressen för ett externt system (om du känner till det) istället för localhost.
Nmap
Ett betydligt kraftfullare verktyg, som är särskilt användbart för portskanning, är Network Mapper, ofta kallat Nmap. Nmap är utformat för Unix-liknande system, har GPL-licens och har funnits tillgängligt för Windows-system sedan 2000 (dock med begränsningar). Detta innebär att TCP Connect-skanningar tar oproportionerligt lång tid och att skanning av egna systemporter endast är möjlig med indirekta sökvägar. I allmänhet kan Nmap köras via en kommandorad. Zenmap, å andra sidan, har ett högpresterande grafiskt gränssnitt som gör det enkelt för användarna att använda nätverksverktyget.
Nmap-skaparen Gordon Lyon och Nmap-utvecklingsteamet ansvarar för vidareutvecklingen av programmet och dess portskanningsfunktioner. I synnerhet tekniker som OS-fingeravtryck (dvs. att identifiera målvärdens operativsystem) och avläsning av tjänster som döljer sig bakom portar gör Nmap till en av de mest populära portskanningslösningarna. Följande tabell visar de olika metoder som programmet erbjuder:
| Metoder för portskanning | Nmap-kommando | Beskrivning |
|---|---|---|
| TCP-anslutningsskanning | nmap -sT värd | Klassisk kontroll för icke-administratörer |
| TCP Syn-skanning | nmap -sS värd | Snabba, obemärkta inspektionsmetoder för administratörer. |
| TCP FIN-/XMAS-/Null-skanning | nmap -sF värd nmap -sX värd nmap -sN värd | Metoder som kan kringgå brandväggar |
| TCP ping -skanning | nmap -sP värd | För traditionella portskanningar; hjälper till att kontrollera tillgängligheten för en värd. |
| TCP ACK-skanning | nmap -sA värd | Fastställer levererade portar men gör ingen åtskillnad mellan öppna och stängda portar. |
| TCP-fönsterskanning | nmap -sW värd | Jämförbar med ACK-skanning; kan verifiera vissa öppna och stängda portar. |
| TCP Maimon-skanning | nmap -sM värd | Kombination av FIN- och ACK-skanningar. |
| TCP-idle-skanning | nmap -sI zombie värd värd | Minst märkbar, mest komplex och därmed långsammaste skanningsmetod; körs via en tredje dator som märks som en “zombie” av Nmap. |
| UDP-skanning | nmap -sU värd | Skanningsmetoder för anslutningslösa UDP-portar |
| SCTP init-skanning | nmap -sY värd | Portskanning med SCTP, ett alternativ till TCP och UDP |
| IP-protokollskanning | nmap -sO värd | Ingen portskanning; kontrollerar vilket IP-baserat protokoll som stöds på målsystemet |
Du kan ladda ner både Nmap och gränssnittet Zenmap för ditt operativsystem på Nmaps officiella webbplats. Både den aktuella (stabila) versionen och en betaversion (utvecklingsversion) finns tillgängliga.
Varför portskanning inte alltid är lagligt
Det är inte alltid lagligt att kontrollera portar. Så snart ett försök tillexploit (ett begrepp som används av cybersäkerhetsexperter för att beskriva utnyttjande av en säkerhetsbrist eller lucka) görs, kan den person eller grupp som är ansvarig för detta drabbas av potentiella rättsliga konsekvenser.
Det är dock mindre tydligt hur den rättsliga situationen ser ut när ett datorsystem stoppas på grund av intensiv portskanning. På grund av den höga frekvensen av anslutningsförfrågningar kan sådana övervakningsmetoder utgöra en utmaning för målsystemet, vilket ibland kan leda till att systemet kraschar. Dessutom kan administratörer av det system som är målet för attacken upptäcka angriparnas aktiviteter innan kraschen och tolka åtgärderna som de första stegen i en attack.
I sådana fall är det viktigt att inte utesluta rättsliga konsekvenser. Om det angripna systemet överbelastas avsiktligt kan det betraktas som en DDoS-attack, vilket kan leda till att offret för attacken vidtar rättsliga åtgärder.
Du bör alltid se till att du har behörighet att utföra en portskanning på ett system och endast använda tekniken för säkerhetsändamål och inte bara för att tillfredsställa din nyfikenhet. De portskanningsmetoder som diskuteras här belyser hur viktigt det är att hålla ett öga på ditt eget systems portar och nätverksdatorer samt de tjänster som har åtkomst till dem.