Potřebná teorie
Co je to gateway?
Jako gateway neboli brána bývá označován počítač nebo zařízení, které spojuje lokální síť s jinou sítí. Počítač používá bránu, když chcete komunikovat s počítačem v jiné síti. Zda počítač leží ve vaší síti nebo ne, se zjistí pomocí masky podsítě. To se provádí tak, že se vezme vaše IP adresa v binárním zápisu a provede se logické vynásobení s maskou podsítě v binárním tvaru. To samé se provede s IP adresou cílového počítače. Tímto vynásobením získáme adresu sítě. Pokud se obě adresy shodují, je počítač ve stejné síti. Pokud ne, tak se počítač nalézá v jiné síti a data jsou posílána přes bránu.
Co je DHCP?
Jedná se o protokol, který je určený k dynamickému přidělování síťových parametrů koncovým zařízením. Více v encyklopedii Wikipedia.
Co je to ICMP?
Jedná se o protokol pracující na transportní vrstvě. Protokol primárně neslouží k přenášení dat, ale k přenášení informací o chybách, upozorněních a jiné. Více najdete v encyklopedii Wikipedia.
Nevýhoda vydávání se za gateway
Pokud počítači řekneme pomocí útoku, že jsme gateway, bude přes nás posílat data do Internetu. Ovšem data vracející se z Internetu přijdou na opravdovou gateway a ta je pošle cílovému počítači přímo. Možnost získat i data vracející se z Internetu je další metodou útoku, nebo lze použít NAT pro data, která přes vás budou protékat.
DHCP Spoofing
Teorie
Útok využívá faktu, že na jedné síti může běžet více DHCP serverů. Další fakt, který tomuto útoku pomáhá, je, že regulérní servery nejsou „příliš“ rychlé. Naším cílem je zprovoznit na síti nový DHCP server, a až si oběť spustí počítač, tak jí podstrčit naše údaje. V podstrčených údajích můžeme dát falešnou gateway nebo DNS server.
Pokud oběti podstrčíme falešnou gateway, bude komunikace vypadat, jak bylo zmíněno výše. Podstrčíme-li jí falešný DNS server, můžeme vytvořit útok zachycující oba směry toku dat. Toho docílíme tím, že na všechny dotazy bude odpovídat naší IP adresou a ze svého počítače uděláme jakoby proxy server. Více si o tom povíme v dalším díle.
Nyní si vytvoříme modelovou situaci, máme síť s n počítači. Na nějakém počítači běží DHCP server a máme počítač sloužící jako gateway.
Když se počítač připojí do sítě poprvé, pošle na síť paket DHCP Discover (jedná se o broadcast). Tímto paketem žádá, aby se mu ozvaly DHCP servery. DHCP server mu odpovídá DHCP Offer, ve kterém mu nabízí parametry. Takhle odpoví veškeré DHCP servery. Ovšem platí tu pravidlo nejrychlejšího (záleží na implementaci DHCP klienta, ovšem většina se chová, jak popisuji). Klient odpovídá nejrychlejšímu serveru paketem DHCP Request, kde říká, že by tyto parametry rád dostal. Server mu následně pošle DHCP Ack, kde říká, že je vše dohodnuto. Takto získal klient IP adresu. V tomto případě by stačilo mít pouze rychlejší DHCP server a útok by se podařil.
Pokud už ale počítač někdy byl v síti připojen, je postup jiný. Počítač pošle pouze DHCP Request serveru, od kterého naposled obdržel IP adresu. V paketu žádá o svou poslední IP adresu. Cílový DHCP server mu žádost potvrdí paketem DHCP Ack (může ji i zamítnout a poslat mu jinou). Tato výměna se odehrála, aniž bychom ji na přepínané síti slyšeli.
Ještě bychom si měli říct o parametru „lease time“. Tento parametr určuje server a říká klientovi, jak dlouho má danou IP adresu přiřazenu. Klient si musí vždy před uplynutím této doby prodloužit platnost přiřazení. Pokud tak neučiní, server si označí danou IP adresu jako volnou a může ji nabídnout někomu jinému.
Předešlý problém se dá obejít tím, že vyčerpáme veškeré IP adresy, které DHCP server přiřazuje. Jakmile nemá DHCP server volné IP adresy pro přiřazení, přestane odpovídat na pakety DHCP Discover (jelikož nemá co nabídnout). Nyní musíme počkat ještě nějaký čas, než uplyne doba přiřazení IP adres (lease time) obsazených počítači (to se stane, když bude počítač například vypnutý přes noc), a zabereme je také. Nyní, když se počítač spustí a bude žádat o svou starou IP, nedostane žádnou odpověď nebo dostane zamítací odpověď. V tom případě většina klientů pošle do sítě paket DHCP Discover a chovají se, jako kdyby v síti ještě nikdy nebyli.
Nyní nastává opět místo pro náš falešný DHCP server, který může nabízet například ony zabrané IP adresy, jelikož se nemusíme obávat, že by nastal nějaký konflikt. Když už budeme mít nachytány klienty, které jsme potřebovali, můžeme útok na regulérní DHCP server ukončit.
Praxe
Pro provedení útoku budeme potřebovat Ettercap, IRPAS, Wesley.
Útok začneme vysátím volných adres z regulérního DHCP serveru. Pro tento účel nám poslouží nástroj „dhcpx“ z balíku IRPAS. Spustíme ho ./dhcpx -vv -i rozhraní -A -D IP_adresa_regulérního_DHCP_server
. Pokud bychom nepoužili parametr D
, program by útočil na veškeré DHCP servery.
Nyní spustíme Ettercap, vybereme Unified sniffing a v nabídce Mitm a zvolíme DHCP spoofing. Parametry nastavíme podle situace a nastavení místní sítě (jako gateway se automaticky zvolí vaše IP adresa). A přes Start->Start sniffing začneme odchytávat data.
Pokud byste si chtěli více pohrát, použijte program Wesley v kombinaci s Etherealem. Wesley má velice zajímavé možnosti nastavení, umožňuje například útočit jen na někoho a umožňuje ignorovat MAC adresy, které si vyberete. Tím se dá ztížit odhalení.
ICMP Redirect
Teorie
Tento útok využívá ICMP zprávy typu 5. Jedná se o zprávy, kterými se optimalizuje routování dat sítí. Existují čtyři podtypy, ovšem nejvíce se rozšířil jeden. Jedná se o podtyp přesměrování pro hostitele. Jeho využití je prosté – pokud na gateway přijdou data určená dále a ona zjistí, že rychlejší (nebo výhodnější) by bylo, kdyby zdrojový počítač posílal data určená pro cílový počítač (nebo síť) přes jinou gateway, tak mu o tom podá zprávu právě pomocí ICMP (data ovšem nezahodí, ale pošle cílovému PC). Náš počítač tuto zprávu obdrží a pozmění si routovací tabulku. Na webu společnosti Cisto najdete malý příklad nebo výborný dokument [PDF, 54 kB] pojednávající o této problematice.
Jak útok funguje, je jasné: budeme posílat falešné pakety ICMP Redirect. Ovšem je potřeba si říci, že firewall může tyto pakety zahazovat. Dále máme v cestě také problém, že jsou jistá pravidla, která musí tyto pakety splňovat. Například by měly obsahovat 8 B dat z paketu, který způsobil vygenerování ICMP Redirect paketu. Ovšem některé systémy splnění těchto pravidel nevyžadují, a to je naše šance.
Praxe
Budeme potřebovat nástroj Sing. Směrovací tabulku si můžeme zobrazit pomocí route PRINT
na systémech Windows a nebo pomocí route -C -n
(parametr C
slouží k vypsání cache tabulky kernelu) na systému Linux.
Nástroj Sing použijeme takto: sing -red -S IP_adresa_gateway -gw IP_adresa_falešné_gw -dest 0.0.0.0 -x host -prot tcp -psrc 100 -pdst 90 IP_adresa_oběti
. Nyní se pošle ICMP Redirect, který se snaží změnit defaultní gateway. IP adresa 0.0.0.0 značí defaultní gateway, místo ní můžeme použit i IP adresu nějakého počítače nebo sítě. Pokud budete zkoušet útok na systém Windows, je potřeba nejdříve vypnout firewall na daném rozhraní.
Pro automatizovanější útok doporučuji použít program Ettercap. Dále na toto téma můžete najít detailní tutoriál na Live CD.
Závěr
Po výsledcích minulé ankety bych rád upozornil i na neoficiální build programu Ettercap, který funguje i pod systémy Windows. Těm, kteří by si ještě chtěli zkusit ARP Cache poisoning, doporučuji program Winarp pro Windows.