Skenování portů: teorie

24. 10. 2006
Doba čtení: 7 minut

Sdílet

Autor: 29
V tomto článku se znovu podíváme na sítě z bezpečnostního hlediska, tentokrát na problematiku portů a jejich dálkového průzkumu. Řekneme si, v jakém mohou být rozsahu, jakého druhu, v jakém mohou být stavu, co to je banner a jak postupuje útočník při jejich skenování. Důležitá je samozřejmě i otázka etiky této činnosti v prostředí Internetu.

Skenování portů je proces, kdy se zjišťuje, které služby poskytuje dané síťové zařízení. Toho využívají případní útočníci, aby si našli slabinu (například neaktualizovaný software nebo zneužitelné služby) na vzdáleném síťovém zařízení. Skenování portů však mohou využít i sami správci sítě, když prohlíží, co vše nabízí jejich síťové zařízení za služby, čímž mohou odhalit trojské koně.

Skenování a zákon

Při praktickém skenování je dobré mít na paměti otázku legálnosti, případně etiky této činnosti. Podle platných zákonů samotné skenování trestné není, ovšem způsobíme-li skenováním nějaké potíže nebo škodu, pak už trestné být může. V této souvislosti vám mohu jenom doporučit články Jak silná je naše „softwarová policie“? a (Ne)legální port scanning. V každém případě platí, že určité skupiny lidí považují skenování portů za neetické a jiní zase za normální věc. Proto vám doporučuji uváděné techniky v příštím díle zkoušet pouze na svých počítačích, předejdete tím případným problémům.

Co jsou to porty?

Port je jakýsi prostředek pro upřesnění identifikace odesílatele a příjemce síťových dat v rámci počítače (přesněji v rámci IP adresy). To znamená, že určuje, kterému programu mají být data předána. Porty jsou značeny čísly a jejich rozsah je 0 až 65535. To je odvozeno od toho, že parametr určující port má velikost dvou bytů.

Aby vše nebylo tak jednoduché, existují dva druhy portů: TCP a UDP, což vám jistě něco říká. Porty totiž vznikají až na transportní vrstvě, kde se používají stejnojmenné protokoly. Porty jsou tedy určeny tím, který protokol se použije. To znamená, že protokol UDP se nikdy nedostane na TCP porty a opačně.

Zachyceny paket

Na obrázku jsou zachyceny dva pakety. Jeden má jako transportní protokol TCP a druhý UDP. Protokol TCP je složitější, proto je zde více položek (protokolu TCP se budu věnovat v dalších článcích), ovšem u obou protokolů je vidět, že obsahují zdrojový a cílový port. Zdrojový port určuje na odesílatelově počítači (síťovém zařízení) port, odkud byla data odeslána. Cílový port zase určuje na počítači příjemce port, pro který jsou data určena.

Porty se dělí do několika skupin. Máme tu porty od 0 – 1023 (TCP i UDP), které jsou označovány jako dobře známé. Na některých operačních systémech (například Linux, Unix) je umožněno pouštění služeb na těchto portech pouze uživateli root (administrátor). Tím se zvyšuje důvěra v běžící služby na těchto portech.

Další skupina jsou porty registrované čísly 1024 – 49151, kde si můžete také zaregistrovat port pro svůj program. Jedná se o porty, kde běží většinou méně známé služby. Poslední skupinou jsou porty privátní: 49152 – 65535. Tyto porty se používají pro odchozí spojení (pokud se k někomu připojujete, tak z tohoto rozsahu se vybere váš zdrojový port). Často na těchto portech běží trojské koně, jelikož se schovávají mezi vysoké porty, čímž ztěžují odhalení.

Pokud bychom neměli porty, nebylo by možné, aby na jedné IP adrese běželo více než jedna síťová služba (WWW, DNS, DHCP atd.. Port tedy určuje aplikaci, které jsou data určena. Port ovšem tuto aplikaci určuje nepřímo (viz níže).

TCP, UDP a věci kolem

Pro pochopení skenovacích technik uvedených v dalším díle je potřeba mít základní znalosti sítí. Hlavně se jedná o síťový model TCP/IP nebo ISO/OSI. Nějaké informace najdete v článku na serveru Repair2000, případně na Wikipedii.

Rozdíl mezi protokoly TCP a UDP je značný. TCP je protokol, který slouží k přenášení dat, která se nesmí ztratit a musí dojít v pořádku. Tento protokol není ani příliš datově úsporný, jelikož má velkou režii. Ovšem používá se pro téměř vše. Zato protokol UDP je velmi triviální, má minimální režii a není u něj zajištěno, že data dorazí k příjemci. Přenos dat zde probíhá „rychleji“ a je využíván hlavně při hraní síťových her.

Terminologická poznámka: přiznávám, že zcela nedodržuji standardní pojmenovávání síťových dat. Jak jste si již mohli všimnout v předchozích článcích, je pro mě vše paketem, i když správně se data označují podle vrstvy, o které je řeč. Snad vám to nečiní problém v pochopení článku, pokud však ano, dejte prosím vědět v anketě.

Jaká služba patří jakému portu?

Existují určitá doporučení nebo standardy, které určují, jaká služba má běžet na určitém portu. Seznam těchto přiřazení můžete najít na stránkách IANA. Ovšem nic nám nebrání spustit si jakoukoliv službu na jakémkoliv portu, což může zmást případného útočníka nebo ztížit detekci služby.

Stále zde však platí pravidlo, že na jednom portu může naslouchat („běžet“) najednou pouze jedna služba (program). Filtrovacími (přesměrovacími) pravidly lze vytvořit dojem, že na jednom portu naleznete více služeb, ovšem tyto služby doopravdy stejně běží na jiných portech.

V jakém stavu může být port?

Port může být otevřený, což znamená, že na portu běží určitá služba. S takovýmto portem lze navázat spojení. Dále může být port zavřený – port je v tomto stavu, pokud na něm žádná služba neběží. Při pokusu připojit se k zavřeným TCP portům je poslán zpět TCP paket s příznaky RST a ACK, v případě portů UDP je zpět poslán ICMP paket typu 3 a kódu 3, což znamená, že port je nedosažitelný. Poslední možný stav portu je filtrovaný. Port je v takovémto stavu, pokud na pokus o spojení nepřijde žádná odpověď. To znamená ani kladná, ani záporná. Takto se dá poznat, že počítač je chráněn firewallem.

Ovšem aby vše nebylo tak jednoduché, nelze se na toto rozdělení vždy spolehnout. Port může být totiž otevřený, ale pro vás se může tvářit jako zavřený nebo filtrovaný. Toho se dosáhne pomocí filtrovacích pravidel. Další ještě zajímavější možnost je, že port je doopravdy zavřený, ale nám se bude tvářit jako otevřený.

Případně na portu může ještě běžet falešná služba. Služba není plnohodnotná, to znamená, že doopravdy neplní svůj účel, ale jedná se pouze o jakési divadélko pro útočníka. Služba komunikuje jako by byla pravá. Jejím cílem je, aby nalákala útočníka. Útočník nad ní stráví nějaký čas, jeho aktivita je logována a dá se díky tomu zjistit jeho strategie. Krom zjišťování strategie slouží i k odhalení útočníka, jelikož tyto služby nejsou nikde zveřejněny, proto se k nim normální uživatel nedostane. Útočník většinou zjistí, že se jedná o falešnou službu, ovšem to bývá až po určité době, a to už o útočníkovi správce sítě ví. Pokud vás toto zaujalo, pak hledejte na Internetu informace o Honeypotech nebo Honeynetech. Případně můžete začít na stránkách encyklopedie Wikipedia.

Jak útočník postupuje?

Pokud se útočník snaží ovládnout určitý počítač nebo získat nějaká data, nejprve si vyhledává možnost, jak toho dosáhnout. Nejdříve ho tak zajímá, které služby počítač nabízí. K tomu použije skenování portů. Tím objeví, které porty jsou otevřeny, a podle nich si může odvodit o jaké služby se jedná.

Ovšem jak již bylo napsáno, služby můžou běžet i na jiných než svých výchozích portech. Proto útočník provede stažení takzvaného banneru služby. Jedná se o akci, kdy se ke službě přihlásí a většinou server (služba) ho přivítá určitou hláškou. Právě tato hláška obsahuje jméno programu, který na tomto portu běží a dále informaci o verzi programu nebo platformě či operačním systému. Útočník provede stažení banneru u každé služby. Program nmap nabízí tuto akci zautomatizovat se skenováním, a to pomocí přepínače –sV.

Další kroky jsou jasné: snaží se odchytit hesla k určitým službám nebo je získat sociotechnikou od uživatelů. Nejlehčím způsobem je nalezení nějakého exploitu. To mu umožní zjištění verze a jmen programů, které běží na serveru (počítači oběti).

Zde vidíte, jak je důležité omezit tyto bannery na minimum. Buďto je úplně odstranit, nebo z nich odstranit informace, které by mohly být zneužity. Úpravu bannerů provedete nejčastěji v nastavení programu (služby), někdy to bohužel nejde.

Praxe

Pro odzkoušení si skenování portů budeme v příštím díle používat program nmap, který existuje jak pro operační systém Linux, tak i pro Windows. Abyste mi věřili a nemysleli si, že tyto útoky jsou jakési čarování, budeme používat program Wireshark (původně Ethereal) k odchytávání paketů.

Doufám, že pro vás tento díl nebyl přílišná nuda, ovšem je potřeba mít zvládnutou nějakou teorii, abychom pochopili složitější techniky probírané v následujících článcích. Snad vám přišly vhod i odkazy zde uvedené. Pokud máte nějaké otázky, ničeho se nebojte a zeptejte se v názorech pod článkem.

Vadí vám autorovo nazývání veškerých síťových dat termínem pakety?

Autor článku

Autor je spolumajitelem firmy PATRON-IT a celým srdcem technik. Specializuje se na kybernetickou bezpečnost a má zkušenosti etického hackera. Věří, že aby mohl síť dobře zabezpečit, musí ji nejprve umět prolomit.

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).