**Porttiskannaus** (engl. *port scanning*) on toimenpide, jonka avulla pyritään selvittämään tietojärjestelmän eri tietoliikenneporteissa toimivia ohjelmia ja käyttöjärjestelmiä sekä niiden haavoittuvuutta. Tavanomaisesti porttiskannaus suoritetaan käyttäen hyväksi tätä varten tehtyä ohjelmaa, joka voi – käytetystä ohjelmasta riippuen – esimerkiksi palauttaa raportin tiedustelun kohteena olevasta koneesta, sen tietoliikenneporteista, ohjelmistoista ja niiden tiedetyistä tietoturva-aukoista. Porttiskannausta voidaan käyttää esimerkiksi tietojärjestelmän turvallisuusjärjestelyjen selvittämiseen.

Porttiskannausohjelmalla on mahdollista järjestelmällisesti selvittää tietojärjestelmän mahdollisia aukkoja ja sen heikkoja kohtia. Tiedot voivat mahdollistaa myös luvattoman pääsyn kohteena olevaan järjestelmään.

Tekniikoita
-----------

### SYN-skannaus

Niin sanottu puoliavoin tiedustelutekniikka, jossa TCP-yhteyden vaatimaa kolmivaiheista kättelyä ei edes pyritä viemään loppuun, vaan tiedustelun suorittava työasema odottaa vain vastetta tai sen puutetta lähettämäänsä ärsykeeseen. Tarkoitus on siis saada selville kuunteleeko haluttu määränpääasema haluttua porttia. Tiedusteleva työasema lähettää TCP-paketin SYN-valitsin (engl. flags) asetettuna määränpääaseman tutkittavaan porttiin. Jos määränpääasema kuuntelee porttia ja sallii yhteydet siihen sen tulee lähettää takaisin RFC 793:n mukaan paketti, jossa on SYN- ja ACK-valitsimet asetettuina. Jos porttia ei sen sijaan kuunnella tulee siihen vastata RFC 793:n mukaan paketilla, jossa on RESET- ja ACK-valitsimet asetettuina. Jos skannauksen suorittava työasema ei saa mitään vastetta lähettämäänsä ärsykkeeseen tiedetään melko varmasti palomuurin torjuneen paketin tai sitten se on kadonnut matkalla (palomuurit voivat myös hämätä lähettämällä jo aiemmin mainitun RESET/ACK-paketin, jolloin työasema ei voi tietää tässä tapauksessa palomuurin torjuneen skannausta vaan on oletettava tämän tiedon perusteella portin olevan suljettu). Määränpääaseman ollessa tavoittamattomissa yleensä oletusreititin verkossa, jossa määränpääasema sijaitsee tai sijaitsi, vastaa skannaavalle työasemalle ICMP host unreachable -paketilla. Myös suodattava reititin voi estää määränpääaseman portin käytön; tällöin vastauksena saadaan tavallisesti ICMP host unreachable - admin prohibited filter -paketti (riippuen reitittimen suodattimen asetuksista se saattaa auktorisoimattomien tiedustelujen vuoksi hämätä lähettämälläkin ICMP host unreachable -paketin). Riippuen palomuureista ja suodattavista reitittimistä vasteet SYN-skannauksen ärsykkeisiin saattavat siis vaihdella. Nykyään useimmat tunkeutumisenhavaitsemisjärjestelmät (engl. intrusion detection system eli IDS) huomaavat auktorisoimattomat SYN-skannaukset. 

### Connect-skannaus

Ominaisuuksiltaan muuten sama kuin SYN-skannaus mutta tässä tapauksessa TCP-yhteyden vaatima kolmivaiheinen kättely viedäänkin loppuun asti, mikäli sallitaan. Connection-skannaus lisää havaituksi tulemisen riskiä; mieluummin käytetään SYN-skannausta. Connection-skannausta käytetään yleensä olosuhteiden pakosta; esimerkiksi silloin, kun skannauksen suorittavan työaseman järjestelmä ei salli SYN-skannausta.

### FIN-skannaus

Kun aiemmat tunkeutumisenhavaitsemisjärjestelmät kehitettiin havaitsemaan auktorisoimattomat SYN-skannaukset, kehittiin tilalle FIN-skannaus, jossa kohdeaseman porttiin lähetetään TCP-paketti, jossa FIN-valitsin asetettuna (normaalisti FIN ilmaisee jommankumman toisiinsa yhteydessä olevan aseman halusta lopettaa TCP-yhteys, täten palomuurit tai suodattavat reittimet saattavat pitää tätä normaalina liikenteenä eivätkä siten reagoi siihen). Mikäli välissä ei ole suodattavaa reititintä tai palomuuria, kohdeaseman kuuntelevan portin ei tule RFC 793:n mukaan vastata mitään ja mikäli porttia ei kuunnella tulee sen vastata RESET/ACK-paketilla. Suodattavat reitittimet ja palomuurit voivat muuntaa vastauksia FIN-skannauksen ärsykkeeseen.

### ICMP-skannaus

ICMP ei käytä kommunikointiinsa protokollaportteja; ICMP-skannauksen tarkoitus onkin selvittää onko kohdeasema saavutettavissä lähettämällä yleensä kohdeasemaan ICMP echo request -paketti. Kohdeaseman vastaa olemassaolostaan tavallisesti ICMP echo reply -paketilla. Riippuen työasemien välissä olevista palomuureista tai suodattavista reitittimistä vastaukset saattavat kuitenkin vaihdella tai niitä ei saada ollenkaan. Koska ICMP:llä on tietoliikenteessä tärkeä tehtävä muun muassa virhetilanteiden raportoimisessa niin palomuurit tai suodattavat reitittimet usein kuitenkin sallivat ICMP-liikenteen vapaasti lävitseen. Monet haittaohjelmat hyödyntävätkin tätä palomuurien ja suodattavien reititinten ominaisuutta ja saattavat kätkeä käyttämänsä informaation normaalilta näyttävien ICMP-pakettien otsikoihin.

### ACK-skannaus

ACK-skannauksessa kohdeaseman porttiin lähetetään TCP-paketti, jossa on  ACK-valitsin asetettuna. ACK-skannauksen tarkoitus on ICMP-skannauksen tavoin selvittää kohdeaseman saavutettavuus; sekä avointen, että suljettujen porttien tulee palauttaa ärsykkeeseen RESET-valitsimen sisältävä paketti mutta kohteen ollessa saavuttamaton saadaan viimeiseltä oletusreitittimeltä verkossa, jossa kohdeasema sijaitsee tai sijaitsi ICMP virheviesti. Jos ei saada mitään vastausta, voidaan olettaa palomuurin tai suodattavan reitittimen filtteröineen ärsykkeen. Palomuurit ja suodattavat reitittimet, jotka sallivat muodostetut yhteydet sisälle verkkoon tai työasemaan eivät useimmiten suodata ACK-skannausta. 

### Null-skannaus

Null-skannauksessa kohdeaseman porttiin lähetetään TCP-paketti, jossa ei ole yhtään valitsinta asetettuna, ts. valitsintavu on paketissa arvossa 0 eli null. Ärsykkeeseen, jossa ei ole RESET-valitsin asetettuna tulisi suljetun portin vastata RFC 793:n mukaan vastata paketilla, jossa RESET-valitsin on asetettuna. Avoimen portin ei tule vastata mitään. FIN-skannaus perustuu samaan RFC 793:n kohtaan (RESET-valitsin ei asetettuna). Kaikki käyttöjärjestelmät eivät kuitenkaan noudata RFC 793:sta, vaikka se onkin TCP:n virallinen standardi. Täten Null-skannausta käytetään myös osana kohdeaseman käyttöjärjestelmän tunnistusta. Tällainen epätavanomainen ja normaalista liikenteestä poikkeava toiminta (yleensä TCP-paketissa on ainakin yksi valitsin asettuna, yleisimmin ACK) saatetaan kuitenkin havaita palomuureissa ja suodattavissa reittimissä. 

### Xmas-skannaus

Sama periaate kuin Null- ja FIN-skannauksissa mutta ärsykeessä on FIN- PUSH- ja URG-valitsimet asettettuina. URG-valitsin ilmaisee tiedon olevan kiireellisestä eli käytännössä pyyntöä asettaa tieto etusijalle. PUSH-valitsimen tarkoitus on työntää tiedot heti kohdeaseman sovellukselle odottamatta puskurin täyttymistä. PUSH- ja URG-valitsimien olisi siis tarkoitus vähentään skannaukseen kuluvaa aikaa. 

### UDP-skannaus

UDP-skannauksessa kohdeaseman porttiin lähetetään UDP-paketti, johon suljetun portin tulisi vastata ICMP port unreachable tyyppisellä paketilla. Muun tyyppinen ICMP virheviesti kertoo yleensä portin olevan palomuurin tai suodattavan reitittimen filtteröimä. Jos ärsykkeeseen vastataan UDP-paketilla, niin tällöin portti on luonnollisesti avoin. Jos mitään vastausta ei saada saattaa portti olla avoin mutta palomuurin tai suodattavan reitittimen filtteröimä.

### Maimon-skannaus

Saanut nimensä kehittäjänsä Uriel Maimonin mukaan. Kohdeaseman porttiin lähetetään FIN- ja ACK-valitsimilla varustettu paketti. Mikäli palomuurit tai suodattavat reitittimet päästävät ärsykkeen läpi tulee siihen vastata RFC 793:n mukaan RESET-valitsimella varustetulla paketilla olipa portti avoin tai suljettu (ks. ACK-skannaus). Maimon huomasi useiden BSD-pohjaisten järjestelmien toimivan TCP-standardin vastaisesti kyseisen ärsykkeen tapauksessa; ne eivät vastaa laisinkaan, jos portti on avoin. 

### Window-skannaus

Sama kuin ACK-skannaus mutta lisäksi tutkitaan TCP-paketin ikkunan kokoa, josta voidaan selvittää kohdeaseman käyttöjärjestelmä. Jotkin järjestelmät palauttavat toisistaan poikkeavat ikkunan koot suljetuista ja avoimista porteista.

Skannauksen peittäminen
-----------------------

### IP-väärennös

IP-paketin lähdeosoitteen väärentäminen (engl. *IP-spoofing*) on teknisesti suhteellisen helppo toimenpide. Täten skannaava työasema voi peittää identiteetinsä näin toimiessaan. Porttiskannauksen yhteydessä pelkkää väärentämistä ei juurikaan käytetä (ellei haluta esimerkiksi mustamaalata jotain toista järjestelmää); kohdeasema lähettää mahdolliset vastauksensa väärennettyyn osoitteeseen eikä skannaava työnasema näin ollen saa skannauksesta mitään informaatiota, ellei väärennetyn lähdeosoitteen omistava asema ole kohdeaseman hallussa esimerkiksi Troijalaisen hevosen avulla. Jos lisäksi väärennetyn osoitteen asema ei ole toiminnassa, alkaa jokin reititin skannattavan kohdeaseman ja väärennetyn osoitteen väliltä lähettää ICMP host unreachable -virheviestejä, jolloin kohdeaseman tunkeutumisenhavaitsemisjärjestelmän pitäisi normaalisti heti hälyttää poikkeavasta liikenteestä. Yleensä väärennettyä IP-osoitetta kannattaa tutkia; miten se vastaa esimerkiksi eri ärsykkeisiin ja toimia sen pohjalta, ettei väärennös ilmenisi liian helposti. Osoitteen väärentämistä käytetään myös TCP-yhteyden kaappauksessa, esimerkiksi kuuluisa krakkeri Kevin Mitnick käytti tätä tekniikkaa tehokkaasti hyväkseen hyökätessään vuonna 1995 tietoturva-asiantuntija Tsutomu Shimomuran koneeseen.

### Syötit

Toimenpiteessä väärennetään useita eri osoitteita IP-paketteihin mutta johonkin pakettiin laitetaan skannaavan työaseman oma osoite, jolloin skannauksesta haluttu informaatio saadaan takaisin. Kohdeasema ei voi mitenkään oman koneensa liikennettä tutkimalla tietää mistä osoitteesta skannaus todella suoritetaan. 

### Paloittelu

Toimenpiteessä paloitellaan IP-paketit tahallisesti halutusta TCP-otsikon kohdasta ja mahdollisesti vielä päällekkäistämällä pakettien tietoja. Ne palomuurit ja suodattavat reitittimet, jotka eivät kykene pakettien kokoamiseen päästävät todennäköisesti liikenteen lävitseen, koska eivät kykene hahmottamaan TCP-otsikon tietoja paloitelluista paketeista.

Lainsäädäntö
------------

Porttiskannauksen lainmukaisuus voi vaihdella maittain. Suomessa siitä voidaan tuomita tietomurron yrityksenä.

Porttiskannereita
-----------------

* Nmap (Network mapper)
* SuperScan (Arkistoitu – Internet Archive)

### Online Portscanner

* Sygate Online Scan (Arkistoitu – Internet Archive) extended security check (Stealth Scan, Trojan Scan)
* Planet Security Firewall-Check (Arkistoitu – Internet Archive) Fast, extended check, checks currently high-endangered ports
* Crucialtests concise, incl. advisor
* ShieldsUP (Gibson Research Corporation) Quick Scanner, clearly laid out
* DerKeiler's Port Scanner (Arkistoitu – Internet Archive) You can only scan your IP, useful when you are in an internet cafe with many restrictions.
* AuditMyPC Free Port Scanning (Arkistoitu – Internet Archive) Can scan all 65535 ports.

Lähteet
-------

1. ↑  Tietotekniikkarikosten tunnusmerkistöjä Suomen Poliisi. Viitattu 23.1.2012.

Aiheesta muualla
----------------

* Port Numbers (englanniksi)