Počítačová bezpečnost 6. Bezpečnost v TCP/IP Obsah: IP adresa, IP datagram, ARP, UDP, TCP, směrování hub, switch, proxy, port knocking © Milan Keršláger http://www.pslib.cz/ke/slajdy 1.12.2010 http://creativecommons.org/licenses/by-nc-nd/3.0/
Linková vrstva nejčastěji Ethernet ethernetový rámec (rozumí mu síťová karta) hlavička + data (délka 64 až 1518 oktetů) P DST SRC FT data CRC P Preamble (101010....1011) 8 oktetů DST Destination Address 6 oktetů SRC Source Address 6 oktetů FT Frame Type* 2 oktety data Frame Data 46 - 1500 oktetů CRC Cyclic Redundancy Check 4 oktety
Ethernetový rámec jediné, čemu rozumí ethernetová karta linková vrstva modelu ISO/OSI, formát podle: IEEE 802.2, IEEE 802.3, Ethernet SNAP Ethernet II – průmyslový standard, běžně používán hlavička + přepravovaná data 14 + (48 až 1500) + 4 oktety protokoly vyšších vrstev v datové části síťová karta zachytává vše pokud je určeno pro ni, vyvolá přerušení → ovladač pozná se podle cílové MAC adresy, případně linkový broadcast jinak ignoruje (výjimkou je promiskuitní režim)
MAC adresa Media Access Control identifikace na linkové vrstvě MAC u Ethernetu je dlouhá 6 oktetů: 3 oktety výrobce + 3 oktety číslo karty síťová karta se orientuje jen podle MAC nastaveno výrobcem typicky lze softwarově změnit na jednom segmentu sítě nesmí být dvě stejné záměrně využíváno při odposlouchávání u WiFi pro překonání ochrany
Lokální broadcast cílová MAC na FF:FF:FF:FF:FF:FF slyší všichni na stejném segmentu hub, switch nebo bridge není překážkou nepřekročí však router použití: pro ARP oznamování služeb (jména stanic pro Win) multicastové vysílání
Switch aktivní prvek (koncentrátor) pracuje na linkové vrstvě (L2) sleduje MAC adresy připojené k portům buduje tabulku přijatý rámec posílá jen na příslušný port nemá-li cíl v tabulce, tak na všechny porty všichni neslyší vše (na rozdíl od hubu) při přeplněn tabulky se chová jako HUB routerswitch kombinace switche a routeru (L2 + L3)
Internet Protokol – IP základ rodiny TCP/IP, základem IP adresa datagramová služba, doručení bez záruk hlavička + data (min. délka 60 oktetů) dnes IPv4 jedinečná adresa (4 oktety), různých IP adres je málo zápis desítkově po oktetech, odděleno tečkou 147.230.16.1 nastupuje IPv6 adresa 128 bitů (16 oktetů) → každý atom ve vesmíru zápis hexadecimálně, oddělení dvojtečkami 2001:718:1c01:16::aa
IP datagram
Maska sítě bitové vyjádření IP podsítě podsíťě jsou navzájem odděleny routery jedničky označují část IP adresy s číslem sítě nuly vyjadřují část IP adresy s číslem počítače zápis jako IP adresa nebo počet jedniček zleva např: 255.255.255.0 nebo též zápis IP.IP.IP.IP/24 číslo sítě = IP adresa AND maska sítě přidává se jako vlastnost: síťového rozhraní záznamu v routovací tabulce
Rezervované IP adresy určeno pro speciální účely (IANA: RFC 3330) typicky filtrováno na firewallu („martian packet“) privátní sítě: 0.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 další použití 127.0.0.0/8 (loopback), 255.255.255.255/32 (broadcast) 5.0.0.0/8 (rezervováno), 240.0.0.0/4 (rezervováno) 169.254.0.0/16 (autokonfigurace), 224.0.0.0/4 (multicast)
IP broadcast 255.255.255.255 lokální broadcast (pro danou podsíť) odesláno na MAC adresu FF:FF:FF:FF:FF:FF nepřekročí hranici segmentu, tj. neprojde routerem IP adresa se samými 1 na místě čísla počítače síťový broadcast (pro danou podsíť) může cestovat na velkou vzdálenost odesílatel typicky netuší, jaká je maska v cíli ale může to vyzkoušet → broadcast storm typicky filtrováno na routerech (s firewallem)
Omezení v TCP/IP stacku některé operace považovány za nebezpečné může je dělat jen správce počítače (root, admin) raw socket umožňuje vyslat jakkoliv formátovaný datagram typicky jen root 2004 Windows: tiché a nerevezibilní odstranění raw s. připojení na nízký port vyhrazeno pro rezervované služby /etc/services %SystemRoot%\system32\drivers\ etc\services vydává IANA („weel-known port numbers“)
ARP Address Resolution Protocol překlad IP → MAC adresa víme cílovou IP adresu, ale nevíme cílovou MAC počítač vyšle lokální broadcast (slyší všichni): „kdo má IP adresu 1.2.3.4“? všichni slyší a zapíší si naši MAC do ARP tabulky majitel IP adresy odpoví přímo tazateli tazatel si zapíše do ARP tabulky záznam s IP a MAC záznam v tabulce je časově omezen (minuty) tazatel pak může vytvořit rámec a odeslat ho není nijak zabezpečeno
ARP spoofing podvržení záznamů do ARP cache rozesílání falešných odpovědí zneužití expirace cache lze řešit statickou tabulkou nebo pomocí SW útočník se vydává za cíl „stahuje na sebe“ veškerý provoz ochrana pomocí switche s managmentem ARP datagramy kontrolovány cestu otevírá DHCP při konfiguraci klienta
IP spoofing útočník se vydává za někoho jiného datagram má falešnou zpáteční adresu útok na služby chráněné podle IP klienta rhost, rsh (historické, nahrazeny pomocí SSH) RPC (sdílení souborů – SMB, NFS) dnes obtížně využitelné (ochrana je na vyšší vrstvě) běžně pro DoS (Denial of Service) odepření služby útočník nedostane odpověď lze eliminovat kontrolou IP adres odesílatelů u providerů z výkonových důvodů se to však typicky nedělá
ICMP Internet Control Message Protocol povinná součást implementace TCP/IP služební protokol zapouzdřeno v IP datagramu oznamuje stavy sítě, chyby, k testování, ... nese v sobě typ a kód (dvě čísla) ping: výzva 8,0 a odpověď 0,0 network/host unreachable, ICMP redirect, ... ICMPv4 a ICMPv6
ICMP spoofing zneužití řídícího protokolu lze zpomalit probíhající TCP spojení source quenching (zpomalení) packet too large (fragmentace přes snížení MTU) blokování spojení destination unreachable u systémů dnes běžná blokace ICMP rate limit na ping blokování ping, traceroute „záplata“ na vadné implementace
UDP User Datagram Protocol datagramová služba systém otázka-odpověď (malá režie) zapouzdřeno v IP datagramu bez záruky (neřeší ztrátu apod.) musí si ohlídat sama aplikace (typicky časovačem) nedojde-li odpověď do limitu, zeptám se znovu nedojde-li víckrát, ohlásím chybu použito pro DNS, VoIP, NFS v LAN atp. ve VoIP znamená ztráta datagramu díky rozložení informace do více datagramů snížení kvality, při větších ztrátách pak výpadek
UDP spoofing injektáž falešných UDP datagramů cílem je ošálení cíle útoku vydáváme se za někoho, získáme informace podsouváme odpovědi, uvedeme cíl v omyl UDP je bezstavový protokol nepoužívají se žádné identifikátory spoofing je velmi jednoduchý stavový charakter se řeší až na aplikační úrovni např. identifikace otázky na DNS server odpověď musí obsahovat stejný identifikátor
TCP Transmition Control Protocol proud bitů bez struktury duplexní spojení data lze přenášet zároveň oběma směry stavový protokol obě strany si pamatují stav, v jakém se nacházejí se zárukou řeší ztrátu, duplicitu i pořadí vyžaduje extra režii vhodný pro přenos dat (obrázky, dokumenty) protokoly FTP, SMTP, HTTP, ...
TCP spoofing TCP je stavový protokol oba konce používají sekvenční čísla pokud jsou náhodně generována, je to obtížné chyby ve starších verzích Windows (95, NT) Linux a BSD mají kvalitní implementaci při odposlouchávání je to jednodušší sekvenční čísla se zvyšují o 1 problémy s dalšími položkami (potvrzení přijatých dat) to vše snižuje pravděpodobnost úspěchu využívání narozeninového útoku útočníkovi stačí rozumná pravděpodobnost
Síťový port jednoznačná identifikace síťového spojení pro UDP a TCP umožňuje identifikovat aplikace každé spojení má jinou čtveřici hodnot ten, kdo navazuje, si zdrojový port zvolí port je zablokován do uvolnění pro další použití čtveřice hodnot zdrojová IP adresa, zdrojový port cílová adresa, cílový port
Navázání TCP spojení trojcestný handashake A iniciuje spojení zasláním datagramu B se SYN B odpoví ACK + SYN, pak již jen ACK typický útok: SYN flood (zahlcený SYN datagramy) A B Syn seg=x Syn seg=y Ack=x+1 Ack=y+1
SYN flood zahlcení cíle útoku útočník otevírá velký počet spojení cíl útoku vyčerpá svoje systémové zdroje vzniká DoS (nelze alokovat pro reálná spojení) řeší SYN cookies server neregistruje spojení hned při příjmu SYN sekvenci určí podle specifické funkce sekvenční číslo obsahuje sušenku, expiraci, MSS po potvrzení ACK přijde sekvence + 1 odečte 1 a ověří sušenku, platnou expiraci, velikost MSS
Ukončení TCP spojení založeno na polovičním uzavření (half-close) jedna strana dá najevo, že si přeje ukončit spojení (FIN), ale dále přijímá protějšek dokončí přenos a potvrdí ukončení lze i okamžité ukončení jedna strana pošle RST obě strany okamžitě skončí
TCP reset attack zavírání otevřených spojení nutnost odposlechu zfalšování → ukončení komunikace lze blokovat nežádoucí provoz udělal to provider Comcast (proti P-t-P), FCC zakročila Snort to dělá záměrně rušení podezřelých spojení Network Intrusion Detection
Zahazování paketů simulace přetížení přenosové trasy TCP reaguje snížením rychlosti dle RFC implementovány autoregulační mechanismy rychlý pokles a návrat k hodnotě ještě beze ztrát některé implementace mohou být agresivnější využívá se pro regulaci uživatelů bez regulace má každé TCP spojení zhruba stejně kdo naváže více spojení, má víc z přenosového pásma používají se priority (v datagramu nebo podle portu) k síťovému rozhraní jsou připojeny fronty (+předbíhání)
Směrování „routing“ sdružuje IP adresy do podsítí cílem je zjednodušení routovací tabulky statický pevně nastaven správcem sítě (počítače) vhodný pro malé sítě dynamický (RIP, BGP, OSPF, ...) adaptuje se na aktuální situaci v případě výpadků, rozkládání zátěže je problém vytváření autonomních systémů každý provider zodpovědný za svoje podsítě automatická propagace nových podsítí Čína na sebe přesměrovala provoz serverů USA
Útoky na směrování podvržení záznamu do routovací tabulky selhání je pro větší sítě nebezpečné starší protokoly bez zabezpečení může snadno způsobit totální rozklad sítě ICMP redirect dnes se typicky ignoruje dříve umožňoval stanici přidat další záznam stanice pošle špatně, router přepošle do správného cíle způsobuje duplikaci síťového provozu (snížení propustnosti)
Firewall „ohnivá stěna“ cílem filtrovat nežádoucí provoz na linkové vrstvě (MAC adresy) nepraktické, ale používá se třeba na ARP spoofing na síťové vrstvě klasické nasazení, zvlášť pro IPv4 a IPv6 filtruji provoz: směrem dovnitř, směrem ven, forwardovaný provoz (router) podle implementace: nestavový firewall a stavový firewall součást TCP/IP stacku nebo aplikační (specializovaný program)
Nestavový firewall nemá vnitřní stavy nic si nepamatuje každý datagram posuzován zvlášť jednoduchá implementace nevhodné pro spojovou službu (TCP) nedokáže odfiltrovat datagramy, které do proudu nepatří
Stavový firewall pracuje s vnitřními stavy pamatuje si svoji předchozí činnost datagramy posuzovány v kontextu složitější implementace vhodné pro TCP u spojení rozpoznáme otevření, přenost dat a uzavření používá se i pro UDP u DNS je stavem otázka → odpověď obtížně se dělá analýza přenášených dat na to je potřeba proxy (aplikační brána) antivirová kontrola, detekce malware, únik dat
Port knocking „ťukání na porty“ firewall je otevřen sledem datagramů nevýhodou je potřeba speciální aplikace výhodou je, že porty jsou standardně zavřené dnes spíše nahrazováno pomocí VPN vhodné použití: otevření SSH portu z Internetu otevření portu pro vzdálenou plochu Windows oba případy zamezí zkoušení hesel
NAT, proxy, HUB, switch, VLAN