Vytlač príspevok
Odporuč príspevok
Bookmark and Share PRIDAŤ NA VYBRALI.SME.SK

odchytavanie paketov na prepinacej sieti

Co je to odchytavanie paketov (sniffing) snad nemusim vysvetlovat. Vacsina ludi, co sa zaoberaju pocitacovou bezpecnostou sa s tymto pojmom uz stretla. Vo vseobecnosti vladne nazor, ze sniffovanie je mozne iba v sietach, kde su pocitace poprepajane pomocou hubov a sniffovanie v prepinanej sieti (siet zalozena na switchoch) nie je mozne.
Na uvod si vysvetlime, aky je rozdiel medzi hubom a switchom.

Hub funguje ako rozdvojka, roztrojka, resp. rozosmicka.

  ------------------------
 |                        |
 |         HUB            |
  ---+------+------+------
     |      |      |
     |      |      |
    ----   ----   ----
   |PC-a| |PC-b| |PC-c|
    ----   ----   ----

Vsetky data, ktore posiela pocitac PC-a pocitacu PC-b, posle hub aj pocitacu PC-c. To, ci prislusny paket pocitac spracuje, zavisi od IP adresy prijimatela a pocitaca, ktoremu paket prisiel. Kedze kazdy pocitac ma inu IP adresu, ziaden pocitac nespracuvava cudzie data.

Sietovu kartu je vsak mozne prepnut do tzv. promiskuitneho rezimu, kedy karta prijima vsetky pakety bez ohladu na to, komu boli adresovane. Pokial pocitac PC-a je server, PC-b je uzivatel a PC-c je utocnik, staci utocnikovi prepnut kartu do promiskuitneho rezimu a dokaze odchytit vsetky data (mena, hesla, maily, ...) ktore posielal uzivatel serveru (PC-a -> PC-b) alebo server uzivatelovi (PC-b -> PC-a).

Okrem slabej bezpecnosti sa hub vyznacuje slabou priepustnostou. Ked mame do 10 Mb hubu zapojenych 8 uzivatelov (PC-a, PC-b, ... PC-g, PC-h), ktore si navzajom vymienaju data (PC-a "iba" s PC-b, PC-c "iba" s PC-d, ...), vsetkym styrom dvojiciam ide prenos max. 2.5 Mb.

Narozdiel od hubu, switch je "inteligentnejsi". Pokial pocitac PC-a posle paket pre pocitac PC-b, paket je poslany iba pocitacu PC-b. Tym sa zvysila priepustnost medzi jednotlivymi pocitacmi zapojenymi do swichu a navyse utocnik pocuvajuci na pocitaci PC-c sa nedostane k datam, ktore prudia medzi pocitacom PC-a a PC-b. I ked ma kartu v promiskuitnom rezime, neodchyti nic (okrem svojich paketov a par "broadcastov"), lebo pakety sa nedostanu na jeho kabel. Teda pokial im k tomu nepomoze... ;]

Teraz trochu teorie, ako pracuje switch. Kazdy pocitac ma svoju IP adresu. Okrem IP adresy ma kazda sietova karta svoju jedinecnu MAC adresu. MAC adresa je 48 bitov dlha jedinecna adresa, ktora je vyrobcom 'napalena' do kazdej sietovej karty. Niektore ovladace umoznuju softwarovo tuto adresu menit, jedna sa vsak o softwarovu zmenu a zaznam vo flash zostava nezmeneny.

Vo vseobecnosti, MAC adresy su pouzivane na 2. vrstve zatial co IP adresy su pouzivane na 3. vrstve. Niekto by sa mohol spytat, naco su MAC adresy, ked stacia IP adresy. Odpoved je jednoducha, IP adresy su sucastou IBA protokolu IP, zatialco MAC adresy su o vrstvu nizsie, cize su pouzitelne aj pri inych protokoloch. Pri IPX/SPX komunikacii neexistuju IP adresy, ale MAC ano.

A prave na zaklade tychto MAC adries switch rozlisuje, komu posle ktore data. Switch ma vlastnu tabulku, ktora MAC adresa sa nachadza na ktorom porte. Taka tabulka moze vyzerat napr. takto:

port 1: aa-aa-aa-aa-aa-aa
port 2: bb-bb-bb-bb-bb-bb
port 3: cc-cc-cc-cc-cc-cc

(predpokladame, ze PC-a ma MAC adresu aa-aa-aa-aa-aa-aa, PC-b bb-bb-bb-bb-bb-bb, ...)

Ked posle PC-a paket pre PC-b, switch skontroluje cielovu MAC adresu (bb-bb-bb-bb-bb-bb) s tabulkou a posle to na port 2.

Ako vsak moze PC-a vediet MAC adresu PC-b? Predpokladame, ze PC-a vie IP adresu PC-b. Na zistenie MAC adresy z IP adresy sluzi tzv. ARP protokol. PC-a vysle ARP paket, ktory obsahuje nieco ako otazku: "Tu PC-a s MAC adresou aa-aa-aa-aa-aa-aa, hladam PC-b, aku mas MAC adresu?". Tento paket posle na MAC adresu ff-ff-ff-ff-ff-ff (broadcast) a switch ho rozposle na vsetky porty. (Ano, tento paket moze utocnik na PC-c odchytit, ale je mu nanic). PC-b z ARP paketu vie MAC adresu PC-a, odpovie mu so svojou MAC adresou a uz komunikuju...

Moznosti utoku:

MAC flooding:

Switch si tabulku MAC adries vytvara podla zdrojovej MAC adresy. Ak utocnik vysle vhodny paket, switch si bude mysliet, ze pocitac s MAC adresou bb-bb-bb-bb-bb-bb sa nachadza na porte 3, upravi svoju tabulku a vsetky data, ktore bude posielat pocitac PC-a pocitacu PC-b sa dostanu k pocitacu PC-c. Toto bude fungovat, pokial pocitac PC-b nevysle daky paket a switch si nezmeni tabulku naspet. Pokial budeme 'falosne' pakety posielat dostatocne casto, switch usudi, ze nevie, kde je pocitac s mac adresou bb-bb-bb-bb-bb-bb a bude fungovat ako hub. Tato technika funguje iba na niektorych switchoch a vzhladom na velky pocet potrebnych falosnych ARP paketov je aj lahko detekovatelna. Ja osobne som tuto techniku neskusal, nakolko nasledujuca sa mi zda vhodnejsia a elegantnejsia.

ARP poisoning:

Pointa tejto techniky spociva v myslienke presvedcit pocitac PC-a, ze pocitac PC-b ma mac adresu cc-cc-cc-cc-cc-cc. Vtedy vsetky data, ktore bude chciet poslat pocitac PC-a pocitacu PC-b prijdu pocitacu PC-c. Samozrejme je potrebne, aby PC-c nasledne preposlal vsetky pakety pocitacu PC-b, inac by sa zrusili vsetky spojenia. Takymto sposobom dokaze utocnik pakety nie len odchytavat, ale dokaze ich aj modifikovat (tzv. man in the middle), co je z hladiska bezpecnosti este vacsie riziko, ako "iba" sniffovanie.

Sposob ako presvedcit pocitac PC-a, ze pocitac PC-b ma mac adresu cc-cc-cc-cc-cc-cc je jednoduchy. Staci mu poslat 'spoofnutu' ARP odpoved, kde 'akoze' PC-b oznamuje pocitacu PC-a, ze jeho mac adresa je cc-cc-cc-cc-cc-cc. Rovnakym postupom dokaze 'presvedcit' pocitac PC-b, ze pocitac PC-a ma mac adresu cc-cc-cc-cc-cc-cc a tym dokaze odchytavat (ak bude chciet aj modifikovat) vsetku komunikaciu medzi PC-a a PC-b. Zaznamy v ARP tabulkach vsak maju obmedzenu casovu platnost. Ak sa dlhsiu dobu PC-a nekomunikuje s PC-b, vymaze zaznam o MAC adrese. Pri naslednom pokuse o komunikaciu vysle ARP request a dostane odpoved od 'original' PC-b. Preto je potrebne tieto 'falosne' ARP pakety posielat v istych casovych intervaloch. Z pozorovani som usudil, ze staci interval 1 minuta.

stav pred utokom:

 ------                   data                   ------
| PC-a |  ------------------------------------- | PC-b |
 ------                                          ------
arp tabulka:                                    arp tabulka:
PC-b: bb-bb-bb-bb-bb-bb                         PC-a: aa-aa-aa-aa-aa-aa
PC-c: cc-cc-cc-cc-cc-cc                         PC-c: cc-cc-cc-cc-cc-cc

stav po (pocas) utoku:

 ------                   data                   ------
| PC-a |  ---------------+     +--------------- | PC-b |
 ------                  |     |                 ------
arp tabulka:             |     |                arp tabulka:
PC-b: cc-cc-cc-cc-cc-cc  |     |                PC-a: cc-cc-cc-cc-cc-cc
PC-c: cc-cc-cc-cc-cc-cc  |     |                PC-c: cc-cc-cc-cc-cc-cc
                         |     |
                         |     |
                         -------    arp tabulka:
                        | PC-C  |   PC-a: aa-aa-aa-aa-aa-aa
                         -------    PC-b: bb-bb-bb-bb-bb-bb

Tato technika funguje na vsetkych beznych switchoch, nakolko switch si mysli, ze paket posiela tam kde ma (rozhoduje MAC adresa).

Prax:

Tieto techniky su zname uz dlhsiu dobu a primerane tomu existuje vela programov, ktore umoznuju taketo odchytavania. Pre linux stoji za zmienku `dsniff`, ktory obsahuje arpspoof pracujuci opisovanym sposobom. Program, ktory by nieco podobne robil na systeme windows som nenasiel, ale pre priemerne skuseneho programatora nie je problem takyto program napisat. Mne osobne trvalo napisanie toho programu zhruba 7 vecerov... Zaujemcom programatorom odporucam pozriet si kniznicu winpcap, ktora zabezpecuje sietovu komunikaciu. Staci uz len posielat ARP-y a vhodne preposielat...

Obrana:

Ciastocnym riesenim su VLAN-y, ktore su vsak nastavitelne iba na tych 'drahsich' konfigurovatelnych switchoch.

Inym sposobom obrany je nastavenie statickej ARP tabulky na vsetkych pocitacoch. Vtedy bude system ignorovat vsetky ARP pakety a bude pouzivat data zo svojej tabulky. Na linuxe to fungovalo bez problemov, vo windowsoch i napriek statickym zaznamom po prichode falosneho ARP paketu zmodifikoval tabulku... (linux rulez :]) Staticke tabulky su samozrejme nepouzitelne pri vecsich sietach, kde je pri lubovolnej vymene sietovej karty potrebne rucne modifikovat vsetky tabulky na vsetkych pocitacoch...

Zaver:

Sniffovanie na switchovanej sieti je mozne. Prepinana siet je dokonca z hladiska bezpecnosti relativne menej bezpecna, ako hub. Relativne preto, lebo umoznuje nebezpecnejsie utoky, ktore vsak vyzaduju hlbsiu znalost tejto problematiky a preto nie su tak rozsirene...


security | stály odkaz

Komentáre

Pozor, na konci je potreba spočítať neľahkú matematickú úlohu! Inak komentár nevložíme. Pre tých lenivejších je tam tlačidlo kúzlo.



Prevádzkované na CMS TeaGuru spoločnosti Singularity, s.r.o., © 2004-2014