Kas ir portu skenēšana?
Porti ir viens no galvenajiem iemesliem, kāpēc datu paketes spēj sasniegt savu galamērķi. Tie darbojas kā saskarnes starp datoriem un sistēmas pakalpojumiem vai programmām, un tos izmanto TCP un UDP tīkla protokoli. Kopā ar IP adresi operētājsistēmas spēj noteikt, uz kuru datoru un programmu tām jānosūta dati.
Kas ir portu skenēšana? Īss skaidrojums
Portu skenēšana ir mērķtiecīgs process, kurā ar speciālu rīku palīdzību tiek pārbaudīti atvērtie porti datora sistēmā. Pirms sīkāk izskatīt, kas ir portu skenēšana, varētu būt noderīgi vispirms noskaidrot, kas ir porti. Porti darbojas kā saskarnes starp aktīvām programmām un internetu. Tos izmanto, lai novirzītu ienākošos un izejošos datu paketes uz pareizajām lietojumprogrammām, un tos pārvalda operētājsistēmas.
Lai lietojumprogramma varētu sazināties caur portu, tas ir jāatver. Tomēr portu atvēršana rada risku. Ja kādai no lietojumprogrammām, kas izmanto šo portu, ir drošības ievainojamības, ports var kļūt par potenciālu ieejas punktu uzbrucējiem. Lai samazinātu uzbrukuma risku, vienmēr jāzina, kuri porti jūsu sistēmā ir atvērti un kuras lietojumprogrammas ar tiem ir saistītas.
Lai veiktu portu skenēšanu mērķa sistēmā, nav nepieciešams tajā būt pieteicies. Pietiek ar to, ka esat savienots ar sistēmu caur lokālo tīklu vai internetu. Izmantojot portu skenerus, varat nosūtīt īpašus datu pakešus kā testus uz dažādiem portiem. Tad saņemsiet atbildes vai kļūdu ziņojumus, kurus analizēs izmantotais rīks. Atkarībā no skenēšanas programmas funkciju klāsta varat iegūt informāciju par to, kuri porti ir atvērti un kuri ir aizvērti. Varat saņemt arī datus par to, kurus pakalpojumus un/vai lietojumprogrammas izmanto attiecīgie porti.
Portu skenēšana sistēmu administratoriem piedāvā ļoti efektīvu līdzekli datu plūsmas uzraudzībai tīklā. Ar portu skenēšanas palīdzību var atklāt potenciālos vājos punktus un samazināt sistēmas uzbrukumu risku. Dažos gadījumos tas var palīdzēt administratoriem atrisināt konkrētas tīkla problēmas. Turklāt šiem rīkiem nav jūtamas ietekmes uz to sistēmu veiktspēju, kuras tie skenē. Rezultātā tos var izmantot drošības pasākumiem, nebaidoties par negribētu ietekmi uz sistēmas veiktspēju.
Portu skeneri ir noderīgi arī mājas datoriem. Tiklīdz sākat lietot programmas, kurām nepieciešams interneta savienojums, porti tiek automātiski atvērti, ja vien jūsu ugunsmūris to neaizkavē. Portu skenēšana palīdz saglabāt pārskatu par situāciju, parādot portus, kas vairs nav vajadzīgi. Pēc tam tos var aizvērt, lai samazinātu drošības riskus.
Kā darbojas portu skenēšana?
Portu skeneri piedāvā daudzas dažādas metodes. Tomēr lielākā daļa no tām izmanto savienojumu orientēto protokolu TCP. Lai izprastu pamatprocesus, kas notiek portu skenēšanas laikā, ir lietderīgi iepazīties ar TCP savienojumu vispārējo struktūru:
- Šo procesu, kas pazīstams arī kā trīspusējais savienojuma izveides process, sāk klients, nosūtot SYN paketi (sinhronizācija) uz galamērķa portu.
- Kad pakete sasniedz lietojumprogrammu, klients saņem kombinētu SYN/ACK paketi (sinhronizēt/apstiprināt), kas apstiprina, ka savienojums ir izveidots.
- Trešajā un pēdējā solī klients nosūta ACK paketi (apstiprinājums), kas izveido savienojumu, ļaujot sākt datu apmaiņu.
Ja tiek izveidots savienojums ar aizvērtu portu, klients otrajā posmā saņems RST paketi (atjaunošana), tādējādi pārtraucot savienojuma izveidi.
Tā kā datu apmaiņa ar dažāda veida lietojumprogrammām būtu sarežģīta un laikietilpīga, portu skenēšana aprobežojas ar vienkāršiem mēģinājumiem izveidot savienojumus, kā to parāda turpmāk minētās skenēšanas metodes.
TCP-SYN skenēšana
TCP-SYN skenēšanas mērķis nav izveidot pilnīgu TCP savienojumu. Tāpēc šāda veida skenēšanu parasti dēvē par daļēji atvērtu portu skenēšanu. Izmantojot portu skeneru, šī metode nosūta standarta SYN paketes uz atsevišķiem portiem un gaida atbildi no mērķa datora. Ja dators nosūta atpakaļ SYN/ACK paketi, tas norāda, ka attiecīgais ports ir atvērts un ir iespējams izveidot savienojumu. Ja atbilde ir RST pakete, tas nozīmē, ka ports ir slēgts. Ja atbildes nav, tas, visticamāk, ir saistīts ar paketes filtru (piemēram, ugunsmūri), kas atrodas augšupstrāvas virzienā.
TCP-SYN skenēšanas nav redzamas novērtējamajām lietojumprogrammām, un tādēļ tās nerada nekādus žurnāla datus. Tāpēc tās dēvē arī par „nemanāmām skenēšanām”.
TCP savienojumu skenēšana
Ja ar savu portu skeneri veicat savienojuma skenēšanu, jūs faktiski pats negenerējat un nenosūtāt datu paketi. Tā vietā jūs izmantojat sistēmas izsaukumu „connect“. Tas ir pieejams gandrīz katrā operētājsistēmā. Ja savienojuma izveides mēģinājums ir veiksmīgs, tas nozīmē, ka ports ir atvērts. Ja savienojuma izveides mēģinājums neizdodas, tas nozīmē, ka ports ir slēgts. Ja savienojums tika veiksmīgi izveidots (t. i., ports bija atvērts), jūs varēsiet redzēt, ka šī skenēšanas metode tika izmantota lietojumprogrammas žurnāla failos. Tomēr informācija par izmantotajām filtrēšanas programmām netiks sniegta. Ja jums nav tiesību sūtīt neapstrādātus datu paketes, TCP savienojuma skenēšana var būt noderīga alternatīva SYN skenēšanai.
TCP-FIN, Ziemassvētku un null-skenēšana
Šīs trīs portu skenēšanas metodes ļauj arī atšķirt atvērtos portus no slēgtajiem. Šeit tiek izmantoti divi pamatjēdzieni, kas aprakstīti RFC 793:
- Slēgtie porti vienmēr jāatbild uz pakešiem (ja vien tie nav RST pakeši) ar savu RST pakešu.
- Atvērtie porti nedrīkst reaģēt uz paketi, kas nav marķēta kā SYN, RST vai ACK.
Skenējot RCF standartam atbilstošas sistēmas, šīs skenēšanas metodes izmanto šos principus, lietojot savus paketes:
- Null skenēšanā netiek izmantotas nekādas īpašas atzīmes.
- FIN skenēšanā portu skeneris nosūta FIN (finish) paketes
- Xmas skenēšanā tiek izmantota FIN, PSH (push) un URG (urgent) marķējumu kombinācija, kas liek pakešiem iedegties kā Ziemassvētku eglītei.
Visas trīs skenēšanas metodes darbojas vienādi. Saskaņā ar RFC 793 noteikumiem testa paketes nodrošina, ka slēgtie porti atbild ar RST paketi, bet atvērtie porti nesniedz atbildi. Ne visi maršrutētāji nosūta kļūdas ziņojumus, ja ports ir filtrēts, tāpēc ziņojuma neparādīšanās var liecināt par filtrēta porta klātbūtni (papildus iespējai, ka tas var būt atvērts ports). Un, lai gan šī metode ir daudz diskrētāka nekā SYN skenēšana, tā var nedarboties pareizi, ja sistēmas pilnībā neatbilst RFC 793. Izcils šāda gadījuma piemērs ir Windows.
UDP skenēšana
Veicot UDP skenēšanu, uz visiem neizmantotajiem portiem tiek nosūtīti tukši UDP galvenes bez datiem. Ja pakalpojums atbild ar UDP paketi, attiecīgais ports ir atvērts. Ja portu skeneris no maršrutētāja saņem kļūdas ziņojumu „Port unreachable“ (3. tips, 3. kods), tas atzīst portu par slēgtu. Citi kļūdas ziņojumi informē lietotājus par to, ka portu bloķēšanu izraisa paketes filtri. Problēma ar UDP portu testēšanu ir milzīgais laiks, kas tam nepieciešams. Tas ir tāpēc, ka daudzām sistēmām drošības apsvērumu dēļ kļūdu ziņojumu nosūtīšana var aizņemt ilgu laiku. Turklāt daudzas no šīm sistēmām uz portiem atbild tikai sporādiski. Linux kodols ierobežo ziņojumu skaitu sekundē, kas nozīmē, ka 65 535 portu pilnīgai skenēšanai būtu nepieciešamas aptuveni 18 stundas.
Kādi ir portu skeneri?
Ir daudz dažādu skeneru, kas atšķiras ar piedāvāto funkciju klāstu. Lielākā daļa no šiem rīkiem ir pieejami kā bezmaksas programmatūra vai atvērtā koda risinājumi. Daudzi no tiem ir klasiskas komandrindas programmas, kuras var izmantot ar atsevišķu grafisko interfeisu palīdzību. Turklāt ir daudz tiešsaistes risinājumu, kas ļauj lietotājiem skenēt portus tieši pārlūkprogrammā. Tādiem pakalpojumiem kā DNS rīku portu skeneris ir ierobežotas funkcijas, un tie piedāvā tikai iespēju pārbaudīt atsevišķus portus. Tāpēc tie ir piemēroti, lai veiktu ātrus pārbaudījumus personālajos datoros.
Netcat
Netcat (saīsinājums: nc) 1996. gadā izlaida anonīms izstrādātājs ar segvārdu „Hobbit”. Sākotnēji tas tika izstrādāts Unix platformām, taču tagad ir pieejamas daudzas portēšanas versijas sistēmām, piemēram, Windows, kā arī citi paplašinājumi, piemēram, GNU Netcat, OpenBSD Netcat, Cryptcat un Netcat6 (kas atbalsta arī IPv6), kuri daudzos Linux distributīvos ir iekļauti pēc noklusējuma. Komandrindas rīka pamata versija ir galvenokārt paredzēta datu sūtīšanai vai lasīšanai, izmantojot TCP un UDP tīkla savienojumus. To var izmantot arī vienkāršām portu skenēšanas uzdevumiem. Tas ļauj lietotājiem pārbaudīt portu 20 līdz 30 statusu noteiktā sistēmā, izmantojot vienkāršas komandas, piemēram:
nc -zv localhost 20-30bashLai pārbaudītu UDP portus, ir nepieciešams papildu parametrs*-u*. Vietā „localhost“ varat izmantot arī ārējās sistēmas nosaukumu vai IP adresi (ja tā jums ir zināma).
Nmap
Ievērojami jaudīgāks rīks, kas ir īpaši noderīgs portu skenēšanai, ir Network Mapper, ko bieži sauc par Nmap. Nmap ir izstrādāts Unix tipa sistēmām, tam ir GPL licence, un kopš 2000. gada tas ir pieejams arī Windows sistēmām (lai gan ar ierobežojumiem). Tas nozīmē, ka TCP Connect skenēšana aizņem nesamērīgi daudz laika un ka savas sistēmas portu skenēšana ir iespējama tikai, izmantojot netiešus ceļus. Parasti Nmap var darbināt, izmantojot komandu rindu. Savukārt Zenmap piedāvā augstas veiktspējas grafisko interfeisu, kas ļauj lietotājiem viegli izmantot šo tīkla rīku.
Par programmas un tās portu skenēšanas funkciju tālākās attīstības nodrošināšanu atbild Nmap izveidotājs Gordons Lyon un Nmap izstrādātāju komanda. Jo īpaši tādas tehnoloģijas kā operētājsistēmas identifikācija (t. i., mērķa datora operētājsistēmas atpazīšana) un aiz portiem slēpto pakalpojumu noteikšana padara Nmap par vienu no populārākajiem portu skenēšanas risinājumiem. Turpmākajā tabulā ir parādītas dažādās metodes, ko piedāvā šī programma:
| Portu skenēšanas metodes | Nmap komanda | Apraksts |
|---|---|---|
| TCP savienojuma skenēšana | nmap -sT host | Klasiska pārbaude lietotājiem, kas nav administratori |
| TCP Syn skenēšana | nmap -sS host | Ātrās, nepamanāmās pārbaudes metodes administratoriem. |
| TCP FIN-/XMAS-/Null skenēšana | nmap -sF host nmap -sX host nmap -sN host | Metodes, kas ļauj apiet ugunsmūrus |
| TCP ping skenēšana | nmap -sP host | Tradicionālajai portu skenēšanai; palīdz pārbaudīt uzņēmuma pieejamību. |
| TCP ACK skenēšana | nmap -sA host | Nosaka piegādātos portus, bet nenodrošina atšķirību starp atvērtiem un slēgtiem portiem |
| TCP loga skenēšana | nmap -sW host | Salīdzināms ar ACK skenēšanu; var pārbaudīt dažus atvērtos un slēgtos portus. |
| TCP Maimon skenēšana | nmap -sM host | FIN un ACK skenēšanas kombinācija. |
| TCP neaktīvā skenēšana | nmap -sI zombie host host | Vismazāk pamanāmā, viskomplicētākā un tādējādi lēnākā skenēšanas metode; darbojas caur trešo datoru, kuru Nmap apzīmē kā „zombiju”. |
| UDP skenēšana | nmap -sU host | Skenēšanas metodes bezsavienojuma UDP portiem |
| SCTP sākotnējā skenēšana | nmap -sY host | Portu skenēšana ar SCTP, alternatīva TCP un UDP |
| IP protokola skenēšana | nmap -sO host | Neskenē portus; pārbauda, kurš IP protokols tiek atbalstīts mērķa sistēmā |
Nmap oficiālajā tīmekļa vietnē varat lejupielādēt gan programmu Nmap, gan tās lietotāja saskarni Zenmap savai operētājsistēmai. Pieejama gan pašreizējā (stabilā) versija, gan beta versija (attīstības stadijā).
Kāpēc portu skenēšana ne vienmēr ir likumīga
Portu pārbaudīšana ne vienmēr ir likumīga. Tiklīdz tiek veikts mēģinājums izmantotdrošības ievainojamību (termins, ko kiberdrošības speciālisti lieto, lai apzīmētu darbību, kuras mērķis ir izmantot drošības trūkumu vai nepilnību), par to atbildīgajai personai vai grupai var draudēt iespējamās juridiskās sekas.
Tomēr nav tik skaidrs, kāda ir juridiskā situācija gadījumā, ja datorsistēma tiek bloķēta intensīvas portu skenēšanas dēļ. Sakarā ar biežajiem savienojuma pieprasījumiem šādas uzraudzības metodes var radīt problēmas mērķa sistēmai, dažkārt izraisot sistēmas kļūdu. Turklāt mērķa sistēmas administratori var pamanīt uzbrucēju darbības jau pirms sistēmas kļūdas un interpretēt šīs darbības kā uzbrukuma pirmos soļus.
Šādos gadījumos ir svarīgi neizslēgt juridiskās sekas. Ja mērķa sistēma tiek apzināti pārslodzēta, to var uzskatīt par DDoS uzbrukumu, kā rezultātā uzbrukuma upuris var vērsties tiesā.
Jums vienmēr jāpārliecinās, ka esat pilnvarots veikt portu skenēšanu sistēmā, un šo metodi jāizmanto tikai drošības nolūkos, nevis vienkārši, lai apmierinātu savu ziņkāri. Šeit aprakstītās portu skenēšanas metodes parāda, cik svarīgi ir sekot līdzi savas sistēmas portiem un tīkla datoriem, kā arī pakalpojumiem, kas tiem piekļūst.