Mitä porttiskannaus on?
Portit ovat yksi tärkeimmistä syistä siihen, että datapaketit löytävät tiensä haluttuun kohteeseen. Ne toimivat rajapintoina tietokoneiden ja järjestelmäpalveluiden tai ohjelmien välillä, ja niitä käyttävät TCP- ja UDP-verkkoprotokollat. IP-osoitteen avulla käyttöjärjestelmät pystyvät selvittämään, mille tietokoneelle ja sovellukselle niiden on tarkoitus lähettää dataa.
Mitä on porttien skannaus? Lyhyt selitys
Porttien skannaus tarkoittaa kohdennettua prosessia, jossa tietokonejärjestelmän avoimia portteja tarkistetaan erityisten työkalujen avulla. Ennen kuin syvennymme siihen, mitä porttien skannaus on, voi olla hyödyllistä tarkastella ensin, mitä portit ovat. Portit toimivat rajapintana aktiivisten ohjelmien ja internetin välillä. Niitä käytetään ohjaamaan saapuvia ja lähteviä datapaketteja oikeille sovelluksille, ja niitä hallinnoivat käyttöjärjestelmät.
Jotta sovellus voi kommunikoida tietyn portin kautta, portti on avattava. Porttien avaaminen aiheuttaa kuitenkin riskin. Jos jollakin porttia käyttävällä sovelluksella on tietoturva-aukkoja, portti voi toimia potentiaalisena hyökkäysreittinä hyökkääjille. Hyökkäysriskin minimoimiseksi sinun tulisi aina olla tietoinen siitä, mitkä portit järjestelmässäsi ovat auki ja mitkä sovellukset niihin liittyvät.
Sinun ei tarvitse olla kirjautuneena kohdejärjestelmään, jotta voit suorittaa siinä porttiskannauksen. Sinun tarvitsee vain olla yhteydessä siihen paikallisverkon tai internetin kautta. Porttiskannerien avulla voit lähettää erityisiä datapaketteja testinä eri portteihin. Saat vastauksia tai virheilmoituksia, jotka käyttämäsi työkalu analysoi. Skannausohjelman toimintojen mukaan saat tietoa siitä, mitkä portit ovat auki ja mitkä kiinni. Saat myös tietoa siitä, mitä palveluita ja/tai sovelluksia kyseiset portit käyttävät.
Porttien skannaus tarjoaa järjestelmänvalvojille erittäin tehokkaan tavan seurata verkon dataliikennettä. Porttien skannauksen avulla voidaan tunnistaa mahdolliset heikkoudet ja pienentää järjestelmän hyökkäyskohteiden määrää. Joissakin tapauksissa se voi auttaa järjestelmänvalvojia ratkaisemaan konkreettisia verkko-ongelmia. Lisäksi työkalut eivät vaikuta merkittävästi skannattavien järjestelmien suorituskykyyn. Näin ollen niitä voidaan käyttää turvallisuustoimenpiteisiin ilman, että tarvitsee huolehtia tahattomista vaikutuksista järjestelmän suorituskykyyn.
Porttiskannerit ovat hyödyllisiä myös kotitietokoneille. Heti kun alat käyttää sovelluksia, jotka vaativat internetyhteyttä, portit avautuvat automaattisesti, ellei palomuuri estä niiden avaamista. Porttiskannaus auttaa sinua pitämään tilanteen hallinnassa ja osoittaa portit, joita ei enää tarvita. Voit sitten sulkea ne turvallisuusriskien vähentämiseksi.
Miten porttien skannaus toimii?
Porttiskannerit tarjoavat monia erilaisia menetelmiä. Suurin osa niistä perustuu kuitenkin yhteyskeskeiseen TCP-protokollaan. Jotta porttiskannauksen aikana tapahtuvia perusprosesseja voi ymmärtää, on hyödyllistä tarkastella TCP-yhteyksien yleistä rakennetta:
- Tämä prosessi, jota kutsutaan myös kolmivaiheiseksi kädenpuristukseksi, alkaa siten, että asiakas lähettää SYN-paketin (synkronointi) kohdeporttiin.
- Kun paketti saavuttaa sovelluksen, asiakas saa yhdistelmäpaketin SYN/ACK (synkronointi/kuittaus), joka vahvistaa, että yhteys on muodostettu.
- Kolmannessa ja viimeisessä vaiheessa asiakas lähettää ACK-paketin (kuittaus), joka vahvistaa yhteyden ja mahdollistaa tiedonsiirron aloittamisen.
Jos yhteysyritys kohdistuu suljettuun porttiin, asiakas vastaanottaa toisessa vaiheessa RST-paketin (nollaus), mikä lopettaa kädenpuristuksen.
Koska tietojen vaihto erilaisten sovellusten kanssa olisi vaikeaa ja aikaa vievää, porttien skannaus rajoittuu yksinkertaisiin yhteydenmuodostusyrityksiin, kuten seuraavat skannausmenetelmät osoittavat.
TCP-SYN-skannaus
TCP-SYN-skannauksen tavoitteena ei ole luoda täydellistä TCP-yhteyttä. Tästä syystä tätä skannausmuotoa kutsutaan yleisesti puoliksi avoimeksi porttiskannaukseksi. Porttiskannerin avulla tämä menetelmä lähettää tavanomaisia SYN-paketteja yksittäisiin portteihin ja odottaa vastausta kohdeisännältä. Jos isäntä lähettää takaisin SYN/ACK-paketin, se osoittaa, että kyseinen portti on auki ja yhteyden muodostaminen on mahdollista. Jos vastaus on RST-paketti, se tarkoittaa, että portti on suljettu. Jos vastausta ei tule, syynä on todennäköisesti ylävirtaan sijoitettu pakettisuodatin (esim. palomuuri).
TCP-SYN-skannaukset eivät näy arvioitaville sovelluksille, minkä vuoksi ne eivät tuota lokitietoja. Tästä syystä niitä kutsutaan myös piilotetuiksi skannauksiksi.
TCP-yhteysskannaus
Kun suoritat yhteysskannauksen porttiskannerillasi, et itse asiassa luo ja lähetä datapakettia itse. Sen sijaan käytät connect-järjestelmäkutsua. Tämä on käytettävissä lähes kaikissa käyttöjärjestelmissä. Jos yhteyden muodostusyritys onnistuu, se tarkoittaa, että portti on auki. Jos yhteyden muodostusyritys epäonnistuu, se tarkoittaa, että portti on kiinni. Jos yhteys muodostettiin onnistuneesti (eli portti oli auki), näet sovelluksen lokitiedostoista, että tätä skannaustekniikkaa on käytetty. Tietoja käytetyistä suodatusohjelmista ei kuitenkaan anneta. Jos sinulla ei ole oikeuksia lähettää raakadatapaketteja, TCP-yhteysskannaus voi olla hyödyllinen vaihtoehto SYN-skannauksille.
TCP-FIN-, Xmas- ja Null-skannaukset
Näiden kolmen porttien skannausmenetelmän avulla voit myös erottaa avoimet ja suljetut portit toisistaan. Tässä käytetään kahta peruskonseptia, jotka on kuvattu RFC 793-standardissa:
- Suljetut portit tulisi aina vastata paketteihin (elleivät ne ole RST-paketteja) omalla RST-paketillaan.
- Avoimien porttien tulisi sivuuttaa kaikki paketit, joita ei ole merkitty SYN-, RST- tai ACK-paketeiksi.
Kun skannataan RCF-yhteensopivia järjestelmiä, nämä skannausmenetelmät hyödyntävät näitä periaatteita omien pakettiensa avulla:
- Null-skannaus ei käytä mitään erityisiä merkintöjä.
- FIN-skannauksissa porttiskanneri lähettää FIN-paketteja (finish)
- Xmas- skannaukset käyttävät yhdistelmää FIN-, PSH- (push) ja URG-merkintöjä (urgent), mikä saa paketit loistamaan kuin joulukuusi.
Kaikki kolme skannausmenetelmää toimivat samalla tavalla. RCF-sääntöjen mukaisesti testipaketit varmistavat, että suljetut portit vastaavat RST-paketeilla ja että avoimet portit eivät anna vastausta. Kaikki reitittimet eivät lähetä virheilmoitusta, jos portti on suodatettu, mikä voi tarkoittaa, että kyseessä on suodatettu portti, jos viestiä ei tule (sen lisäksi, että kyseessä voi olla avoin portti). Vaikka tämä menetelmä on paljon huomaamattomampi kuin SYN-skannaukset, se ei välttämättä toimi oikein, jos järjestelmät eivät noudata täysin RFC 793 -standardia. Tunnettu esimerkki tästä on Windows.
UDP-skannaus
UDP-skannauksissa lähetetään tyhjiä UDP-otsikoita, joissa ei ole dataa, kaikkiin avoimiin portteihin. Jos palvelu vastaa UDP-paketilla, kyseinen portti on auki. Jos porttiskanneri vastaanottaa reitittimeltä virheilmoituksen ”Port unreachable” (tyyppi 3, koodi 3), se tunnistaa portin suljetuksi. Muut virheilmoitukset kertovat käyttäjille, että porttien estämisestä ovat vastuussa pakettisuodattimet. UDP-porttitestauksen ongelmana on sen vaatima valtava määrä aikaa. Tämä johtuu siitä, että monissa järjestelmissä virheilmoitusten lähettäminen voi kestää pitkään turvallisuussyistä. Lisäksi monet näistä järjestelmistä vastaavat portteihin vain satunnaisesti. Linux-ytimen rajoittaa raporttien määrää sekunnissa, mikä tarkoittaa, että 65 535 portin täydellinen skannaus kestäisi noin 18 tuntia.
Mitä porttiskannereita on olemassa?
Tarjolla on monia erilaisia skannereita, jotka eroavat toisistaan tarjoamiensa toimintojen laajuuden suhteen. Suurin osa näistä työkaluista on saatavilla ilmaisohjelmina tai avoimen lähdekoodin sovelluksina. Monet niistä sisältävät perinteisiä komentoriviohjelmia, joita voidaan käyttää erillisten graafisten käyttöliittymien kautta. Lisäksi on olemassa monia verkkopohjaisia ratkaisuja, joiden avulla käyttäjät voivat skannata portteja suoraan selaimessa. DNS Toolsin porttiskannerin kaltaiset palvelut ovat ominaisuuksiltaan rajoitettuja ja tarjoavat vain mahdollisuuden tarkistaa yksittäisiä portteja. Tästä syystä ne sopivat hyvin henkilökohtaisten tietokoneiden pikaisiin tarkistuksiin.
Netcat
Netcat (lyhenne: nc) julkaistiin vuonna 1996 nimimerkillä ”Hobbit” tunnetun nimettömän kehittäjän toimesta. Alun perin Unix-alustoille kehitetty ohjelma on nykyään saatavilla useina versioina esimerkiksi Windows-järjestelmille, ja siitä on olemassa myös laajennuksia, kuten GNU Netcat, OpenBSD Netcat, Cryptcat ja Netcat6 (tukee myös IPv6-protokollaa), jotka sisältyvät oletuksena moniin Linux-jakeluihin. Komentorivityökalun perusversio on suunniteltu ensisijaisesti tietojen lähettämiseen tai lukemiseen TCP- ja UDP-verkkoyhteyksien kautta. Sitä voidaan kuitenkin käyttää myös yksinkertaisiin porttien skannaustehtäviin. Tämän avulla käyttäjät voivat tarkistaa määritetyn järjestelmän porttien 20–30 tilan yksinkertaisilla komennoilla, kuten:
nc -zv localhost 20-30bashUDP-porttien tarkistaminen edellyttää lisäparametria*-u*. Voit myös käyttää ulkoisen järjestelmän isäntänimeä tai IP-osoitetta (jos tiedät sen) localhostin sijaan.
Nmap
Huomattavasti tehokkaampi työkalu, joka on erityisen hyödyllinen porttien skannauksessa, on Network Mapper, jota kutsutaan usein nimellä Nmap. Unix-tyyppisille järjestelmille suunniteltu Nmap on GPL-lisensoitu, ja se on ollut saatavilla Windows-järjestelmille vuodesta 2000 lähtien (tosin rajoituksin). Tämä tarkoittaa, että TCP-yhteyden muodostamiseen perustuvat skannaukset vievät suhteettoman paljon aikaa ja että oman järjestelmän porttien skannaus on mahdollista vain epäsuorien reittien kautta. Yleensä Nmapia voidaan käyttää komentoriviltä. Zenmap puolestaan tarjoaa suorituskykyisen graafisen käyttöliittymän, jonka avulla käyttäjät voivat käyttää verkkotyökalua helposti.
Nmapin luoja Gordon Lyon ja Nmapin kehittäjätiimi vastaavat ohjelman ja sen porttiskannausominaisuuksien jatkokehityksestä. Erityisesti tekniikat kuten käyttöjärjestelmän tunnistus (eli kohdepalvelimen käyttöjärjestelmän tunnistaminen) ja porttien takana piilevien palveluiden lukeminen tekevät Nmapista yhden suosituimmista porttiskannausratkaisuista. Seuraavassa taulukossa esitetään ohjelman tarjoamat monipuoliset menetelmät:
| Porttien skannausmenetelmät | Nmap-komento | Kuvaus |
|---|---|---|
| TCP-yhteysskannaus | nmap -sT isäntä | Perinteinen tarkistus muille kuin järjestelmänvalvojille |
| TCP Syn-skannaus | nmap -sS isäntä | Nopeat, huomaamattomat tarkastusmenetelmät järjestelmänvalvojille. |
| TCP FIN-/XMAS-/Null-skannaus | nmap -sF isäntä nmap -sX isäntä nmap -sN isäntä | Menetelmät, joilla voidaan kiertää palomuurit |
| TCP -ping -skannaus | nmap -sP host | Perinteisiin porttiskannauksiin; auttaa tarkistamaan isännän saatavuuden. |
| TCP ACK-skannaus | nmap -sA host | Määrittää toimitetut portit, mutta ei erota avoimia ja suljettuja portteja toisistaan |
| TCP-ikkunaskan | nmap -sW isäntä | Vastaava kuin ACK-skannaus; pystyy tunnistamaan joitakin avoimia ja suljettuja portteja. |
| TCP Maimon-skannaus | nmap -sM host | FIN- ja ACK-skannausten yhdistelmä. |
| TCP-lepotilaskannaus | nmap -sI zombie host host | Huomaamattomin, monimutkaisin ja siten hitain skannausmenetelmä; suoritetaan kolmannen tietokoneen kautta, jota Nmap kutsuu nimellä ”zombie”. |
| UDP-skannaus | nmap -sU host | Skannausmenetelmät yhteydettömille UDP-porteille |
| SCTP-aloitusskannaus | nmap -sY host | Porttiskannaus SCTP:llä, vaihtoehto TCP:lle ja UDP:lle |
| IP-protokollan skannaus | nmap -sO host | Ei porttiskannausta; tarkistaa, mitä IP-pohjaisia protokollia kohdejärjestelmä tukee |
Voit ladata sekä Nmapin että Zenmap-käyttöliittymän käyttöjärjestelmällesi Nmapin virallisilta verkkosivuilta. Saatavilla on sekä nykyinen (vakaa) versio että beetaversio (kehitysvaiheessa oleva versio).
Miksi porttien skannaus ei ole aina laillista
Porttien tarkistaminen ei ole aina laillista. Heti kun yritetään hyödyntäähaavoittuvuutta (termi, jota kyberturvallisuuden ammattilaiset käyttävät viitatessaan tietoturva-aukon tai -puutteen hyödyntämiseen), tästä vastuussa oleva henkilö tai ryhmä voi joutua kohtaamaan mahdollisia oikeudellisia seuraamuksia.
On kuitenkin epäselvää, mikä on oikeudellinen tilanne, kun tietokonejärjestelmä pysähtyy intensiivisen porttiskannauksen vuoksi. Yhteyspyyntöjen suuren määrän vuoksi tällaiset seurantamenetelmät voivat aiheuttaa haasteita kohdejärjestelmälle, mikä voi toisinaan johtaa järjestelmän kaatumiseen. Lisäksi kohdejärjestelmän ylläpitäjät saattavat havaita hyökkääjän toimet ennen kaatumista ja tulkita ne hyökkäyksen ensimmäisiksi vaiheiksi.
Tällaisissa tapauksissa on tärkeää ottaa huomioon mahdolliset oikeudelliset seuraamukset. Jos kohdejärjestelmää ylikuormitetaan tahallaan, sitä voidaan pitää DDoS-hyökkäyksenä, mikä voi johtaa siihen, että hyökkäyksen kohde ryhtyy oikeustoimiin.
Sinun tulee aina varmistaa, että sinulla on lupa suorittaa porttiskannaus järjestelmässä, ja käyttää tätä menetelmää ainoastaan tietoturvatarkoituksiin, ei pelkästään uteliaisuudesta. Tässä käsitellyt porttiskannausmenetelmät korostavat, kuinka tärkeää on pitää silmällä oman järjestelmän portteja ja verkkoon kytkettyjä tietokoneita sekä niihin yhteyttä käyttäviä palveluita.