Odposloucháváme data na přepínaném Ethernetu (3.)

V dnešním díle se zaměříme na útoky MAC Flooding a Port stealing. Oba útoky využívají slabin ve switchích. Jejich účinnost pro MITM (Man in the middle) útoky není stoprocentní, ale pro DoS útoky jsou velice účinné. Opět dodejme, že odposlouchávání cizích dat může být trestné a můžete také tímto konáním porušovat smlouvu s vaším poskytovatelem připojení.

Potřebná teorie aneb jak pracuje switch

Switch je síťové zařízení, které pracuje na linkové vrstvě. Z čehož plyne, že data adresuje podle MAC adres v hlavičce linkového rámce. Když dostane data, tak se podívá, pro jakou MAC adresu jsou určena, a data pošle pouze na port, kde je cílový počítač (zařízení).

Aby switch věděl, na který port data přijdou, má uvnitř paměť, do které si zapisuje, na kterém portu je která MAC adresa. Této paměti se říká CAM tabulka (Content Addressable Memory table). CAM tabulka má omezenou kapacitu. Vnitřní struktura a reakce tabulky na určité události se lišší výrobce od výrobce.

Když switch spustíme, je jeho tabulka ze začátku prázdná (pokud jsme si zde nenastavili statické hodnoty). Při příchodu prvního paketu na switch se paket podívá na MAC adresu odesílatele a do CAM tabulky si uloží záznam, že tato MAC adresa leží na portu, odkud paket přišel. Switch tento paket dále rozešle na všechny porty kromě portu, odkud paket přišel. Při příchodu dalšího paketu si switch opět poznačí adresu odesílatele. Podívá se do CAM tabulky a hledá v ní cílovou MAC adresu. Najde-li ji, podívá se, na kterém je portu, a tam paket pošle. Nenajde-li ji, je paket poslán na všechny porty kromě portu, odkud paket přišel. Jestliže například počítač zapojíme do jiného portu, při vyslání prvního paketu bude CAM tabulka aktualizována.

Každý záznam v CAM tabulce je po uplynutí nějaké doby smazán. Některé switche to mohou mít jinak. Například můj switch maže záznam až po uplynutí pětiminutové neaktivity dané MAC adresy.

Ke každému portu může být přiřazeno více MAC adres (například je na daném portu připojen switch). Jestliže switch dostane paket, který je adresován pro PC, jež je na stejném portu, paket již nikam neposílá (k portu je například připojen hub).

plnění CAM

MAC Flooding

Teorie

Útok spočívá v zaplnění CAM tabulky switche a je založen na faktu, že když switch nemá v CAM tabulce cílovou MAC adresu PC, tak paket rozešle na všechny ostatní porty. Nevýhoda tohoto útoku je, že každý switch se zachová na zaplnění CAM tabulky jinak, a podle toho je útok více či méně efektivní.

Útok začíná zaplněním CAM tabulky – to je prováděno posíláním paketů. První možností je, že pakety budou mít zdrojovou a cílovou MAC adresu vygenerovanou náhodně (IP adresy mohou být také náhodné). Tím způsobíme, že switch si vždycky udělá pro náhodnou MAC adresu záznam a paket pošle na všechny porty. Tímto se infikují veškeré switche v síti (pokud nejsou odděleny například počítačem nebo routerem). Kapacita CAM tabulek se pohybuje od tisíců položek až po statisíce. Druhou možností je nastavit paketům cílovou MAC adresu příjemce na vaši a odchozí generovat náhodně. Když switch dostane takový paket, udělá si záznam do CAM tabulky, zjistí, že příjemce je na stejném portu, a paket již dále neposílá. Sice přijdeme o možnost zaplnění ostatních switchů, ale náš útok bude téměř nemožné odhalit.

Na zaplnění CAM tabulky zareaguje každý switch jinak. Všude se uvádí, že většina switchů se přepne do stavu „fail open“ a začne se chovat jako hub. Moje zkušenosti ovšem vypadají jinak. Když zaplníme CAM tabulku, switch si již nemůže přidávat nové položky, protože pro ně nemá místo. Proto data, která jsou určena pro MAC adresy, pro které nemá switch záznam, budou poslána na všechny porty (mimo příchozího portu). Ovšem data pro MAC adresu, která má ve switchi záznam, budou poslána pouze na příslušný port.

Záznamy jsou ovšem ze switche po nějaké době vymazávány a tady přichází naše šance. Pokud budeme rychlejší, vzniklé místo pro položku zaplníme my. Z toho vyplývá, že tento útok nemusí ovoce přinášet tak rychle jako ARP Cache poisoning. Navíc tu ještě existuje možnost, že uvolněné místo zabere nějaké PC a my tak přijdeme o komunikaci směrem k němu.

Praxe

Pro generování paketů použijeme program Macof ze sady programů Dsniff. Když program spustíme bez parametrů, IP a MAC adresy se budou generovat náhodně. Program je závislý na rychlosti procesoru: na mém Athlonu 2,4 GHz dokázal síť zahltit 900.000 pakety za minutu.

Když máme spuštěný Macof, pustíme si Ethereal pro odposlouchávání sítě. Abychom odfiltrovali pakety od programu Macof, vytvoříme si filtr tcp.seq != 0. Tento filtr doporučuji zapnout již při odchytávání paketů (Capture → Interfaces, Prepare).

Port stealing

Teorie

Tento útok – jak již jeho název napovídá – je založen na kradení portů. Toho je dosaženo díky tomu, že switch si aktualizuje CAM tabulku při příjmu paketu.

Nejdříve zjistíme, jakou má oběť MAC adresu. Poté začneme posílat pakety, které budou mít cílovou MAC rovnu naší MAC adrese. Zdrojová MAC adresa bude nastavena na MAC adresu oběti. Switch dostane tento paket a bude si myslet podle toho, jak jsou nastaveny MAC adresy v paketu, že oběť byla připojena na port, odkud přišel paket, a proto si poupraví CAM tabulku. Jelikož cílová MAC adresa je na témže portu, nebude paket poslán dále. Cílovou MAC adresu můžeme také nastavit na broadcast – to je potřeba, pokud je oběť připojena na jiném switchi. Nyní, když na switch přijde nějaký paket pro oběť, bude switchem poslán k našemu počítači. My si ho prohlídneme a abychom ho mohli doručit oběti, potřebujeme CAM tabulku opravit.

Opravení CAM tabulky provedeme tak, že přestaneme posílat pakety pro ukradení portu a pošleme paket ARP Request (viz druhý díl seriálu). Oběť nám odpoví ARP Reply. Když se tento paket dostane na switch, tak se switch opět podívá na zdrojovou MAC adresu a opraví si CAM tabulku. Nyní je CAM tabulka opravena.

My zatím počkáme, než dorazí paket ARP Reply k nám. Jakmile dorazí, máme jistotu, že tabulka je opravena, a zachycený paket pošleme oběti. Nyní celý proces opakujeme.

Tento útok má nevýhodu v tom, že když oběť odešle jakýkoliv paket, CAM tabulka se obnoví. Proto musíme posílat pakety pro kradení portu rychleji. Také se stává, že nějaké pakety díky tomu nezachytíme. Nemusíme třeba také čekat, než k nám dorazí paket ARP Reply, a poslat data ještě před jeho přijetím. Tím ale riskujeme, že data odešleme moc brzo a ona se nám vrátí (CAM tabulka se nestihne zotavit).

Praxe

Pro demonstraci útoku budeme potřebovat program, který nám umožní posílat pakety s falešnými adresami. Například Arpoison, i když primárně slouží k jiným účelům. Spustíme ho následovně: arpoison -i SITOVA_KARTA -d IP_NASE -s IP_OBETI -t MAC_NASE -r MAC_OBETI -w 1. Nyní když spustíme Ethereal, uvidíme komunikaci směřující k PC oběti. Dále je ještě potřeba obnovovat tabulku a posílat data oběti. To už si demonstrovat nebudeme. Koho to zajímá, ať spustí tento útok v Ettercapu a odposlouchává data Etherealem.

Tento útok využívá program Ettercap. V hlavní nabídce zvolíme Targets → Current Targets a do tabulky Targets1 si přidáme oběti. Nyní zvolíme položku Mitm → Port stealing a začneme odposlouchávat pomocí Start → Start sniffing.

KL_NOMINACE

Závěr

Pokud tyto útoky provádíte způsobem, že paketům nastavujete cílovou MAC adresu rovnou vaší MAC adrese, pak jsou těžko vysledovatelné. Můžete je poznat pouze podle nezvykle rychle blikající stavové LED diody na switchi nebo vypsáním CAM tabulky switche, toto ovšem umí pouze velmi drahé přístroje. Útok Port stealing je pak ještě vysledovatelný pomocí častých ARP dotazů a podle MAC adresy u příchozích dat.

Pokud jste také experimentovali s těmito útoky, byl bych rád, kdybyste v komentářích zhodnotili, jak se chovají na MAC Flooding vaše switche.

Anketa

Zkoušíte si uvedené útoky?

9 názorů Vstoupit do diskuse
poslední názor přidán 2. 7. 2006 10:09

Školení Google Analytics

  •  
    Jak vyhodnocovat úspěšnost reklamních kampaní.
  • Jak ovládat Google Analytics a najít co potřebuji.
  • Jak měřit hodnotu objednávek z webu.

Detailní informace o školení Google Analytics »