Chris Sanders
Analýza sítí a řešení problémů v programu Wireshark
Computer Press Brno 2012
K1986.indd 1
31.1.2012 14:18:42
Analýza sítí a řešení problémů v programu Wireshark Chris Sanders Překlad: Jakub Goner Odpovědný redaktor: Libor Pácl Technický redaktor: Jiří Matoušek Copyright © 2011 by Chris Sanders. Title of English-language original: Practical Packet Analysis, 2nd Edition, ISBN 978-1-59327-266-1. Czech-language edition copyright © 2012 by Albatros Media a. s. All rights reserved. Objednávky knih: http://knihy.cpress.cz www.albatrosmedia.cz
[email protected] bezplatná linka 800 555 513 ISBN 978-80-251-3718-5 Vydalo nakladatelství Computer Press v Brně roku 2012 ve společnosti Albatros Media a. s. se sídlem Na Pankráci 30, Praha 4. Číslo publikace 15 946. © Albatros Media a. s. Všechna práva vyhrazena. Žádná část této publikace nesmí být kopírována a rozmnožována za účelem rozšiřování v jakékoli formě či jakýmkoli způsobem bez písemného souhlasu vydavatele. 1. vydání
K1986.indd 2
31.1.2012 14:18:57
Obsah
PODĚKOVÁNÍ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 ÚVOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Cíle knihy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Koncepce a přístup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Jak s knihou pracovat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Ukázkové zachycené soubory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Nadace Rural Technology Fund . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Kontakt s autorem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Zpětná vazba od čtenářů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Errata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 KAPITOLA 1
ÚVOD DO ANALÝZY PAKETŮ A SÍTÍ . . . . . . . . . . . . . . . . . . . . . . . .19 Analýza paketů a nástroje pro sledování paketů . . . . . . . . . . . . . . . 20 Hodnocení paketového snifferu . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Principy paketových snifferů . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
Principy komunikace počítačů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Protokoly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 Model OSI se sedmi vrstvami. . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 Zapouzdření dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 Síťový hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
Klasifikace provozu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Všesměrový provoz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33 Vícesměrový provoz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 3
K1986.indd 3
31.1.2012 14:18:57
Obsah Jednosměrový provoz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
Závěrečné poznámky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 KAPITOLA 2
NAPÍCHNUTÍ LINKY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Promiskuitní život . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Sledování s rozbočovači . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Sledování v přepínaném prostředí . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Zrcadlení portu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Rozbočování. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40 Použití odposlechu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 Znehodnocení mezipaměti ARP . . . . . . . . . . . . . . . . . . . . . . . . . . .45
Sledování ve směrovaném prostředí . . . . . . . . . . . . . . . . . . . . . . . . 49 Umístění snifferu v praxi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 KAPITOLA 3
ÚVOD DO PROGRAMU WIRESHARK . . . . . . . . . . . . . . . . . . . . . . .53 Stručná historie programu Wireshark. . . . . . . . . . . . . . . . . . . . . . . . 53 Výhody programu Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Instalace programu Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Instalace v systémech Microsoft Windows . . . . . . . . . . . . . . . . . .55 Instalace v systémech Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57 Instalace v systémech Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . .59
Základy programu Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 První zachycené pakety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 Hlavní okno programu Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . .60 Předvolby programu Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . .62 Barevné kódování paketů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 KAPITOLA 4
ZPRACOVÁNÍ ZACHYCENÝCH PAKETŮ. . . . . . . . . . . . . . . . . . . . .67 Zpracování zachycených souborů . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Ukládání a export zachycených souborů . . . . . . . . . . . . . . . . . . . .67 Sloučení zachycených souborů . . . . . . . . . . . . . . . . . . . . . . . . . . .69
Zpracování paketů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Hledání paketů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70 Označování paketů. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71 Tisk paketů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71 4
K1986.indd 4
31.1.2012 14:18:57
Obsah Nastavení formátu zobrazení času a referencí . . . . . . . . . . . . . . . . . 72 Formáty zobrazení času . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 Referenční čas paketu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
Nastavení možností zachytávání . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Nastavení Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 Nastavení Capture File(s) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 Nastavení Stop Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 Nastavení Display Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 Nastavení Name Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
Použití filtrů. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Filtry zachytávání . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78 Filtry zobrazení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84 Ukládání filtrů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87 KAPITOLA 5
POKROČILÉ FUNKCE PROGRAMU WIRESHARK . . . . . . . . . . . . .89 Koncové body sítě a konverzace . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Zobrazení koncových bodů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 Zobrazení síťových konverzací . . . . . . . . . . . . . . . . . . . . . . . . . . . .91 Řešení potíží pomocí oken Endpoints a Conversations . . . . . . . . .92
Okno Protocol Hierarchy Statistics . . . . . . . . . . . . . . . . . . . . . . . . . 94 Překlad názvů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Povolení překladu názvů. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Potenciální nevýhody překladu názvů . . . . . . . . . . . . . . . . . . . . . .96
Rozbor protokolů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Změna disektoru. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97 Zobrazení zdrojového kódu disektoru . . . . . . . . . . . . . . . . . . . . . .99
Sledování datových proudů TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Okno Packet Lengths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Vytváření grafů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Zobrazení vstupně-výstupních grafů . . . . . . . . . . . . . . . . . . . . . .102 Grafy času obousměrného přenosu . . . . . . . . . . . . . . . . . . . . . . .104 Grafy toku. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106
Expertní informace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 KAPITOLA 6
BĚŽNÉ PROTOKOLY NIŽŠÍCH VRSTEV . . . . . . . . . . . . . . . . . . . .109 Protokol ARP (Address Resolution Protocol) . . . . . . . . . . . . . . . . . 109 Hlavička ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 5
K1986.indd 5
31.1.2012 14:18:57
Obsah Paket 1: požadavek ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112 Paket 2: odpověď ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113 Nevyžádané ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
Protokol IP (Internet Protocol) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 IP adresy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 Hlavička IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117 Time to Live . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 Fragmentace IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
Protokol TCP (Transmission Control Protocol) . . . . . . . . . . . . . . . . 123 Hlavička TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 Porty TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124 Trojcestné ověřování TCP typu handshake . . . . . . . . . . . . . . . . .127 Proces TCP teardown. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130 Reset TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
Protokol UDP (User Datagram Protocol) . . . . . . . . . . . . . . . . . . . . 132 Hlavička UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Protokol ICMP (Internet Control Message Protocol) . . . . . . . . . . . 134 Hlavička ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 Typy a zprávy ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 Požadavky a odpovědi echo . . . . . . . . . . . . . . . . . . . . . . . . . . . .135 Traceroute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138 KAPITOLA 7
BĚŽNÉ PROTOKOLY VYŠŠÍ VRSTVY . . . . . . . . . . . . . . . . . . . . . .141 Protokol DHCP (Dynamic Host Configuration Protocol) . . . . . . . . 141 Struktura paketu DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142 Proces obnovení DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143 Obnovení během zápůjčky protokolu DHCP . . . . . . . . . . . . . . . .148 Možnosti a typy zpráv protokolu DHCP . . . . . . . . . . . . . . . . . . . .148
Systém DNS (Domain Name System) . . . . . . . . . . . . . . . . . . . . . . 149 Struktura paketu DNS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149 Jednoduchý dotaz DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 Typy dotazů DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152 Rekurze DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 Přenosy zóny DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
Protokol HTTP (Hypertext Transfer Protocol) . . . . . . . . . . . . . . . . . 159 Prohlížení webu pomocí HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . .159 Odesílání dat protokolem HTTP . . . . . . . . . . . . . . . . . . . . . . . . . .161
Závěrečné poznámky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6
K1986.indd 6
31.1.2012 14:18:57
Obsah KAPITOLA 8
BĚŽNÉ SCÉNÁŘE Z PRAXE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163 Sociální sítě na úrovni paketů . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Zachytávání provozu služby Twitter . . . . . . . . . . . . . . . . . . . . . . .164 Zachytávání provozu služby Facebook . . . . . . . . . . . . . . . . . . . .168 Porovnání metod Twitteru a Facebooku . . . . . . . . . . . . . . . . . . . .170
Zachytávání provozu služby ESPN.com . . . . . . . . . . . . . . . . . . . . 170 Použití okna Conversations . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171 Použití okna Protocol Hierarchy Statistics . . . . . . . . . . . . . . . . . .171 Zobrazení provozu DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172 Zobrazení požadavků HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173
Praktické problémy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Nedostupný Internet: konfigurační problémy . . . . . . . . . . . . . . . .174 Nedostupný Internet: nežádoucí přesměrování . . . . . . . . . . . . . .177 Nedostupný Internet: problémy mimo lokální síť . . . . . . . . . . . . .181 Nespolehlivá tiskárna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 Izolovaná pobočka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187 Naštvaný vývojář . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190
Závěrečné poznámky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 KAPITOLA 9
ZRYCHLENÍ POMALÉ SÍTĚ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197 Funkce opravy chyb protokolu TCP. . . . . . . . . . . . . . . . . . . . . . . . 198 Opakované přenosy TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 Duplicitní potvrzení TCP a rychlé opakované přenosy . . . . . . . . .201
Řízení toku TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Úpravy hodnoty Window Size . . . . . . . . . . . . . . . . . . . . . . . . . . .207 Zastavení toku dat pomocí oznámení nulové velikosti okna . . . .208 Posuvné okno protokolu TCP v praxi . . . . . . . . . . . . . . . . . . . . . .209
Poučení z paketů opravy chyb a řízení toku protokolu TCP . . . . . 213 Určení zdroje vysoké latence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Normální komunikace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214 Pomalá komunikace – latence linky . . . . . . . . . . . . . . . . . . . . . . .214 Pomalá komunikace – latence klienta . . . . . . . . . . . . . . . . . . . . .216 Pomalá komunikace – latence serveru . . . . . . . . . . . . . . . . . . . . .216 Schéma určování zdroje latence. . . . . . . . . . . . . . . . . . . . . . . . . .217
Standardní hodnoty sítě . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Standardní hodnoty lokality . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218 Standardní hodnoty hostitele . . . . . . . . . . . . . . . . . . . . . . . . . . . .219 7
K1986.indd 7
31.1.2012 14:18:57
Obsah Standardní hodnoty aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . .220 Další poznámky ke standardním hodnotám . . . . . . . . . . . . . . . . .221
Závěrečné poznámky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 KAPITOLA 10
ANALÝZA PAKETŮ A ZABEZPEČENÍ . . . . . . . . . . . . . . . . . . . . . .223 Průzkum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Skenování SYN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 Zjišťování otisků operačního systému . . . . . . . . . . . . . . . . . . . . .229
Napadení systému . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Operace Aurora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232 Znehodnocení mezipaměti ARP . . . . . . . . . . . . . . . . . . . . . . . . . .238 Trojský kůň se vzdáleným přístupem . . . . . . . . . . . . . . . . . . . . . .242
Závěrečné poznámky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 KAPITOLA 11
ANALÝZA BEZDRÁTOVÝCH PAKETŮ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251 Fyzická hlediska . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Postupné sledování jednotlivých kanálů. . . . . . . . . . . . . . . . . . . .251 Interference bezdrátového signálu . . . . . . . . . . . . . . . . . . . . . . . .253 Detekce a analýza interference signálu . . . . . . . . . . . . . . . . . . . .253
Režimy bezdrátových karet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Bezdrátové sledování v systému Windows . . . . . . . . . . . . . . . . . . 256 Konfigurace karty AirPcap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256 Zachytávání provozu pomocí zařízení AirPcap. . . . . . . . . . . . . . .257
Bezdrátové sledování v systému Linux . . . . . . . . . . . . . . . . . . . . . Struktura paketu 802.11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Doplnění sloupců specifických pro bezdrátové sítě do podokna Packet List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filtry specifické pro bezdrátové sítě . . . . . . . . . . . . . . . . . . . . . . .
259 260 262 263
Filtrování provozu podle konkrétní hodnoty BSS ID . . . . . . . . . . .263 Filtrování konkrétních typů bezdrátových paketů . . . . . . . . . . . . .264 Filtrování konkrétní frekvence . . . . . . . . . . . . . . . . . . . . . . . . . . . .265
Zabezpečení bezdrátové sítě . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 Úspěšná autentizace WEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266 Neúspěšná autentizace WEP . . . . . . . . . . . . . . . . . . . . . . . . . . . .268 Úspěšná autentizace WPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269
8
K1986.indd 8
31.1.2012 14:18:58
Obsah Neúspěšná autentizace WPA . . . . . . . . . . . . . . . . . . . . . . . . . . . .270
Závěrečné poznámky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 PŘÍLOHA
DALŠÍ INFORMACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273 Nástroje na analýzu paketů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 tcpdump a Windump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273 Cain & Abel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274 Scapy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274 Netdude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274 Colasoft Packet Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275 CloudShark. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275 pcapr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276 NetworkMiner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .276 Tcpreplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277 ngrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277 libpcap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277 hping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277 Domain Dossier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277 Perl a Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277
Informační zdroje týkající se analýzy paketů . . . . . . . . . . . . . . . . . 278 Domovská stránka programu Wireshark . . . . . . . . . . . . . . . . . . .278 Podrobný bezpečnostní kurz detekce vniknutí pořádaný organizací SANS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278 Blog Chrise Sanderse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278 Blog Packetstan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279 Univerzita programu Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . .279 IANA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
REJSTŘÍK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281
9
K1986.indd 9
31.1.2012 14:18:58
K1986.indd 10
31.1.2012 14:18:58
Poděkování
Tato kniha mohla vzniknout díky přímým i nepřímým příspěvkům mnoha různých lidí. V prvé řadě všechna sláva patří Bohu. Při psaní knihy se projevuje mnoho pozitivních i negativních emocí. Když jsem nervózní, uklidňuje mě. Když jsem zklamaný, utěšuje mě. Když jsem zmatený, dává mi odhodlání. Když jsem unavený, přináší mi odpočinek. Když jsem pyšný, zachovává moji rozvážnost. Za tuto knihu, svou kariéru i vlastní existenci vděčím pouze Bohu a jeho synu Ježíši Kristu. Táto, svou motivaci jsem čerpal z mnoha zdrojů. Nic mě však nepotěší tolik, jako když mi říkáš, že jsi na mě pyšný. Nemůžu Ti dostatečně poděkovat za to, že mi to dáváš najevo. Mami, druhé vydání této knihy se objeví přímo před desátým výročím Tvého odchodu. Vím, že mě sleduješ a že jsi na mě hrdá. Doufám, že v dalších letech budeš ještě více. Teto Debi a strýci Randy, od prvního dne jste mě maximálně podporovali. Moje rodina není velká, ale velmi si cením těch příbuzných, které mám – především vás. Nesetkáváme se sice tak často, jak bych si přál, ale nemohu vám dostatečně poděkovat za to, že jste pro mě byli druhými rodiči. Tino Nance, sice už spolu nemluvíme tak často jako dříve, ale vždy Tě budu považovat za náhradní mámu. Bez Tvé podpory a důvěry bych nedělal to, co dnes dělám. Jasone Smithi, musel jsi vyslechnout více mých tirád než kdokoli jiný, ale díky tomu jsem si zachoval zdravý rozum. Jsem rád, že mám v Tobě dobrého kamaráda a spolupracovníka, který mi pomáhá s různými projekty. Dodatečně Ti ještě děkuji za to, žes mi tehdy na půl roku půjčil svou garáž. Co se týče mých spolupracovníků (minulých i současných): vždy jsem věřil tomu, že pokud se člověk obklopí dobrými lidmi, sám se stane lepším. Mám štěstí, že spo11
K1986.indd 11
31.1.2012 14:18:58
Poděkování lupracuji s mnoha skvělými lidmi, kteří patří mezi nejlepší a nechytřejší v branži. Počítám vás do své rodiny. Mike Poor je bez diskuze mým idolem v oboru analýzy paketů. Tvoje práce a přístup mě inspirují a pomáhají mi v tom, co sám dělám. Tylerovi Regulymu děkuji za odborné korektury této knihy. Určitě to nebyla žádná zábava, ale bylo to nezbytné a moc si toho vážím. Děkuji také Geraldu Combsovi a vývojářskému týmu programu Wireshark. Díky Geraldovi a stovkám jiných vývojářů je program Wireshark vynikající analytickou platformou. Nebýt jejich úsilí, tato knihy by neexistovala… nebo pokud by přece jen vznikla, popisovala by program tcpdump a to by nikoho nebavilo. Bill a zaměstnanci nakladatelství No Starch Press dali šanci klukovi z Kentucky, a to nejen jednou, ale dvakrát. Děkuji za vaši důvěru a trpělivost a za to, že jsem si mohl splnit své sny.
12
K1986.indd 12
31.1.2012 14:18:58
Úvod
Druhé vydání knihy Analýza sítí a řešení problémů v programu Wireshark vzniklo během jednoho a půl roku od sklonku roku 2009 do poloviny roku 2011, tj. asi čtyři roky poté, co se objevilo vydání první (pouze v anglickém jazyce).
Cíle knihy Možná přemýšlíte nad tím, proč byste si měli koupit zrovna tuto knihu o analýze paketů, a ne nějakou jinou. Odpověď se skrývá v titulu: Analýza sítí a řešení problémů v programu Wireshark. Není nad praktické zkušenosti a v knize lze tyto zkušenosti nejlépe nahradit díky praktickým příkladům analýzy paketů a reálným scénářům. První polovina této knihy přináší nezbytné znalosti, které potřebujete k analýze paketů a práci v programu Wireshark. Druhá polovina knihy je věnována výhradně praktickým příkladům, se kterými se můžete běžně setkat při každodenní správě sítě. Nehledě na to, zda pracujete jako síťový technik, správce sítě, šéf oddělení IT, správce pracovních stanic, nebo dokonce síťový bezpečnostní analytik, mohou vám značně pomoci metody analýzy paketů, které jsou popsány v této knize.
Koncepce a přístup Obecně se můžu označit za pohodáře. Při výuce se tedy snažím postupovat neformálním způsobem. Tento přístup se projevuje i v jazyce této knihy. Při rozboru technických koncepcí je snadné zapadnout do technického žargonu, ale vyvinul jsem maximální úsilí, abych výklad udržel na konverzační rovině. Všechny definice jsem psal jasně, přímo a věcně, bez zbytečné vaty. Pokud to s učením analýzy paketů myslíte vážně, měli byste si osvojit koncepce v prvních několika kapitolách, protože bez nich nemůžete porozumět zbytku 13
K1986.indd 13
31.1.2012 14:18:58
Úvod knihy. Druhá polovina knihy je zcela praktická. Ve své práci se sice nemusíte setkat s přesně stejnými scénáři, ale měli byste umět příslušné koncepce aplikovat v situacích, které budete řešit. Následuje stručný přehled obsahu kapitol této knihy: Kapitola 1: Úvod do analýzy paketů a sítí Co to je analýza paketů? Jak funguje? Jak se provádí? Tato kapitola se zabývá základy síťové komunikace a analýzy paketů. Kapitola 2: Napíchnutí linky V této kapitole si ukážeme různé metody, jak lze do sítě připojit paketový sniffer. Kapitola 3: Úvod do programu Wireshark Tato kapitola obsahuje základní informace o programu Wireshark – kde jej získat, jak jej používat, co dělá, proč je skvělý a další užitečné podrobnosti. Kapitola 4: Zpracování zachycených paketů Po instalaci a zprovoznění programu Wireshark se musíte naučit, jak zachycené pakety zpracovávat. V této kapitole získáte základy. Kapitola 5: Pokročilé funkce programu Wireshark Jakmile se naučíte lézt, je čas s výukou chození. V této kapitole se pustíme do pokročilých funkcí programu Wireshark a podíváme se mu pod kapotu, abychom mohli využít některé méně triviální funkce. Kapitola 6: Běžné protokoly nižších vrstev Tato kapitola ukazuje, jak na úrovni paketů vypadají některé běžné síťové komunikační protokoly nižších vrstev, např. TCP, UDP a IP. Chcete-li porozumět možným chybám těchto protokolů, musíte nejdříve chápat, jak správně fungují. Kapitola 7: Běžné protokoly vyšší vrstvy Tato kapitola pokračuje v rozboru protokolů a představuje na úrovni paketů nejrozšířenější síťové komunikační protokoly vyšší vrstvy: HTTP, DNS a DHCP. Kapitola 8: Běžné scénáře z praxe V této kapitole naleznete rozbor některých běžných vzorů provozu a první sadu praktických scénářů. Všechny scénáře mají přehledný formát, který postupuje od problému přes jeho analýzu k řešení. Tyto základní scénáře se týkají pouze několika počítačů a nevyžadují rozsáhlou analýzu – pouze do té míry, abyste získali základní přehled problematiky.
14
K1986.indd 14
31.1.2012 14:18:58
Jak s knihou pracovat Kapitola 9: Zrychlení pomalé sítě Síťoví technici nejčastěji řeší stížnosti, které se týkají nedostatečného výkonu sítě. Devátá kapitola je věnována řešení tohoto typu problémů. Kapitola 10: Analýza paketů a zabezpečení Zabezpečení sítě patří mezi nejsledovanější témata z oblasti IT. Kapitola 10 představuje některé scénáře, které se týkají řešení bezpečnostních potíží metodami analýzy paketů. Kapitola 11: Analýza bezdrátových paketů Tato kapitola slouží jako úvod do analýzy bezdrátových paketů. Rozebírá rozdíly mezi analýzou v bezdrátových a kabelových sítích a uvádí některé příklady provozu v bezdrátových sítích. Příloha: Další informace Příloha knihy doporučuje některé další referenční nástroje a weby, které se vám mohou hodit při rozvíjení postupů analýzy paketů, s nimiž jste se seznámili v předchozí části knihy.
Jak s knihou pracovat Tuto knihu lze používat dvěma způsoby:
Jako výukový text, který můžete přečíst po jednotlivých kapitolách od začátku do konce a který vám umožní porozumět základům analýzy paketů. Přitom je vhodné věnovat zvláštní pozornost praktickým scénářům v posledních několika kapitolách. Jako referenční zdroj. Některé funkce programu Wireshark se nepoužívají příliš často, takže můžete zapomenout, jak pracují. Knihu Analýza sítí a řešení problémů v programu Wireshark je vhodné mít po ruce, potřebujete-li si rychle osvěžit, jak se určitá funkce používá. Kniha také obsahuje unikátní grafy, diagramy a postupy, které se mohou při praktické analýze paketů hodit.
Ukázkové zachycené soubory Všechny zachycené soubory v této knize jsou k dispozici na stránce nakladatelství No Starch Press: http://www.nostarch.com/packet2.htm po klepnutí na odkaz „Download the capture files for this book“. Chcete-li z knihy vytěžit maximum, rozhodně doporučuji, abyste si tyto soubory stáhli a používali je při čtení příslušných příkladů.
15
K1986.indd 15
31.1.2012 14:18:58
Úvod
Nadace Rural Technology Fund V tomto úvodu nesmí chybět zmínka o velkém přínosu originálního vydání knihy Analýza sítí a řešení problémů v programu Wireshark. Krátce po prvním vydání této knihy jsem založil neziskovou organizaci typu 501(c)(3), která završuje mé největší sny. Studenti z venkova, i když mají výborné známky, mívají často méně příležitostí k seznámení s technologiemi než jejich kolegové z měst. Nadace Rural Technology Fund (RTF), založená roku 2008, se snaží vyrovnat digitální příkop mezi venkovskými komunitami a jejich městskými a předměstskými protějšky. Přitom se využívají cílené stipendijní programy, komunitní práce a obecná propagace technologií ve venkovských oblastech. Naše stipendia jsou zaměřena na studenty žijící ve vesnických komunitách, kteří se zajímají o počítačové technologie a plánují se v tomto oboru dále vzdělávat. S potěšením oznamuji, že 100 procent autorských honorářů z této knihy směřuje přímo do nadace Rural Technology Fund, která bude poskytovat tato stipendia. Chcete-li získat další informace o nadaci Rural Technology Fund nebo o tom, jak můžete sami přispět, navštivte náš web na adrese http://www.ruraltechfund.org/.
Kontakt s autorem Pokaždé jsem nadšený, když dostanu zpětnou vazbu od svých čtenářů. Pokud byste mě chtěli z jakéhokoli důvodu kontaktovat, můžete posílat libovolné otázky, komentáře, hrozby a návrhy k sňatku přímo na moji adresu
[email protected]. Pravidelně také píši blog na adrese http://www.chrissanders.org/ a můžete mě následovat na účtu Twitter @chrissanders88.
Zpětná vazba od čtenářů Nakladatelství a vydavatelství Computer Press, které pro vás tuto knihu přeložilo, stojí také o zpětnou vazbu a bude na vaše podněty a dotazy reagovat. Můžete se obrátit na následující adresy: redakce PC literatury Computer Press Spielberk Office Centre Holandská 3 639 00 Brno nebo
[email protected] 16
K1986.indd 16
31.1.2012 14:18:58
Errata Computer Press neposkytuje rady ani jakýkoli servis pro aplikace třetích stran. Pokud budete mít dotaz k programu, obraťte se prosím na jeho tvůrce.
Errata Přestože jsme udělali maximum pro to, abychom zajistili přesnost a správnost obsahu, chybám se úplně vyhnout nelze. Pokud v některé z našich knih najdete chybu, ať už chybu v textu nebo v kódu, budeme rádi, pokud nám ji oznámíte. Ostatní uživatele tak můžete ušetřit frustrace a nám můžete pomoci zlepšit následující vydání této knihy. Veškerá existující errata zobrazíte na adrese po klepnutí na odkaz Soubory ke stažení.
http://knihy.cpress.cz/K1986
17
K1986.indd 17
31.1.2012 14:18:58
K1986.indd 18
31.1.2012 14:18:58
Errata
KAPITOLA 1
Úvod do analýzy paketů a sítí
V každé počítačové síti se může denně vyskytnout spousta problémů: od prosté infekce spywarem po složitou chybu konfigurace směrovače. Některé potíže přitom nelze vyřešit okamžitě. Můžeme nanejvýš doufat, že jsme na problémy plně připraveni a máme dostatečné znalosti a potřebné nástroje, abychom dokázali vhodně reagovat. Všechny síťové problémy začínají na úrovni paketů, kde se může ukázat, že i nejpřitažlivější aplikace má zcela neefektivní implementaci a zdánlivě spolehlivé protokoly obsahují bezpečnostní díry. Chceme-li síťovým problémům lépe porozumět, musíme přejít na úroveň paketů. Zde je vidět úplně vše – nic neschovají matoucí struktury nabídek, vizuálně atraktivní uživatelské rozhraní ani nespolehliví zaměstnanci. Na této úrovni neexistují žádná skutečná tajemství (pouze ta šifrovaná). Čím více toho zvládneme na úrovni paketů, tím lépe dokážeme kontrolovat svou síť a řešit síťové potíže. To je doménou analýzy paketů. V této knize se do světa analýzy paketů pustíme okamžitě. Na praktických příkladech ukážeme, jak zrychlit síťovou komunikaci, identifikovat úzká hrdla aplikací, nebo dokonce stopovat hackery. Po přečtení této knihy dokážete implementovat pokročilé postupy analýzy paketů, které vám pomohou vyřešit i ty nejobtížnější síťové potíže. V této kapitole začneme od základů a zaměříme se na síťovou komunikaci. S využitím těchto základních informací pak analyzujeme různé scénáře. 19
K1986.indd 19
31.1.2012 14:18:59
Kapitola 1 Úvod do analýzy paketů a sítí
Analýza paketů a nástroje pro sledování paketů Analýza paketů, která se často označuje jako sledování paketů (packet sniffing) nebo analýza protokolů, popisuje proces zachytávání a interpretace aktuálních dat přenášených po síti. Díky tomu lze lépe porozumět fungování dané sítě. K analýze paketů se obvykle používá paketový sniffer (packet sniffer – nástroj pro sledování paketů), který umožňuje zachytávat neformátovaná síťová data při jejich přenosu. Analýza paketů poskytuje následující možnosti:
Seznámení s vlastnostmi sítě Zjištění uživatelů sítě Zjištění, kdo nebo co spotřebovává dostupnou šířku pásma Identifikace časů špičkového využití sítě Identifikace možných útoků nebo škodlivé aktivity Vyhledání nezabezpečených a neefektivních aplikací
K dispozici jsou paketové sniffery různých typů včetně bezplatných a komerčních. Každý program je navržen k odlišným účelům. Mezi oblíbené programy na analýzu paketů patří tcpdump, OmniPeek a Wireshark (v této knize se budeme zabývat pouze posledním uvedeným programem). tcpdump je program pro příkazový řádek. OmniPeek a Wireshark mají grafická uživatelská rozhraní (GUI).
Hodnocení paketového snifferu Při výběru paketového snifferu je nutné zohlednit několik faktorů, mj.:
Podporované protokoly – všechny paketové sniffery umožňují interpretovat více protokolů. Většina z nich dokáže interpretovat běžné síťové protokoly (např. IPv4 a ICMP), protokoly transportní vrstvy (např. TCP a UDP), a dokonce protokoly aplikační vrstvy (mezi něž patří DNS a HTTP). Nemusí však podporovat netradiční nebo novější protokoly (třeba IPv6, SMBv2 či SIP). Před nasazením snifferu byste měli ověřit, zda je kompatibilní s protokoly, které chcete analyzovat. Snadné používání – vezměte v úvahu uspořádání ovládacích prvků programu, snadnost instalace a celkové postupy standardních operací. Zvolený program by měl odpovídat úrovni vašich znalostí. Pokud nemáte s analýzou paketů delší praxi, raději se vyhněte pokročilejším paketovým snifferům pro příkazový řádek, jako je tcpdump. Na druhou stranu máte-li bohaté zkušenosti, můžete dát pokročilejšímu programu přednost. Když získáte v oblasti analýzy paketů více praxe, můžete v některých případech dokonce s výhodou kombinovat více paketových snifferů. Náklady – na paketových snifferech je potěšující, že existuje mnoho bezplatných programů tohoto typu, které jsou srovnatelné s kterýmkoli komerčním
20
K1986.indd 20
31.1.2012 14:18:59
Analýza paketů a nástroje pro sledování paketů
produktem. Komerční produkty a jejich bezplatně dostupné alternativy se liší zejména svými vykazovacími moduly. Komerční programy obvykle obsahují nějaký modul na generování složitých výkazů, který má u bezplatných aplikací často jen omezené možnosti nebo úplně chybí. Podpora programu – i když postupně zvládnete základy používání paketového snifferu, můžete příležitostně potřebovat pomoc při řešení nových problémů. Když porovnáváte dostupnou podporu, všímejte si vývojářské dokumentace, veřejných fór a e-mailových konferencí. Bezplatně dostupné programy na sledování paketů jako Wireshark sice obvykle nenabízejí podporu vývojářů, ale tuto mezeru často zaplňují komunity uživatelů těchto aplikací. Tyto komunity uživatelů a přispěvatelů provozují diskuzní fóra, wiki a blogy, kde můžete získat dostatek informací, abyste svůj paketový sniffer lépe využili. Podpora operačních systémů – některé paketové sniffery bohužel nejsou kompatibilní se všemi operačními systémy. Zvolte si ten program, který bude fungovat ve všech operačních systémech, které potřebujete používat. Pracujete-li jako konzultant, často musíte zachytávat a analyzovat pakety v různých operačních systémech. Hledejte proto nástroj, který funguje ve většině systémů. Pamatujte také na to, že někdy je nutné zachytávat pakety v jednom počítači a analyzovat je v jiném. Kvůli rozdílům mezi operačními systémy může být potřeba použít v každém zařízení jinou aplikaci.
Principy paketových snifferů Proces sledování paketů vyžaduje spolupráci softwaru a hardwaru. Celý proces lze rozdělit na tři fáze:
Shromažďování – v prvním kroku paketový sniffer sbírá neformátovaná binární data, která putují po síti. Přitom se vybrané síťové rozhraní obvykle přepíná do promiskuitního režimu. V tomto režimu dokáže síťová karta naslouchat veškerému provozu v síťovém segmentu, nikoli pouze datům, která jsou jí adresována. Konverze – v tomto kroku jsou zachycená binární data převedena do čitelného tvaru. Zde končí možnosti většiny pokročilých paketových snifferů pro příkazový řádek. V této fázi mají síťová data podobu, kterou lze interpretovat pouze na zcela základní úrovni. Větší část analýzy zůstává na koncovém uživateli. Analýza – třetí a závěrečný krok zahrnuje vlastní analýzu zachycených a konvertovaných dat. Paketový sniffer načte zachycená síťová data, na základě extrahovaných informací zkontroluje síťové protokoly a zahájí analýzu konkrétních vlastností příslušného protokolu.
21
K1986.indd 21
31.1.2012 14:18:59
Kapitola 1 Úvod do analýzy paketů a sítí
Principy komunikace počítačů Chcete-li plně pochopit analýzu paketů, musíte přesně rozumět tomu, jak počítače komunikují. V této části prozkoumáme základy síťových protokolů, model OSI (Open Systems Interconnections), síťové datové rámce a hardware, který činnost sítí umožňuje.
Protokoly Moderní sítě jsou tvořeny různými systémy, které fungují na mnoha odlišných platformách. Jejich komunikaci usnadňuje sada společných jazyků, které se označují jako protokoly. K běžným protokolům patří TCP (Transmission Control Protocol), IP (Internet Protocol), ARP (Address Resolution Protocol) a DHCP (Dynamic Host Configuration Protocol). Sada protokolů (protocol stack) je logické seskupení protokolů, které fungují společně. Princip protokolů nejlépe přiblížíme, když je přirovnáme k pravidlům, která řídí ústní nebo písemnou komunikaci mezi lidmi. Každý jazyk má pravidla, která například řídí časování sloves nebo způsob, jakým někoho pozdravit či mu poděkovat. Protokoly fungují podobně a umožňují mj. definovat, jakým způsobem budou směrovány pakety, jak lze inicializovat připojení a jak se potvrzuje přijetí dat. V závislosti na své funkci může být protokol mimořádně jednoduchý, nebo značně složitý. Různé protokoly se sice často zásadně liší, ale mnohé z nich řeší podobné aspekty:
Inicializace připojení – inicializuje připojení klient nebo server? Které informace je nutné před zahájením komunikace vyměnit? Vyjednání vlastností připojení – je komunikace protokolu šifrována? Jak se mezi komunikujícími hostiteli přenášejí šifrovací klíče? Formátování dat – jak jsou uspořádána data v paketu? V jakém pořadí probíhá zpracování dat u přijímajících zařízení? Detekce a oprava chyb – co se stane v případě, že doručení paketu do cíle trvá příliš dlouho? Jak probíhá zotavení klienta, pokud nemůže krátkodobě navázat komunikaci se serverem? Ukončení připojení – jak jeden z hostitelů druhému sděluje, že komunikace skončila? Jaké závěrečné informace je nutné přenést, aby byla konverzace uzavřena správně?
Model OSI se sedmi vrstvami Protokoly se dělí podle svých funkcí na základě referenčního modelu OSI, který představuje oborový standard. Model OSI dělí síťové komunikační procesy do sedmi samostatných vrstev (viz obrázek 1.1). Tento hierarchický model značně zjedno22
K1986.indd 22
31.1.2012 14:18:59
Principy komunikace počítačů dušuje popis síťové komunikace. Aplikační vrstva nahoře představuje vlastní programy, které slouží pro přístup k síťovým prostředkům. Vespod se nachází fyzická vrstva, jejímž úkolem je přenášet síťová data po médiu. Díky spolupráci protokolů na sousedních vrstvách je zajištěno správné zpracování dat. POZNÁMKA Model OSI původně roku 1983 publikovala organizace ISO (International Organization for Standardization) jako svůj dokument označený ISO 7498. Model OSI je pouze doporučený oborový standard. Vývojáři protokolů nemají povinnost se jím přesně řídit. Síťový model OSI navíc nemá monopol. Někteří odborníci dávají přednost modelu amerického Ministerstva obrany (Department of Defense – DoD), který je také znám jako model TCP/IP.
Každá vrstva modelu OSI symbolizuje určitou funkci (viz dále):
Aplikační vrstva (vrstva 7) – vrchní vrstva modelu OSI poskytuje uživatelům přístup k síťovým prostředkům. Koncoví uživatelé se obvykle setkávají pouze s touto vrstvou, která představuje rozhraní pro všechny jejich síťové činnosti. Prezentační vrstva (vrstva 6) – tato vrstva převádí přijatá data do formátu, který je čitelný pro aplikační vrstvu. Kódování a dekódování dat na této vrstvě závisí na protokolu aplikační vrstvy, který data odesílá nebo přijímá. Prezentační vrstva také obsluhuje některé metody šifrování a dešifrování, které slouží k zabezpečení dat. Relační vrstva (vrstva 5) – tato vrstva zajišťuje dialog neboli relaci mezi dvěma počítači. Navazuje, řídí a ukončuje toto připojení mezi všemi komunikujícími zařízeními. Relační vrstva také rozhoduje o tom, zda vzniká duplexní nebo poloduplexní připojení, a stará se, aby komunikace mezi hostiteli nebyla náhle přerušena, ale spořádaně ukončena. Transportní vrstva (vrstva 4) – primárním účelem transportní vrstvy je zajistit spolehlivé služby přenosu dat pro nižší vrstvy. Díky řízení toku, segmentaci a zpětnému spojování a kontrole chyb transportní vrstva zajišťuje, že se data dostanou do cíle bez chyb. Zabezpečení spolehlivého přenosu dat je značně složité, takže mu model OSI
Aplikační vrstva
Prezentační vrstva
Relační vrstva
Transportní vrstva
Síťová vrstva
Linková vrstva
Fyzická vrstva
Obrázek 1.1: Hierarchický pohled na sedm vrstev modelu OSI 23
K1986.indd 23
31.1.2012 14:18:59
Kapitola 1 Úvod do analýzy paketů a sítí
věnuje celou vrstvu. Transportní vrstva využívá spojované i nespojované protokoly. Na této vrstvě fungují některé firewally a proxy servery. Síťová vrstva (vrstva 3) – tato vrstva odpovídá za směrování dat mezi fyzickými sítěmi a jedná se o jednu z nejkomplikovanějších vrstev modelu OSI. Jejím úkolem je logické adresování síťových hostitelů (např. pomocí IP adres). Obsluhuje také fragmentaci paketů a v některých případech i detekci chyb. Na této vrstvě fungují směrovače. Linková vrstva (vrstva 2) – tato vrstva umožňuje přenášet data po fyzické síti. Jejím hlavním úkolem je poskytnout adresní schéma, které umožní identifikovat fyzická zařízení (např. pomocí MAC adres). Mezi fyzická zařízení, které pracují na linkové vrstvě, se řadí mosty a přepínače. Fyzická vrstva (vrstva 1) – vrstva v základně modelu OSI symbolizuje fyzické médium, přes které se síťová data přenášejí. Tato vrstva definuje fyzické a elektrické vlastnosti veškerého použitého hardwaru, včetně hodnot napětí, rozbočovačů, síťových adaptérů, opakovačů a parametrů kabelů. Fyzická vrstva navazuje a ukončuje připojení, umožňuje sdílet komunikační prostředky a převádí digitální signály na analogové a naopak.
Tabulka 1.1 uvádí některé rozšířenější protokoly, které se používají na každé z jednotlivých vrstev modelu OSI. Tabulka 1.1: Typické protokoly, které se používají na jednotlivých vrstvách modelu OSI Vrstva
Protokol
Aplikační vrstva
HTTP, SMTP, FTP, Telnet
Prezentační vrstva
ASCII, MPEG, JPEG, MIDI
Relační vrstva
NetBIOS, SAP, SDP, NWLink
Transportní vrstva
TCP, UDP, SPX
Síťová vrstva
IP, IPX
Linková vrstva
Ethernet, Token Ring, FDDI, AppleTalk
Model OSI je sice pouze doporučeným standardem, ale měli byste jej znát zpaměti. V dalších kapitolách této knihy zjistíte, že na interakci protokolů různých vrstev závisí postup řešení síťových problémů. Potíže se směrovačem budete brzy označovat jako „problémy na vrstvě 3“ a chyby softwaru budou patřit do kategorie „problémy na vrstvě 7“.
24
K1986.indd 24
31.1.2012 14:19:00
Principy komunikace počítačů
POZNÁMKA Když jsme diskutovali o své práci, zmínil se kolega o uživateli, který si stěžoval, že se nemůže připojit k síťovému prostředku. Problém spočíval v tom, že uživatel zadával chybné heslo. Kolega to komentoval jako „problém na vrstvě 8“. Vrstva 8 je neoficiální uživatelská vrstva. Odborníci, kteří pracují na úrovni paketů, tento termín často používají.
Jak se v modelu OSI přenášejí data? Přenos dat v síti začíná na aplikační vrstvě vysílajícího systému. Data postupují přes sedm vrstev modelu OSI směrem dolů, dokud se nedostanou na fyzickou vrstvu. V této fázi fyzická vrstva vysílajícího systému odešle data přijímajícímu systému. Přijímající systém vyzvedne data na své fyzické vrstvě a data postupují zbývajícími vrstvami tohoto systému až do aplikační vrstvy zcela nahoře. Služby, které poskytují různé protokoly na jednotlivých vrstvách modelu OSI, nejsou redundantní. Pokud například protokol jedné vrstvy zajišťuje konkrétní službu, pak stejnou službu nemůže poskytovat žádný jiný protokol na libovolné jiné vrstvě. Protokoly na různých vrstvách sice mohou mít podobné vlastnosti, ale fungují poněkud odlišně. Protokoly na odpovídající vrstvách odesílajících a přijímajících počítačů se vzájemně doplňují. Jestliže například za šifrování přenášených dat odpovídá protokol na vrstvě 7 odesílajícího počítače, očekává se, že data bude dešifrovat odpovídající protokol na vrstvě 7 přijímajícího počítače. Obrázek 1.2 představuje grafické znázornění modelu OSI při komunikaci mezi dvěma klienty. Je zřejmé, že komunikace na straně jednoho klienta směřuje shora dolů a po dosažení druhého klienta postupuje opačným směrem zdola nahoru. Každá vrstva modelu OSI dokáže komunikovat pouze s vrstvou přímo nad sebou a pod sebou. Vrstva 2 může například odesílat a přijímat pouze data z vrstev 1 a 3.
Zapouzdření dat Protokoly na různých vrstvách modelu OSI komunikují pomocí zapouzdření dat (data encapsulation). Každá vrstva v sadě protokolů doplňuje k přenášeným datům hlavičku nebo patičku – dodatečné informační bity, které umožňují komunikaci mezi vrstvami. Když například transportní vrstva přijme data z relační vrstvy, přidá k těmto datům vlastní informace hlavičky a poté je předá další vrstvě. Proces zapouzdření vytváří datovou jednotku protokolu (protocol data unit – PDU), která obsahuje odesílaná data a všechny doplňkové informace hlaviček a patiček. Když data postupují v modelu OSI směrem dolů, datová jednotka protokolu se 25
K1986.indd 25
31.1.2012 14:19:00
Kapitola 1 Úvod do analýzy paketů a sítí
Aplikační vrstva
Aplikační vrstva
Prezentační vrstva
Prezentační vrstva
Relační vrstva
Relační vrstva
Transportní vrstva
Transportní vrstva
Síťová vrstva
Síťová vrstva
Linková vrstva
Linková vrstva
Fyzická vrstva
Fyzická vrstva
Obrázek 1.2: Protokoly fungují na stejných vrstvách odesílajícího i přijímajícího systému
postupně mění a zvětšuje, jak k ní jednotlivé protokoly přidávají vlastní hlavičky a patičky. Svou výslednou formu získává datová jednotka protokolu po dosažení fyzické vrstvy, kdy je odeslána cílovému počítači. Přijímající počítač pak z datové jednotky protokolu postupně odstraňuje hlavičky a patičky tak, jak data procházejí vrstvami modelu OSI směrem vzhůru. Když jednotka dosáhne vrchní vrstvy modelu OSI, zbývají z ní pouze původní data. POZNÁMKA Termín paket (packet) označuje úplnou datovou jednotku protokolu, která obsahuje informace hlaviček a patiček ze všech vrstev modelu OSI.
Pochopení principu zapouzdření nemusí být snadné. Podíváme se tedy na praktický příklad, který popisuje vznik, přenos a příjem paketu ve vztahu k modelu OSI. Pamatujte, že analytici se obvykle nezabývají relační ani prezentační vrstvou, takže budeme uvedené vrstvy v tomto příkladu (a zbývající části knihy) ignorovat. V tomto scénáři se ze svého počítače pokoušíme zobrazit stránku http://www.google.com/. Aby bylo možné tuto akci provést, je nutné generovat paket s požadavkem, který je ze zdrojového klientského počítače odeslán cílovému serveru. Tento 26
K1986.indd 26
31.1.2012 14:19:00
Principy komunikace počítačů scénář předpokládá, že komunikační relace protokolu TCP/IP je již navázána. Proces zapouzdření dat v tomto příkladu je znázorněn na obrázku 1.3. Začínáme na aplikační vrstvě svého klientského počítače. Prohlížíme si web a přitom používáme protokol aplikační vrstvy HTTP, který vydá příkaz ke stažení souboru index.html z adresy google.com. Když protokol aplikační vrstvy definuje požadovanou akci, je potřeba zajistit přenos paketu do jeho cíle. Data v paketu jsou předána dolů zásobníku protokolů transportní vrstvy. HTTP je protokol aplikační vrstvy, který využívá protokolu TCP (je umístěn nad ním). TCP tedy slouží jako protokol transportní vrstvy, který zajišťuje spolehlivé doručení paketu. V souvislosti s tím je generována hlavička TCP. Tato hlavička TCP obsahuje pořadová čísla a další data připojená k paketu. Hlavička odpovídá za doručení paketu do cílového umístění. POZNÁMKA S ohledem na hierarchický návrh modelu OSI se často uvádí, že jeden protokol „leží“ na jiném. Aplikační protokol jako HTTP poskytuje určitou službu a přitom se spoléhá na protokol TCP. Na dalších stranách se dostaneme k tomu, že protokol DNS leží na protokolu UDP a protokol TCP na IP.
Klient
HTTP
Server
Aplikační vrstva
HTTP
Prezentační vrstva
Relační vrstva
TCP HTTP
Ethernet
Transportní vrstva
TCP HTTP
IP TCP HTTP
Síťová vrstva
IP TCP HTTP
IP TCP HTTP
Linková vrstva
Ethernet
IP TCP HTTP
Fyzická vrstva
Obrázek 1.3: Grafické schéma zapouzdření dat mezi klientem a serverem 27
K1986.indd 27
31.1.2012 14:19:01
Kapitola 1 Úvod do analýzy paketů a sítí Když protokol TCP splní svou úlohu, předá paket protokolu IP, což je protokol vrstvy 3 odpovědný za logické adresování paketů. Protokol IP vytvoří hlavičku, která obsahuje logické adresní informace, a předá ji protokolu Ethernet na linkové vrstvě. V hlavičce protokolu Ethernet jsou uvedeny fyzické adresy sítě Ethernet. Paket je nyní kompletní a dostává se na fyzickou vrstvu, která jej po síti přenáší ve formě nul a jedniček. Kompletní paket prochází kabely globální sítě a nakonec je doručen webovému serveru Google. Webový server postupuje při čtení paketu od spodních vrstev. Nejdříve tedy přečte data na linkové vrstvě, kde jsou k dispozici fyzické adresní informace sítě Ethernetu. Síťová karta pomocí nich zjistí, že je paket určen pro konkrétní server. Po svém zpracování jsou tyto informace vrstvy 2 odstraněny a nastává zpracování informací vrstvy 3. Stejným způsobem jako u vrstvy 2 proběhne čtení adresních informací protokolu IP, které zajišťují správné adresování paketu a zabraňují jeho fragmentaci. Tato data jsou opět odstraněna, aby bylo možné pokračovat ve zpracování na další vrstvě. Nyní jsou přečteny informace protokolu TCP vrstvy 4, které dovolují zjistit správné pořadí doručených paketů. Následně dojde k oddělení informací hlavičky vrstvy 4 a zůstanou pouze data aplikační vrstvy, která lze předat aplikaci webového serveru zajišťující činnost daného webu. V odpovědi na tento paket od klienta by měl server vyslat paket TCP s potvrzením, který klienta informuje o správném doručení jeho požadavku, a následně soubor index.html. Bez ohledu na použité protokoly se všechny pakety vytvářejí a zpracovávají stejným způsobem jako v tomto příkladu. Zároveň však pamatujte, že některé síťové pakety jsou generovány protokoly jiné než aplikační vrstvy. Můžete se tedy setkat s pakety, které obsahují pouze informace protokolů vrstev 2, 3 a 4.
Síťový hardware Podívejme se nyní na síťový hardware, který zajišťuje fungování sítě. Zaměříme se pouze na některé běžnější prvky síťového hardwaru: rozbočovače, přepínače a směrovače.
Rozbočovače Rozbočovač (hub) obvykle vypadá jako krabice s více porty RJ-45, podobně jako zařízení NETGEAR na obrázku 1.4. Počet portů rozbočovačů se pohybuje od čtyř u malých zařízení až po 48 portů u velkého hardwaru pro umístění do racků v prostředí podnikových sítí. Vzhledem k tomu, že rozbočovače mohou generovat značný objem zbytečného síťového provozu a dokáží fungovat pouze v poloduplexním režimu (nemohou data sou28
K1986.indd 28
31.1.2012 14:19:01
Principy komunikace počítačů časně odesílat i přijímat), obvykle se s nimi ve většině moderních či komplikovaných sítích nesetkáte (používají se místo nich přepínače). Přesto byste měli vědět, jak rozbočovače fungují, protože jsou velmi důležité při analýze paketů metodou „rozbočování“ (hubbing out), kterou popíšeme v kapitole 2.
Obrázek 1.4: Typický ethernetový rozbočovač se 4 porty
Rozbočovač není nic jiného než opakovací zařízení, které funguje na fyzické vrstvě modelu OSI. Přebírá pakety odeslané z jednoho portu a vysílá je (opakuje) na všechny ostatní porty. Pokud například počítač připojený k portu 1 čtyřportového rozbočovače potřebuje odeslat data počítači na portu 2, rozbočovač tyto pakety odešle na porty 1, 2, 3 i 4. Klienti připojení k portům 3 a 4 analyzují pole MAC adresy (Media Access Control) v ethernetové hlavičce paketu a zjistí, že daný paket není určen pro ně, takže jej zahodí (drop). Obrázek 1.5 znázorňuje příklad, ve kterém počítač A vysílá data počítači B. Když počítač A vyšle tato data, přijmou je všechny počítače připojené k rozbočovači. Data však v praxi přijme pouze počítač B a ostatní počítače je ignorují. Můžeme to přirovnat k situaci, kdy byste odeslali e-mail s předmětem „Určeno pro všechny zaměstnance oddělení marketingu“ každému zaměstnanci podniku, a nikoli pouze těm, kteří skutečně pracují v příslušném oddělení. Pracovníci v oddělení marketingu by věděli, že e-mail je určen jim, a pravděpodobně by jej otevřeli. Jiní zaměstnanci by zjistili, že není pro ně, a nejspíš by jej smazali. Sami vidíte, že se přitom hodně zpráv přenáší zbytečně a plýtvá se časem na jejich zpracování. Právě tak ale rozbočovače fungují.
Počítač B
Počítač A
Počítač C
Počítač D
Obrázek 1.5: Síťový provoz při vysílání dat z počítače A počítači B pomocí rozbočovače
Nejlepší alternativu rozbočovačů v produkčních a hodně vytížených sítích představují přepínače (switch), což jsou plně duplexní zařízení, která mohou odesílat a přijímat data synchronně.
29
K1986.indd 29
31.1.2012 14:19:01
Kapitola 1 Úvod do analýzy paketů a sítí
Přepínače Podobně jako rozbočovače mají i přepínače za úkol opakovat pakety. Na rozdíl od rozbočovače však přepínač nevysílá data na každý port, ale pouze počítači, kterému jsou data určena. Přepínače vypadají právě tak jako rozbočovače (viz obrázek 1.6).
Obrázek 1.6: Ethernetový přepínač se 24 porty a možností montáže do racku
Na trhu jsou dostupné různé větší přepínače (např. značky Cisco), které lze spravovat pomocí speciálního softwaru příslušného dodavatele nebo přes webové rozhraní. Tyto přepínače se běžně označují jako spravované přepínače (managed switch). Spravované přepínače poskytují některé funkce, které mohou být v síťovém prostředí užitečné. Dovolují například zapnout nebo vypnout konkrétní porty, zobrazit vlastnosti portů, měnit konfiguraci a využít vzdálený restart. Přepínače rovněž nabízejí pokročilé funkce týkající se zpracování přenášených paketů. Kvůli přímé komunikaci Počítač B s konkrétními zařízeními musí přepínače jedinečně identifikovat zařízení pomocí jejich MAC adres. To znamená, že pracují na linkové vrstvě modelu OSI. Přepínače uchovávají adresy vrstvy 2 všech připojených zařízení v tabulce CAM, která plní funkci dopravního policisty. Přepínač přečte informace hlavičky vrstvy 2 přenášeného paketu a na základě referenční tabulky CAM určí, na který port či porty má paket odeslat. Přepínače odesílají pakety pouze na konkrétní porty a tím značně omezují síťový provoz.
Počítač A
Počítač C
Počítač D
Obrázek 1.7: Síťový provoz při vysílání dat z počítače A počítači B pomocí přepínače
30
K1986.indd 30
31.1.2012 14:19:02
Principy komunikace počítačů Tok dat přepínačem je znázorněn na obrázku 1.7. Počítač A na tomto obrázku odesílá data pouze určenému příjemci: počítači B. V síti může současně probíhat mnoho konverzací, ale informace se přenášejí přímo mezi přepínačem a vybraným příjemcem, nikoli mezi přepínačem a všemi připojenými počítači.
Směrovače Směrovač (router) je komplikované síťové zařízení, které nabízí mnohem širší sadu funkcí než přepínač či rozbočovač. Směrovače mohou vypadat různě, ale většina z nich je vybavena několika indikátorovým diodami na přední straně a několika síťovými porty vzadu – podle velikosti sítě, pro kterou jsou určeny. Ukázkový směrovač je zobrazen na obrázku 1.8. Směrovače fungují na vrstvě Obrázek 1.8: Základní směrovač Cisco, 3 modelu OSI, kde odpovídají který se hodí pro malé až středně velké sítě za předávání paketů mezi dvěma nebo více sítěmi. Proces, v rámci nějž směrovače řídí tok provozu mezi sítěmi, se označuje jako směrování (routing). Způsob směrování různých typů paketů do jiných sítí závisí na několika typech směrovacích protokolů. Směrovače často identifikují zařízení v síti pomocí adres vrstvy 3 (jako jsou např. IP adresy). Koncepci směrování lze přiblížit například pomocí analogie s hledáním cesty v ulicích města. Domy s jejich adresami můžeme přirovnat k počítačům a každou ulici si pak představíme jako síťový segment (viz obrázek 1.9). Ze svého domu v naší ulici můžeme snadno komunikovat se sousedy v jiných domech na stejné ulici. To se podobá fungování přepínače, který zajišťuje komunikaci mezi všemi počítači v síťovém segmentu. Komunikace s obyvateli jiné ulice však v tomto modelu odpovídá komunikaci s počítačem, který není ve stejném segmentu. Vycházejme z obrázku 1.9 a předpokládejme, že se chceme z adresy Viničná 503 dostat na Lipovou 202. Přitom musíme nejdřív přejít na Dubovou ulici a poté odbočit do Lipové. To odpovídá přechodu mezi síťovými segmenty. Jestliže zařízení s adresou 192.168.0.3 potřebuje komunikovat se zařízením na adrese 192.168.0.54, musí se jeho data přes směrovač dostat do sítě 10.100.1.1 a poté přes další směrovač do cílového síťového segmentu. Kapacita a počet směrovačů v síti obvykle závisí na jejím rozsahu a funkcích. Domácí sítě a sítě v malých kancelářích obsahují obvykle pouze malý směrovač, který je umístěn ve středu sítě. Velká podniková síť může zahrnovat několik směrovačů rozmístěných v různých odděleních. Všechny směrovače jsou přitom připojeny 31
K1986.indd 31
31.1.2012 14:19:02
Kapitola 1 Úvod do analýzy paketů a sítí k jednomu výkonnému centrálnímu směrovači nebo přepínači vrstvy 3 (pokročilý typ přepínače, který má rovněž integrovány funkce směrovače). 192.168.0.9 192.168.0.5 192.168.0.7 192.168.0.3
10.100.1.100 501
502
505
506
503
504
507
508
Viničná 192.168.0.1
10.100.1.1
Dubová 201
202
203
192.168.0.6 192.168.0.2 192.168.0.8 192.168.0.4 192.168.0.51 192.168.0.55 192.168.0.53 192.168.0.57
204 10.100.1.150
Lipová 192.168.0.50
205
206
207
208
192.168.0.52 192.168.0.56 192.168.0.54 192.168.0.58
Obrázek 1.9: Analogie směrované sítě a mapy s ulicemi
Když se naučíte prohlížet síťové diagramy, porozumíte tomu, jak data procházejí různými klíčovými body. Obrázek 1.10 představuje rozložení směrované sítě velmi rozšířeného typu. V tomto případě jsou pomocí jediného směrovače propojeny dvě samostatné sítě. Pokud počítač v síti A požaduje komunikaci s počítačem v síti B, musí přenášená data projít přes směrovač. Síť A
Síť B Počítač W
Počítač B Směrovač
Počítač A
Počítač C
Počítač D
Počítač Y
Počítač X
Počítač Z
Obrázek 1.10: Síťový provoz při vysílání dat z počítače A počítači X pomocí směrovače
32
K1986.indd 32
31.1.2012 14:19:03
Klasifikace provozu
Klasifikace provozu Síťový provoz lze rozdělit na tři hlavní třídy: všesměrový, vícesměrový a jednosměrový. Každá kategorie provozu má typické vlastnosti, které určují, jakým způsobem síťový hardware zpracovává její pakety.
Všesměrový provoz Všesměrový paket (broadcast packet) je odeslán všem portům v síťovém segmentu bez ohledu na to, zda se jedná o port rozbočovače nebo přepínače. Existují však různé typy všesměrového provozu. Můžete se setkat s všesměrovým provozem vrstvy 2 a vrstvy 3. Na vrstvě 2 je například vyhrazenou všesměrovou adresou MAC adresa FF:FF:FF:FF:FF:FF. Všechna data odeslaná na tuto adresu jsou pak vysílána do celého síťového segmentu. Také vrstva 3 má specifickou všesměrovou adresu. Nejvyšší adresa v rozsahu sítě IP je vyhrazena pro použití jako všesměrová adresa. Například v síti, která má nakonfigurován rozsah IP 192.168.0.xxx a masku podsítě 255.255.255.0, se jako všesměrová adresa používá adresa 192.168.0.255. Ve velkých sítích s mnoha rozbočovači či přepínači, které jsou připojeny pomocí různých médií, jsou všesměrové pakety opakovány jednotlivými přepínači a postupně jsou doručeny na porty všech ostatních přepínačů v síti. Rozsah doručování všesměrových paketů se označuje jako všesměrová doména (broadcast domain). Jedná se o síťový segment, kde může každý počítač komunikovat přímo s jiným počítačem, aniž by přitom musel předávat data přes směrovač. Obrázek 1.11 znázorňuje příklad dvou všesměrových domén v malé síti. Vzhledem k tomu, že každá
Směrovač
Všesměrová doména
Všesměrová doména
Obrázek 1.11: Všesměrová doména zahrnuje vše za aktuálním směrovaným segmentem 33
K1986.indd 33
31.1.2012 14:19:04
Kapitola 1 Úvod do analýzy paketů a sítí všesměrová doména je ohraničena směrovači, přenáší se všesměrové pakety pouze v rámci konkrétní všesměrové domény. Předchozí příklad, který přirovnával směrování k ulicím v sousedství, také umožňuje vysvětlit fungování všesměrových domén. Všesměrovou doménu si můžete představit jako ulici ve své čtvrti. Když se postavíte na zápraží a začnete křičet, uslyší vás pouze lidé ve vaší ulici. Chcete-li mluvit s někým v jiné ulici, musíte najít způsob, jak s ním komunikovat přímo, místo abyste vysílali (křičeli) od dveří svého domu.
Vícesměrový provoz Vícesměrové vysílání (multicast) umožňuje přenášet pakety z jediného zdroje více cílům současně. Vícesměrové vysílání má tento proces zjednodušit a spotřebovat přitom co nejmenší šířku pásma. Optimalizace tohoto provozu spočívá v tom, kolikrát je datový proud na cestě ke svému cíli replikován. Přesné zpracování vícesměrového provozu značně závisí na jeho implementaci v jednotlivých protokolech. Vícesměrový provoz se primárně implementuje pomocí adresního schématu, které spojuje příjemce paketů do vícesměrové skupiny. Tak funguje vícesměrové vysílání protokolu IP. Toto adresní schéma zajišťuje, že pakety nelze doručit počítačům, pro které nejsou určeny. V praxi je u protokolu IP vyhrazen pro vícesměrové vysílání celý rozsah adres. Pokud se setkáte s IP adresou v rozsahu od 224.0.0.0 do 239.255.255.255, nejspíše se jedná o vícesměrový provoz.
Jednosměrový provoz Jednosměrový paket (unicast packet) se přenáší přímo z jednoho počítače do jiného. Fungování jednosměrového vysílání se v detailech liší podle toho, který protokol je využívá. Jako příklad uveďme zařízení, které požaduje komunikaci s webovým serverem. Jedná se o připojení typu 1:1. Proces komunikace proto začíná tím, že klientské zařízení vyšle paket určený pouze webovému serveru. Tato forma komunikace představuje ukázku jednosměrového provozu.
Závěrečné poznámky V této kapitole jsme se zabývali naprostými základy, které je při analýze paketů nutné znát. Než začnete řešit potíže se sítí, musíte rozumět tomu, co se na této úrovni síťové komunikace odehrává. V další kapitole budeme na těchto koncepcích stavět a probereme pokročilejší principy síťové komunikace.
34
K1986.indd 34
31.1.2012 14:19:05
Promiskuitní život
KAPITOLA 2
Napíchnutí linky
Předpokladem efektivní analýzy paketů je rozhodnutí o tom, kam umístit paketový sniffer tak, aby účinně zachytával data. Paketoví analytici často připojení paketového snifferu označují jako sledování linky, napíchnutí sítě nebo napíchnutí linky. Jednoduše řešeno se jedná o připojení paketového snifferu na správné fyzické místo v síti. Při sledování paketů však bohužel nestačí pouze připojit notebook k síťovému portu a začít se zachytáváním provozu. V praxi je umístění paketového snifferu do síťové kabeláže často obtížnější než samotná analýza paketů. Problém se zapojením snifferu spočívá v tom, že se k propojení zařízení používá mnoho různých síťových zařízení. Typickou situaci představuje obrázek 2.1. Vzhledem k tomu, že tři hlavní zařízení moderních sítí (rozbočovače, přepínače a směrovače) se ve zpracování provozu vzájemně liší, je nutné při analýze sítě dobře znát její fyzické zapojení. V této kapitole vysvětlíme principy umístění paketového snifferu v různých síťových topologiích. Nejdříve se však podíváme, jak lze v praxi sledovat všechny pakety, které procházejí napíchnutou linkou.
Promiskuitní život Sledování paketů v síti vyžaduje síťovou kartu, jejíž ovladač umožňuje přechod do promiskuitního režimu. Díky promiskuitnímu režimu (promiscuous mode) může síťová karta sledovat všechny pakety, které procházejí sítí. 35
K1986.indd 35
31.1.2012 14:19:05
Kapitola 2 Napíchnutí linky
Paketový sniffer
Obrázek 2.1: Umístění snifferu v síti je často největší problém, který je při analýze potřeba vyřešit
V kapitole 1 jsme ukázali, že u všesměrového síťového provozu je běžné, že klienti přijímají pakety, které jim ve skutečnosti nejsou určeny. Klíčovou funkci každé sítě plní protokol ARP, který přiřazuje MAC adresy k IP adresám. Představuje dokonalý příklad provozu, který je odesílán jiným hostitelům než zamýšlenému příjemci. Při hledání odpovídající MAC adresy odešle protokol ARP všesměrový paket každému zařízení ve své všesměrové doméně. Očekává přitom, že odpoví správný klient. Všesměrová doména (síťový segment, kde mohou všechny počítače posílat data jiným počítačům přímo, aniž by tato data musela procházet směrovačem) může zahrnovat několik počítačů. Vysílaný všesměrový paket protokolu ARP je však určen pouze jedinému klientovi v dané doméně. Bylo by naprosto neefektivní, kdyby všesměrový paket protokolu ARP zpracovávaly všechny počítače v síti. Síťové karty v zařízeních, kterým paket není určen, však rozpoznají, že tento paket nepotřebují. Síťová karta paket následně zahodí, aniž by jej předávala ke zpracování procesoru. Zahazování paketů, které nejsou určeny pro přijímající hostitele, zlepšuje efektivitu zpracování, ale pro účely analýzy paketů není příliš výhodné. Analytici obvykle chtějí vidět každý paket odeslaný po lince, aby jim neunikla některá klíčová informace. Zachycení veškerých dat lze dosáhnout pomocí promiskuitního režimu síťové karty. Síťová karta, která funguje v promiskuitním režimu, předává procesoru hostitele každý zjištěný paket bez ohledu na to, komu je adresován. Jakmile se obsah paketu dostane do zpracování procesoru, může jej při analýze využít aplikace pro sledování paketů. Většina moderních síťových karet podporu promiskuitního režimu nabízí. Program Wireshark obsahuje ovladač libpcap/WinPcap, který umožňuje přepnout síťovou kartu do promiskuitního režimu přímo z jeho grafického uživatelského rozhraní. (Podrobnější informace o ovladači libpcap/WinPcap naleznete v kapitole 3.) 36
K1986.indd 36
31.1.2012 14:19:05
Sledování s rozbočovači Chcete-li využít tuto knihu, musíte mít k dispozici síťovou kartu a operační systém kompatibilní s promiskuitním režimem. Sledování v normálním režimu postačuje pouze tehdy, chcete-li sledovat pouze data odesílaná přímo na MAC adresu rozhraní, z nějž sledujete. POZNÁMKA Většina operačních systémů (včetně Windows) umožňuje přepnout kartu do promiskuitního režimu pouze uživatelům se zvýšenými oprávněními. Jestliže nemůžete tato systémová oprávnění legálně získat, je pravděpodobné, že byste v dané síti žádné sledování paketů neměli provádět.
Sledování s rozbočovači Sledování v síti s nainstalovanými rozbočovači představuje sen každého paketového analytika. Jak jsme ukázali v kapitole 1, data odeslaná přes rozbočovač procházejí na všechny jeho porty. Chcete-li tedy analyzovat provoz počítače připojeného k rozbočovači, stačí připojit paketový sniffer k volnému portu tohoto rozbočovače. Můžete pak sledovat kompletní příchozí a odchozí komunikaci daného počítače a také veškerou komunikaci mezi všemi dalšími zařízeními, která jsou k rozbočovači připojena. Jak je znázorněno na obrázku 2.2, v případě připojení paketového snifferu do sítě založené na rozbočovačích není okno viditelnosti nijak omezeno. Počítač D
Okno viditelnosti
Počítač A
Sniffer Počítač E
Počítač B
Počítač F
Počítač C
Obrázek 2.2: Sledování u rozbočovače nijak neomezuje okno viditelnosti
37
K1986.indd 37
31.1.2012 14:19:05
Kapitola 2 Napíchnutí linky
POZNÁMKA Okno viditelnosti (visibility window), které je znázorněno na různých schématech této knihy, představuje zařízení v síti, jejichž provoz lze sledovat paketovým snifferem.
Vzhledem k problémům, které způsobují správcům síti, jsou sítě založené na rozbočovačích bohužel dost vzácné. V jeden okamžik může komunikovat pouze jediné zařízení. Každé zařízení připojené přes rozbočovač musí proto soupeřit o šířku pásma se všemi ostatními zařízeními, které se rovněž snaží komunikovat. Když ve stejnou dobu komunikují dvě nebo více zařízení, dochází ke kolizi paketů (viz obrázek 2.3). Výsledkem může být ztráta paketů. Komunikující zařízení tuto ztrátu kompenzují tím, že pakety odesílají znovu, což dále zhoršuje zahlcení sítě a zvyšuje počet kolizí. Jak roste intenzita provozu a zvyšuje se počet kolizí, musí zařízení někdy pakety odesílat i třikrát nebo čtyřikrát. Výkon sítě proto výrazně klesá. Není těžké pochopit, proč většina moderních sítí libovolné velikosti využívá přepínače.
Vysílající počítač
Vysílající počítač
Kolize
Rozbočovač
Obrázek 2.3: V síti s rozbočovači dochází ke kolizím, když dvě zařízení vysílají současně
Sledování v přepínaném prostředí Jak jsme rozebrali v kapitole 1, přepínače jsou nejčastějším typem propojovacího zařízení v moderních síťových prostředích. Umožňují efektivně přenášet data pomocí všesměrového, jednosměrového a vícesměrového vysílání. Kromě toho přepínače umožňují plně duplexní komunikaci, tzn. počítače mohou odesílat a přijímat data současně. Z hlediska analýzy paketů však přepínače bohužel výrazně zvyšují úroveň složitosti. Jak je zřejmé z obrázku 2.4, připojíte-li sniffer k portu přepínače, můžete sledovat pouze všesměrový provoz a provoz odesílaný a přijímaný svým vlastním počítačem. Pokud chcete zachytávat provoz z cílového zařízení v přepínané síti, můžete využít jednu ze čtyř primárních metod: zrcadlení portu, rozbočování, použití odposlechu a znehodnocení mezipaměti ARP. 38
K1986.indd 38
31.1.2012 14:19:07
Sledování v přepínaném prostředí Počítač D
Počítač A Okno viditelnosti Sniffer Počítač E
Počítač B
Počítač F
Počítač C
Obrázek 2.4: Okno viditelnosti v přepínané síti je omezeno na port, ke kterému je sniffer připojen
Zrcadlení portu Zrcadlení portu (port mirroring) neboli překlenutí portu (port spanning) představuje asi nejjednodušší způsob, jak zachytávat provoz cílového zařízení v přepínané síti. Tato konfigurace vyžaduje přístup k rozhraní příkazového řádku nebo webovému rozhraní pro správu přepínače, kde je cílový počítač umístěn. Přepínač musí také podporovat zrcadlení portu a musí poskytovat volný port, kam lze připojit sniffer. Chcete-li zapnout zrcadlení portu, zadáte příkaz, který přepínači nařídí kopírovat veškerý provoz jednoho portu na jiný port. Chcete-li například zachytávat provoz ze zařízení na portu 3 přepínače, můžete jednoduše připojit svůj analyzátor k portu 4 a zrcadlit port 3 na port 4. Tímto způsobem dokážete sledovat veškerá data, která cílové zařízení odesílá i přijímá. Zrcadlení portu je ilustrováno na obrázku 2.5. Způsob konfigurace zrcadlení portu závisí na výrobci přepínače. U většiny přepínačů se musíte přihlásit k rozhraní příkazového řádku a zadat příkaz pro zrcadlení portu. Seznam běžných příkazů pro zrcadlení portu naleznete v tabulce 2.1.
POZNÁMKA Některé přepínače poskytují webové grafické uživatelské rozhraní, kde zrcadlení portu patří mezi dostupné možnosti. Tato rozhraní se však nevyskytují často a zatím nejsou standardizována. Pokud však přepínač nabízí efektivní způsob, jak konfigurovat zrcadlení portu pomocí grafického uživatelského rozhraní, určitě toho využijte.
39
K1986.indd 39
31.1.2012 14:19:08
Kapitola 2 Napíchnutí linky Tabulka 2.1: Příkazy, které umožňují zapnout zrcadlení portu Výrobce
Příkaz
Cisco
set span
Enterasys
set port mirroring create
Nortel
port-mirroring mode mirror-port monitor-port
Počítač D
Počítač A
Port počítače B je zrcadlen na port snifferu Počítač E
Počítač F
Sniffer Okno viditelnosti
Počítač B
Počítač C
Obrázek 2.5: Zrcadlení portu umožňuje rozšířit okno viditelnosti v přepínané síti
Při zrcadlení portu je nutné zohlednit propustnost zrcadlených portů. Někteří výrobci přepínačů umožňují zrcadlit více portů na jeden port, což může být velmi užitečné při analýze komunikace mezi dvěma nebo více zařízeními, která jsou připojena k jednomu přepínači. S použitím jednoduché matematiky však odvoďme, co se může stát. Máte-li 24portový přepínač a zrcadlíte 23 plně duplexních portů s rychlostí 100 Mb/s na jeden port, může na daný port teoreticky proudit 4 600 Mb/s. To značně přesahuje fyzickou kapacitu jediného portu. Pokud tedy provoz dosáhne určité úrovně, může dojít ke ztrátě paketů nebo zpomalení sítě. V těchto situacích se stává, že přepínače kompletně zahazují nadlimitní pakety, nebo dokonce „pozastavují“ činnost svých interních obvodů, takže je komunikace zcela zablokována. Pokoušíte-li se o zachytávání, snažte se této situaci vyhnout.
Rozbočování Jiná metoda zachytávání provozu přes cílové zařízení v přepínané síti spočívá v rozbočování (hubbing out). Tento postup je založen na umístění cílového zařízení 40
K1986.indd 40
31.1.2012 14:19:08
Sledování v přepínaném prostředí a analyzátoru do stejného síťového segmentu. Můžete toho dosáhnout tak, že obě zařízení připojíte přímo do rozbočovače. Mnoho lidí to pokládá za „švindlování“. V praxi se však jedná o dokonalé řešení v situacích, kdy nemůžete využít zrcadlení portu, ale máte přístup k přepínači, ke kterému je cílové zařízení připojeno. Chcete-li využít rozbočování, potřebujete pouze rozbočovač a několik síťových kabelů. Jakmile máte hardware k dispozici, připojte jej takto: 1. 2. 3. 4.
Odpojte cílové zařízení od přepínače, ke kterému je připojeno. Připojte síťový kabel cílového zařízení do svého rozbočovače. Připojte jiný kabel, který propojí analyzátor s rozbočovačem. Připojte síťový kabel z rozbočovače k síťovému přepínači, abyste zajistili síťovou konektivitu rozbočovače.
Nyní jste v zásadě umístili cílové zařízení a svůj analyzátor do stejné všesměrové domény. Veškerý provoz z cílového zařízení bude vysílán tak, aby mohl analyzátor tyto pakety zachytávat, jak je znázorněno na obrázku 2.6. Počítač D
Počítač A
Okno viditelnosti Sniffer
Počítač E
Počítač F
Rozbočovač
Počítač C Počítač B
Obrázek 2.6: Rozbočování izoluje cílové zařízení a analyzátor
Rozbočování ve většině situací omezí plně duplexní komunikaci cílového zařízení na poloviční duplex. Tato metoda nepředstavuje ten nečistější způsob, jak napíchnout linku. Pokud však přepínač nepodporuje zrcadlení portu, jedná se někdy o jedinou možnost. Pamatujte však, že rozbočovač také vyžaduje zdroj napájení, který může být v některých případech těžko dostupný.
41
K1986.indd 41
31.1.2012 14:19:09
Kapitola 2 Napíchnutí linky POZNÁMKA Nezapomeňte, že je obvykle zdvořilé upozornit uživatele zařízení, které se chystáte odpojit, zejména když se náhodou jedná o ředitele společnosti!
HLEDÁNÍ „SKUTEČNÝCH“ ROZBOČOVAČŮ Chcete-li využít rozbočování, musíte zkontrolovat, zda používáte skutečný rozbočovač, a nikoli chybně označený přepínač. Několik dodavatelů sítového hardwaru bohužel propaguje a prodává svá zařízení jako rozbočovače, ačkoli ve skutečnosti fungují jako nízkoúrovňové přepínače. Pokud nepracujete s vyzkoušeným a testovaným rozbočovačem, dokážete sledovat pouze vlastní provoz, nikoli provoz cílového zařízení. Když najdete rozbočovač, vyzkoušejte, zda se opravdu jedná o rozbočovač. Pokud ano, nechte si jej! Chcete-li zjistit, zda je neznámé zařízení skutečně rozbočovač, připojte k němu dvojici počítačů a zkontrolujte, zda jeden z nich může sledovat provoz druhého počítače a různých jiných zařízení v síti, např. dalšího počítače nebo tiskárny. Pokud ano, našli jste skutečný rozbočovač. Vzhledem k tomu, že rozbočovače jsou poměrně zastaralé, již se v masovém měřítku nevyrábějí. V obchodech už se skutečné rozbočovače téměř neprodávají. Při jejich hledání tedy musíte být vynalézaví. Vynikajícím zdrojem často bývají aukce přebytků v místních školách. Veřejné školy, které se chtějí zbavit nepotřebných předmětů, mají povinnost nabídnout tyto položky nejdříve v aukcích. Často přitom vlastní starší hardware. Po skončení takových aukcí si výherci často za symbolickou cenu odnášejí několik rozbočovačů. Dobrým zdrojem rozbočovačů mohou být i aukční weby. Buďte však opatrní, protože i zde můžete narazit na problém s přepínači, které jsou nesprávně označeny za rozbočovače.
Použití odposlechu Říká se: „Nechoď ke kováříčkovi, jdi rovnou ke kováři.“ Toto rčení se hodí i na volbu mezi rozbočováním a použitím odposlechu. Síťový odposlech (tap) je hardwarové zařízení, které můžete umístit mezi dva body v kabeláži, chcete-li zachytávat pakety mezi nimi. Stejně jako u rozbočování připojujete do sítě další hardware, který umožňuje zachytávat požadované pakety. Rozdíl spočívá v tom, že místo rozbočovače se používá specializovaný hardware, který slouží k síťové analýze. K dispozici jsou dva základní typy síťových odposlechů: agregované a neagregované. Oba typy odposlechů se připojují mezi dvě zařízení, kde sledují komunikaci. Hlavní rozdíl mezi agregovaným a neagregovaným odposlechem spočívá v tom, že nea42
K1986.indd 42
31.1.2012 14:19:09
Sledování v přepínaném prostředí gregovaný odposlech má čtyři porty (viz obrázek 2.7), zatímco agregovaný pouze tři. Odposlechy také obvykle vyžadují napájení, ačkoli některé z nich umožňují krátkodobé zachytávání paketů na baterie bez nutnosti připojení do elektrické zásuvky.
Agregované odposlechy Agregovaný odposlech se používá nejsnáze. Má pouze jeden fyzický monitorovací port, který je určen ke sledování obousměrného provozu.
Obrázek 2.7: Neagregovaný odposlech Barracuda
Chcete-li pomocí agregovaného odposlechu zachytávat veškerý příchozí i odchozí provoz jediného počítače připojeného k přepínači, postupujte takto: 1. Odpojte počítač od přepínače. 2. Zapojte do počítače jeden konec síťového kabelu a druhý konec zapojte
do portu odposlechu označeného „in“. 3. Jeden konec jiného síťového kabelu zapojte do portu „out“ odposlechu a druhý konec zapojte do síťového přepínače. 4. Jeden konec dalšího kabelu zapojte do portu „monitor“ odposlechu a druhý konec zapojte do počítače, který funguje jako sniffer. Agregovaný odposlech by měl být připojen podle obrázku 2.8. Poté by měl sniffer zachytávat veškerý příchozí i odchozí provoz počítače, který jste k odposlechu připojili.
Neagregované odposlechy Neagregovaný odposlech je poněkud složitější než agregovaný, ale nabízí poněkud vyšší pružnost při zachytávání provozu. Místo jediného monitorovacího portu, který umožňuje naslouchat obousměrné komunikaci, je odposlech neagregovaného typu vybaven dvěma monitorovacími porty. Jeden monitorovací port slouží ke sledování provozu v jednom
Agregovaný odposlech
Počítač
Přepínač Monitor
Sniffer
Obrázek 2.8: Zachytávání síťového provozu pomocí agregovaného odposlechu 43
K1986.indd 43
31.1.2012 14:19:10
Kapitola 2 Napíchnutí linky směru (z počítače připojenému k odposlechu) a druhý monitorovací port je určen ke sledování provozu v druhém směru (do počítače připojeného k odposlechu). Chcete-li zachytávat veškerý příchozí i odchozí provoz jediného počítače připojeného k přepínači, postupujte takto: 1. Odpojte počítač od pře2.
3.
4.
5.
Neagregovaný odposlech
pínače. Zapojte do počítače jeden konec síťového kabelu Počítač Přepínač a druhý konec zapojte do portu odposlechu označeMonitor Monitor A B ného „in“. Jeden konec jiného síťového kabelu zapojte do portu „out“ odposlechu a druhý konec zapojte do síťového Sniffer přepínače. Obrázek 2.9: Zachytávání síťového provozu Jeden konec třetího kabepomocí neagregovaného odposlechu lu zapojte do portu „monitor A“ odposlechu a druhý konec zapojte do síťové karty počítače, který funguje jako sniffer. Jeden konec posledního kabelu zapojte do portu „monitor B“ odposlechu a druhý konec zapojte do druhé síťové karty počítače, který funguje jako sniffer.
Připojení neagregovaného odposlechu je znázorněno na obrázku 2.9.
Výběr síťového odposlechu Když vezmeme v úvahu rozdíly mezi oběma typy odposlechů, který z nich je lepší? Ve většině případů je výhodnější použít agregovaný typ, protože vyžaduje méně kabelů a nepotřebuje dvě síťové karty v počítači se snifferem. V situacích, kdy zachytáváte velký objem provozu nebo se zajímáte pouze o provoz v jednom směru, se však s výhodou uplatní neagregované odposlechy. Odposlechy lze zakoupit ve nejrůznějších rozměrech: od jednoduchých ethernetových typů v ceně kolem 150 USB až po odposlechy podnikové třídy pro optická vlákna, jejichž cena dosahuje desítek tisíc dolarů. Autor knihy má velmi dobré zkušenosti s odposlechy značek Net Optics a Barracuda. Jistě budete spokojeni i s mnoha jinými modely.
44
K1986.indd 44
31.1.2012 14:19:10
Sledování v přepínaném prostředí
Znehodnocení mezipaměti ARP K oblíbeným metodám odposlechu linek patří znehodnocení mezipaměti ARP. Protokolem ARP se budeme podrobně zabývat v kapitole 6, ale chceme-li objasnit tuto metodu, musíme pochopit fungování protokolu.
Proces protokolu ARP Z kapitoly 1 si vzpomeňte, že dva základní typy adresování paketů fungují na vrstvách 2 a 3 modelu OSI. Adresy vrstvy 2 neboli MAC adresy se používají souběžně s libovolným adresním systémem vrstvy 3. V souladu se standardní oborovou terminologií budeme adresní systém vrstvy 3 označovat jako adresní systém IP. Všechna zařízení v síti navzájem na vrstvě 3 komunikují pomocí IP adres. Vzhledem k tomu, že přepínače pracují na vrstvě 2 modelu OSI, znají pouze MAC adresy vrstvy 2. Síťová zařízení proto musí tyto informace zahrnout do paketů, které vytvářejí. Pokud síťové zařízení MAC adresu nezná, musí ji získat ze známé IP adresy vrstvy 3. Díky tomu dokáže předávat provoz příslušnému cílovému zařízení. Tento proces překladu zajišťuje protokol ARP vrstvy 2. Proces ARP pro počítače připojené do sítě Ethernet začíná v okamžiku, kdy jeden počítač požaduje komunikaci s jiným. Vysílající počítač nejdříve zkontroluje svou mezipaměť protokolu ARP, zda již neobsahuje záznam s přiřazením MAC adresy a IP adresy cílového počítače. V opačném případě odešle požadavek protokolu ARP na všesměrovou adresu linkové vrstvy FF:FF:FF:FF:FF:FF, jak jsme vysvětlili v kapitole 1. Protože se jedná o všesměrový paket, přijmou jej všechny počítače daného ethernetového segmentu. Paket se v zásadě dotazuje: „Která IP adresa vlastní MAC adresu XX:XX:XX:XX:XX:XX?“ Zařízení bez IP adresy cílového počítače tento požadavek protokolu ARP jednoduše zahodí. Cílový počítač na paket zareaguje odpovědí protokolu ARP, která obsahuje jeho MAC adresu. V této fázi má původní vysílající počítač adresní informace linkové vrstvy, které potřebuje ke komunikaci se vzdáleným počítačem. Tyto informace kvůli rychlejšímu načítání uloží do své mezipaměti ARP.
Princip znehodnocení mezipaměti ARP Znehodnocení paměti ARP (ARP cache poisoning), které se také někdy označuje jako falšování ARP (ARP spoofing), je založeno na odesílání speciálních zpráv ARP ethernetovému přepínači nebo směrovači. Tyto zprávy mají přitom podvrženou MAC adresu (adresu vrstvy 2), aby bylo možné zachytávat provoz jiného počítače. Metodu znázorňuje obrázek 2.10. Znehodnocení mezipaměti ARP představuje pokročilou formu odposlechu linky v přepínané síti. Běžně ji využívají útočníci, kteří cílovým klientským systémům posílají pakety s falešnými adresami, aby mohli zachytávat určitá data nebo pro45
K1986.indd 45
31.1.2012 14:19:10
Kapitola 2 Napíchnutí linky vést útok typu DoS (odepření služby). Může se však jednat i o legitimní způsob, jak zachytávat pakety cílového počítače v přepínané síti. Normální přenos dat Cílový počítač
Přepínač
Sniffer
Znehodnocená mezipaměť ARP Směrovač
Cílový počítač
Přepínač
Směrovač
Sniffer
Obrázek 2.10: Znehodnocení mezipaměti ARP umožňuje zachytávat provoz cílového počítače
Použití programu Cain & Abel Jestliže chcete využít znehodnocení mezipaměti ARP, musíte nejdříve získat potřebné nástroje a shromáždit určité informace. Pro demonstrační účely poslouží oblíbený bezpečnostní nástroj Cain & Abel ze stránky oxid.it (http://www.oxid.it/), který je kompatibilní se systémy Windows. Stáhněte si jej a nainstalujte podle pokynů na webu programu. Před spuštěním programu Cain & Abel je potřeba zjistit určité informace, včetně IP adresy analyzujícího systému, vzdáleného systému, jehož provoz chcete zachytávat, a směrovače, pod nímž je vzdálený systém připojen. Při prvním spuštění programu Cain & Abel si povšimnete řady karet v horní části okna. (Znehodnocení mezipaměti ARP je pouze jednou z funkcí programu Cain & Abel.) Při znehodnocení mezipaměti ARP se používá karta Sniffer. Po klepnutí na tuto kartu se zobrazí prázdná tabulka (viz obrázek 2.11). Chcete-li tabulku vyplnit, potřebujete v programu aktivovat integrovaný sniffer a vyhledat hostitele v síti. Přitom postupujte následovně: 1. Na panelu nástrojů klepněte na druhou ikonu zleva, která připomíná síťo-
vou kartu. 2. Zobrazí se dotaz na výběr rozhraní, které chcete sledovat. Toto rozhraní by
mělo být připojeno k síti, ve které chcete používat znehodnocení mezipaměti ARP. Vyberte toto rozhraní a klepněte na tlačítko OK. (Chcete-li aktivovat integrovaný sniffer nástroje Cain & Abel, je nutné toto tlačítko stisknout.)
46
K1986.indd 46
31.1.2012 14:19:10
Sledování v přepínaném prostředí
Obrázek 2.11: Karta Sniffer hlavního okna programu Cain & Abel 3. Pokud chcete vytvořit seznam dostup-
ných hostitelů v síti, klepněte na ikonu se symbolem plus (+). Zobrazí se dialogové okno MAC Address Scanner, které je znázorněno na obrázku 2.12. Zvolte přepínač All hosts in my subnet (v případě potřeby můžete vybrat rozsah adres). Pokračujte klepnutím na tlačítko OK. Tabulku je nutné vyplnit seznamem všech hostitelů v připojené síti spolu s jejich MAC adresami, IP adresami a informacemi o dodavateli. S tímto seznamem budete pracovat při konfiguraci znehodnocení mezipaměti ARP. V dolní části okna programu je zobrazena řada karet, které umožňují přechod do jiných oken sdružených pod záhlavím Sniffer. Po sestavení seznamu hostitelů budete používat kartu APR (tzn. ARP Poison Routing – Znehodnocení směrování ARP). Klepnutím na kartu přejděte do okna APR.
Obrázek 2.12: Nástroj zjišťování sítě programu Cain & Abel
47
K1986.indd 47
31.1.2012 14:19:11
Kapitola 2 Napíchnutí linky Okno APR obsahuje dvě prázdné tabulky. Jakmile dokončíte nastavení, budou v horní tabulce zobrazena zařízení, která se podílejí na znehodnocení mezipaměti ARP, a v dolní tabulce bude uvedena veškerá komunikace mezi počítači se znehodnocenou mezipamětí ARP. Chcete-li nastavit znehodnocení, postupujte takto: 1. Klepněte na prázdnou oblast v horní části okna a poté klepněte na ikonu se
symbolem plus (+) na standardním panelu nástrojů programu. 2. Zobrazené okno obsahuje dvě podokna pro výběr. Na levé straně je zobra-
zen seznam všech dostupných hostitelů v síti. Klepněte na IP adresu cílového počítače, jehož provoz chcete sledovat, a v pravém podokně se zobrazí seznam všech hostitelů v síti s výjimkou IP adresy cílového počítače. 3. V pravém podokně klepněte na IP adresu směrovače, který je připojen přímo nad cílovým počítačem (viz obrázek 2.13), a klepněte na tlačítko OK. IP adresy obou zařízení by se nyní měly objevit v horní tabulce hlavního okna aplikace.
Obrázek 2.13: Výběr zařízení pro zapnutí metody znehodnocení mezipaměti ARP 4. Chcete-li proces dokončit, klepněte na žlutočerný symbol radiačního nebez-
pečí na standardním panelu nástrojů. Aktivujete tím funkce programu Cain & Abel pro znehodnocení mezipaměti ARP a umožníte, aby analyzující systém začal vystupovat jako prostředník veškeré komunikace mezi cílovým systémem a nadřazeným směrovačem.
48
K1986.indd 48
31.1.2012 14:19:11
Sledování ve směrovaném prostředí Nyní můžete aktivovat svůj paketový sniffer a zahájit proces analýzy. Když dokončíte zachytávání provozu, ukončete znehodnocení mezipaměti ARP dalším klepnutím na žlutočernou ikonu radiačního nebezpečí.
Upozornění ohledně znehodnocení mezipaměti ARP Ohledně znehodnocení mezipaměti ARP je nutné ještě připomenout, že byste si měli dobře uvědomovat role systémů, které se na tomto procesu podílejí. Nepoužívejte tuto metodu například v situaci, kdy cílové zařízení značně vytěžuje šířku pásma sítě. Může se jednat o souborový server připojený k síti linkou s rychlostí 1 Gb/s (zejména tehdy, jestliže má analyzující systém konektivitu pouze 100 Mb/s). Když přesměrujete provoz uvedenou metodou, veškerý příchozí i odchozí provoz cílového systému musí nejdříve projít analyzujícím systémem, který se pak stává úzkým hrdlem celé komunikace. Toto přesměrování může v analyzovaném počítači vyvolat účinek podobný útoku DoS, což se projeví poklesem výkonu sítě a chybami v analyzovaných datech. POZNÁMKA Chcete-li se vyhnout tomu, aby analyzujícím systémem procházel veškerý provoz, můžete využít funkci označovanou jako asymetrické směrování. Další informace o této metodě naleznete v uživatelské příručce na webu oxid.it (http://www.oxid.it/ ca_um/topics/apr.htm).
Sledování ve směrovaném prostředí Všechny metody odposlechu linky pro přepínané sítě jsou dostupné i ve směrovaných sítích. Ve směrovaném prostředí je potřeba zohlednit hlavně umístění snifferu, které je zvláště důležité při řešení potíží týkajících se více síťových segmentů. Jak jsme již ukázali, všesměrová doména zařízení sahá až po směrovač, kde je provoz předáván dalšímu výše připojenému směrovači. V situacích, kdy musí data procházet přes více směrovačů, je důležité analyzovat provoz na obou stranách směrovače. Uvažme například problémy s komunikací, které mohou nastat v síti s několika síťovými segmenty propojenými různými směrovači. Každý segment této sítě komunikuje s nadřazeným segmentem, aby mohl ukládat a načítat data. Na obrázku 2.14 je patrné, v čem spočívá problém, který je potřeba vyřešit. Níže připojená podsíť (síť D) nedokáže komunikovat s žádným zařízením v síti A. Pokud začneme sledovat provoz zařízení v síti D, která má potíže v komunikaci se zařízeními v jiných sítích, můžeme zřetelně pozorovat data přenášená do jiného segmentu, ale nevidíme data v opačném směru. Jestliže změníme pozici snifferu 49
K1986.indd 49
31.1.2012 14:19:11
Kapitola 2 Napíchnutí linky a začneme sledovat provoz v nejbližším vyšším síťovém segmentu (síť B), získáme jasnější obrázek o situaci. V této fázi můžeme zjistit, že směrovač v síti B zahazuje provoz nebo jej nesprávně směruje. Nakonec se dostaneme k nesprávné konfiguraci směrovače a opravou této konfigurace lze vyřešit původní problém. Tento scénář je sice poněkud obecný, ale plyne z něj následující poučení: pracujeme-li s více směrovači a síťovými segmenty, může být nutné sniffer občas přemístit, abychom získali kompletní obrázek. Jedná se o dokonalý příklad toho, proč je při zjišťování příčin potíží často potřeba sledovat provoz více zařízení ve více segmentech.
Síť A
Síť B
Síť C
Síť D
Obrázek 2.14: Počítač v síti D nemůže komunikovat s počítačem v síti A
SÍŤOVÉ MAPY Při analýze umístění snifferu v síti jsme prozkoumali několik odlišných síťových map. Síťová mapa (network map) neboli síťový diagram (network diagram) je schéma, které znázorňuje všechny technické prostředky v síti a jejich propojení. Chcete-li vybrat umístění paketového snifferu, je nejlepší vizualizovat síť pomocí síťové mapy. Pokud je k dispozici síťová mapa, mějte ji po ruce, protože vám poslouží jako cenná pomůcka při řešení potíží a analýze. Můžete dokonce vytvořit podrobnou síťovou mapu vlastní sítě. Pamatujte, že polovina úspěchu při řešení potíží často závisí na tom, zda shromažďujete správná data.
Umístění snifferu v praxi Ukázali jsme si čtyři různé způsoby, jak zachytávat síťový provoz v přepínaném prostředí. Budeme-li uvažovat jednoduchou instalaci aplikace paketového snifferu do konkrétního zařízení, ve kterém chceme zachytávat provoz, můžeme přidat ještě metodu přímé instalace. Vzhledem k tomu, že máme k dispozici pět metod, může být poněkud komplikované určit, která z nich je v dané situaci nejvhodnější. Tabulka 2.2 shrnuje obecné pokyny týkající se jednotlivých metod. 50
K1986.indd 50
31.1.2012 14:19:12
Umístění snifferu v praxi Tabulka 2.2: Pokyny týkající se sledování paketů v přepínaném prostředí Metoda
Pokyny
Zrcadlení portu
Obvykle se upřednostňuje, protože nijak neovlivňuje síť a nezpůsobuje generování žádných dodatečných paketů. Metodu lze konfigurovat bez odpojení klienta, což je výhodné při zrcadlení portů směrovače nebo serveru.
Rozbočování
Ideální, pokud nevadí dočasné odpojení hostitele. Neefektivní, je-li nutné zachytávat provoz z více hostitelů, protože se zvyšuje pravděpodobnost kolizí a zahazování paketů. U moderních hostitelů s připojením 100/1000 Mb/s může vést ke ztrátě paketů, protože většina skutečných rozbočovačů pracuje jen s rychlostí 10 Mb/s.
Použití odposlechu
Ideální, pokud nevadí dočasné odpojení hostitele. Jediná možnost, potřebujete-li sledovat provoz na optické lince. Vzhledem k tomu, že zařízení na odposlech jsou za tímto účelem vyrobena a zohledňují rychlost moderních sítí, je tato metoda dokonalejší než rozbočování. Při omezeném rozpočtu může být příliš drahá.
Znehodnocení mezipaměti ARP
Považuje se za nepříliš elegantní metodu, protože kvůli přesměrování provozu přes sniffer je nutné do sítě odesílat nové pakety. Může být efektivní, potřebujete-li rychle zachytit provoz zařízení, aniž byste je odpojili, a nepřipadá přitom v úvahu zrcadlení portu.
Přímá instalace
Obvykle se nedoporučuje, protože pokud se vyskytují potíže u hostitele, může příslušný problém způsobit zahození nebo manipulaci s pakety, které tak nejsou přesně reprezentovány. Síťová karta hostitele nemusí být v promiskuitním režimu. Optimální v testovacích prostředích, při testování výkonu a zjišťování standardních hodnot a analýze zachycených souborů vytvořených v jiném systému.
Analytici by měli usilovat o celkovou neviditelnost. V dokonalém světě by měli shromáždit data a nezanechat přitom stopy. Stejně jako kriminalisté nechtějí kontaminovat místo činu, nechceme ani my kontaminovat zachytávaný síťový provoz. Při rozboru praktických scénářů v dalších kapitolách budeme v konkrétních příkladech probírat optimální metody, jak zachytávat požadovaná data. Prozatím můžeme při výběru optimální metody zachytávání provozu vycházet z grafu na obrázku 2.15. Je potřeba pamatovat, že tento vývojový diagram představuje pouze řešení pro referenci a nezahrnuje všechny možné varianty sledování linek. 51
K1986.indd 51
31.1.2012 14:19:12
Kapitola 2 Napíchnutí linky
Napíchnutí linky
Použijte zrcadlení portu
Podporují použité přepínače zrcadlení portu?
Ano
Ne
Lze klienta dočasně odpojit od sítě?
Ne
Použijte znehodnocení mezipaměti ARP
Ano
Máte přístup k odposlechu? Ne
Ano
Rozbočování
Použijte odposlech
Obrázek 2.15: Diagram pro výběr optimální metody napíchnutí linky
52
K1986.indd 52
31.1.2012 14:19:12
Stručná historie programu Wireshark
KAPITOLA 3
Úvod do programu Wireshark
Jak jsme již zmínili v kapitole 1, je pro účely síťové analýzy k dispozici několik aplikací pro sledování paketů, ale v této knize budeme používat program Wireshark. V této kapitole program Wireshark představíme.
Stručná historie programu Wireshark Wireshark má velmi bohatou historii. Gerald Combs, absolvent informatiky na University of Missouri v Kansas City, jej původně vyvinul z nutnosti. První verze Combsovy aplikace s názvem Ethereal byla zveřejněna roku 1998 pod licencí GNU Public License (GPL). Osm let po vydání programu Ethereal odešel Combs ze svého zaměstnání, aby mohl rozvíjet svou kariéru jinde. Jeho původní zaměstnavatel však bohužel vlastnil kompletní práva k ochranné známce Ethereal a Combs si nedokázal vyjednat dohodu, která by mu umožnila „značku“ Ethereal kontrolovat. Místo toho Combs s ostatními členy vývojového týmu projekt v polovině roku 2006 přejmenoval na Wireshark. Obliba programu Wireshark prudce roste a jeho kolaborativní vývojový tým nyní sdružuje více než 500 přispěvatelů. Program, který existuje pod názvem Ethereal, se již dále nevyvíjí.
53
K1986.indd 53
31.1.2012 14:19:12
Kapitola 3 Úvod do programu Wireshark
Výhody programu Wireshark Wireshark poskytuje několik výhod, díky kterým představuje atraktivní volbu pro každodenní použití. Je zaměřen jak na začátečníky, tak na pokročilé paketové analytiky, a každému z nich nabízí mnoho funkcí. Zhodnoťme nyní Wireshark pomocí kritérií pro výběr nástroje na sledování paketů, která jsme definovali v kapitole 1.
Podporované protokoly – Wireshark v počtu podporovaných protokolů vyniká – v době psaní této knihy jejich počet přesahuje 850. Patří k nim běžné protokoly jako IP a DHCP i pokročilejší proprietární protokoly typu AppleTalk a BitTorrent. Navíc vzhledem k tomu, že program Wireshark je vyvíjen na základě modelu open source, každá aktualizace programu zahrnuje podporu nových protokolů.
POZNÁMKA V málo pravděpodobném případě, že Wireshark není kompatibilní s protokolem, který potřebujete, můžete podporu tohoto protokolu naprogramovat sami a poskytnout svůj kód vývojářům. Ti jej mohou zahrnout do příští verze aplikace (samozřejmě pokud jej přijmou).
Snadné používání – rozhraní programu Wireshark patří v kategorii aplikací pro sledování paketů mezi nejpřehlednější. Toto grafické rozhraní se vyznačuje srozumitelně sestavenými místními nabídkami a intuitivním rozložením. Poskytuje také několik funkcí, které zlepšují použitelnost. Patří k nim barevné rozlišování jednotlivých protokolů a podrobné grafické znázornění originálních dat. Oproti některým komplikovanějším alternativám pro příkazový řádek (např. programu tcpdump) je grafické uživatelské rozhraní programu Wireshark ideální pro ty, kdo do světa analýzy paketů teprve vstupují. Náklady – vzhledem k tomu, že program Wireshark patří do kategorie open source, nabízí nepřekonatelnou cenu: Wireshark je k dispozici bezplatně pod licencí GPL. Program Wireshark si můžete stáhnout a používat jej k libovolným účelům, ať už soukromým, či komerčním.
POZNÁMKA Wireshark je sice dostupný zadarmo, ale někteří lidé za něj přesto omylem zaplatili. Když budete hledat paketové sniffery na eBay, možná vás překvapí, kolik lidí by vám rádo prodalo „profesionální podnikovou licenci“ programu Wireshark za mimořádně výhodnou cenu 39,95 USD. Samozřejmě se jedná o podfuk. Pokud se však rozhodnete, že tuto nabídku využijete, zavolejte mi a promluvíme si o dovolené u moře, kterou můžete strávit v mém hotelu ve Varnsdorfu.
54
K1986.indd 54
31.1.2012 14:19:12
Instalace programu Wireshark
Podpora programu – o úspěšnosti softwarového balíčku často rozhoduje úroveň podpory. V případě volně šiřitelného softwaru, jako je Wireshark, sice nebývá dostupná žádná formální smlouva o podpoře, ale komunita open source se při poskytování podpory často spoléhá na svou uživatelskou základnu. Komunita programu Wireshark naštěstí patří mezi projekty open source k nejaktivnějším. Webová stránka programu Wireshark přímo odkazuje na několik způsobů podpory, včetně dokumentace online, wiki podpory a vývoje, často kladené otázky a e-mailovou konferenci programu, kterou sleduje většina jeho hlavních vývojářů. Placenou podporu programu Wireshark také nabízí firma CACE Technologies ve svém programu SharkNet. Podpora operačních systémů – Wireshark je kompatibilní se všemi významnými moderními operačními systémy včetně platforem Windows, Mac OS X a systémů založených na Linuxu. Úplný seznam podporovaných operačních systémů naleznete na domovské stránce programu.
Instalace programu Wireshark Proces instalace programu Wireshark je překvapivě prostý. Než ale s instalací začnete, zkontrolujte, zda systém splňuje následující požadavky:
Procesor s frekvencí 400 MHz nebo vyšší 128 MB paměti RAM Minimálně 75 MB dostupného místa na disku Síťová karta s podporou promiskuitního režimu Zachytávací ovladač WinPcap
Zachytávací ovladač WinPcap představuje implementaci rozhraní API (application programming interface) pro zachytávání paketů s názvem pcap určenou pro systém Windows. Tento ovladač jednoduše řečeno interaguje s operačním systémem při zachytávání nezpracovaných dat paketů, aplikaci filtrů a přepínání síťové karty do promiskuitního režimu a zpět. Ovladač WinPcap sice můžete stáhnout i samostatně (ze stránky http://www. winpcap.org/), ale obvykle je vhodnější instalovat jej z instalační sady programu Wireshark. Obsažená verze ovladače WinPcap totiž prošla testy kompatibility s příslušnou verzí programu Wireshark.
Instalace v systémech Microsoft Windows Chcete-li nainstalovat program Wireshark v systému Windows, stáhněte si poslední instalační sestavení z oficiální webové stránky programu Wireshark http://www. wireshark.org/. Na webu přejděte do sekce Downloads a zvolte některý ze serverů pro stahování. Po stažení softwaru postupujte takto: 55
K1986.indd 55
31.1.2012 14:19:13
Kapitola 3 Úvod do programu Wireshark 1. Spusťte instalaci dvojím klepnutím na soubor s příponou EXE a v úvodním
okně pak klepněte na tlačítko Next (Další). 2. Přečtěte si licenční smlouvu, a pokud s ní souhlasíte, klepněte na tlačítko
I Agree. 3. Vyberte součásti programu Wireshark, které chcete nainstalovat (viz obrá-
zek 3.1). Pro účely této kapitoly můžete potvrdit výchozí nastavení klepnutím na tlačítko Next.
Obrázek 3.1: Volba instalovaných součástí programu Wireshark 4. V okně Additional Tasks (Další úkoly) klepněte na tlačítko Next. 5. Vyberte umístění, kam chcete program Wireshark nainstalovat, a klepněte 6.
7.
8. 9. 10.
na tlačítko Next. Když se zobrazí dialogové okno s dotazem na instalaci ovladače WinPcap, zkontrolujte, zda je políčko Install WinPcap zaškrtnuté (viz obrázek 3.2), a klepněte na tlačítko Install. Spustí se proces instalace. Asi v polovině instalace balíčku Wireshark by měla začít instalace ovladače WinPcap. V jejím úvodním okně klepněte na tlačítko Next, přečtěte si licenční smlouvu a poté klepněte na tlačítko I Agree. Následně proběhne instalace ovladače WinPcap do počítače. Po dokončení jeho instalace klepněte na tlačítko Finish (Dokončit). Měla by se dokončit instalace programu Wireshark. Po dokončení instalace klepněte na tlačítko Next. V okně pro potvrzení instalace klepněte na tlačítko Finish.
56
K1986.indd 56
31.1.2012 14:19:13
Toto je pouze náhled elektronické knihy. Zakoupení její plné verze je možné v elektronickém obchodě společnosti eReading.