hakin9 Úklid pavučiny – zjišťování nelegálního sdílení připojení Mariusz Tomaszewski, Maciej Szmit, Marek Gusta
Článek byl publikovaný v čísle 3/2005 časopisu hakin9. Všechna práva vyhrazena. Bezplatné kopírování a rozšířování článku je povoleno s podmínkou, že nebude měněný jeho nynější tvar a obsah. Časopis hakin9, Software Wydawnictwo, ul. Piaskowa 3, 01-067 Warszawa,
[email protected]
Úklid pavučiny – zjišťování nelegálního sdílení připojení Mariusz Tomaszewski, Maciej Szmit, Marek Gusta
Pavučináři, aneb osoby rozšiřující internetové připojení v nesouladu se smlouvou, umí nadělat zlou krev zprostředkovatelům a správcům sítí. Existuje však mnoho způsobů na zjišťování těchto praktik. Nejsou to způsoby ani komplikované ani časově náročné.
Základy
S
2
nadměrným zatížením internetového připojení si může správce poradit jednoduchým způsobem, dělením propustnosti mezi legální uživatele. Tehdy nás nemusí tížit fakt, že někdo dává část svého připojení sousedovi (viz. Rámeček Zprostředkování připojení), nemá to žádný vliv na kvalitu fungování sítě. Zůstává však problém dělení nákladů a vydělávání na tomto zprostředkování. Objevuje se však otázka: jakým způsobem může správce zjistit, že síť využívají třetí osoby? Způsobů je několik, více či méně účinných. Vše však záleží především na míře znalostí osoby, která vytváří nelegální spojení a na tom, jaké techniky využívá k tomu, aby ukryl tento fakt před vnějším světem. Prvním a v podstatě nejúčinnějším způsobem zabezpečení se před nelegálním sdílením spojení, je rozdělení přenosového pásma. Zaručuje, že propustnost naší sítě se nestane malou i při výskytu několika neautorizovaných uživatelů a otázka využití přiděleného pásma zůstává v kompetenci klienta. Pokud nám však ohraničení pásma nebo přenosový limit nestačí a nepřejeme si, aby námi zprostředkované připojení bylo ještě někým sdíleno, můžeme analyzovat provoz v naší
www.hakin9.org
síti a zkoušet tyto situace odhalovat. Pokud ve smlouvě na využití připojení zprostředkovatel brání dalšímu rozdělování, je možno uživatele používající tento způsob ze sítě jednoduše odpojit, samozřejmě pokud se nám podaří sdílení připojení prokázat. Ale tato činnost, jak ukazuje praxe, se může velmi rychle změnit ve hru na policisty a zloděje, přičemž, jak to obvykle bývá, navrch mají vždy ti posledně jmenovaní.
Hodnoty TTL v hlavičkách IP paketů
Hlavička IP datagramu obsahuje pole TTL, dobu života (anglicky time to live), která popisuje horní
Z článku se naučíte... • •
jak skrývat nelegální sdílení připojení, jak zjišťovat neoprávněné rozdělování internetové konektivity.
Měl byste vědět... • • •
umět používat systém Linux, znát model ISO/OSI, mít alespoň základní znalosti o TCP/IP sítích.
hakin9 Nr 3/2005
Nelegální sdílení připojení
Zprostředkování připojení
Mnoho lidí, zvláště ti, kteří nemají s Linuxem moc společného, si pro sdílení připojení vybírá velmi jednoduchou metodu založenou na systému Windows, funkci Sdílení internetového připojení (Internet Connection Sharing – ICS). Díky ní lze počítače v domácích sítích nebo kancelářích připojovat k Internetu s použitím jednoho síťového připojení. ICS je zabudovanou funkcí systému Windows, ale je ji možno zapnout jen na počítačích se systémem Windows XP, Windows 98 SE, Windows Millennium Edition (Me) nebo Windows 2000. Jinými slovy je funkce ICS sada jistých součástí, které nejsou, oproti systému Linux, dostupné pro uživatele a mají velmi omezené možnosti nastavení. Nejdůležitější součásti jsou: • • •
program přidělující DHCP adresy – velmi jednoduchá služba DHCP, která přiděluje IP adresy, výchozí bránu a jméno serveru v lokální síti, DNS proxy server, jehož úkolem je překlad doménových jmen na IP adresy pro lokální síť, překladač síťových adres, který provádí překlad privátních adres na veřejnou adresu (veřejné adresy).
V Linux systémech se používá mechanismus překladu síťových adres NAT (anglicky Network Address Translation) nebo proxy servery. NAT a proxy jsou technologie využívané ve firewall systémech a jejich základním úkolem je skrytí a ochrana lokální sítě před vnějšími sítěmi.
hranici počtu routerů, skrz které datagram může procházet na místo určení (viz Obrázek 1). Při předávání hlavičky datagramu má každý router za povinnost snížit TTL o proporcionální hodnotu pro dobu jeho předávání. Protože routery předávají datagramy prakticky za méně než jednu sekundu, pole TTL je snižováno o jedničku. Pokud tato hodnota dojde k nule, datagram je zahozen a smazán ze sítě a odesílatel dostane ICMP zprávu o chybě. Toto chování má za cíl předcházení nekonečnému kroužení paketů v síti, které se dostaly do routovací smyčky (tzn. první router posílá datagram druhému a ten mu jej posílá zpět). Pokud nemůže být IP paket z nějakých důvodů doručen na
místo určení, po dosažení hodnoty 0 v poli TTL bude jednoduše ze sítě odstraněn. Různé operační systémy používají jiné počáteční hodnoty TTL, Tabulka 1 ukazuje počáteční hodnoty pole TTL pro nejpopulárnější operační systémy. Na Obrázku 2 se nachází schéma typické sítě LAN s nelegálním sdílením připojení. Pokud zprostředkující počítač pracuje jako router a předává pakety mezi svými rozhraními (a v případě neautorizovaného přístupu na veřejnou síť je na něm navíc spouštěna služba NAT), bude v každém paketu generovaném počítačem A, B nebo C hodnota pole TTL snížena o 1. Proto se v naší síti LAN (10.10.11.0) objevují pakety, ve
Obrázek 1. TTL (time to live) v IP hlavičce
hakin9 Nr 3/2005
www.hakin9.org
kterých bude mít pole TTL hodnotu o jednu menší než standardní hodnota daného systému. Aby správce našel tyto pakety může na internetové bráně spustit paketový analyzátor (sniffer) a podívat se, zda ze sítě nepřicházejí z jedné IP adresy (v našem případě z adresy 10.10.11.95) pakety s podivnými a rozdílnými hodnotami pole TTL. Při předpokladu, že na počítači A je spouštěn systém Windows 2000 (počáteční TTL 128) a na počítači B systém Linux (počáteční TTL 64), sniffer tcpdump spuštěný na internetové bráně může zachytit a zobrazit ukázkové pakety. Je to vidět na Obrázku 3, v síti se objevují pakety se zdrojovou IP adresou 10.10.11.95, které mají nastaveny nestandardní hodnoty pole TTL (127 a 63). Druhou podivností je to, že jeden počítač generuje pakety s různými hodnotami TTL. Může to svědčit o tom, že počítač s adresou 10.10.11.95 Tabulka 1. Hodnoty TTL charakteristické pro specifické operační systémy Verze operačního systému
TCP TTL
UDP TTL
AIX
60
30
FreeBSD 2.1R
64
65
HP/UX 9.0x
30
30
HP/UX 10.01
64
64
Irix 5.3
60
60
Irix 6.x
60
60
Linux
64
64
MacOs/MacTCP 2.0.x
60
60
OS/2 TCP/IP 3.0
64
64
OSF/1 V3.2A
60
30
Solaris 2.x
255
255
SunOS 4.1.3/4.1.4
60
60
MS Windows 95
32
32
MS Windows 98
128
128
MS Windows NT 3.51
32
32
MS Windows NT 4.0
128
128
MS Windows 2000
128
128
MS Windows XP
128
128
3
Obrázek 2. Ukázková LAN síť s nelegálním sdílením připojení sdílí připojení uživatelů používající systémy Windows a Linux.
Výchozí hodnoty TTL ve Windows a Linuxu
Stejná hodnota TTL odchozích paketů
Pokud počítač-brána pracuje na systému Linux se zkonfigurovanou
Základy
Metoda opírající se o kontrolu hodnoty TTL v IP paketech se může ukázat jako neúčinná. V systémech Windows a Linuxu totiž existuje možnost změny standardních hodnot času života paketů. Pokud uživatelé sdíleného připojení zvětší ve svém systému hodnotu TTL o jedna, tyto pakety přestanou být po průchodu podezřelé. Jediné, co může ještě podporovat skutečnost sdílení připojení je různá hodnota TTL z jedné zdrojové IP adresy. Tato situace se však nemusí vždycky objevit, v nelegální LAN síti uživatelé mohou přece používat pouze jednu verzi operačního systému, např. Windows 2000 nebo Linux. I když je síť velmi odlišná a pracuje v ní mnoho různých verzí operačních systémů, mohou pavučináři sjednotit hodnoty TTL na všech počítačích, ne-
závisle na typu systému (viz Rámeček Změna výchozích hodnot TTL). V případě, kdy je připojení zpřístupňováno přes systém Windows se spuštěnou funkcí ICS, sjednocení hodnoty TTL na všech počítačích je jedinou metodou schování se před správcem. Pokud funkci internetové brány plní systém Linux s nakonfigurovaným NAT, situace je o mnoho jednodušší. Stačí jen, s využitím záplaty pro paketový filtr iptables se jménem patch-o-matic, nastavit systém tak, aby každý vycházející paket měl nastavenu jednu, přesně danou hodnotu TTL. V tom případě osoby nabízející nelegálně sdílené připojení nezajímají systémy používané v nelegální síti, protože všechny pakety po průchodu NAT budou mít nastavenu stejnou hodnotu v poli TTL IP hlavičky.
službou NAT, je možno pro nastavení jednotné hodnoty TTL nelegálních paketů využít záplatu pro iptables autora Haralda Welte, která přidává novou vlastnost v pravidlech filtrování. Tato vlastnost umožňuje uživateli nastavení hodnoty TTL pro IP paket a také její zvětšení nebo zmenšení o stanovenou hodnotu. Záplatu najdete na adrese http://netfilter.org. Pro přeložení záplaty jsou potřebné zdrojové kódy kernelu a iptables. Po jisté úpravě zdrojových kódů je zapotřebí je zkompilovat a nainstalovat nové jádro a nové iptables. V době konfigurace jádra je možno nastavit nové volby dostupné v sekci Networking Options -> Netfilter Configuration. Pro TTL hodnoty jsou dostupné následující volby: • • •
hodnota – nastavuje hodnotu TTL na hodnota, --ttl-dec hodnota – zmenšuje hodnotu TTL o hodnota, --ttl-inc hodnota – zvětšuje hodnotu TTL o hodnota. --ttl-set
Nastavení TTL u všech, skrz počítač-bránu, odcházejících paketů na hodnotu 128 spočívá v zápise do tabulky mangle iptables s následujícím filtrovacím pravidlem: # iptables -t mangle \
Obrázek 3. Hodnoty TTL po průchodu přes nelegální router
4
www.hakin9.org
-A FORWARD -j TTL \ --ttl-set 128
hakin9 Nr 3/2005
Nelegální sdílení připojení
Změna výchozích hodnot TTL Linux
Změna hodnoty TTL se pro lokální počítač v systému Linux provádí na konzoli zadáním následujícího příkazu : # echo "X" > /proc/sys/net/ipv4/ip_default_ttl
kde X je nová, změněná hodnota TTL. Standardně má hodnotu 64, pokud se má Linux vydávat za Windows, stačí jako X zadat hodnotu 128 (a nejlépe 129, pokud využíváme sdílené připojení a nechceme budit podezření správce sítě).
Windows 2000/XP
Jako výchozí hodnota TTL je v paketech odesílaných ze systému Windows 2000/XP nastaveno 128. Nejrychlejším způsobem zjištění standardní hodnoty TTL v systému je využití příkazu ping. Stačí vyslat paket ICMP echo request na loopback a uvidíte, jaká hodnota TTL je nastavena v odpovědích ICMP echo reply: ping 127.0.0.1
Změny TTL provedeme v registrech systému. Za uchovávání této hodnoty zodpovídá položka DefaultTTL klíči HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Tcpip\Parameters. Pokud tato položka neexistuje, je zapotřebí ji vytvořit s využitím typu DWORD.
Windows 95/98/Me
V systémech Windows 95/98/Me je hodnota TTL uschována v klíči HKEY _ LOCAL _ MACHINE\System\CurrentControlSet\Services\VxD\MSTCP\DefaultTTL . Pokud daná hodnota DefaultTTL neexistuje ve výše uvedeném klíči, je zapotřebí ji přidat jako typ STRING.
Po spuštění výše uvedeného příkazu by měla být hodnota tabulky stejná, jako na Výpisu 1: Jiným způsobem je nastavení příslušné hodnoty TTL ještě před spuštěním procesu routování na počítači-bráně, např.: # iptables -t mangle \ -A PREROUTING -i eth0 \ -j TTL --ttl-set 129
Více než nula
Správce může využít hodnotu TTL pro ztížení sdílení připojení problémovým uživatelům. Pokud na počítači, který je bezprostředně připojen k internetovému připojení, pracuje Linux, může správce nastavit v paketech, které jsou směrovány do lokální sítě hodnotu TTL na 1. Tehdy každý nelegální router v LAN síti bude muset po odebrání paketu snížit hodnotu TTL o jedna a bude přinucen tento paket odstranit ze sítě, proto informace nebude předána dále a nelegální síť přestane fungovat (pokud však paket přijde do legální sítě, bude z TTL ode-
hakin9 Nr 3/2005
brána jednička bez nejmenších problémů). Je potřeba vědět, že toto řešení je účinné, pokud počítač sdílející nelegální připojení pracuje jako router a používá překlad síťových adres (NAT). Výše popsaný způsob zmenšení hodnoty TTL může správce nelegální sítě velmi jednoduše neutralizovat zvětšením hodnoty TTL v každém na router přicházejícím paketu ještě před procesem routování. V systému Linux stačí využít již výše popsaný postup s iptables (se jménem TTL) a do tabulky iptables přidat následující pravidlo: # iptables -t mangle \ -A PREROUTING -i wlan0 \ -j TTL --ttl-set 2
Díky tomu bude v každém IP paketu, který přichází na rozhraní wlan0 (viz
Obrázek 2) a který může mít nastavenou hodnotu TTL třeba i na 1, hodnota TTL pole nastavena na 2. Takto modifikovaný paket bude předán routovacímu procesu, jeho hodnota TTL bude zmenšena o 1 a paket bez problémů dojde ke konečnému uživateli v nelegální LAN síti. Samozřejmě, že pokud se i ten rozhodl k nelegálnímu sdílení připojení, musí být TTL hodnota v paketech vycházejících z routeru nastavena na vyšší hodnotu.
Proxy poprvé
Metody pracující s manipulacemi s hodnotou TTL mají platnost bytu tak dlouho, dokud mají co do činění se zařízeními třetí síťové vrstvy modelu ISO/OSI. Pak stačí, pokud se správce pavučiny rozhodne ke sdílení připojení využít zařízení čtvrté nebo vyšší vrstvy (gateway, čili v našem případě různé druhy síťových proxy prostředníků), které vytvářejí celý IP paket od počátku a výše popsané metody se ukážou být neúčinné. V krajním případě si můžeme představit, že v pavučině funguje pouze čistý protokol IPX, zatímco na výstupu z ní brána IPX/IP, která navazuje spojení jménem klientů a příchozí odpovědi předává do vnitřní sítě (pavučiny) uvnitř IPX paketů. Až na koncových stanicích jsou vytahovány příslušným socketem, který je předává síťovým aplikacím v podobě srozumitelné pro protokoly TCP/IP. Z pohledu IP přenosu je posledním místem, na které přichází IP datagram je brána a proto počítač připojený bezprostředně k vnější síti.
Hluchý telefon
Posledním způsobem odhalení nelegálně sdíleného připojení je zjišťování zda má podezřelý počítač spuštěné předávání paketů (IP forwarding). Pokud ano, můžeme si myslet, že máme co do činění s nepoctivým uživatelem. Je dobré
Výpis 1. Obsah tabulky mangle po zadání filtrovacího pravidla # iptables -t mangle --list Chain FORWARD (policy ACCEPT) target prot opt source destination TTL all -- anywhere anywhere TTL set to 128
www.hakin9.org
5
vědět, že to není žádný důkaz. Každý uživatel v lokální síti může mít ve svém počítači dvě nastavené síťové karty, mezi kterými si nastavil předávání paketů. Může to však být důvod k tomu, podívat se na takového uživatele trochu důkladněji. Podívejme se na situaci z Obrázku 2, ve které správce disponuje počítačem se systémem Linux. Jediné, co musí udělat, je přidání falšujícího zápisu do vlastní tabulky routingu informující o tom, že IP paket poslaný do popsané sítě má být předán na určenou, námi podezřívanou, IP adresu:
00:59:47:270862 10.10.11.2
§
> 20.20.20.20: icmp: echo request 00:59:47:271276 10.10.11.2
§
> 20.20.20.20: icmp: echo request
Je možno také zkusit zjistit, jaká podsíť je využívána v nelegální LAN síti. Vyžaduje to však napsání příslušného skriptu, protože ruční zjišťování je skoro předurčeno k neúspěchu. Proto musíme použít mechanismus popsaný výše, s vybráním poněkud věrohodnější adresy podsítě, např.: # route add –net 192.168.1.0/24 \ gw 10.10.11.95 eth0
# route add -net 20.20.20.0/24 \ gw 10.10.11.95 eth0
Základy
V té chvíli paket poslaný například na adresu 20.20.20.20 bude doručen na počítač s adresou 10.10.11.95 (viz Obrázek 2). Pokud má tento počítač zapnuté předávání paketů, vezme separovaný paket a předá jej ke zpracování výběru jeho další trasy. Protože je velmi málo pravděpodobné, že by se v routovací tabulce nacházel zápis odkazující se právě na síť 20.20.20.0/24, systém přijme rozhodnutí o předání na svou výchozí bránu. Proto nastává, že výchozí branou pro tento počítač je k Internetu bezprostředně připojený router (v našem případě je to router s adresou 10.10.11.1). V síti se objeví dva pakety ICMP echo request: jeden poslaný z počítače správce na podezřelý počítač a druhý poslaný nelegálním routerem. Celý experiment spočívá ve spuštění snifferu tcpdump na konzoli počítače správce (ještě lépe na internetové bráně): # tcpdump -n -i eth0
a z druhé konzole zadaný příkaz ping: # ping 20.20.20.20
Pokud počítač o dané IP adrese pracuje jako router, měli bychom vidět dva pakety ICMP echo request:
6
Pokud jsme nenatrefili na existující podsíť, efekt bude stejný, jako předtím. Pokud se nám povedlo uhádnout podsíť, paket bude předán na příslušnou adresu. Pokud je počítač se zadanou adresou dostupný v nelegální podsíti, předá odpověď v podobě paketu IMCP echo reply. V opačném případě dostaneme hlášku o chybě, že daný host je nedostupný (icmp host unreachable). Mechanismus bude pracovat do té doby, dokud administrátor pavučiny nespustí na nelegálním routeru paketový filtr typu statefull (dynamic) a odfiltrování spojení navázaných s pavučinou zevnitř.
Identifikace internetových prohlížečů
Každý, v systému jako výchozí, spouštěný internetový prohlížeč posílá na WWW server ve svém požadavku na získání strany http hlavičku. V hlavičce se nachází pole User-Agent ve kterém je obsažena informace o typu prohlížeče, typu a verzi operačního systému, na kterém je tento prohlížeč spouštěn (Obrázek 4). Tento fakt je možno využít pro hledání nelegálního sdílení připojení, zvláště když uživatelé mají různé typy a verze prohlížečů, navíc pracujících v různých operačních systémech. Test detekující sdílené připojení spočívá v analýze paketů zachycených na síti. Mezi nimi je zapotřebí hledat ty, které byly odeslány z jedné
www.hakin9.org
zdrojové adresy (nelegální brány). Pokud pole User-Agent obsahuje v takových paketech informace o různých prohlížečích a operačních systémech, je to podezřelá situace. Podezřelejší je situace, ve které jsou v poli User-Agent vidět různé verze operačních systémů a zároveň stejné prohlížeče. Používání dvou operačních systémů v jedné chvíli, využívajících jednu IP adresu, je skoro nemožné (pokud vyloučíme využití programů virtuálních počítačů takových jako je VMvare nebo Microsoft Virtual PC), stejně jako používání několika prohlížečů v jednom operačním systému. Obrázek 5 ukazuje pakety, které by měly správce sítě zaujmout. Na Obrázku 5 můžete vidět dva požadavky na získání stránky http://www.onet.pl/, zaslané z jedné adresy 10.10.11.95, ve kterých je vidět, že byly použity dva prohlížeče (MSIE 6.0 a Mozilla Firebird) spouštěné na dvou operačních systémech (Windows 2000 identifikující se jako WindowsNT5.0 a Linux). Zůstává pouze otázka co dělat, pokud má uživatel na jednom počítači nainstalováno několik operačních systémů a pracuje jednou s jedním a podruhé s jiným.
Proxy podruhé
Popsaná metoda se zdá být velmi dobrá, i když i ji je možno obejít, pokud bude pole User-Agent odstraněno nebo modifikováno tak, aby ukazovalo na úplně jiný typ prohlížeče a operační systém. Je možno to udělat pro každý prohlížeč v nelegální LAN síti, nastavením identifikace stejné pro všechny prohlížeče nebo využít WWW proxy server na nelegální bráně a donutit všechny uživatele k jeho používání. Příslušné nastavení proxy serveru způsobí, že nezávisle na uživateli používaných prohlížečích bude na dotaz generována serverem proxy vždy ta samá informace v poli User-Agent.
Změna obsahu pole User-Agent
V případě prohlížečů Mozilla (pro Windows) je dostupné rozšíření User Agent Switcher, které přidá do
hakin9 Nr 3/2005
Nelegální sdílení připojení
borech config a default.action. V prvním souboru je zapotřebí nastavit, na jakém rozhraní má server čekat připojení od uživatelů. Musíme také zadat IP adresu a port přiřazený k vnějšímu rozhraní, čili toho, ze strany nelegální LAN sítě (Obrázek 9) A v souboru default.action je nutné zadat obsah pole User-Agent pro všechny odcházející WWW spojení. Proto musíme změnit řádek: -hide-user-agent \
na například tento: +hide-user-agent{Mozilla/4.0 (compatible; MSIE 6.0;
Obrázek 4. Pole User-Agent v HTTP hlavičce programu menu umožňující změnu identifikace prohlížeče. Toto rozšíření umožňuje stejnou funkčnost jako Identifikace prohlížeče dostupná v Opeře. Je možno nastavovat seznamy agentů zobrazovaných v menu a jejich výběr v závislosti na požadavcích. (Obrázek 6). V případě prohlížečů Internet Explorer je nutno změnit větev systémového registru HKEY _ LOCAL _ MACHINE\SOFTWARE\Microsoft\ Wi nd ows\C u rre ntVersion\Inter net Settings\5.0.
Je nutno v ní vytvořit klíč User Agent (pokud tam není). Zadání výchozí hodnoty nahradí řetězec Mozilla/4.0. Zbylé parametry je možno nastavit přidáním nových hodnot klíče User Agent jako Compatible, Version nebo Platform s vlastními hodnotami. Navíc je možno přidávat nové hodnoty v klíči Post Platform, jako další informace pro pole UserAgent. Je nutno je přidávat jako jména řetězců bez hodnot např. dodatečná informace = "". Ukázkové změny v registru jsou vidět na Obrázku 7. Otevřením stránky http://hitgate. gemius.pl:9170/ua.html můžeme zjistit, jakým způsobem se představuje náš prohlížeč. Toto URL je možné také využít pro kontrolu pole User-Agent po provedení změn v registru. Například změna prvních čtyř hodnot pole User-Agent způsobí, že prohlížeč bude rozpoznán jako Netscape 6.0 spouštěný v systému Linux (Obrázek 8).
hakin9 Nr 3/2005
Použití proxy serveru pro sjednocení pole User-Agent
Jednoduchý způsob, jak skrýt informace o prohlížečích je využití WWW proxy serveru pro systém Linux, takového jako je např. privoxy. Je nutno jej nainstalovat na nelegální bráně a informovat uživatele o tom, aby nastavili své prohlížeče k používání proxy serveru. Program je možno získat ze stránky http:// www.privoxy.org/. Po nainstalování programu je třeba provést dvě změny v sou-
Windows NT 5.0;
§
§
§
.NET CLR 1.1.4322)} \
Pasivní detekce operačního systému
Ještě jiným způsobem detekce nelegálního rozvětvení sítě je zjištění několika různých verzí operačního systému využívajících v jedné chvíli jednu IP adresu. Pasivní identifikace je metoda, při které se do cílového počítače neodesílá žádný testovací paket (viz Článek Michała Wojciechowského OS fingerprinting – jak se nedat odhalit, hakin9 4/2004).
Obrázek 5. Podezřelé HTTP pakety
www.hakin9.org
7
Obrázek 6. Změna identifikace prohlížeče Mozilla
Principem této metody je analýza zásobníků TCP/IP počítače na základě paketů, které počítač generuje, po jejich zachycení metodou sniffingu. Samo pojetí analýzy fronty ukáže typ a verzi operačního systému na základě rozdílů v implementaci TCP/IP zásobníků, používaných různými výrobci stejných systémů. Mimo přesně stanovených zásad pro vytváření TCP/IP zásobníků popsaných v RFC dokumentech, je možno v konkrétních implementacích příslušných operačních systémů najít jisté rozdíly. Týká se to hlavně charakteristických hodnot polí nastavených v hlavičkách protokolů IP a TCP. Programy pro pasivní analýzu zásobníků TCP/IP dávají k analýze mezi jinými i následující pole IP hlavičky: • • • •
Obrázek 7. Změna identifikace prohlížeče Internet Explorer
Zpravidla jsou v TCP hlavičce kontrolována následující pole: • •
Obrázek 8. Identifikace prohlížeče IE po provedených změnách
•
•
Základy
Obrázek 9. Zadání IP adresy a portu, na kterém bude proxy server dostupný
8
www.hakin9.org
velikost okna (anglicky Window Size), maximální velikost segmentu (anglicky Maximum Segment Size), volba selektivního odstraňování (anglicky Selective Acknowledgement), volba NOP (anglicky No Operation).
Jedním z nástrojů určených k pasivnímu fingerprintingu je program p0f. Je možno jej získat ze stránek http:// lcamtuf.coredump.cx/p0f.shtml. V systému Windows je vyžadována instalace knihovny Winpcap. Program může identifikovat operační systém pracující na hostech na základě IP paketů, které mají nastaveny následující TCP příznaky: • • •
Obrázek 10. Výsledky pasivní detekce
čas života paketu (TTL), pole ID (identifikace), nastavení bitu TOS (anglicky Type Of Service), nastavení bitu nefragmentuj (anglicky don’t fragment).
SYN, SYN a ACK, RST.
hakin9 Nr 3/2005
Nelegální sdílení připojení
Jiné metody detekování pavučinářů Internetové komunikátory
Analýzou paketů vycházejících z internetových komunikátorů v nich můžeme najít identifikátor (obvykle číslo) uživatele. Protože existuje nevelká šance, že uživatel má na jednom počítači v tu samou dobu spuštěno několik účtů v internetovém komunikátoru, zachycení paketů obsahujících různé identifikátory uživatele pocházejících z jedné IP adresy s velkou pravděpodobností svědčí o tom, že máme co do činění s nelegální sítí.
Sledování pošty
Protože převážná většina uživatelů nepoužívá šifrované připojení na poštovní servery, analýzou odesílaných zpráv s použitím snifferu můžeme na základě některých hlaviček s velkou pravděpodobností říci, že máme co do činění s pavučinářem. Zřídka uživatel používá dva poštovní programy zároveň a většina poštovních programů se v hlavičkách prezentuje jako User-Agent nebo X-Mailer.
Kontrola uptime
Pakety TCP mohou obsahovat dodatečnou (volitelnou) informaci timestamp, čili časovou značku. Různé operační systémy tuto značku mění v různých časových odstupech. Značka (pokud víme s jakým operačním systémem pracujeme), po pravidelném zvětšování s danou frekvencí, obsahuje uptime počítače, čili dobu od jeho posledního spuštění. Pokud například s využitím tcpdump zjistíme z jednoho IP paketu diametrálně odlišné hodnoty timestamp, můžeme si být jistí, že pracujeme s různými počítači, čili s pavučináři: # tcpdump -n | grep timestamp
A zde je část ukázkového výsledku: <nop,nop,timestamp 3320208223 97006325>
Dvě hodnoty obsažené po slově timestamp jsou příslušný timestamp zdrojového hosta a poslední je hodnota timestampu získaná od cílového hosta. Tato metoda má pouze omezenou funkčnost, protože při jejím používání předpokládáme, že počítače v pavučinářské síti budou posílat pakety s volbou timestamp, což nemusí být vždy pravda.
S použitím volby --f se určí soubor obsahující známé signatury pro příslušné operační systémy, které p0f porovnává s tím, co identifikuje v zachyceném paketu. Pro každou metodu existuje samostatný soubor:
• • •
p0f.fp, p0fa.fp, p0fr.fp.
Například signatura pro systém Windows 2000 se service packem 4 nebo XP se service packem 1
V Síti • • • • • •
http://support.microsoft.com/default.aspx?scid=kb;en-us;158474 – informace o umístění nejdůležitějších síťových parametrů v registru Windows, http://www.netfilter.org/patch-o-matic/index.html – popis záplatování balíčku iptables, http://winpcap.polito.it/install/default.htm – knihovna Winpcap, http://lcamtuf.coredump.cx/p0f.shtml – domovská stránka programu p0f, http://netfilter.org – projekt Netfilter, http://www.0xdecafbad.com/TCP-Timestamping-Obtaining-System-UptimeRemotely.html – informace na téma vzdáleného získání uptime systému.
hakin9 Nr 3/2005
www.hakin9.org
vypadá následovně:
65535:128:1:48:
M*,N,N,S:.:Windows:2000 SP4, XP SP1.
Položky ve výše uvedeném zápise znamenají: • • • • • • • •
– velikost TCP okna, – dobu života paketu (TTL), 1 – nastavený bit nefragmentovat paket, 48 – velikost paketu, M – maximální velikost segmentu (MSS), N – volba nepoužita (NOP), N – volba nepoužita (NOP), S – zapnuté selektivní potvrzování ACK. 65535 128
Volba -p slouží pro nastavení síťového rozhraní do módu odběru všech paketů (anglicky promiscuous), nejenom těch, adresovaných počítači, na kterém pracuje p0f. S pomocí volby -i můžeme zadat rozhraní, na kterém má program naslouchat. Na Obrázku 10 je vidět, že p0f identifikoval ve stejné době dva operační systémy využívající jednu zdrojovou IP adresu. Tyto výsledky mohou svědčit o tom, že v naší síti někdo sdílí připojení s jinými uživateli. V nejnovější verzi p0f autor přidal doplňkovou volbu -M , která v procentech popisuje (na základě anomálií v paketech) pravděpodobnost existence kamufláže na dané IP adrese. Samozřejmě (proxy potřetí...) že všechno má smysl jen tehdy, pokud správce pavučiny nenainstaluje zařízení pracující jako obvodový proxy server. V té chvíli se ve fingerprintingu objeví jen operační systém prostředníka.
Sysifovská práce
Existuje mnoho jiných metod zjišťování nelegálního sdílení připojení a mnoho způsobů zjednodušení života správce pavučin (viz Rámeček Jiné metody detekování pavučinářů). Všechny však mají společnou vlastnost, že se dají, při troše dobré vůle, obejít a zneškodnit. Proto se zdá, že nejlepší by bylo, aby zprostředkovatelé Internetu zůstali při rozdělování pásma a limitech přenosu a hru na Velkého bratra ponechali spíše na málo sledované zábavné TV programy. n
9