Hlavní navigace

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

19. 9. 2006
Doba čtení: 7 minut

Sdílet

 Autor: 29
V tomto díle se podíváme na ty nejnebezpečnější DoS útoky, jež představují DoS útoky využívající chyb. Dále se také podíváme na útoky, které vysávají systémové prostředky. V konkrétních útocích si detailněji rozebereme útoky Teardrop (slza) a Ping of death (Ping smrti).

Teorie

Co jsou to DoS útoky využívající chyb?

Jedná se o útoky, které – aby dosáhly svého – využívají zranitelnosti v softwaru nebo hardwaru oběti. Nejčastěji se jedná o chyby, jež jsou velmi rychle opraveny, a tyto útoky většinou nemají dlouhou životnost.

Jak vypadá postup útočníka při DoS útoku využívajícího chy­by?

Pokud útočník ví, na koho chce útočit, zjistí si informace o oběti a podle hardwaru a softwaru, na kterém daná oběť pracuje, vyhlíží v internetových databázích (například www.osvdb.org) možné chyby. Poté si nalezne exploit (vysvětlení již v prvním díle) a pomocí něj zaútočí.

Dalším případem je, že útočník nemá vyhlédnutou oběť. Takoví útočníci sledují bezpečnostní konference nebo nahlíží do zmiňovaných databází (které obsahují informace o chybách) a čekají, až se objeví nějaká nová zranitelnost, na kterou ještě neexistuje žádná oprava. Poté útočník začne hledat oběť a následně na ni zaútočí, aniž by ji například předem znal. Dle mého pohledu se jedná pouze o jakousi útočníkovu potřebu si dokázat, že něco umí.

Ikonka - Kristalova Lupa 2006
Víte o zajímavé české službě či projektu a rádi byste o něm dali vědět ostatním? Zajímá vás, co považují za nejlepší na českém Internetu odborníci i běžní uživatelé? Pak neváhejte a nominujte své favority v anketě Křisťálová Lupa 2006! Až do 22. září 2006 můžete ovlivnit, ze kterých projektů se bude vybírat vítěz pro tento rok. Dejte vědět provozovatelům služeb, co si o jejich nabídce myslíte a ovlivněte tak český Internet!

Jaká je aktuálnost DoS útoků využívajících chyb?

O jednotlivých útocích se dá říci, že jejich trvanlivost příliš dlouhá není, jelikož firmy často rychle reagují a vydávají opravy pro daný software nebo hardware. Internet je ovšem rozsáhlá síť, a dá se tedy očekávat, že vždy bude někde nějaké zařízení, které zůstane nezáplatováno – ovšem výjimka potvrzuje pravidlo.

Na druhou stranu: pokud budeme nahlížet na trvanlivost kategorie útoků, které využívají chyb, lze zde říci, že tato kategorie tu s námi bude navždy, jelikož člověk je tvor omylný a chyby dělal a dělat bude. Navíc lze očekávat, že s postupným zvyšováním složitosti softwaru se bude objevovat těchto chyb více.

Jak nebezpečné jsou útoky využívající chyb?

Jedná se o nejnebezpečnější DoS útoky, protože k jejich provedení jsou minimální požadavky. Útok většinou spočívá pouze ve vygenerování malého množství speciálních paketů a oběť je nedostupná. Takže na rozdíl od záplavových útoků zde nehraje roli rychlost připojení útočníka a oběti. Díky tomu, že k provedení útoku stačí několik paketů, je těžké útočníka vysledovat, a také je velice těžké se tomuto útoku bránit nějakými filtrovacími pravidly.

Ještě větším nebezpečím je to, že než se vůbec o zranitelnosti dozvíte, tak útočníci už pomocí ní dávno útočí. Dalším nebezpečím je například ignorance některých výrobců softwaru, které to, že byla objevena chyba, vůbec neznepokojuje. Příkladem může být třeba společnost Microsoft, která – i když má dominantní postavení na trhu a zranitelnost v jejích systémech se dotýká obrovského procenta počítačů – s uvolňováním záplat právě nepospíchá.

Co jsou to útoky využívající vyčerpání systémových prostředků?

Jedná se o útoky, které jsou téměř stejné jako DoS útoky využívající chyb, ale v některých detailech se liší. Tyto útoky také využívají chyb objevených v softwaru nebo hardwaru, ovšem tyto chyby se liší od předchozích. Většinou se totiž nejedná o tak zásadní chyby, spíše se jedná o chyby implementace (tzn. chyby způsobené špatným návrhem). Tyto chyby se projevují například tak, že při určitých speciálně upravených paketech program vytíží procesor více, než je obvyklé, nebo program začne konzumovat více paměti.

Také počet paketů potřebných pro útok vypadá jinak – místo několika paketů již je potřeba větší datový tok, který musí být přítomen po celou dobu útoku. Také zde může sehrát roli rozdíl rychlosti připojení útočníka a oběti.

Ve výsledku tedy útok vypadá tak, že se posílá co největší množství paketů, aby se procesor oběti vytížil na sto procent nebo program zkonzumoval celou paměť a počítač začal swapovat. Tím se docílí toho, že počítač oběti nestíhá obsluhovat legitimní provoz. Takovou situaci jistě každý znáte, například když nějaký program přestane odpovídat nebo začne stoprocentně vytěžovat procesor a systém se stane nepoužitelný – tak přesně takto vypadá napadený počítač.

Útoky

Teardrop (slza)

Jedná se o útok podobný útoku Ping of death. Jeho princip je také založen na hrátkách s fragmentací IP paketů. Co je to fragmentace? Jedná se o to, že pokud se po síti má poslat velký IP paket (jedná se o všechny pakety, které používají protokol IP), z jistých důvodů nemůže být poslán v celku, jelikož je příliš velký. Proto ho systém rozdíl na menší dílky a těm se říká fragmenty (malé IP pakety obsahující data z původního IP paketu) a pošle je jednotlivě cílovému počítači. Ten z nich zpátky pomocí informací o tom, o kolik má data ze kterého fragmentu posunout, sestaví původní IP paket. Toto vše se děje transparentně, aniž byste o tom věděli.

Útok právě spočíval v poslání fragmentovaného IP paketu, u kterého se fragmenty překrývaly. Vlastně by to ničemu vadit nemělo, jelikož informace o offsetech byly v pořádku. Ovšem dříve některé operační systémy měly špatně implementováno sestavování původního IP datagramu. Kvůli tomu se při poslání speciálně fragmentovaných datagramů operační systém cílového počítače zhroutil. O tomto útoku je na Internetu minimum pořádných informací a často jsou některé údaje dosti zavádějící. Pokusím se vám tedy přiblížit, jak to bylo. Dále bych chtěl poznamenat, že tento útok se objevil i ve druhé verzi, kde byla objevena podobná zranitelnost.

fragmentace

Obrázek ilustruje, jak normálně vypadá fragmentace IP paketu (datagramu). Paket je „rozkouskován“ a poslán jednotlivě. Každý fragment má pak své IP záhlaví, ve kterém je uvedena identifikace (to je použito k identifikaci fragmentů, aby se vědělo, že k sobě patří). Dále zde najdeme parametr délky fragmentu a výše zmiňovaný offset. Nejspíš si budete říkat, že jsem udělal chybu, když poslední fragment má velikost o 40 bytů větší, ovšem je to správně, protože každé IP záhlaví má velikost 20 bytů a my zde máme dvě záhlaví navíc.

Nyní se podíváme, co vytvoří útok Teardrop. Jak vidíte, útok Teardrop posílá dva fragmenty tak, že druhý fragment přepíše část prvního. Vše by mělo být v pořádku, i když se jedná o nestandardní situaci. Ovšem problém je právě v mechanismu skládání původního datagramu operačním systémem.

Kopírovací rutina totiž vzala první fragment i se záhlavím, udělala si vlastní pointery offset a end. Offset se nastavil na začátek paketu a end na konec paketu. Rozdíl mezi nimi byla hodnota, kolik má zkopírovat dat. Následně rutina tato data zkopírovala do alokované paměti. Ukazatel offset nastavila na konec prvního fragmentu. Fragment správně zarovnala tak, jak má být, a ukazatel end nastavila na konec druhého fragmentu. Nyní, když od ukazatele end odečetla ukazatel offset, vyšlo záporné číslo. Ovšem tato funkce očekávala kladné číslo, proto se ze záporného čísla stalo obrovské kladné číslo a při pokusu překopírování tak obrovského množství dat došlo k chybě.

Vlastnosti: DoS útok využívající chyby, v současné době již neúčinný.

Ping of death (Ping smrti)

Jedná se o jeden ze starých útoků, který bývá často zmiňován. Jedná se o útok využívající chyby. Tento útok používá ICMP Echo request paketu. Ve specifikaci je uvedeno, že ICMP Echo paketů (jedná se o délku celého IP paketu) může být maximálně 65.535 bytů. Ovšem útočníci nedodrželi specifikaci a tuto velikost přesáhli. Některé operační systémy na to nebyly připraveny a při obdržení této zprávy kolabovaly. Ovšem tato chyba byla odstraněna a lze říci, že tento útok již je mrtvý.

Nyní pro ty, kteří danému tématu rozumí více: nejspíše si říkáte, jak mohli záškodníci dostat do IP paketu více bytů, když v protokolu IP je pole, ve kterém se uvádí délka IP paketů pouze dvoubytově (což znamená, že největší IP paket může mít 65.535 bytů). Ovšem takto velké pakety se po síti nepřenáší vcelku, ale fragmentují se. A když oběť sestavuje výsledný paket z jednotlivých fragmentů, využívá informaci o fragment offsetu a ta nám právě umožňuje přidat další data do IP paketu. Když tedy cílový počítač sestavoval výsledný paket, nastala situace, se kterou nikdo nepočítal, a systém zkolaboval.

Stalo se tak kvůli přetečení paměti, která byla alokován pro paket. Nebo se to mohlo stát při přepočítávání velikosti IP datagramu, jelikož je potřeba po defragmentaci obnovit původní IP hlavičku. Právě parametr o velikosti datagramu je dvoubytový a to znamená, že datagram může být dlouhý maximálně 65.535 bajtů. Ovšem pokud byl datagram větší, tak při přepočítávání přetekla tato dvoubytová hodnota a systém se s tím neuměl vyrovnat.

BRAND24

Vlastnosti: DoS útok využívající chyby, v současné době již neúčinný.

Závěr

V dnešním díle jsme si ukázali pouze dva útoky, které jsou navíc zastaralé a nepoužitelné. V příštím díle vám vše vynahradím a budu v něm popisovat pouze útoky. Dostaneme se dokonce i k nějaké praktické zkoušce.

Chybí vám v tomto seriálu praktické zkoušení útoků?

Byl pro vás článek přínosný?

Autor článku

Autor je spolumajitelem firmy PATRON-IT a celým srdcem technik. Specializuje se na kybernetickou bezpečnost a má zkušenosti etického hackera. Věří, že aby mohl síť dobře zabezpečit, musí ji nejprve umět prolomit.

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).