Mi az a port szkennelés?
A portok az egyik fő oka annak, hogy az adatcsomagok eljutnak a kívánt célállomásra. A portok a számítógépek és a rendszer szolgáltatások vagy programok közötti interfészként szolgálnak, és a TCP és UDP hálózati protokollok használják őket. Az IP-címmel együtt az operációs rendszerek képesek megállapítani, hogy melyik számítógépre és alkalmazásra kell az adatokat elküldeniük.
Mi az a port szkennelés? Rövid magyarázat
A port szkennelés egy speciális eszközök segítségével végzett, célzott folyamat, amelynek során a számítógépes rendszer nyitott portjait ellenőrzik. Mielőtt elmélyülnénk a port szkennelés fogalmában, érdemes először megnézni, hogy mik is azok a portok. A portok az aktív programok és az internet közötti interfészként szolgálnak. Feladatuk a bejövő és kimenő adatcsomagok megfelelő alkalmazásokhoz történő továbbítása, és az operációs rendszerek kezelik őket.
Ahhoz, hogy egy alkalmazás porton keresztül kommunikálhasson, azt meg kell nyitni. A portok megnyitása azonban kockázattal jár. Ha az egyik, a portot használó alkalmazás biztonsági réseket tartalmaz, a port potenciális behatolási pontként szolgálhat a támadók számára. A támadás kockázatának minimalizálása érdekében mindig tisztában kell lennie azzal, hogy mely portok vannak megnyitva a rendszerén, és mely alkalmazások kapcsolódnak hozzájuk.
A célrendszeren nem szükséges bejelentkezni ahhoz, hogy port szkennelést hajtson végre rajta. Csak helyi hálózaton vagy az interneten keresztül kell csatlakoznia hozzá. A port szkennerek segítségével speciális adatcsomagokat küldhet tesztként a különböző portokra. Ezekre válaszokat vagy hibaüzeneteket kap, amelyeket a használt eszköz elemez. A szkennelő program funkcióinak függvényében információkat kaphat arról, hogy mely portok nyitottak és melyek zártak. Emellett adatokat kaphat arról is, hogy az adott portok mely szolgáltatásokat és/vagy alkalmazásokat használnak.
A port szkennelés a rendszergazdák számára nagyon hatékony eszközt kínál a hálózati adatforgalom figyelemmel kíséréséhez. A port szkennelés segítségével kiszűrhetők a potenciális gyenge pontok, és csökkenthető a rendszer támadási felülete. Bizonyos esetekben segíthet a rendszergazdáknak konkrét hálózati problémák megoldásában. Ezenkívül az eszközök nem gyakorolnak észrevehető hatást a szkennelt rendszerek teljesítményére. Ennek eredményeként biztonsági intézkedésekhez használhatók anélkül, hogy aggódni kellene a rendszer teljesítményére gyakorolt nem kívánt hatások miatt.
A port szkennerek otthoni számítógépek esetében is hasznosak. Amint internetkapcsolatot igénylő alkalmazásokat kezd el használni, a portok automatikusan megnyílnak, hacsak a tűzfal nem akadályozza meg ezt. A port szkennelés segítségével áttekintheti a helyzetet, és megmutatja azokat a portokat, amelyekre már nincs szükség. Ezeket bezárhatja, hogy csökkentse a biztonsági kockázatokat.
Hogyan működik a port szkennelés?
A port szkennerek számos különböző módszert kínálnak. Ezek többsége azonban a kapcsolat-orientált TCP protokollt használja. A port szkennelés során végbemenő alapvető folyamatok megértéséhez érdemes áttekinteni a TCP-kapcsolatok általános felépítését:
- Ez a folyamat, más néven háromirányú kézfogás, azzal kezdődik, hogy az ügyfél SYN csomagot (szinkronizálás) küld a célportnak.
- Amint a csomag eléri az alkalmazást, az ügyfél egy kombinált SYN/ACK csomagot (szinkronizálás/visszaigazolás) kap, amely megerősíti, hogy a kapcsolat létrejött.
- A harmadik és egyben utolsó lépésben az ügyfél ACK csomagot (visszaigazolás) küld, amely létrehozza a kapcsolatot, lehetővé téve az adatcsere megkezdését.
Ha egy zárt porthoz kapcsolódik, az ügyfél a második lépés során RST csomagot (visszaállítás) kap, ami véget vet a kézfogásnak.
Mivel különböző típusú alkalmazásokkal történő adatcsere nehéz és időigényes lenne, a port szkennelés egyszerű kapcsolatfelvételi kísérletekre korlátozódik, amint azt az alábbi szkennelési módszerek is mutatják.
TCP-SYN szkennelés
A TCP-SYN szkennelés célja nem egy teljes TCP-kapcsolat létrehozása. Ezért ezt a típusú szkennelést általában félig nyitott port szkennelésnek nevezik. A port szkennelő segítségével ez a módszer tipikus SYN csomagokat küld az egyes portokra, és várja a célállomás válaszát. Ha a célállomás SYN/ACK csomagot küld vissza, az azt jelzi, hogy a megfelelő port nyitva van, és lehetséges a kapcsolat létrehozása. Ha a válasz egy RST csomag, az azt jelenti, hogy a port zárva van. Ha nincs válasz, az valószínűleg egy upstream csomagszűrőre (pl. tűzfal) vezethető vissza.
A TCP-SYN szkennelések nem láthatók az értékelés alatt álló alkalmazások számára, ezért nem generálnak naplóadatokat. Ezért nevezik őket rejtett szkenneléseknek is.
TCP-kapcsolat-vizsgálat
Ha portszkennerével csatlakozási szkennelést hajt végre, valójában nem maga generálja és küldi el az adatcsomagot. Ehelyett a connect rendszerhívást használja. Ez szinte minden operációs rendszeren elérhető. Ha a csatlakozási kísérlet sikeres, az azt jelenti, hogy a port nyitva van. Ha a csatlakozási kísérlet sikertelen, az azt jelenti, hogy a port zárva van. Ha a kapcsolat létrehozása sikeres volt (azaz a port nyitva volt), akkor az alkalmazás naplófájljaiban láthatja, hogy ezt a szkennelési technikát használták. Azonban a használt szűrőprogramokra vonatkozó információk nem kerülnek feltüntetésre. Ha nincs jogosultsága nyers adatcsomagok küldésére, a TCP connect scan hasznos alternatívája lehet a SYN szkennelésnek.
TCP-FIN, Xmas és Null szkennelések
Ez a három port szkennelési módszer lehetővé teszi a nyitott és zárt portok megkülönböztetését is. Itt két alapvető fogalom kerül alkalmazásra, amelyek az RFC 793-banvannak dokumentálva:
- A zárt portok mindig saját RST-csomaggal kell válaszoljanak a csomagokra (amennyiben azok nem RST-csomagok).
- A nyitott portoknak figyelmen kívül kell hagyniuk az összes olyan csomagot, amely nem SYN, RST vagy ACK jelöléssel van ellátva.
Az RCF-kompatibilis rendszerek szkennelésekor ezek a szkennelési módszerek saját csomagjaik segítségével kihasználják ezeket az elveket:
- A Null szkennelés nem használ semmilyen speciális jelölést.
- A FIN szkennelésnél a port szkennelő FIN (befejezés) csomagokat küld.
- AXmas szkennelés a FIN, PSH (push) és URG (urgent) jelölések kombinációját használja, ami miatt a csomagok úgy világítanak, mint egy karácsonyfa.
Mindhárom szkennelési módszer ugyanúgy működik. Az RCF szabályok miatt a tesztcsomagok biztosítják, hogy a zárt portok RST csomagokkal válaszoljanak, a nyitott portok pedig ne adjanak választ. Nem minden útválasztó küld hibaüzenetet, ha egy portot szűrnek, ami azt jelentheti, hogy ha nem jelenik meg üzenet, akkor szűrt portról van szó (amellett, hogy lehet, hogy nyitott portról van szó). Bár ez a módszer sokkal diszkrétebb, mint a SYN szkennelés, nem biztos, hogy megfelelően működik, ha a rendszerek nem felelnek meg tökéletesen az RFC 793 szabványnak. Erre jó példa a Windows.
UDP-vizsgálat
Az UPD-vizsgálatok során üres UDP-fejlécek kerülnek elküldésre minden üres porthoz. Ha egy szolgáltatás UDP-csomaggal válaszol, akkor a megfelelő port nyitott. Ha a portszkenner „Port elérhetetlen” hibaüzenetet kap a routertől (3. típus, 3. kód), akkor a portot zártnak ismeri el. Más hibaüzenetek arra szolgálnak, hogy tájékoztassák a felhasználókat arról, hogy a portok blokkolásáért a csomagszűrők felelősek. Az UDP-portok tesztelésének problémája, hogy rendkívül időigényes. Ez azért van, mert sok rendszer biztonsági okokból hosszú időt vesz igénybe a hibaüzenetek kiadására. Ráadásul ezeknek a rendszereknek a többsége csak szórványosan válaszol a portokra. A Linux kernel másodpercenként korlátozza a jelentések számát, ami azt jelenti, hogy 65 535 port teljes beolvasása körülbelül 18 órát vesz igénybe.
Milyen port szkennerek léteznek?
Számos különböző szkennert kínálnak, amelyek funkcióikban eltérnek egymástól. A legtöbb ilyen eszköz ingyenes vagy nyílt forráskódú változatban érhető el. Sok közülük klasszikus parancssori programokat tartalmaz, amelyek külön grafikus felületeken keresztül használhatók. Ezen felül számos online megoldás is létezik, amelyek lehetővé teszik a felhasználók számára, hogy a portokat közvetlenül a böngészőben szkenneljék. Az olyan szolgáltatások, mint a DNS eszközök portszkennerje, funkcióik tekintetében korlátozottak, és csak az egyes portok ellenőrzésére kínálnak lehetőséget. Ezért ezek a megoldások személyi számítógépeken történő gyors ellenőrzések elvégzésére alkalmasak.
Netcat
A Netcat (rövidítve: nc)programot egy „Hobbit” néven ismert névtelen fejlesztő tette közzé 1996-ban. Eredetileg Unix platformokra írták, ma azonban számos portolási lehetőség áll rendelkezésre Windows-hoz hasonló rendszerekhez, valamint más kiterjesztések is léteznek, mint például a GNU Netcat, OpenBSD Netcat, Cryptcat és Netcat6 (amely az IPv6-ot is támogatja), amelyek alapértelmezés szerint számos Linux-disztribúcióban megtalálhatók. A parancssori eszköz alapváltozata elsősorban TCP és UDP hálózati kapcsolatokon keresztül történő adatküldésre és -olvasásra szolgál. Használható azonban egyszerű port-letapogatási feladatokra is. Ez lehetővé teszi a felhasználók számára, hogy egyszerű parancsokkal ellenőrizzék a 20-30-as portok állapotát egy adott rendszeren, például:
nc -zv localhost 20-30bashAz UDP portok ellenőrzéséhez további paraméterre van szükség,a -u-ra. A localhost helyett használhatja a külső rendszer gazdanevét vagy IP-címét is (ha ismeri).
Nmap
A portok szkenneléséhez különösen hasznos, lényegesen hatékonyabb eszköz a Network Mapper, amelyet gyakran Nmap néven emlegetnek. Az Unix-szerű rendszerekhez tervezett Nmap GPL licenc alatt áll, és 2000 óta elérhető Windows rendszerekhez is (bár korlátozásokkal). Ez azt jelenti, hogy a TCP Connect szkennelés aránytalanul sok időt vesz igénybe, és a saját rendszer portjainak szkennelése csak közvetett útvonalak használatával lehetséges. Általában az Nmap parancssorból működtethető. A Zenmap viszont nagy teljesítményű grafikus felülettel rendelkezik, amely lehetővé teszi a felhasználók számára a hálózati eszköz egyszerű használatát.
Az Nmap alkotója, Gordon Lyon, és az Nmap fejlesztői csapata felelős a program és a port szkennelési funkciók továbbfejlesztéséért. Különösen olyan technológiák, mint az operációs rendszer ujjlenyomatának felismerése (azaz a célállomás operációs rendszerének felismerése) és a portok mögött rejtőző szolgáltatások kiolvasása teszik az Nmap-ot az egyik legnépszerűbb port szkennelő megoldássá. Az alábbi táblázat bemutatja a program által kínált különböző módszereket:
| Port szkennelési módszerek | Nmap parancs | Leírás |
|---|---|---|
| TCP connect-scan | nmap -sT host | Klasszikus ellenőrzés nem rendszergazdák számára |
| TCP Syn szkennelés | nmap -sS host | Gyors, észrevétlen ellenőrzési módszerek rendszergazdák számára. |
| TCP FIN-/XMAS-/Null scan | nmap -sF host nmap -sX host nmap -sN host | A tűzfalakat megkerülő módszerek |
| TCP ping vizsgálat | nmap -sP host | Hagyományos port szkenneléshez; segít ellenőrizni a gazdagép elérhetőségét. |
| TCP ACK szkennelés | nmap -sA host | Meghatározza a rendelkezésre álló portokat, de nem tesz különbséget a nyitott és zárt portok között. |
| TCP ablak szkennelés | nmap -sW host | Hasonló az ACK szkenneléshez; ellenőrizni tudja néhány nyitott és zárt portot. |
| TCP Maimon szkennelés | nmap -sM host | A FIN és ACK szkennelés kombinációja. |
| TCP idle szkennelés | nmap -sI zombie host host | A legkevésbé észrevehető, legbonyolultabb és ezért leglassabb szkennelési módszer; egy harmadik számítógépen fut, amelyet az Nmap „zombinak” nevez. |
| UDP szkennelés | nmap -sU host | Vizsgálati módszerek kapcsolat nélküli UDP portokhoz |
| SCTP init szkennelés | nmap -sY host | Port szkennelés SCTP-vel, a TCP és UDP alternatívájaként |
| IP protokoll szkennelés | nmap -sO host | Nincs port szkennelés; ellenőrzi, hogy melyik IP-alapú protokoll támogatott a célrendszeren |
Az Nmap hivatalos weboldaláról letöltheti az Nmap programot és a Zenmap felületet az Ön operációs rendszeréhez. Mind a jelenlegi (stabil) verzió, mind a béta verzió (fejlesztés alatt álló) elérhető.
Miért nem mindig legális a portok szkennelése?
A portok ellenőrzése nem mindig legális. Amint valaki megkísérliaz exploitot (a kiberbiztonsági szakemberek által használt kifejezés, amely a biztonsági hiba vagy rés kihasználását jelenti), az ezért felelős személy vagy csoport jogi következményekkel szembesülhet.
Kevésbé egyértelmű azonban, hogy mi a jogi helyzet, ha egy számítógépes rendszer intenzív port-letapogatás miatt leáll. A kapcsolati kérések nagy gyakorisága miatt az ilyen megfigyelési módszerek kihívásokat jelenthetnek a célrendszer számára, ami néha a rendszer összeomlásához vezethet. Ráadásul a célrendszer rendszergazdái a rendszer összeomlása előtt észrevehetik a támadók tevékenységét, és ezt a támadás első lépéseinek értelmezhetik.
Ilyen esetekben fontos, hogy ne zárjuk ki a jogi következményeket. Ha a célzott rendszert szándékosan túlterhelik, az DDoS-támadásnak minősülhet, ami azt eredményezheti, hogy a támadás áldozata jogi lépéseket tesz.
Mindig győződjön meg arról, hogy jogosult-e port szkennelést végrehajtani egy rendszeren, és csak biztonsági célokra használja ezt a technikát, ne pedig egyszerűen csak kíváncsiságból. Az itt bemutatott port szkennelési módszerek rávilágítanak arra, mennyire fontos figyelni a saját rendszer portjait és hálózati számítógépeit, valamint az azokhoz hozzáférő szolgáltatásokat.