Nebezpečná síť - jak se útokům bránit

1. 10. 2002

Sdílet

Na síti na nás číhá spousta nebezpečí. Existují tisíce aplikací, které mohoubýt teoreticky i prakticky zneužity. Některá nebezpečí lze poměrně snadno eliminovat například dodrž...

Na síti na nás číhá spousta nebezpečí. Existují tisíce aplikací, které mohou
být teoreticky i prakticky zneužity. Některá nebezpečí lze poměrně snadno

eliminovat například dodržováním elementárních bezpečnostních zásad, jako jsou

silná hesla nebo aktuální verze softwaru. Existují však i ohrožení, která se

eliminují poměrně těžko a jejich odhalení není vůbec snadné. O těchto

nebezpečích bude dnes řeč.



Většinou jde o útoky, které využívají samotného protokolu TCP/IP. Tento

protokol je starý přes 30 let a postupem doby se ukázalo, že ne vše je navrženo

a vymyšleno správně. Musíme však brát v potaz, v jakých podmínkách byl protokol

TCP/IP navržen a stvořen. Při jeho vývoji se ani zdaleka nepočítalo s tím, že

za několik desítek let bude počítačová síť celosvětová, se stamiliony

uživatelů. Ale nyní již k samotným nebezpečím. Je však také třeba zdůraznit, že

při rozumné míře obezřetnosti a dodržení některých pravidel lze eliminovat i

tato ohrožení.





Sledování síťového provozu



Pro sledování síťového provozu se vžilo anglické označení sniffing (česky

„čmuchání“). V podstatě jde o zachytávání a analýzu síťového provozu. My se

nyní podíváme na princip a podmínky, za kterých je tento druh útok možný.

Především je třeba zdůraznit, že se tento typ útoků týká v převážné většině

sítí LAN. Další podmínkou je, aby síť nepoužívala přepínané spojení (toto

pravidlo se dá obejít, ale k tomu až za chvíli). Nyní si ukážeme, jak v takové

síti LAN probíhá komunikace. Všechna data, bez ohledu na to, komu nebo od koho

jsou určena, procházejí přenosovým médiem (kabelem) v seskupení nazvaném rámec.

Každý rámec je určen konkrétní MAC adrese, což je adresa každé konkrétní síťové

karty, jež je u většiny karet neměnná a byla kartě přidělena výrobcem. Každá

karta na stejném segmentu sítě přijme každý rámec, který přenosovým médiem

prochází a zjistí, zda je určen pro ni. Pokud ano, předá tento rámec ke

zpracování vyšší vrstvě. Pokud ne, je rámec ignorován. Může nastat ještě jedna

situace a sice taková, kdy je rámec určen každé MAC adrese (broadcast). O tom,

jak se to dá zneužít, si povíme za chvíli.



Dejme tomu tedy, že se ze svého počítače, který je součástí nějaké LAN,

připojujete k místnímu poštovnímu serveru. Zadáte uživatelské jméno, heslo, bez

problémů si stáhnete poštu. V tu chvíli vás ani nenapadne, že by vaše heslo

nebo vaši poštu mohl číst kolega vedle u stolu nebo někdo na druhé straně

zeměkoule. Možné to však je. Zmíněný kolega to mohl provést naprosto lehce.

Existují totiž programy, které umožňují čtení rámců i v případě, že jsou určeny

pro jinou MAC adresu. Takové programy se nazývají sniffery. Stačí takový

program nainstalovat a spustit, zbytek již program provede sám. Pro zdatného

programátora by nebylo napsání podobného programu vůbec těžké. Program přepne

síťovou kartu do takzvaného „promiskuitního“ modu a sleduje a analyzuje veškerý

provoz v daném segmentu sítě. Existují jednoduché sniffery, jako je například

unixový Tcpdump, až po velmi sofistikované, jako je třeba Hunt. Sniffery však

neslouží jen útočníkům k hádání hesel nebo sledování provozu, často je

používají i správci sítě, a identifikují a diagnostikují tak chyby nebo potíže

v síťovém provozu. Dobrými nástroji k takové činnosti jsou například Ethreal

nebo Snort. My se však zaměříme na sniffery, které bývají používány útočníky a

povíme si, jak se proti nim bránit. Zřejmě nepoužívanější a nejpropracovanějším

snifferem je Hunt. Jde o velmi sofistikovaný nástroj, který umí ještě spoustu

dalších věcí, než je sledování provozu. Nyní se ale zaměříme na jeho možnosti,

pokud je použit jako sniffer. Tento program lze nastavit tak, aby na lokální

síti sledoval provoz, analyzoval jednotlivé rámce a vyhledával v nich řetězce

jako USER nebo PASS. Tímto druhem útoku jsou zranitelné protokoly, které

nešifrují svou komunikaci. Mezi takové protokoly patří například SMTP, POP,

FTP, Telnet a další. Obrana proti Huntu se tedy nabízí sama šifrování. Pokud

provoz šifrujeme, budou útočníkovi veškerá data k ničemu, neboť je nebude moci

přečíst. Nejvhodnější alternativou jsou zřejmě SSH a SSL. Proto je vhodné

nahradit stávající služby, které používají textová hesla. Někdy je to celkem

obtížné, a ne každý protokol má šifrovanou alternativu. Většina uživatelů se

navíc nebude chtít učit „něco nového“. To je ale problém vedení podniku. Pro

nás je důležitý závěr, že pokud nechceme, aby někdo mohl sledovat náš provoz,

musíme šifrovat. Jistým řešením by bylo i použití přepínaných sítí, ale náklady

na změnu by jistě nebyly malé. Navíc lze provoz sledovat v jistých případech i

na přepínaných sítích, takže toto řešení není stoprocentní.



Musíme ale také vědět, kdo se pokouší provoz sledovat. Pokud je to někdo z naší

lokální sítě, obrana je celkem obtížná. Existují však programy, jež dokáží

nalézt v síti karty, které jsou v promiskuitním modu.



Sniffer však na některém počítači vaší LAN může nainstalovat i nějaký vetřelec

z venku. Pokud se mu podaří nabourat se do vaší sítě, pravděpodobně tak i

učiní, neboť není snazší cesty jak získat velké množství různých uživatelských

jmen a hesel. Nejlepší obranou zde je zabezpečit vaši síť tak, aby se do ní

nikdo nedostal a nemohl tak instalovat sniffer.





DNS



DNS (Domain Name Service) je jedna z nejdůležitějších služeb, které můžeme v

prostředí sítí nalézt. Tato služba se stará o převod doménových jmen na IP

adresy a opačně. Tato služba denně usnadňuje život milionům uživatelů (některým

i nevědomky :). Každý objekt (server, router), který je součástí nějaké sítě

založené na IP (intranet, internet), má jedinečnou identifikaci. Touto

identifikací je jeho IP adresa. Jde o číslo ve tvaru xxx.xxx.xxx.xxx. Například

tedy 192.168.1.1. Toto číslo je jedinečné a nemohou ho v jednu chvíli sdílet

dva objekty připojené do sítě. Tento jednoznačný identifikátor má však i svou

jmennou alternativu, například http://www.firma.cz. A právě o převod mezi

těmito dvěma identifikátory se stará DNS. Jistě je pohodlnější pamatovat si

adresy jako http://www.pcworld.cz nebo http://www.google.com než jakousi

„směsici“ čísel. Výklad fungování DNS ale není v rámci našeho článku, proto se

podíváme, jak se dá DNS zneužít.





Falšování DNS



Falšování DNS (DNS spoofing) je poměrně nebezpečné. K jeho provedení je však

třeba splnit několik podmínek. Předně je třeba, aby útočník mohl sledovat váš

síťový provoz (viz výše). Pokud má přístup do vaší LAN, může na svém (nebo

ovládnutém) stroji spustit program, který odchytává všechny DNS dotazy a snaží

se na ně odpovídat podle útočníkova záměru. Cílem je tedy podvrhnout DNS

odpověď, a přesměrovat tak hosta na jiný systém. Útočník má například někde na

síti server, který je přesnou kopií nějakého, dejme tomu webového e-mailového

serveru. Na první pohled nerozeznatelný od originálu. Jeho cílem je přesměrovat

všechny uživatele vaší sítě právě na tento server. Pokud tedy nějaký uživatel

zadá ve svém prohlížeči adresu http://www.webmail.něco, jenž má ve skutečnosti

adresu 192.168.1.1 (tuto adresu mít ve skutečnosti nemůže, neboť jde o adresu z

bloku privátních adres určených k použití na sítích nepřipojených přímo do

internetu, nicméně jako ilustrace stačí), pokusí se útočníkův program

podvrhnout odpověď DNS serveru a odpoví klientovi tak, že server

http://www.webmail.něco má adresu 192.168.1.100. Pokud tato odpověď dorazí k

uživatelově systému dříve něž odpověď skutečného DNS serveru, má útočník

vyhráno. Jak se tedy proti tomuto druhu útoku bránit? Prvním a univerzálním

pravidlem je opět nepouštět útočníka do sítě. Pokud nebude mít přístup do sítě,

nezmůže nic. Chová-li se takto některý z legitimních uživatelů sítě, je řešením

vyhledávač snifferů. Existuje i další možnost a tou je použití DNS serveru,

který podepisuje své odpovědi.





Další zneužití DNS



Existuje ještě jeden druh útoku, jímž lze zneužít DNS server. Tento druh útoku

je však poměrně zastaralý a je účinný jen proti starším verzím DNS serveru BIND

(unixový DNS server). Nicméně někde se se staršími verzemi tohoto programu

stále ještě setkáváme, takže jen v krátkosti. Tento druh útoku se nazývá Cache

poisoning (otrava cache) a v principu jde o podvržení nějakých legitimních

odpovědí DNS. K tomuto triku nemusí mít útočník přístup do vaší sítě. Řešení je

velmi prosté používejte aktuální software.





Směrování a přeposílání



Směrování je vlastnost IP protokolu, která dovoluje určit, kudy se budou pakety

na své cestě sítí ubírat. Podmínkou však je, aby systémy, jež útočník uvede ve

své cestě, umožňovaly směrování. Pomocí směrování lze velmi snadno falšovat

pakety a získávat tak neautorizované informace. Řešením je vypnutí směrování

(Windows je standardně neumožňují, většina výchozích instalací Linuxu také ne).

Pokud směrování potřebujete, nastavte dobře ACL na všech vašich směrovačích.



Směrování naopak umožňuje útočníkovi přístup do vnitřní sítě, která může být

připojena pomocí jednoho systému a z okolního internetu nemusí být vůbec

viditelná. Podmínkou k tomuto útoku jsou špatně nastavená přeposílací pravidla,

proto vždy pečlivě tato pravidla zkontrolujte a otestujte.





Unášení relací



Unášení relací patří mezi pokročilejší metody útoku. Od útočníka vyžaduje

jistou dávku znalostí síťové komunikace. O to je tento druh útoku

nebezpečnější. Podmínkou je opět, aby útočník mohl sledovat síťový provoz.

Ideálním nástrojem k unášení relací je již několikrát zmiňovaný Hunt. Nyní se

podíváme, jaké dává útočníkovi možnosti, pokud se pokusí o únos relace.



Útočník spustí na svém stroji program Hunt a začne sledovat komunikaci mezi

dvěma systémy. Usoudí-li, že nastala vhodná chvíle k převzetí kontroly nad

spojením, pokusí se ji převzít. Pokud se mu to podaří, má nad spojením plnou

moc a cílový systém nezjistí, že komunikuje s někým jiným. Útočníkovi je tedy

dovoleno dělat vše, co mohl dělat původní vlastník spojení. Obrana spočívá opět

v použití šifrování a dobrém zabezpečení sítě.





Prostředník (Man in the middle)



Tyto útoky patří mezi méně sofistikované a lze se proti nim velmi lehko bránit.

Spoléhají totiž na uživatelskou netečnost a nedůslednost. Tyto druhy útoků lze

aplikovat i na šifrované protokoly jako SSH nebo SSL. Nejde však o chybu těchto

protokolů, jen o zneužití důvěry uživatelů.





SSH



Jak již vyplývá z názvu tohoto útoku, je principem udělat prostředníka ve

spojení. Útočník potřebuje zachytit úvodní spojení od klienta, poté se připojit

ke skutečném cílovému serveru a předstírat, že je koncový systém. Klient

nepozná, že komunikuje prostřednictvím třetího systému. Až na jednu, dost

podstatnou maličkost. Každý SSH server má svůj vlastní identifikační klíč. A

jelikož útočník tento klíč ve většině případů nemá, potřebuje tuto ochranu

nějak obejít. Nejčastěji učiní to, že si vytvoří klíč vlastní. To má ale za

následek, že pokud se klient k systému útočníka připojí, zobrazí se mu varování

o změně klíče. Tento útok tedy spoléhá na uživatelovu netečnost. Pokud uživatel

slepě odsouhlasí (nebo odkliká :)) všechna varování, nic už útočníkovi nebrání

ve sledování provozu. Pokud se vám tedy někdy objeví podobná hláška, zbystřete

a kontaktujte správce serveru. Společnými silami problém jistě odhalíte.





SSL



Útok s pomocí prostředníka lze aplikovat i na protokol SSL. Princip je naprosto

stejný. Tento druh útoku je však ze subjektivního hlediska ještě více

nebezpečný, neboť protokol SSL se používá v prostředí webu, kde se pohybuje i

velké množství nezkušených uživatelů, jež jsou z některých obrázkových

operačních systémů zvyklí slepě odkliknout každé okno, které se objeví. Proto

je důležité kontrolovat certifikáty SSL, zdali jsou podepsány oficiální

certifikační autoritou. Pozor by si měli uživatelé dávat zejména na

samopodepsané certifikáty.





Hesla



I když je vaše síť dokonale zabezpečena, uživatelé dodržují bezpečnostní zásady

a vše pečlivě kontrolujete, sledujete a analyzujete, stále ještě existuje

způsob, jak vaši síť napadnout. Většina serverů nabízí nějaké služby. Bez nich

by internet nebyl tím, čím je dnes. Přístup k těmto službám může být nabízen

přes síť a rozdílné skupině uživatelů. Některé služby můžeme zpřístupnit všem,

jiné jen někomu. Bez ohledu na to, komu službu nabízíme, vždy na ni může být

proveden útok přes síť. Útočník jistě zkusí spoustu jiných metod a triků, ale

pokud se ukáže, že je síť zabezpečena opravdu dobře a většina tradičních útoků

nepomůže, může se rozhodnout zaútočit na vaše hesla. Tento útok je poměrně

časově náročný a výsledky nejsou vůbec jisté, nicméně někdy je to poslední

metoda, jak se dostat dovnitř. Zaútočit na hesla lze na téměř všechny

protokoly, jež poskytují nějakou formu autentizace. Může jít například o SMTP,

POP, FTP, SSH a další. K tomuto útoku existují také desítky nástrojů. My se

nyní podíváme na různé metody hádání hesel a povíme si, jak se proti nim bránit.





Slovníkový útok



Slovníkový útok je nejpoužívanější metoda při hádání hesel. Základem úspěchu je

rychlý procesor, optimalizovaný program a rozsáhlý wordlist. Pomocí vhodného

programu lze útočit téměř na všechna hesla. Při hádání hesel však nemusí jít

jen o útoky přes síť. Hesla mohou být hádána i lokálně. To záleží na

požadavcích a možnostech. Principem je tedy vzít nějaké slovo, upravit ho do

vhodného tvaru (v závislosti na algoritmu) a porovnat jej s originálním heslem.

U síťových služeb je cílem toto heslo odeslat po síti (v jaké formě, záleží na

protokolu). Při slovníkovém útoku se jako potencionální hesla vybírají slova,

která jsou uložena v souboru. Nezkoušejí se tedy různé kombinace znaků. Některé

slovníky jsou opravdu rozsáhlé. Proto je dobré zvolit si heslo, které v takovém

slovníku obsaženo nebude. Nyní si povíme jak.





Tvorba hesla



Zkuste si zvolit nějaké libovolné heslo a někam si je napište. Provedeme test,

zdali jste heslo zvolili správně. Nyní budeme potřebovat slovník. Doporučuji

stáhnout si slovníky z adresy http://www.phreak.org/html/wor­dlists.shtml. Jde o

velmi rozsáhlou sbírku slovníků z nejrůznějších jazyků. Můžete si stáhnout

slovníky podle témat nebo jazyků. Doporučuji stáhnout všechny. Nyní je načase

zjistit, zda je vámi zvolené heslo součástí některého z nich. V UNIXu můžete

použít například grep mojeheslo slovnik. V prostředí Windows mě žádný podobný

příkaz nenapadá, takže budete muset použít svůj oblíbený textový editor (ovšem

za cenu jistého zpomalení). Pokud dostanete pozitivní výsledek, je vaše heslo

špatné. Pokud je ve slovníku nenaleznete, pravděpodobně jste zvolili dobře. Zde

je několik rad, jak vytvořit dobré heslo.





Heslo by mělo obsahovat:



- malé znaky anglické abecedy a-z

- velké znaky anglické abecedy A-Z

- číslice 0–9

- interpunkční znaky *, #, @, ] atd.

- minimálně 6 znaků







Heslo by nemělo obsahovat:



- jakékoliv slovo

- jakékoliv jméno

- kombinaci jména (slov) a číslic, například honza52

- údaje o vaší osobě přezdívka, jméno manželky atd.

- čísla vztahující se k někomu nebo něčemu

- datum narození kohokoliv, telefonní čísla, adresy atd.



Nyní si předvedeme postup, jak vytvořit dobré heslo. Vyberete si nějaký

oblíbený citát, výrok z filmu, jakoukoliv větu. My si vezmeme jako příklad

Senecův citát Nikdo se nerodí moudrým. Máme teď dostatek prostoru k tvorbě

hesla a k hraní si s čísly. Existují tisíce variant a záleží jen na vaší

tvořivosti a nápaditosti. Vezmeme například z každého slova jedno písmeno.

Dostaneme tedy nsnm. Pokračujeme dále. Nyní místo mezer mezi slovy doplníme

číslice. A nebudeme začínat jedničkou, ale například pětkou. Výsledek bude

n5s6n7m. To už je celkem slušné heslo. Kombinací by šlo vymyslet několik tisíc.

Místo číslic byste mohli doplňovat speciální znaky, z každého slova vybrat ne

první, ale druhé, třetí písmeno atd. atd. Důležité je, abyste byli schopni z

fráze heslo rekonstruovat bez pomoci tužky a papíru. Fráze slouží k tomu,

abyste si heslo snadno zapamatovali a nebyli nuceni si jej nikam poznamenávat.

Jistě, mohli byste si například z hlavy vymyslet heslo 6s&5@df, ale takové se

velmi špatně pamatuje. Navíc musíte brát zřetel na jedno ze základních

pravidel, které říká, že byste neměli jedno heslo použít dvakrát. Pokud tedy

máte zřízeno několik e-mailových adres, měli byste u každé z nich použít jiné

heslo. Mohlo by se stát, že by bylo vaše heslo prozrazeno (například pomocí

snifferu), a útočníkovi byste tak poskytli přístup do mnoha jiných systémů.



Tvorba hesel je zábavný proces. Proto heslo vždy vybírejte pečlivě a mějte na

zřeteli základní bezpečnostní pravidla.





Všechny vaše rady, náměty na další články nebo seriál, názory a prosby opět rád

uvítám na adrese igm@centrum.cz.