Appearance
MAC Flooding
Po trošky teorie ze sítí se konečně opět dostáváme k dalšímu útoku. Ale před tím než si tento útok zkusíme, je třeba si vysvětlit jak fungují síťové prvky na 2. síťové vrstvě.
Ethernetový Hub
Spoustu z nás nejspíš vyrůstalo v domácnosti, kde byl pouze jeden počítač a v některých případech se používaly i první mobilní telefony, primárně značky nokia, na kterých možnosti připojení k internetu zněly jako sci-fi. Ať už jste toto zažili nebo ne, je vám ale jasné že domácí síť tenkrát vypadala tak že od poskytovatele jste dostali buď ethernetový nebo (a to spíš) aDSL port a ten byl připojen buď přímo do vašeho počítače nebo do modemu. Nesnažím se tu popsat jak funguje síť mezi vaším routrem / modemem a vaším internetovým poskytovatelem, to je mimo rozsah těchto hodin, ale snažím se poukázat na to, že počítačové síťě tenkrát nebyly nic komplexního, většinou šlo pouze o jeden ethernetový kabel mezi dvěma zařízeními.
Když se pak postupně začaly využívat osobní notebooky i mimo enterprise svět, bylo potřeba připojit více zařízení... Jenže co dělat když nikde není druhá zásuvka? Někteří z vás teď řeknou, vždyť do je jednoduché, prostě si seženu rozdvojku stejně jako používám když mi dojdou zásuvky na elektřinu. Tady však naskytne velký problém, nejde pouze o elektřinu, u ethernetových kabelů potřebujeme přenášet signály a mohlo by se stát že oba počítače posílají informace najednou, což může způsobit že se posílané data poškodí.
Proto vznikly vzdáleně chytré zařízení, kterým se říká HUB. Narozdíl od jednoduše spojených kabelů rozdvojkou vždy počkají až přijdou data a ty pak přepošlou na všechny porty jakmile je linka volná. Jenže v takovém případě vše co pošlu a dostanu dostane každý počítač na síti, což nechci pokud zrovna posílám osobní zprávy. Proto vznikly ethernetové switche.
Ethernetový switch
Narozdíl od ethernetového hubu, switche jsou chytřejší a pamatují si na jakém portu je jaká MAC adresa. Když pak něco přijde, switch se podívá na cílovou MAC adresu a pokud ji má přiřazenou k nějákému portu, packet pošle na tento port. Samozřejmě důležité je také si uvědomit že MAC adresy se do tabulky taky musí nějákým způsobem dostat, opět jde o velmi jednoduchý proces, když switchi přijde frame, switch se podívá odkud jde a zapíše si k zdrojovému portu zdrojovou MAC adresu.
Samotný MAC Flooding
Když do tabulky neustále jen přidáváme nové záznamy, co se stane když se pak tabulka zaplní úplně? Když switch neví kam data poslat, chová se jako HUB a pošle data všude - doufá v to, že se během chvíle cílený počítač ozve a jeho MAC adresa se do tabulky také přidá. V případě že je ale tabulka plná, nemůže se do ní nic přidat, takže se switch bude chovat jako HUB a bude posílat všechno všem, tedy i případnému útočníkovi. Samozřejmě aby se zabránilo přeplnění tabulky, záznamy v ní se periodicky promazávají, ale pokud přes switch chodí prostě moc dat, může se přehltit a posílat data kam nemá.
Tohoto se u MAC Floodingu využívá, jako útočník chceme dostávat data, která mají chodit ostatním počítačům, tak posíláme velké množství dat z náhodných MAC adres aby se tabulka ve swichi co nejdříve zaplnila a poté posloucháme příchozí data.
Tento útok je velmi jednoduchý, stačí nám pro něj spustit příkaz macof.
bash
# místo doas můžeme jako dříve použít sudo
doas macof -i eth0
Příchozí data můžeme zaznamenávat pomocí nástroje jako je wireshark nebo tcpdump.
Shrnutí
- Pro spojení dvou ethernetových kabelů nám nestačí jednoduchá rozdvojka, musíme použít HUB nebo Switch
- HUBy jsou nebezpečné, jelikož vaše data posílají celé síti
- Switche si k portům přiřazují MAC adresy a data posílají jen správnému vlastníkovi.
- Pokud vlastník není v MAC tabulce, Switch se chová jako hub
- Pokud budeme posílat velké množství dat z náhodných MAC adres, tabulka ve switchi se přeplní a nové příchozí data budou posílané celé síti