Denial of Service (DoS) útoky: typy využívající chyb a vyčerpání systémových prostředků (2.)

Po minulém díle plném teorie se tentokrát opět podíváme na nějaké útoky. Dnes si uděláme přehled o více či méně známých útocích, využívajících chyb nebo vyčerpání systémových prostředků. Většinou se jedná o útoky již neúčinné, ovšem některé mohou stále představovat hrozbu.

SYN záplava (SYN Flood)

TCP Handshake (aneb potřebná teorie)

Než se pustíme k samostatnému útoku, vysvětlíme si, co to je TCP Handshake (v překladu potřesení rukou). Jedná se vlastně o způsob, jak se navazuje spojení v rámci TCP protokolu. Tento protokol pracuje na transportní vrstvě, kromě něj se také používá protokol UDP. Protokol TCP je ovšem používanější a užívá se téměř pro všechny webové služby.

K navázání spojení dojde v případě, kdy chcete komunikovat s jiným zařízením nebo někdo chce komunikovat s vámi. Popíšeme si to na příkladě, kdy se připojujete k nějakému webovému serveru. Váš počítač zašle webovému serveru TCP paket, ve kterém je nastaven příznak SYN (jako synchronizace, jelikož se zde synchronizují sekvenční čísla, ovšem toto vynechám, jelikož to není pro pochopení tohoto útoku potřeba).

TCP handshake

Pokud server nechce akceptovat vaše spojení, tento paket ignoruje nebo zpátky pošle paket s nastaveným příznakem RST (reset). V našem případě si ale server přeje připojení přijmout, a proto zpátky odesílá paket s příznakem ACK (acknowledge = potvrzuji), čímž potvrzuje spojení. Jelikož spojení bude oboustranné (aby data mohla chodit oběma směry), připojí k příznaku ACK i příznak SYN, jímž říká klientovi, že s ním také navazuje připojení (vlastně také synchronizuje sekvenční čísla).

Klient následně po obdržení paketu s nastavenými příznaky ACK a SYN pošle zpátky paket s nastaveným příznakem ACK, jímž dává serveru na vědomí, že navazování spojení je u konce a vše je v pořádku. Od této chvíle spolu mohou oba počítače komunikovat.

V čem spočíval útok?

Útok využíval špatné implementace tohoto začátku spojení. I když nelze vlastně přímo říci, že to byla špatná implementace, nikdo prostě s tímto útokem nepočítal. Chyba byla v tom, že když server obdržel paket od klienta s nastaveným příznakem SYN, tak alokoval pro toto spojení systémové zdroje (prostředky), odeslal mu paket s nastavenými příznaky SYN+ACK a čekal na odpověď. Samozřejmě že se v Internetu občas nějaký paket ztratí. Proto když odpověď stále nepřicházela, server (operační systém) si myslel, že se asi ztratila, a poslal paket s nastavenými příznaky SYN+ACK znovu.

Po určité době si řekl, že už mu asi žádná odpověď nepřijde, a proto alokaci těchto systémových zdrojů (prostředků) zrušil spolu se záznamem o původní inicializaci spojení. Pokud ovšem útočník poslal paketů s příznakem SYN více, vedlo to k tomu, že se vyčerpala všechna možná spojení, která byla otevřena jenom napůl (to znamená, že byl přijat pouze paket s příznakem SYN, byl odeslán paket ACK+SYN, ale odpověď ACK nedorazila). Tím nebylo možné, aby se k dané službě připojil někdo jiný. Ještě horší na tomto útoku je velikost paketu s příznakem SYN, která činí pouhých 42 bytů. Z toho vyplývá, že u tohoto útoku nezáleželo na tom, jak rychle je útočník připojen. Další výhodou bylo, že se u útoku dala falšovat IP adresa odesílatele.

Obrana proti útoku?

Když se tento útok objevil, nadělal pořádnou paseku. Všeobecně se doporučovalo povolit více polootevřených spojení a snížit dobu, po kterou se čekalo na odpověď. Dále se také zlepšila implementace kódu, který se o začátek spojení staral. A nakonec se vymyslelo řešení v podobě SYN a RST Cookie. Řešení pomocí Cookies odstraňuje problém s alokací systémových prostředků před úplným navázáním spojení.

Jak to vypadá v praxi?

Přece jen lze říci, že bezpečnost není stoprocentní, všichni si to můžete na svých počítačích zkusit sami. Pro uživatele Linuxu doporučuji program hping. Spustíme ho s těmito parametry hping2 –S –p PORT_SLUZBY –rand-source –faster IP_ADRESA_OBETI;. Tím bude hping2 posílat na port služby pakety s příznakem SYN a zdrojová IP adresa bude náhodná. Uživatelé Windows mohou použít nějakou LiveCD distribuci Linuxu, která tento program obsahuje.

Jakmile spustíte tento útok, zkuste se na onu službu připojit (klientem, který k té službě patří); pokud se vám to nepovede, znamená to, že je útok úspěšný, pokud se to povede, potom je nejspíše cílový počítač odolný, nebo někde může být chyba. Proto použijte programu Ethereal k analýze síťového provozu a zjištění, proč útok nefunguje.

Vlastnosti: Útok vyčerpávající systémové prostředky, velice nebezpečný, mnoho počítačů proti němu není ochráněno dodnes. Velkým plusem útoku je, že není potřeba velkého datového toku a lze falšovat zdrojovou IP adresu (IP adresu odesílatele).

RPC Named Pipes

Jedná se o nepříliš známý DoS útok zneužívající chyby v Remote Procedure Call na systémech Windows NT, díky kterému docházelo k vytížení procesoru vzdáleného počítače a konzumaci operační paměti, až došlo k „zatuhnutí“ systému. Zranitelnost se týkala pouze Windows NT bez SP4.

Vlastnosti: Minimálně známý útok využívající chyby k vyčerpání systémových prostředků. V dnešní době je již minulostí.

Stream a Raped

Tyto útoky jsou si navzájem podobné a jsou pojmenovány podle nástrojů, které útok provádí. Jak měly přesně pracovat, není jisté, v Internetu se hodně lidí domnívá, že se jednalo o pouhé záplavové útoky. Některé zdroje ovšem uvádí, že útoky měly využívat špatného zpracováni poškozených paketů některými operačními systémy, což mělo vyvolat nadměrnou zátěž pro procesor a tím způsobit nedostupnost oběti. V současné době jsou už účinné pouze jako záplavové útoky.

Vlastnosti: Dnes obyčejné záplavové útoky, dříve útoky využívající vyčerpání systémových prostředků.

Land attacks (Banana attacks)

Jedná se o útoky, které posílají oběti zfalšované pakety, kde je nastavena zdrojová a cílová IP adresa na adresu oběti. Porty se různí a často bývá nastaven i příznak SYN. Těchto útoků existuje hodně variant, kde se mění zdrojové a cílové porty. Obecně mají tyto útoky za následek, že se oběť ocitne ve smyčce, kdy sama sobě posílá data, což vyústí v pád systému. Tyto útoky se dají označit za malou hrozbu (protože firewall je stoprocentní ochranou, takové pakety nepropustí dovnitř). Sám jsem takový útok testoval na záplatovaném systému Windows XP SP2 s vypnutým firewallem a systém se ubránil. Abyste si udělali představu, jak dlouho jsou takovéto útoky hrozbou, nabízím vám články z let 1997 a 2005.

Vlastnosti: Útoky využívající chyb, které se po dlouhé době odsunují mezi ty, jejichž životnost již končí.

Fork bomb

Pokud budeme Fork bomb brát jako útok, pak se jedná o lokální DoS útok. K jeho provedení se používá programů, které pouští do nekonečna samy sebe. Jeho jméno vzniklo pomocí funkce fork(), která spustí běžící program ještě jednou (vytvoří další instanci). Takovéto spouštění sama sebe do nekonečna vede k vyčerpání systémových prostředků a pádu systému nebo jeho zatuhnutí. Pojem Fork bomb může být také brán jako výsledek DoS útoku (to znamená, že použití některého DoS útoku se může projevit na cílovém stroji jako použití Fork bomby).

Vlastnosti: Jako útok nepříliš nebezpečné díky omezenému použítí na lokální počítač, účinnost ovšem stoprocentní.

Nukes (WinNukes)

Zde se nejedná ani tak o útok, jako o typ nástrojů používaných k útoku. Jako Nukes jsou označovány programy, které slouží k provádění DoS útoků využívajících chyb. Jedná se o jednoúčelové programy, které se od exploitů liší tím, že jsou distribuovány ve zkompilované podobě. Nebezpečí těchto programů je větší než u exploitů, jelikož u exploitů jsou potřeba aspoň nějaké znalosti, aby útočník uměl daný exploit zkompilovat. Na rozdíl od toho Nuke program si stáhne i úplný začátečník, spustí ho, zadá IP adresu a cílový počítač se zhroutí (pokud je zranitelný vůči chybě, kterou Nuke program využívá).

V roce 1997 vznikl Nuke program, který se jmenoval WinNuke a využíval chyby v systémech Windows 95 a Windows NT. Program se stal velmi nebezpečný, jelikož jej využívalo mnoho lidí a bavilo se „shazováním“ počítačů. Tato chyba byla velmi brzy opravena. Následně ale začaly vycházet další programy, které se pojmenovaly WinNuke. Takže dnes lze pojmem WinNuke označit skupinu programů využívajících chyb v systémech Windows k provedení DoS útoku. Počet WinNuke programů není nijak velký, nové programy se objevují v rozmezí několika let. Rozhodně to ale není tím, že by nebyly chyby, kterých by mohly využívat, spíše není nikdo, kdo by měl zájem něco takového vytvářet.

Vlastnosti: Programy útočící pomocí DoS útoků využívajících chyb. Jejich největším nebezpečím je snadnost použití i naprostými začátečníky.

NBName

Jedná se o program, který využíval zranitelnosti NetBIOSu. Nejedná se pouze o utilitu, která měla útočit, ale nabízí spoustu zajímavých funkcí určených například k diagnostice. Pokud máte zájem, můžete si o něm přečíst více na domovské stránce. DoS útok pomocí této utility byl velice silný, projevoval se tím, že všem počítačům v síti se systémem Windows bylo zabráněno v připojení do lokální sítě. Vypadá to, že systémy Windows 9× nejsou proti tomuto útoku stále odolné. Já si myslím, že by útok mohl mít stále dopad na všechny operační systémy Windows. Ovšem nepodařilo se mi na systému Windows XP spustit daný program (jelikož nedokázal převzít nadvládu nad portem 137). Myslím, že by mělo být možné jej bez problémů spustit na systémech Windows 9× a v nejhorším případě i na Linuxu pomocí emulátoru.

Vlastnosti: Velmi pěkný nástroj k DoS útoku využívajícího špatné implementace. V součásné době nejsou chráněny operační systémy Windows 9× a nejpravděpodobněji i vyšší verze.

NetKill

Jedná se o program napsaný Stanislavem Shalunovem. Program využíval zranitelnosti v implementaci TCP protokolu k „vysátí“ volné operační paměti, po kterém následovalo „zatuhnutí“ oběti. Útok se podobá SYN Flood útoku. Rozdíl je v tom, že zde došlo k plnému navázání spojení, server si musel alokovat systémové prostředky a následně bylo spojení ponecháno osudu. Po uplynutí určité doby server považoval spojení za neplatné a alokaci prostředků zrušil. Program využíval právě toho, že tato doba byla v řádu minut, a snažil se takových spojení vytvořit co nejvíce. V dnešní době se zdá být tento útok neúčinný z důvodu větších paměťových prostředků serverů a také lepší implementace protokolu TCP.

UX16

Vlastnosti: Útok využívající vysátí systémových prostředků. V současné době již neúčinný.

Závěr

Dnešním díle jsme si dokončili útoky využívající chyb a vysátí systémových prostředků. S určitými útoky se ještě setkáme v dalších dílech, v příštím díle si dopřejeme další teorii v podobě DDoS (distribuovaný DoS), Unintentional DoS (nechtěné) a DoS využívající „Mitm“ (man in the middle) útoků.

Anketa

Vadí vám vysvětlování dnes již nefunkčních DoS útoků?

13 názorů Vstoupit do diskuse
poslední názor přidán 28. 9. 2006 21:26
Zasílat nově přidané názory e-mailem

Školení UX: Jak zapojit uživatele do designu

  •  
    Jak dostat ono tajemné UX do designu.
  • Ve kterých fázích zapojit uživatele, abyste dostali nejvíc muziky za nejmíň peněz.
  • Jak vytvářet jednoduché a srozumitelné persony

Detailní informace o školení UX »