"Kdo nemá e-mailovou adresu, jako by ani nebyl." "Internet je vysoce kriminogenní prostředí." "Už's viděl hacknutou stránku ministerstva obrany?" Takové a podobné věty můžeme číst a slyšet velmi často. A za všechny tyto výroky může explozivní rozvoj Internetu v posledních letech. Co si má ubohý uživatel myslet? Podívejme se tedy na bezpečnost lokálních a rozsáhlých sítí detailněji.
Každá rozsáhlá sít je složena z menších částí - lokálních sítí. Většina těchto sítí je založena na přenosu datagramů přes fyzická média, pouze některé používají radiové spojení nebo infračervené paprsky. Nejrozšířenější druhy sítí používají topologii sběrnice (Ethernet) nebo logického kruhu (Token Ring). Tyto topologie již ve svém principu sdíleného média umožňují dva druhy útoku na lokální počítačovou síť:
Všechny datagramy, které projdou sítí, jsou označeny svou výchozí a cílovou adresou. Každý síťový adaptér poslouchá a kontroluje, zda se cílová adresa shoduje s jeho vlastní adresou. Pokud je tomu tak, předá datagram nadřazenému systému. Jinak daný datagram zapomene.
Většina síťových adaptérů však v současné době podporuje odposlouchávání všech datagramů prošlých sítí (promiscuous mode). V takovém případě je možné odposlouchávat všechny datagramy, které procházejí sítí. Odposlouchávání je obzvláště nebezpečné, protože je pasivní (tzn. z vnějšku nezjistitelné) a většina datagramů prochází sítí nezašifrována. K tomu, aby byl síťový adaptér nastaven na odposlouchávání, musí mít útočník superuživatelský přístup k počítači (nebo používat operační systém, který neumožňuje řídit přístup k hardwarovým prostředkům, např. MS-DOS).
Druhým nejčastějším útokem je maškaráda. Jako v předchozím případě je možné využít většiny v současnosti dostupných síťových adaptérů. Ačkoliv např. ethernetové adaptéry mají svou adresu pevně vypálenu do paměti typu ROM (u některých produktů je možné adresu nastavit softwarově), je možné posílat datagramy, které mají jinou síťovou adresu, než je nastavena v ROM.
Velká většina protokolů pro komunikaci mezi dvěma počítači vyžaduje předání hesla. Tato hesla jsou posílána po síti nezašifrovaná. Útočníkovi pak ke zjištění hesla stačí odposlechnout několik prvních datagramů komunikace mezi dvěma počítači.
Kombinací odposlouchávání a maškarády lze dosáhnout ještě lepšího výsledku než pouhé získání hesel. Pokud útočník zná síťové protokoly, může počítač naprogramovat tak, aby se tvářil jako jiný počítač v síti. Pokud například uživatel používá k přihlašování se na počítač program rlogin, při kterém nemusí používat heslo (protože má v souboru .rhosts záznam o důvěryhodném počítači), útočník se může vydávat za uživatele, který je obsažen v souboru .rhosts.
Takovým útokům lze celkem jednoduše zabránit změnou topologie. Pokud je místo koaxiálního kabelu použita strukturovaná kabeláž s přepínačem (switch), pak k počítači doputují datagramy určené pouze pro něj a pro všechny (na úrovni MAC adres1).
Protože ethernetové adaptéry nerozumí IP paketům, ale ethernetovým rámcům se 48bitovými MAC adresami, je nutné pro převod mezi těmito adresami používat nějakou mapovací funkci. Ačkoliv je možné použít statické nebo algoritmické mapovací funkce, nejrozšířenější je protokol ARP (Address Resolution Protocol).
Protokol je vcelku jednoduchý. Počítač, který se chce dozvědět MAC adresu druhého počítače na stejné síti, pošle broadcast (jak MAC, tak IP) paket s otázkou: "Kdo z vás má adresu 124.1.4.8?" a dotyčný počítač odpoví: "Převod adresy 124.1.4.8 na MAC adresu je 00:54:65:23:EF:04." Všimněte si, že na tento paket nemusí odpovídat skutečný vlastník této MAC adresy. Někdy je možné, aby tuto odpověď poslal někdo jiný. Neexistuje tedy jistota, že MAC adresa síťové karty odpovídá IP adrese počítače. Útočník tedy může poslat falešnou ARP odpověď a přesměrovat všechen tok dat na sebe a buď nasimulovat chování cílového počítače nebo pakety posílat dále k cílovému počítači.
Takové chování ale nemusí být známkou záměrného útoku. Pamatuji si případ kolegyně, která si při instalaci Win95 nastavila stejnou IP adresu jako jeden ze serverů. Taková chyba je celkem nepříjemná, protože je špatně zjistitelná a většinou se hledají chyby někde jinde. V našem případě jsme po zjištění stavu věcí museli oběhnout všechny počítače a zjistit jejich MAC a IP adresy (což může být problematické - zamčená kancelář, neznámé heslo...).
Zamezit takovým problémům je možné pomocí statického mapování v přepínači (pokud to umožňuje).
Zajištění bezpečnosti v rozsáhlých počítačových sítích je podstatně komplikovanější nejen proto, že se používají další protokoly, ale také proto, že není možno ve všech případech administrativně zasáhnout (např. podmínečně vyloučit ze studia).
Následující část se bude většinou týkat protokolů normálním uživatelům nepřístupných.
ICMP (Internet Control Message Protocol) je protokol na úrovni IP, který se používá k ovlivnění chování TCP a UDP spojení (např. ICMP source quench - jsi moc rychlý, zpomal). Tento protokol zpracovává chyby při komunikaci mezi počítači. Zprávy ICMP jsou přenášeny pomocí IP datagramů, běžně jsou však generovány a zpracovávány pomocí samotného síťového software TCP/IP, ne prostřednictvím uživatelských procesů. Systémové programy používají tento protokol k analýze chování a monitorování sítě (například programy ping a traceroute).
Většina ICMP zpráv je specifická pro jednotlivá spojení. Protokol tato spojení identifikuje tak, že vloží IP hlavičku a prvních 64 bitů původní zprávy do svého těla. Některé starší implementace to však nedodržují, a tak může ICMP zpráva ovlivnit všechna spojení mezi dvěma počítači. Nebezpečné jsou zejména zprávy ICMP Redirect a ICMP Destination Unreachable:
Směrovací protokoly slouží k dynamické změně cesty paketů sítí k dosažení lepších vlastností trasy (rychlejší spojení, větší propustnost). Většinou jsou cesty tam i zpět stejné, ale nemusí to být pravidlem. To, že jsou různé, může signalizovat např. poruchy v síti. Z bezpečnostního hlediska je důležitější cesta zpět od serveru. (Co je útočníkovi platné, že může poslat paket určitou cestou, když nezjistí, co cílový počítač odpovídá?)
Nejjednodušší útok je využít tzv. IP loose source route (volné směrování IP paketů). Každý IP datagram má definovánu množinu voleb, podle kterých se chovají systémy, kterými tento paket prochází (viz RFC 791). Volba IP loose source route slouží k nastavení celé trasy a počítačů (směrovačů), kterými má paket projít, a kterou musí směrovače dodržovat. Počítač, který iniciuje TCP spojení, tak může explicitně určit cestu, kterou má paket projít. Podle RFC 1122 musí být také zpáteční cesta stejná.
Při autentizaci pomocí zdrojové adresy IP paketu může útočník nastavit zdrojovou adresu na počítač, který projde kontrolou, a svou vlastní adresu nastavit do záznamu cesty, kterou paket prochází. Protože zpáteční paket musí procházet stejnou cestou, může útočník paket odchytit a simulovat chování důvěryhodného počítače.
Nejjednodušší ochranou vůči takovému útoku jsou pakety, které mají nastaveno tuto volbu odmítat. Většina směrovačů takovou možnost podporuje a má ji implicitně nastavenu, protože tato volba se k legitimním účelům skoro vůbec nepoužívá (i když jistě takové účely existují). Některé verze programů spoléhajících se na autentizaci pomocí zdrojové adresy (rlogin, rsh) dokonce spojení s takto nastavenou cestou odmítají.
Jinou možností je napadnout samotný směrovací protokol. Nejjednodušší je to zřejmě u protokolu RIP verze 1. Tento protokol je velmi starý a pro použití v současnosti se příliš nehodí. Přesto se stále používá.
Je velmi jednoduché poslat falešný RIP paket. Protože RIP nemá žádnou autentizaci a směrovače mezi sebou v podstatě žádné spojení pro přenos směrovacích informací nenavazují, je tento útok velice jednoduchý a útočník, který je blíže k cílovému počítači než zdrojový počítač, může lehce změnit cestu paketů a tím je i odposlouchávat nebo měnit jejich obsah.
Některé implementace RIP podporují dokonce tzv. host-specific routes, které jsou velmi těžko odhalitelné.
Vylepšená verze RIP 2 používá autentizaci heslem. Tato autentizace je nedostatečná z následujících důvodů:
Obrana proti tomuto útoku není jednoduchá. Směrovač může být nastaven tak, aby rozpoznával, které cesty mohou přijít z určitého síťového rozhraní a špatné pak zahazovat. Pro tuto činnost se hodí zejména směrovače u firewallů.
OSPF je další směrovací protokol. Je mnohem komplexnější (poskytuje např. možnost směrování podle typu služby - TOS). Protože spolu směrovače mezi sebou komunikují a předávají si pořadová čísla, je mnohem obtížnější zfalšovat směrovací informaci. Navíc OSPF poskytuje autentizační pole, které může být buď textové (heslo) nebo mít podobu MD5 podpisu (což je podstatně bezpečnější). Tento protokol však některé starší systémy nepodporují.
1 | MAC = adresa ethernetového adaptéru
... zpět do textu |