Skenování portů
Skenování portů (anglicky port scanning) je v informatice metoda zjišťování otevřených síťových portů na vzdáleném počítači v počítačové síti. Je tak možné zjistit, jaké služby jsou na vzdáleném počítači spuštěny (například démon pro webový server, sdílené disky a podobně). Ke zjišťování je používán speciální software, například program nmap. Skenování je považováno za nežádoucí techniku, protože ji často zneužívají crackeři ke zjištění slabých míst (zranitelností) a následnému útoku. Může mít však i legitimní využití jako nástroj pro zlepšování počítačové bezpečnosti.
Popis
Síťové služby fungují typicky na principu klient-server, kde serverová část funguje v podobě démona (tj. programu, který je na počítači trvale spuštěn a běží bez kontaktu s uživatelem). Aby se k serverové části mohli připojovat klienti, musí serverová část naslouchat na síťovém portu a reagovat na pokusy klienta o navázání spojení (tj. na serveru bude port tzv. otevřený) . Komunikace mezi klientem a serverem probíhá typicky pomocí protokolů TCP nebo UDP. V obou případech je možné simulovat klienta, který má o službu zájem a vyprovokovat tak reakci serverové části. Toho využívá speciální software (například program nmap), který se o spojení pokouší (viz například TCP scanning níže). Protože implementace podpory rodiny protokolů TCP/IP je velmi komplikovaná záležitost a příslušné RFC typicky nedefinují chování v mezních případech, je možné pomocí vhodné databáze a vhodného nekorektního provokování dosáhnout rozdílných odpovědí v závislosti na verzi nebo typu software, který odpověď vytvoří. Je tak možné rozeznat od sebe různé operační systémy (např. Linux, Microsoft Windows, Mac OS X, BSD, Cisco IOS atd.), ale i různé verze těchto systémů. Rozpoznávání je tím úspěšnější, čím více otevřených portů je na cílovém počítači k dispozici.
Skenování portů znesnadňuje firewall, který může pokusy o spojení na některé porty blokovat nebo rozpoznat skenování hned v počátku a další provoz zablokovat. Skenování portů používají správci počítačů, ale i útočníci (crackeři), kteří mohou zjištěné nedostatky (viz programátorská chyba) zneužít k průniku do systému (pomocí exploitu).
Typy skenování
Kvůli složitosti protokolů z rodiny TCP/IP je možné využít různé techniky skenování, přičemž každá z nich má své výhody i nevýhody.
TCP scanning
TCP scanning je základní formou skenování. Zkouší se postupně připojovat na jednotlivé porty systémovým voláním connect(). Jestliže se podaří připojit, znamená to, že je port otevřen a že můžeme naslouchat. V opačném případě je pak port nedostupný a je vrácen kód chyby. Tento režim skenování má tu výhodu, že od uživatele nevyžaduje žádná zvláštní privilegia. To znamená, že tento režim skenování může provádět jakýkoliv uživatel. Tato metoda je velice „hlučná“, a proto je také snadno vypátratelná.
SYN scanning
SYN scanning je další formou TCP skenování. Tento typ skenování je známy také jako „half-open scanning“, protože nikdy neotevře celé TCP spojení. Port skener generuje paket SYN a pokud je cílový port otevřený vrátí nám paket SYN-ACK. Skener pote odpovídá posláním paketu RST, což je žádost o ukončení spojení a spojení se následně ukončí. Posílání paketů při skenování je pro cílového hostitele méně rušivé, tudíž je tato metoda hůře vypátratelná.
UDP scanning
UDP scanning posílá paket na port, který když není otevřený odpoví zprávou ICMP port unreachable. Pokud odpověď chybí je port otevřený. Nicméně pokud je port blokován firewallem, bude tato metoda falešně hlásit, že daný port je otevřen. Tato metoda je ovšem velice pomalá.
ACK scanning
ACK scanning je unikátním typem skenování portů. U tohoto typu skenování nemůžeme přesně určit, který port je otevřený nebo uzavřený. Pomoci ACK skenování zjistíme je-li port filtrovaný nebo nefiltrovaný. To je obzvláště dobré k zjišťování nastavení firewallu.
Window scanning
Window scanning souvisí s velikostí okna TCP. Je poměrně nespolehlivé při zjišťování otevření nebo uzavření portu. Principem je podobné ACK skenování.
Další typy
- FIN scanning
- X-mas a NULL scan
- Protocol scanning
- Proxy scanning
- CatSCAN – kontroluje porty
- ICMP scanning – zda počítač reaguje na výzvy pomocí protokolu ICMP