MASARYKOVA UNIVERZITA Fakulta informatiky
Analýza nástrojů pro provádění útoků denial-of-service DIPLOMOVÁ PRÁCE
Luboš Klouček
Brno, 2012
Prohlášení: Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Vedoucí práce: Mgr. Vít Bukač
i
Poděkování: Na tomto místě bych chtěl poděkovat svému vedoucímu Mgr. Vítu Bukačovi za odborné vedení a cenné rady při realizaci diplomové práce. Poděkování patří také mé rodině, zejména pak rodičům za veškerou podporu v průběhu mého studia.
ii
Anotace Cílem této práce je analýza nástrojů provádějících Denial of Service útok. Obsahuje vytvořenou metodiku testování od instalace nástroje po rozbor naměřených dat. K testovaným nástrojům jsou uvedeny výsledky analýzy datového proudu, výkonu a paketového provozu na síti. Z testů byly rovněž určeny typy DoS útoků, které jednotlivé nástroje provádí, jejich specifické vlastnosti a možná nastavení a úpravy parametrů útoku. Na základě provedené analýzy byly nástroje srovnány a doporučeny pro různé typy útoků.
iii
Klíčová slova: Denial-of-Service útok, Donut HTTP flooder, DoSHTTP, Good Bye, Janidos, LOIC, QSlowloris, Rocket, Simple DoS Tool, SYN Flood DoS, UDP flooder.
iv
Obsah 1.
Úvod ................................................................................................................................................ 1
2.
DoS útok (Denial of service attack) ................................................................................................ 2 2.1.
2.1.1.
Dělení podle cíle útoku .................................................................................................... 2
2.1.2.
Dělení podle vrstev OSI modelu ..................................................................................... 3
2.1.3.
Dělení podle počtu útočících počítačů............................................................................. 3
2.1.4.
Dělení podle intenzity útoku ........................................................................................... 4
2.2.
Útoky typu DoS ....................................................................................................................... 4
2.2.1.
HTTP GET flood ............................................................................................................. 4
2.2.2.
Slowloris .......................................................................................................................... 5
2.2.3.
TCP SYN flood ............................................................................................................... 6
2.2.4.
UDP flood........................................................................................................................ 7
2.2.5.
Land attack ...................................................................................................................... 7
2.2.6.
ICMP flood ...................................................................................................................... 7
2.2.7.
DNS amplification attack ................................................................................................ 8
2.2.8.
Teardrop .......................................................................................................................... 9
2.2.9.
WinNuke ......................................................................................................................... 9
2.2.10.
Ping of death .................................................................................................................... 9
2.2.11.
Smurf ............................................................................................................................... 9
2.2.12.
Fraggle attack .................................................................................................................. 9
2.3.
3.
Dělení DoS útoků .................................................................................................................... 2
Obrana a opatření proti DoS útokům..................................................................................... 10
2.3.1.
Fáze 1: Prevence ............................................................................................................ 11
2.3.2.
Fáze 2: Detekce ............................................................................................................. 12
2.3.3.
Fáze 3: Reakce............................................................................................................... 13
Analýza nástrojů pro DoS útok ..................................................................................................... 15 3.1.
Popis a nastavení testovacího prostředí ................................................................................. 15
3.2.
Postup testování nástrojů ....................................................................................................... 16
3.3.
Donut HTTP flooder ............................................................................................................. 21
3.4.
DoSHTTP .............................................................................................................................. 23
3.5.
Good Bye ............................................................................................................................... 24
3.6.
Janidos ................................................................................................................................... 26
3.7.
Low Orbit Ion Cannon (LOIC).............................................................................................. 28
3.8.
QSlowloris ............................................................................................................................. 31 v
3.9.
4.
5.
Rocket.................................................................................................................................... 32
3.10.
Simple DoS Tool ............................................................................................................... 33
3.11.
SYN Flood DoS................................................................................................................. 35
3.12.
UDP flooder 2.0 ................................................................................................................ 36
3.13.
Další nástroje pro DoS útok .............................................................................................. 38
Srovnání nástrojů pro DoS útok .................................................................................................... 39 4.1.
Nástroje pro DoS útoky ......................................................................................................... 39
4.2.
Vlastnosti ............................................................................................................................... 40
4.3.
Paketový provoz .................................................................................................................... 41
4.4.
Výkon .................................................................................................................................... 43
4.5.
Datový proud ......................................................................................................................... 45
4.6.
Dostupnost služeb.................................................................................................................. 46
4.7.
Použití.................................................................................................................................... 46
Závěr.............................................................................................................................................. 48
Literatura ............................................................................................................................................... 49 Příloha A ............................................................................................................................................... 52 Příloha B ................................................................................................................................................ 56 Příloha C ................................................................................................................................................ 57 Příloha D ............................................................................................................................................... 58
vi
1. Úvod Bezpečnost informačních technologií a služeb je rozsáhlý problém, na který neexistuje jednoduchá odpověď. Ačkoli tento problém není rozhodně podceňován a bezpečnosti je věnována značná pozornost, často doplňovaná nemalými finančními prostředky, existuje stále řada známých útoků, proti kterým je velice obtížné se bránit. Mezi tyto útoky patří i Denial of Service útoky neboli útoky odmítnutí služby. Problematika zabezpečení proti útokům odmítnutí služby je umocněna jednoduchostí provedení a poměrně snadnou dostupností nástrojů pro tento útok. Útoky proto mohou provést uživatelé bez rozsáhlých technických, či odborných znalostí. Denial of Service útoky jsou oblíbené také proto, že je velmi komplikované a často dokonce nemožné odhalit útočníka. O jejich popularitě svědčí i jejich nasazování při útocích prováděných mediálně známým hnutím Anonymous. Vzhledem k tomu, že se komunikace během útoku odmítnutí služby v řadě případů téměř neliší od té běžné, je problematické ji rozeznat a proti útokům se bránit. K jejímu odhalení však napomáhá analýza nástrojů. Tato práce je proto zaměřena na analýzu a srovnání nástrojů provádějících Denial of Service útok. Jejím cílem je napomoci k lepší obraně, detekci či prevenci proti tomuto útoku. Zároveň se snaží svými poznatky přispět k efektivnějšímu penetračnímu testování a ladění obranných mechanismů. Použití výsledků a poznatků z této práce k hacktivistickým činnostem není schvalováno ani povoleno. Druhá kapitola je zaměřena na vytvoření souhrnu znalostí o DoS útocích. Aby bylo možné provádět testování nástrojů pro DoS útok, je nezbytné vytvořit metodiku testování. Tou se zabývá začátek třetí kapitoly. Ta zároveň obsahuje hlavní část této práce, a to výsledky testů jednotlivých nástrojů. V této kapitole je také uveden přehled nástrojů a typů DoS útoků, které je jimi možné realizovat. Ve čtvrté kapitole jsou testované nástroje srovnány, vyhodnoceny a doporučeny pro různé typy útoků.
1
2. DoS útok (Denial of service attack) V této kapitole se zaměřím na nezbytné informace o DoS útoku, na které budu při analýze nástrojů často odkazovat. Jako výchozí informační prameny mi zde sloužily především články [1] a [3]. Z důvodu minimálního množství česky psaných zdrojů zabývajících se touto problematikou byl pro některá pojmenování zvolen volný překlad, neboť pro ně neexistuje výstižný český ekvivalent. DoS útok, v češtině označovaný též jako útok odmítnutí služby, je technika provádění útoku s cílem zabránění oběti vykonávat svoji práci. Obětí může být určitá služba, webový server, router, síťové spojení, konkrétní uživatel internetu, celá obchodní společnost, ISP a řada dalších. Těchto útoků je velmi vysoký počet, který se neustále zvyšuje [2].
2.1. Dělení DoS útoků DoS útoky lze dělit podle mnoha parametrů. Jedním z nich je cíl útoku. Dalšími parametry pro dělení těchto útoků může být vrstva OSI modelu či počet útočících počítačů. DoS útoky lze hodnotit i podle intenzity útoku. Často se také používá dělení DoS útoků na lokální a vzdálené, či chtěné a nechtěné.
2.1.1.
Dělení podle cíle útoku
a) Útoky spotřebování šířky pásma (Bandwidth depletion attacks) Jejich cílem je zaplavit síť oběti nevyžádaným provozem a zabránit tak legitimní komunikaci. Tyto útoky se mohou chovat jako záplavové anebo zesilující. Záplavové útoky (Flood attacks): Záplavové útoky se řadí mezi nejjednodušší DoS útoky. Jsou založeny na vysílání co největšího množství paketů k oběti, čímž způsobí zahlcení sítě. Útoky tohoto typu jsou poměrně stálé, nové téměř nevznikají. Lze je dále dělit podle protokolu. Velmi často se využívá ICMP a UDP protokolu [1]. Do tohoto typu útoku patří například HTTP GET flood či UDP flood. Zesilující útoky (Amplification attacks): Tento útok spočívá v tom, že k oběti dorazí výrazně větší množství dat, než které útočník vyslal. Aby bylo možné tohoto chování dosáhnout, je nutné využít 2
nějakého prostředníka, který tento útok během své cesty zesílí [1]. Takovýmto chováním se vyznačuje napříklda DNS amplification attack. b) Útoky vyčerpáním zdroje (Resource depletion attacks) Jejich cílem je zahltit zdroje oběti tak, aby nebyly obslouženy legitimní požadavky. Lze je dále rozdělit na útoky těžící z protokolů a na útoky upravenými pakety [1]. Útoky těžící z protokolů: Tyto útoky využívají vlastností nebo chyb určitých protokolů používaných na straně oběti [3]. Takovýmto chováním se vyznačuje například DoS útok typu Slowloris, využívající časově opožděných částí nekonečné HTTP hlavičky. Útoky upravenými pakety: Jedná se o útoky, které využívají nesprávně vytvořených paketů. Můžeme je rovněž rozlišovat podle části paketu, kterou zaměňují (např. IP adresu či volby) [3]. Příkladem může být DoS útok typu Teardrop, kdy útočník vytváří fragmenty tak, aby na sebe při zpětném sestavování nenavazovaly, či se překrývaly.
2.1.2.
Dělení podle vrstev OSI modelu
Jednotlivé DoS útoky jsou klasifikovány podle toho, do které vrstvy spadá služba, která je cílem daného útoku. Dřívější DoS útoky se zaměřovaly především na 3. vrstvu (síťová) OSI modelu (ICMP flood). Jejich cílem bylo vyčerpání zdroje, či šířky pásma, které bylo možné z důvodu existence jejich limitů a omezení. Avšak současná bezpečnostní opatření (popsaná v sekci 2.3 Obrana a opatření proti DoS útokům) jsou natolik efektivní, že se nyní většina útoků zaměřuje převážně na 7. vrstvu (aplikační) OSI modelu (Slowloris) [10].
2.1.3.
Dělení podle počtu útočících počítačů
a) Útoky prováděné jedním počítačem K útoku se zpravidla používá jedno zařízení a jedno síťové připojení. b) Útoky prováděné více počítači Tyto útoky jsou též označované jako DDoS útoky neboli distribuované DoS útoky (Distributed Denial of Service). Takovéto útoky jsou vedeny z více míst ve stejný čas.
3
c) Útoky prováděné jedním počítačem tvářící se jako vedené z více počítačů K útoku se zpravidla používá jedno zařízení a jedno síťové připojení stejně, jako tomu je při útocích prováděných jedním počítačem uvedených v bodě a). V tomto případě útočník využívá prostředků, či technik, které způsobí, že se na cílovém stroji útok jeví, jako by byl veden z více strojů. Tohoto chování je docíleno využitím IP spoofingu či vedením útoku přes různé anonymní proxy servery.
2.1.4.
Dělení podle intenzity útoku
a) Invazivní DoS útoky Takovéto útoky se snaží v co nejkratší době a s využitím co největšího množství prostředků zahltit cílový systém. Takovým typem útoku je například HTTP GET flood útok. b) Pulzující DoS útoky (Pulsing attacks, Low-rate attacks, Shrew attacks) Na rozdíl od klasických invazivních DoS útoků, které se vyznačují velmi vysokým provozem po celou dobu útoku, tento typ v čase mění a upravuje úroveň útoku. V případě, že inteligentně reagují na provoz na síti, jsou velmi těžko detekovatelné. Jejich hlavním cílem bývá redukce kvality [14].
2.2. Útoky typu DoS 2.2.1.
HTTP GET flood
Jedná se o invazivní typ záplavového útoku spotřebovávajícího šířku pásma a vyčerpávajícího zdroje cílového systému. Útok využívá vlastností HTTP protokolu, a je proto zaměřen na aplikační vrstvu OSI modelu. Jde o velmi rozšířený a v poslední době častý útok na služby webového serveru. Útočník vysílá obrovské množství legitimních HTTP GET paketů, snaží se tak vytěžovat zdroje cílového systému a spotřebovávat šířku pásma. Výsledkem je pokles výkonu, navýšení odezvy, či dokonce nedostupnost serveru. Z důvodu využívání legitimních dotazů je poměrně těžko detekovatelný IDS [10]. Jak znázorňuje Obrázek 1, útoky tohoto typu jsou často vedeny za pomoci botnetu, mohou být ale vedeny i z jednotlivých stanic. Z tohoto obrázku je rovněž patrné, že množství dotazů na server se může navýšit i díky výraznému vzrůstu zá-
4
jmu o služby tohoto serveru u legitimních uživatelů. Je žádoucí, aby pro ně byla služba i po dobu útoku dostupná.
Obrázek 1: HTTP GET flood
Obdoba tohoto útoku je HTTP POST flood, avšak namísto HTTP GET se používá HTTP POST [10].
2.2.2.
Slowloris
Slowloris je typ útoku těžícího z protokolu aplikační vrstvy (HTTP) OSI modelu a implemenace softwaru pro webový server. Na rozdíl od obvyklých DoS útoků na webový server se tento útok vyznačuje minimálním datovým provozem. Jeho cílem je navázat nová spojení, udržet je otevřená po co nejdelší dobu a zahltit tak vstupy webového serveru [10]. Útočník nejprve naváže spojení. Webový server po jeho otevření čeká na doručení celého HTTP požadavku. Vzhledem k tomu, že útočník před vypršením timeoutu na uzavření spojení posílá časově opožděné části nekonečné HTTP hlavičky, udržuje tímto neustále spojení a vyčerpává tak vstupy webového serveru [10] [22]. Nástroj Slowloris není efektivní na všech typech webových serverů. Neovlivní např. IIS6, IIS7, lighttpd, Squid, Nginx, ale postihuje nejvíce rozšířený Apache 1.x a Apache 2.x [21].
5
2.2.3.
TCP SYN flood
Tento typ útoku, spadající do útoků na transportní vrstvě, vyčerpává zdroje oběti. Pokud je proveden s podvrhnutou IP adresou, má vlastnosti útoků prováděných jedním počítačem tvářícím se jako vedených z více počítačů. Útočník vysílá velké množství TCP SYN paketů, cílový server je přijímá, alokuje si zdroje pro každé z nově otevíraných spojení a odpovídá TCP SYN+ACK paketem. Avšak na ten útočník paketem TCP ACK už neodpoví, a proto navázání spojení nedokončí. Server na tento paket stále čeká a je zahlcován nově příchozími požadavky na spojení [4] [12]. DoS útok typu SYN flood nebývá v současné době úspěšný, a to z toho důvodu, že proti němu existuje řada obranných technik (např: SYN cookies, SYN cache) [20]. Tento útok může být proveden v několika obměnách: Přímý útok: Útočník vysílá na server obrovské množství SYN paketů. Jako zdrojová IP adresa je ve všech případech uvedena adresa útočníka [12] [18]. Útok s podvrhnutou IP adresou Útočník místo své zdrojové IP adresy uvádí jinoum či náhodnou adresu. Server poté odpovídá na tuto náhodnou adresu stanice, která ale neočekává navázání spojení se zmíněným serverem. Tato stanice nemá potřebu odpovědět, a proto se server žádné odpovědi (ACK paketu) nedočká. [20]. Distribuovaný SYN flood Útok je proveden z více strojů (obvykle je použit botnet), což zhoršuje odhalení a zastavení zdroje útoku, neboť musí být zablokován na více místech [20].
Obrázek 2: Obměny SYN flood útoku [19]
6
Obdobou TCP SYN flood je útok TCP connection flood. Rozdíl spočívá v tom, že útočník při TCP connection flood útoku dokončuje navázání spojení, avšak buď k žádné další komunikaci již nedojde, anebo jsou odesílány špatně vytvořené pakety s cílem prodloužit dobu, po kterou je spojení udržováno. Nevýhoda TCP connection flood proti SYN flood útoku spočívá v tom, že nelze podvrhnout útočníkovu zdrojovou adresu. V případě, že si cílový systém alokuje zdroje teprve až po navázání spojení, je na rozdíl od TCP SYN flood útoku výhodné provést TCP connection flood.
2.2.4.
UDP flood
UDP flood je invazivní záplavový útok zaměřený na čtvrtou (transportní) vrstvu OSI modelu. Pro tento útok se používá nestavový UDP protokol. Útočník vysílá velké množství datagramů na vybraný port oběti, což může vést k zahlcení její linky, které může být ještě umocněno snahou oběti poslat zpět ICMP Destination Unreachable paket [23] [24]. Tento typ útoků se dříve používal ve spojení se službou echo (data, která přijdou na její port, posílá zpět) či chargen (služba přijme data a zpět odesílá data náhodná). Pokud zdrojová adresa byla podvržena za adresu serveru poskytujícího na zadaném portu službu echo nebo chargen a směřovala na adresu a port se službou echo či chargen, došlo k zacyklení zasílání dat mezi těmito servery [4] [23] [24]. UDP flood DoS útok lze realizovat např. pomocí nástroje Udpflooder2.
2.2.5.
Land attack
Land attack využívá upraveného paketu transportní vrstvy a chyby při zpracování tohoto paketu operačním systémem. Útočník vysílá upravený TCP SYN paket se stejnou zdrojovou a cílovou adresou a stejným zdrojovým a cílovým portem (ten musí být na cílové stanici otevřen). Současné operační systémy jsou proti tomuto útoku již odolné [12].
2.2.6.
ICMP flood
Tento typ útoku spadá mezi invazivní záplavové útoky orientované na síťovou vrstvu OSI modelu.
7
Útočník zahlcuje cílový systém ping pakety (ICMP Echo Requests), což je navíc umocněno snahou oběti na ně odpovědět. Cílem je zahltit linku oběti, zároveň je však zahlcována i linka útočníka. Pro úspěšný útok je tedy nezbytné, aby linka útočníka byla rychlejší než linka oběti [4] [17].
2.2.7.
DNS amplification attack
Útok tohoto typu spadá do kategorie zesilujících útoků zaměřených na aplikační vrstvu OSI modelu. Útočník posílá DNS dotazy, ve kterých je podvrhnuta zdrojová IP adresa za adresu oběti. Hlavní výhodou tohoto útoku je jeho možné datové zesílení, kdy k oběti dorazí výrazně větší množství dat, než které bylo vysláno [4] [11].
Obrázek 3: Princip DNS amplification attack [25]
8
2.2.8.
Teardrop
Tento typ útoku je zaměřen na chybu v implementaci opětovného skládání IP datagramu z fragmentů. K tomuto útoku na síťovou vrstvu se využívají upravené fragmenty. Ty útočník vytváří tak, aby na sebe při zpětném sestavování nenavazovaly, či se překrývaly. To způsobí spotřebovávání výkonu cílového systému, které může vést až k jeho úplnému pádu. Záměrem útoků tohoto typu je donutit cílový systém k restartu [4] [13].
2.2.9.
WinNuke
Útoky typu WinNuke těžily z chyby starších operačních systémů Windows za využití upravených paketů. Útočník zasílal oběti TCP pakety s URG (urgent pointer) na port 139 (NetBIOS) s cílem „vytuhnutí” oběti a zobrazení „modré obrazovky smrti” [12].
2.2.10. Ping of death Útok je založen na vytvoření obrovského ping paketu a situaci, kdy operační systém neumí zpracovat pakety větší než maximální velikost [4] [12].
2.2.11. Smurf Jedná se o zesílený útok, obdobný útoku ICMP flood. Útočník vysílá upravený ping paket, jako zdroj je uvedena adresa oběti a jako cíl adresa pro broadcast. Poté všechny počítače v síti posílají na adresu oběti paket ICMP Echo reply [12].
2.2.12. Fraggle attack Fraggle attack je obdobou Smurf útoku s tím rozdílem, že místo ICMP je použit UDP protokol [12].
9
2.3. Obrana a opatření proti DoS útokům Obrana proti DoS útokům je velmi náročná. Vzhledem k tomu, že neexistuje žádné univerzální řešení a nové útoky neustále vznikají, je zapotřebí věnovat obraně a opatřením dostatečnou, a především neustálou pozornost. Hlavní důvod, proč je tento typ útoku hojně rozšířený, vyplývá z vlastností jeho nástrojů. Protože jsou výše zmíněné nástroje jednoduché na ovládání, zvyšuje se počet potenciálních útočníků schopných tento útok provést. To navíc umocňují programy, které jsou poměrně snadno dostupné. Zabránění DoS útokům je komplikováno několika příčinami. První z nich je problematické odlišení a odfiltrovaní legitimního provozu od útočného. Na rozdíl od útoků využívajících speciálních paketů, některé DoS útoky jsou založeny jen na úpravě obsahu paketu, jeho hlavičky, či jen zvýšení počtu paketů. Dalším důvodem může být obtížná identifikace útočníka, který může podvrhnout svoji IP adresu za adresu například legitimního uživatele. Výraznou komplikací je rovněž obrovské množství paketů, které je třeba analyzovat, což způsobuje výrazné zatížení obranných mechanismů. Nezbytné je také brát v úvahu vytížení síťových prvků před bráněnou sítí [5]. Jak zde bylo již zmíněno, obrana proti DoS útoku není jednoduchá, je tedy nutné rozčlenit prováděné bezpečnostní aktivity do více fází obsahujících řadu dalších protiopatření, postupů a obranných mechanismů (viz Obrázek 4).
10
Prevence Používání globálně jednotných filtrů •Vstupní filtry •Výstupní filtry •Filtry využívající cest •Filtry využívající historii spojení •Filtry bezpečného překryvu služeb
+
Detekce
+
Detekce anomálií v chování Detekce definovaných vzorů
...
Reakce IP Traceback •ICMP Traceback •Link-testing Traceback •Probabilistic packet marking •Hash-based IP Traceback •Center-Track
Vyvažování zátěže
Poučení se z analýzy
Honeypot
...
Zakázání nepoužívaných služeb Obměňování IP adresy
Zakázání IP broadcastu Instalace posledních bezpečnostních záplat
... Obrázek 4: Obrana a opatření proti DoS útokům
2.3.1.
Fáze 1: Prevence
Prevence je základní a nezbytná část obrany proti DoS útoku. Zahrnuje tyto části: Používání globálně jednotných filtrů Cílem je zastavit či omezit množství útočných paketů. Tyto filtry lze dále dělit: o Vstupní filtry (Ingress Filtering): Jejich cílem je zakázat vstup do sítě paketům s nelegitimní zdrojovou adresou, což jsou takové pakety, které přicházejí z jiné sítě než z té, o které sami tvrdí, že z ní pocházejí [3].
11
o Výstupní filtry (Egress Filtering): Povolují na výstupu ze sítě pouze pakety, jejichž zdrojová adresa spadá do rozsahu místní sítě. Tyto filtry nejsou určeny pro obranu lokální sítě, jejich přínos spočívá v tom, že z lokální sítě nemůže být veden útok s podvrženou identitou, čímž chrání ostatní sítě [3]. o Filtry využívající cest paketů (Route-Based Distributed Packet Filtering): Tyto filtry využívají nezbytné znalosti topologie sítě. Pomocí ní kontrolují cesty jednotlivých paketů a napomáhají při nalezení pravého zdroje IP paketu (traceback problem) [3] [6]. o Filtry využívající historii spojení (History-based IP filtering): Vstupní filtry využívají databázi IP adres z předchozích spojení [6]. o Filtry bezpečného překrývání služeb (Secure Overlay Services): Legitimní je pouze malá množina tajných zdrojových adres, která je vybrána z početného množství [3] [7]. Vyvažování zátěže (Load balancing) Díky navýšení šířky pásma na kritických místech sítě, či replikaci serverů dojde ke zvýšení výkonu a zároveň i odolnosti proti DoS útoku [1]. Honeypot Honeypot je systém, který se snaží nalákat útočníka a odklonit tak jeho pozornost od pravého systému. Tím napomáhá při analýze vlastních bezpečnostních slabin a vede k včasnému odhalení útočníka [3]. Zakázání nepoužívaných služeb Jedním ze základních pravidel bezpečnosti na síti je zakázání nepoužívaných a nepotřebných služeb [3]. Zakázání IP broadcastu Instalace posledních bezpečnostních záplat
2.3.2.
Fáze 2: Detekce
Detekce spočívá v rozpoznání definovaných vzorů a anomálií v chování charakteristických pro DoS útok [3]. Detekce anomálií v chování Pro detekci anomálií v chování je nezbytná tvorba statistik, na jejichž základě lze pomocí analýzy, vytěžování z dat, či nastavovaní prahových hodnot detekovat DoS útok. 12
Detekce definovaných vzorů Tato detekce využívá již známých a definovaných signatur, na jejichž základě testuje podezřelou komunikaci.
2.3.3.
Fáze 3: Reakce
Jakmile je detekován útok či pokus o něj, je zapotřebí co nejrychleji identifikovat a poté zablokovat zdroj útoku. IP Traceback Traceback je výhodný, protože umožní zastavit útočný provoz co nejblíže zdrojovým počítačům, a tím předcházet zatěžování sdílených internetových linek. K identifikaci zdroje (traceback) se používá několik technik: o ICMP Traceback: Pokud je paket přeposílán, router může s určitou pravděpodobností vygenerovat ICMP traceback zprávu (ICMP traceback message), která je zaslána k cíli nebo ke zdroji. Při dostatečném množství ICMP Traceback zpráv, zaslaných od routerů nacházejících se na síťové cestě, je možné určit zdroj a cestu útoku [3] [8]. o Link-testing Traceback: Jedná se o techniku, při které oběť jednotlivě testuje každou příchozí linku tím, že ji zaplaví obrovským množstvím zpráv a sleduje změny v útoku. Nutností je znalost topologie a nedistribuovanost útoku [3]. o Probabilistic packet marking: Probabilistic packet marking je založen na teorii, kdy každý uzel na síti postupně zakóduje do útočného paketu informaci, která umožňuje zpětnou identifikaci zdroje [9]. o Hash-based IP Traceback: Tato technika využívá SPIE (source path isolation engine), jenž generuje kontrolní stopu umožňující zjištění zdroje paketu [3]. o Center-Track: V případě detekce útoku je veškerá komunikace přesměrována pomocí tunelů do centrálního routeru, který snáze detekuje zdroj [3].
13
Zablokování zdroje útoku Při detekci útoku je nutné co nejrychleji zablokovat proud příchozích škodlivých paketů. V tomto kroku je velice těžké odlišit a zablokovat legitimní komunikaci od té útočné. o Zastavení útoku pomocí lokálního firewallu Jedná se zpravidla o prvotní reakci na DoS útok, avšak ten musí být zastaven co nejblíže ke svému zdroji. o Blackholing Tato technika umožňuje poskytovatelům internetu zahazovat pakety na základě definovaných kriterií. Poučení se z analýzy Na DoS útok lze zareagovat i analýzou logů událostí, na jejímž základě lze upravit definované vzory útoku, změnit vyvážení zátěže či nastavení filtrů [1] [3].
14
3. Analýza nástrojů pro DoS útok Tato kapitola obsahuje informace o testovacím prostředí a způsobu provádění testů. Rovněž prezentuje jejich výsledky na jednotlivých nástrojích.
3.1. Popis a nastavení testovacího prostředí Pro testování nástrojů byly vytvořeny tři virtuální stroje: 1. Server, na který jsou útoky směřovány (IP adresa 192.168.0.119). 2. Uživatelská stanice s nástroji pro DoS, ze které jsou vedeny útoky proti serveru (IP adresa 192.168.0.120). 3. Uživatelská stanice určená pro nezávislé pozorování (IP adresa 192.168.0.150).
Shield
Spuštěné programy a nástroje: OS: Windows Server 2007 R2 Webový server – IIS7 Netcat poslouchající na UDP portu 1234 Wireshark Sledování výkonu (CPU, RAM, Síť)
192.168.0.119
Hammer
Observer
192.168.0.120
192.168.0.150
Spuštěné programy a nástroje:
Spuštěné programy a nástroje: OS: Windows 7
OS: Windows 7
Nástroj pro DoS útok
Wireshark
Wireshark
ping-test.ps1
Sledování výkonu (CPU, RAM, Síť)
http-test.ps1
Obrázek 5: Topologie testovacího prostředí
15
3.2. Postup testování nástrojů Pro každý testovaný nástroj jsou provedeny kroky I. – XI.
I. Instalace Pokud je na útočícím počítači nezbytné nástroj před spuštěním nainstalovat, jsou použity následující parametry instalace: - Cílová složka: C:\Program Files\DoS\
II. První spuštění - Zjištění informací uvedených ve spuštěném nástroji (verze, autor…) - Print screen GUI - Zaznamenání všech možných nastavení spuštěného nástroje pro úpravu charakteristik útoku
III. Kategorizace Na základě získaných informací je určeno, jaké typy DoS útoků (popsaných v sekci 2.2) je možné nástrojem realizovat. Pro jednotlivé typy útoků jsou provedeny kroky IV. – XI.
IV. Nastavení parametrů útoku Úprava nastavitelných předvoleb nástroje pro DoS je provedena třemi různými způsoby (pro každý z nich jsou provedeny kroky V – X): a) Výchozí hodnoty V nástroji jsou použity defaultní hodnoty. Pokud některá hodnota chybí a je nezbytná pro spuštění nástroje, je použita fixní hodnota uvedená níže v sekci c) Fixní hodnoty. b) Maximální hodnoty Účelem nastavení maximálních hodnot je docílit co nejvyšší efektivity a destruktivnosti útoku. Testování nástrojů s maximálními hodnotami bude limitováno funkčností nástrojů. c) Fixní hodnoty Nejprve je nástroj zařazen do příslušné skupiny, určené podle protokolu síťové a transportní vrstvy ISO/OSI, na kterou bude útok veden. To je stanoveno na základě získaných informací o nástroji a kategorie, určené v sekci III. Následně jsou nastaveny parametry uvedené v příslušné skupině.
16
1. Skupina (ICMP) Cíl útoku (target IP): 192.168.0.120, times: 100 000, timeout: 3 000, data: *****TEST-DOS-ICMP*****. 2. Skupina (IPv4) 2.1
Skupina (UDP)
Cíl útoku (destination, target): 192.168.0.120, data (text): *****TEST-DOSUDP*****, port: 1234, metoda (method): UDP, threads: 10, rychlost: 100 paketů/s. 2.2
Skupina (TCP)
Cíl útoku (destination, target): 192.168.0.120, identifikátor prohlížeče (user agent): Mozilla/6.0 (compatible; MSIE 7.0a; Windows NT 5.2; SV1), language: cz, request page: default, conection: keep-alive, data: *****TESTDOS-TCP*****, port: 80, requests: 20 000, threads: 100, sockets: 300, bot: 100, timeout: 50, speed: fast, neaktivní volby: wait-for-reply use-proxy-list get-confirm-to-all-requests show-received-data.
V.
Zahájení zachytávání komunikace Na všech počítačích v síti je spuštěn program Wireshark 1.6.0, který začíná na příslušném síťovém rozhraní zachytávat veškeré pakety.
VI. Zahájení monitorování výkonu a dostupnosti služeb Monitorování níže uvedených vlastností je spuštěno s minutovým předstihem před zahájením útoku, a to z důvodu možnosti porovnání normálního klidového a útočného stavu. a) Využití CPU Zkoumáno na straně útočníka (192.168.0.120) a na straně serveru (192.168.0.119). Pro monitorování byl použit nástroj „Sledování výkonu“ obsažený v programu „Výkon“. Ten je součástí OS Windows 7 (spustitelný příkazem perfmon.exe). Pro zobrazení hodnot o stavu využití CPU je potřeba ve vlastnostech tohoto nástroje (CTRL+Q) mít přidán čítač „\Informace o procesoru(_Total)\% času procesoru“. b) Využití RAM Zkoumáno na stroji útočníka i serveru. Měření jsou prováděna stejným způsobem, jaký byl použit a popsán v předchozím odstavci zaměřeném na sle-
17
dování využití CPU s tím rozdílem, že do nástroje Sledování výkonu je nezbytné přidat čítač „\Paměť\% využití potvrzených bajtů“. c) Síťová aktivita Měřeno obdobně jako využití CPU či RAM, v nástroji Sledování výkonu jsou použity následující čítače: „\Rozhraní sítě(….)\Bajty celkem /s“, „\Rozhraní sítě(….)\Bajty odeslané /s“, „\Rozhraní sítě(….)\Bajty přijaté /s“ d) Navázaná spojení Měřeno obdobně jako využití CPU, RAM či síťová aktivita, v nástroji Sledování výkonu je použit následující čítač: „\TCP\Navázaná spojení“ e) Stav spojení Stav spojení se serverem je testován z nezávislého stroje Observer (192.168.0.150) pomocí powershellového skriptu „ping-test.ps1“(viz Příloha B), který je zde spouštěn. Tento skript ověřuje každou sekundu stav spojení se serverem (192.168.0.119) pomocí nástroje ping. f) Dostupnost webového serveru Dostupnost webového serveru je testována obdobným způsobem jako stav spojení. Rovněž je využito powershellového skriptu „http-test.ps1“ (viz Příloha C) spuštěného z nezávislého stroje Observer (192.168.0.150). Tento skript se pomocí nástroje cURL pokouší každých pět sekund stáhnout stránku index.html z webového serveru (192.168.0.119). Dostupnost je ještě kontrolována pomocí zachycené komunikace na síťovém rozhraní stroje Observer.
VII. Provedení DoS útoku Útok je spuštěn a běží po dobu pěti minut, poté je ukončen.
VIII.
Ukončení odchytávání paketů Na počítačích v síti je po dvou minutách od zastavení útoku postupně ukončeno zachytávání komunikace programem Wireshark v následujícím pořadí: útočník, oběť, ostatní.
IX. Ukončení monitorování výkonu a dostupnosti služeb Na jednotlivých počítačích jsou ukončeny spuštěné monitorovací nástroje. 18
X.
Opakování pokusu Jednotlivá měření specifikovaná body IV. – IX. jsou prováděna pětkrát.
XI. Analýza a) Analýza naměřených dat monitorujících výkon a dostupnost služeb - Využití CPU - Využití RAM - Síťová aktivita - Stav spojení - Dostupnost webového serveru - Počet navázaných spojeni b) Zjištění obecných charakteristik - Počet vyslaných a přijatých paketů - Počet přenesených bajtů - Průměrný počet paketů za sekundu - Průměrná velikost paketu - Průměrný počet přenesených bajtů za sekundu - Průměrný počet paralelních spojení c) Kontrola jednotlivých paketů - Zdrojové a cílové IP adresy - Číslo zdrojového a cílového portu a souvislosti v jejich generování - Struktura a obsah paketů d) Kontrola informací specifických pro skupinu Následující skupiny odpovídají skupinám v části IV. Pokud byl útok při nastavování parametrů zařazen např. do skupiny 1, budou v této části kontrolovány vlastnosti spadající do stejné skupiny, tj. do skupiny 1. 1. Skupina (ICMP) - Návaznost požadavků na předchozí komunikaci 2. Skupina (UDP) - Návaznost požadavků na předchozí komunikaci - Informace uvedené v datové časti paketu
3. Skupina (TCP) - Návaznost požadavků na předchozí komunikaci 19
- Nastavené příznaky TCP - Posloupnost paketů komunikace. Určení, jakým způsobem je komunikace navázána, jaké další informace jsou posílány a kdy a jak je spojení ukončeno. - Přítomnost, vlastnosti a struktura paketů s protokoly vyšších vrstev e) Porovnání výsledků zachycené komunikace na straně útočníka a oběti f) Porovnání výsledků zachycené komunikace mezi opakovanými pokusy
20
3.3. Donut HTTP flooder Donut HTTP flooder provádí invazivní DoS útok typu HTTP GET flood, vytvářející řádné pakety, který navazuje a ukončuje komunikaci obvyklým způsobem. Donut HTTP flooder je v současné době dostupný ve verzi 1.4. Tento nástroj umožňuje nastavit: URL Uvádí se ve tvaru http://host. Port Určuje číslo portu, na kterém poslouchá webový server. Threads Udává počet použitých vláken během útoku.
Použití seznamu proxy serverů Umožňuje vést útok prostřednictvím proxy serverů.
Zobrazení přijatých dat z cílového webového serveru. Při zadávání parametrů nástroje s maximální efektivitou útoku byla hodnota „Threads“ nastavena na 600, zadání vyšší hodnoty způsobovalo při spuštění útoku pád programu. Úprava jiných parametrů útoku nemá na efektivitu útoku vliv. Analýza datového proudu Útok není ovlivněn předchozí komunikací, požadavky vyslané na server se překrývají, nečeká se tedy na dokončení předchozí komunikace. Číslo zdrojového portu je vybráno náhodně z intervalu <49157; 65534>. Zdrojové porty jsou poté inkrementovány o 1, a to do té doby, dokud není dosaženo maxima, což je 65534. Po něm se pokračuje od hodnoty 49157. Požadavky na webový server odpovídají legitimní komunikaci. Nejprve je navázáno TCP spojení (SYN, SYN + ACK, ACK). Poté útočník zasílá HTTP GET požadavek, na který server odpoví zasláním HTML dat. Komunikace je následně ihned oběma účastníky řádně ukončena. Server nastavuje příznak FIN společně s již zaslanými HTML daty, útočník zasílá paket s příznaky FIN + ACK, na který server reaguje ACK paketem. Předností tohoto nástroje je možnost použití proxy serverů. K tomuto chování slouží volba „Použití seznamu proxy serverů“. Seznam použitých proxy serverů je uveden v souboru proxies.txt, který je umístěn ve stejné složce jako spustitelný soubor nástroje donutflooder.exe. Pokud útočník využije proxy serverů, je útok veden 21
přes ně, a proto se na cílovém serveru tváří jako útok z více míst (tzv. distribuovaný útok). Z tohoto důvodu je obtížnější útok detekovat, určit jeho zdroj a rychle jej zastavit. Zpravidla se využívá služeb neplacených a veřejně dostupných webových proxy serverů. Analýza výkonu a paketového provozu na síti Vzhledem k tomu, že tento nástroj v každém spojení zasílal řádný HTTP GET požadavek a obdržel tak od serveru požadovanou stránku, bylo množství přenesených bajtů ve srovnání s ostatními nástroji vysoké – viz Graf 2. Z grafu je rovněž patrné, že množství dat odeslaných serverem je podstatně vyšší než množství dat od útočníka (je téměř dvojnásobné). Počet současně navázaných spojení odpovídá hodnotě zadané do pole „threads“, během útoku bylo téměř neměnné (viz Graf 1).
Graf 2: Aktivita síťového rozhraní na útočícím počítači při použití nástroje Donut HTTP flooder
Graf 1: Množství navázaných spojení během útoku nástrojem Donut HTTP flooder s nastavenými fixními parametry
Během útoku s fixními parametry bylo přeneseno v průměru 1 250 000 paketů a přibližně 270 000 000 bajtů, což jsou ve srovnání s obdobnými nástroji poměrně vysoké hodnoty. Na tomto nástroji lze kladně hodnotit i výši vytížení CPU serveru, která zaznamenala během útoku výrazný nárůst (viz Graf 3). Vytížení CPU na útočníkově stanici bylo srovnatelné s obdobnými nástroji.
22
Graf 3: Využití CPU na serveru při nastavení maximálních hodnot v nástroji Donut HTTP flooder
3.4. DoSHTTP Nástroj DoSHTTP realizuje DoS útok typu HTTP GET flood. Během útoku vytváří řádné HTTP GET pakety, ve kterých rovněž umožňuje zaměnit některé informace o útočníkovi. Tento nástroj je dostupný ve verzi 2.5.1, použit byl jako čtrnáctidenní trial (max. 4 útoky, max. 10 000 požadavků během jednoho útoku) [26]. Vytvořen byl firmou SocketSoft a vyžaduje instalaci pod administrátorským účtem. Program umožňuje nastavit či zadat: Target URL Uvádí se ve tvaru http://host:port/. User agenta Tato volba nabízí možnost podvržení identifikace zdroje (typ prohlížeče a OS). Sockets Určuje množství současně navázaných spojení. Requests Udává počet spojení (požadavků) vyslaných na server. Ověření URL Ověří správnost a dostupnost zadané URL cílového serveru.
23
Po ukončení útoku program zobrazí přehledný report obsahující informace o parametrech útoků a jeho výsledcích, jakými jsou např. celkový počet vyslaných požadavků, či jejich množství za jednu sekundu. Natavení maximálních hodnot útoku bylo ovlivněno vlastnostmi zkušební verze, upravena proto byla pouze hodnota „Sockets“ na 150, vyšší hodnota byla příčinou pádu nástroje. Analýza datového proudu Útok není ovlivněn předchozí komunikací, požadavky vyslané na server se překrývají, nečeká se na dokončení předchozí komunikace. Číslo zdrojového portu je vybráno náhodně z intervalu <1025 - 5000>. Zdrojové porty jsou poté inkrementovány o 1, a to do té doby, dokud není dosaženo maxima (5000). Poté se pokračuje od hodnoty 1025. Požadavky na webový server odpovídají legitimní komunikaci. Nejprve je navázáno spojení (SYN, SYN + ACK, ACK). Poté útočník zasílá HTTP GET požadavek (s podvrženým user agentem zvoleným při nastavení parametrů útoku), na který server odpoví zasláním HTML dat. Komunikace je následně oběma účastníky ukončena, server nastavuje příznak FIN již společně se zaslanými HTML daty, útočník zasílá paket s příznaky FIN + ACK, na což server reaguje ACK paketem. Vzhledem k tomu, že byl tento nástroj použit jako čtrnáctidenní trial s omezenými, výše uvedenými parametry útoku, bylo možné provést útok jen po kratší dobu, než je stanovena v sekci 3.2 Postup testování nástrojů.
3.5. Good Bye Tento nástroj provádí DoS útok typu TCP connection flood, proto nezaměňuje zdrojovou IP adresu, a je tedy snadné určit pravý zdroj útoku. Tento nástroj, který je aktuálně ve verzi 5.2, umožňuje útok na více webových serverů, či jejich specifických stránek. Jiná nastavení nejsou možná. Z tohoto důvodu byla provedená měření s nastavenými výchozími, maximálními a fixními parametry totožná. Analýza datového proudu Během útoku jsou postupně vytvářena jednotlivá spojení na server, kdy je číslo zdrojového portu vybráno náhodně z intervalu <49157; 65534>. Zdrojové porty jsou poté
24
inkrementovány o 1 do doby dosažení maxima ve výši 65534. Po něm se pokračuje od hodnoty 49157. Nejprve je navázáno spojení (SYN, SYN + ACK, ACK). Teprve poté následuje vytvoření dalšího spojení s inkrementovaným číslem zdrojového portu. Po navázání spojení útočný nástroj reaguje dvěma způsoby. Jednou z reakcí je, že tento nástroj neodešle žádný další paket (např. očekávaný HTTP GET), na což server po vypršení timeoutu zareaguje RST paketem. Druhou reakcí je zaslání paketu s příznaky PSH a ACK bez protokolu vyšších vrstev. Na to server odpoví stavovým kódem 400 Bad Request a připojuje příznak FIN. Útočný nástroj potvrdí ukončení spojení ze strany serveru, avšak sám spojení stále drží, server po vypršení timeoutu proto zasílá RST. Analýza výkonu a paketového provozu na síti Za dobu útoku bylo přeneseno v průměru 20 585 paketů, nejedná se proto o příliš invazivní útočný nástroj, ale spíše o nástroj, který generuje velmi malý datový tok a který není ve srovnání s ostatními nástroji tohoto typu příliš nápadný, čemuž napomáhá i rozdílná reakce na navázané spojení. Nástroj značně vytěžuje CPU útočného počítače, avšak dopad na CPU serveru je minimální (viz Graf 4 a Graf 5).
Graf 4: Využití CPU na útočníkově stroji při použití nástroje Good Bye 5. 2
Graf 5: Využití CPU na serveru při použití nástroje Good Bye 5. 2
Tomuto nástroji se podařilo dosáhnout velmi vysokých hodnot (až 2952) v počtu maximálního množství navázaných spojení (viz Graf 6), nástroj je proto vhodný používat pro útoky zaměřené právě na množství spojení (connection flood attacks).
25
Graf 6: Množství navázaných spojení během útoku nástrojem Good Bye 5. 2
3.6. Janidos Janidos je nástroj sloužící pro provedení DoS útoku typu HTTP GET flood používající modifikované HTTP GET pakety k falešné záměně informací o útočníkovi. Nástroj Janidos existuje ve dvou edicích: strong (placená) a weak (volně dostupná). Testy probíhaly na Janidos weak edition. Tento nástroj umožňuje nastavit: Adresu cíle Uvádí se buď IP adresa, nebo URL. Bot Definuje maximální počet současně udržovaných spojení. Timeout Určuje dobu, na jejímž konci je navázané spojení ukončeno. Získání potvrzení o doručení paketů V případě, že není zapnuta tato možnost, jsou jednotlivé útočníkovy pakety odesílané co nejrychleji, nehledě na reakce serveru. Parametry HTTP - User agent (Firefox, Internet Explorer...) - Accept – object (Image/gif …) - Accept language (en, de, cz …) - Connection (Keep-Alive, Keep-Connection, Keep-RequesID, Keep-Valid) - Full request URI 26
Při nastavování maximálních hodnot útoku je potřeba vzít v potaz povahu HTTP GET flood útoku. Ten se snaží vytěžovat zdroje cílového systému a spotřebovávat šířku pásma. Z toho důvodu nebyla použita volba „získání potvrzení o doručení paketů“, timeout byl snížen na hodnotu 5 ms. Hodnota „Bot“ byla nastavena na své maximum (1000). Analýza datového proudu Během útoku jsou postupně vytvářena jednotlivá spojení na server, kdy je číslo zdrojového portu vybráno náhodně z intervalu <49157; 65534>. Zdrojové porty jsou poté inkrementovány o 1 do doby dosažení maxima (65534). Následně se pokračuje od hodnoty 49157. Nejprve je navázáno spojení (SYN, SYN + ACK, ACK). Po navázání spojení útočný nástroj zasílá syntakticky špatný HTTP GET paket (nesplňuje požadavek na název hlavičky definovaný v RFC 2616 [28]) s podvrženými parametry HTTP (viz Obrázek 6). Na to server reaguje stavovým kódem 400 Bad request sdělující, že požadavek nemohl být vyřízen, neboť byl syntakticky nesprávně zapsán. Komunikace je poté řádně ukončena oběma stranami.
Obrázek 6: HTTP GET paket vytvořený programem Janidos weak edition
Výhodou tohoto nástroje je podvrhnutí jazyka v HTTP requestu. V případě detekce DoS útoku na cílovém serveru může server reagovat omezením komunikace pro lokality stanovené dle jazyka uvedeného v útočných paketech. V takovém případě je v tomto nástroji možné zareagovat změnou v nastavení útoku a zmíněnému omezení se tak vyhnout. Analýza výkonu a paketového provozu na síti Tento nástroj generuje poměrně velký traffic. Po dobu jednoho testu bylo přeneseno v průměru 850000 paketů, každý o průměrné velikosti 175 bajtů. Nástroj 27
s nastavenými maximálními parametry značně vytížil útočníkovo CPU (viz Graf 7). Množství navázaných spojení bylo i při nastavení maximálních parametrů nízké (max. 71 spojení).
Graf 7: Využití CPU na útočníkově stanici při nastavení maximálních hodnot v nástroji Janidos weak edition
3.7. Low Orbit Ion Cannon (LOIC) Tento nástroj nabízí provést několik typů DoS útoků, těmi jsou HTTP GET flood, TCP connection flood a UDP flood. Low Orbit Ion Cannon je open source program napsaný v jazyce C#. Existuje pro něj i verze vytvořená v jazyce Java, nebo také JavaScript, verze označovaná jako JS LOIC s cílem provádět útoky z webového prohlížeče [15]. Jedná se o jeden z nejznámějších a nejpoužívanějších nástrojů, který proslul především díky svému uplatnění při útocích prováděných hnutím Anonymous [15] [16]. Tento nástroj umožňuje nastavit: Adresu cíle Uvádí se buď IP adresa, nebo URL Timeout Definuje dobu, na jejímž konci je navázané spojení ukončeno. HTTP Subsite, TCP/UDP zpráva V případě zvolení útoku metodou HTTP je možné specifikovat podsíť. Pokud se jedná o metodu UDP, je možné uvést zprávu přenášenou v těchto paketech.
28
Port Udává číslo portu, na kterém poslouchá cílová služba. Metoda Označuje způsob DoS útoku (HTTP, UDP, TCP). Threads Určuje množství navázaných spojení. Čekání na odpověď Určuje, zdali se bude, či nebude při vytváření nových TCP spojení čekat na odpověď serveru. Tímto lze ovlivnit, bude-li se komunikace překrývat či nikoli. Rychlost útoku Stanovuje rychlost útoku (množství nových spojení za sekundu). Hodnotu není možné definovat číselně, k dispozici je pouze posuvník v rozmezí „faster“ a „slower“. Nástroj LOIC může být spuštěn v tzv. „hivemind“ módu, ve kterém se útočník připojuje k IRC serveru. Tento server poté dokáže vzdáleně ovládat nástroje LOIC umístěné na útočných počítačích. To umožňuje vytvořit botnet a vést vůči cíli distribuovaný DoS útok [15]. Zároveň může být tento nástroj spuštěn s parametrem „hidden“, který zajistí spuštění nástroje bez viditelného GUI (především verze programu LOIC určené pro MS Windows) [27]. Příklad možného spuštění nástroje LOIC: C:\>LOIC.exe /hidden /hivemind adresa.irc.serveru port
Pro maximální efektivitu útoku metodou HTTP byl snížen „Timeout“ (25 ms), dále navýšena hodnota „Threads“ (3000). Větší úprava těchto hodnot způsobovala pád nástroje. Čekání na odpověď nebylo žádoucí, neboť účelem útoku bylo přenést co nejvyšší množství paketů a navázat co nejvíce spojení. U metody útoku TCP byl naopak „Timeout“ navýšen (9000), neboť je zde žádoucí prodloužit dobu, po kterou je spojení udržováno. Pro UDP metodu útoku je vhodné do přenášené zprávy vložit co největší množství znaků (při testech bylo použito 200 znaků), aby došlo k navýšení velikosti přenášených dat.
29
I. Metoda HTTP Analýza datového proudu Číslo zdrojového portu je vybráno náhodně z intervalu <49157; 65534>. Zdrojové porty jsou poté inkrementovány o 1, dokud není dosaženo maxima (65534), po němž se pokračuje od hodnoty 49157. Komunikace se serverem je zahájena dvěma způsoby v závislosti na tom, zda je či není zapnuto „Čekání na odpověď“. V případě, že tato volba aktivní není, útočný nástroj vytváří hromadně nová spojení (pakety s příznakem SYN), aniž by čekal na odpověď od serveru (SYN+ACK). V případě, že tato volba aktivní je, jsou jednotlivá spojení vytvářena postupně, čeká se na odpověď od serveru. Jakmile je spojení navázáno (SYN, SYN + ACK, ACK), útočník zasílá špatně vytvořený HTTP GET požadavek (nevyplňuje request URI). Na ten server odpoví zasláním HTTP paketem se stavovým kódem 400 Bad Request a s příznakem FIN. Útočník potvrzuje ukončení a v dalším paketu posílá serveru reset. Analýza výkonu a paketového provozu na síti Traffic generovaný tímto nástrojem je ve srovnání s obdobnými nástroji průměrný. Nástroj nezpůsobuje nikterak výrazné vytížení útočníkova CPU, čímž mu umožňuje bezproblémový chod počítače i v době útoku (viz Graf 8). V případě, že je nástroj spuštěn s výše zmíněným parametrem „hidden“, není pro běžného uživatele na první pohled patrné, zdali je nástroj na počítači vůbec spuštěný ani to, zda vyvíjí nějakou útočnou aktivitu. Z tohoto chování je proto patrné, že tento nástroj se nespoléhá na maximální využití zdrojů, ale spíše na množství strojů zapojených do útoku, jejich bezproblémový chod a minimální rozpoznání běhu tohoto nástroje uživateli.
Graf 8: Využití CPU na útočníkově stroji při použití nástroje LOIC
30
II. Metoda TCP Analýza datového proudu Stejně jako u metody HTTP není útok provedený tímto nástrojem ovlivněn předchozí komunikací, požadavky vyslané na server se překrývají, nečeká se na dokončení předchozí komunikace. Totožným způsobem probíhá výběr zdrojových portů i navázání komunikace. Hlavní rozdíl mezi metodou TCP a HTTP spočívá v tom, že po navázání komunikace útočník již žádné další pakety (HTTP) neposílá. Nejedná se tedy o HTTP GET flood, jako tomu je u první metody, ale o TCP connection flood. Analýza výkonu a paketového provozu na síti Množství navázaných spojení odpovídá číslu zadaném do pole „threads“, vytížení CPU na stroji útočníka není při použití této metody již tak nízké jako u metody HTTP.
III. Metoda UDP Analýza datového proudu Nástroj postupně na server odesílá UDP pakety obsahující ve své datové části text zadaný do pole „UDP zpráva“. Datová část UDP paketu je proto vždy stejná a neustále se opakuje, proto při hloubkové paketové inspekci (Deep Packet Inspection) je tento útok jednoduše detekovatelný. Čísla zdrojových portů jsou inkrementována a použita pro náhodné množství paketů, což oproti nástrojům požívajícím pevné množství paketů (SYN flood) způsobuje těžší detekci tohoto útoku. Analýza výkonu a paketového provozu na síti Při použití této metody nástroj výrazně zatěžuje útočníkovo CPU, avšak to je na serveru nízké.
3.8. QSlowloris QSlowloris je spustitelný nástroj v prostředí OS Windows, vytvořený jako obdoba k nástroji (perlovému skriptu) Slowloris napsaného Robertem „RSnake“ Hansenem [21].
31
Qslowloris je určen k provedení DoS útoku typu Slowloris popsaného v sekci 2.2. Zde je rovněž uvedeno, že tento nástroj není efektivní na všech typech webových serverů, včetně IIS7 použitého v našem testovacím prostředí [21]. Vzhledem ke skutečnosti, že prvotní měření neodrážela funkčnost a efektivitu tohoto nástroje, bylo bezpředmětné tento nástroj v námi použitém prostředí dále testovat.
3.9. Rocket Nástroj Rocket patří do skupiny DoS útoků provádějících ICMP flood pomocí ICMP Echo Requests paketů obsahujících ještě data v těle paketu. Tento nástroj umožňuje nastavit: Adresu cíle Data Jedná se o text vložený do datové části ICMP paketu Počet vyslaných paketů Timeout Pro nastavení maximálních hodnot útoku bylo potřeba co nejvíce navýšit počet vyslaných paketů (50000) a velikost textu vloženého do datové časti paketů (200 znaků). Analýza datového proudu Nástroj postupně generuje a odesílá ICMP Echo Requests paket směrem k oběti. Jakmile obdrží odpověď, generuje a odesílá další takovýto paket. Následující paket se liší od předcházejícího v sekvenčním čísle, které je postupně inkrementováno, a to až do hodnoty 65535, poté se začíná od 0. Odesílaný ICMP paket není složen pouze z hlavičky, ale obsahuje navíc tělo přenášející data. Ta jsou tvořena textem zadaným do pole „Data“ při počátečním nastavování nástroje (viz Obrázek 7). Tímto textem je zároveň možné ovlivňovat velikost odesílaného ICMP paketu, avšak na základě tohoto opakujícího se textu může být útok snadno detekován pomocí hloubkové paketové inspekce (Deep Packet Inspection).
32
Obrázek 7: Paket vytvořený nástrojem Rocket obsahující datovou část s vloženým textem
Analýza výkonu a paketového provozu na síti Traffic generovaný tímto nástrojem je možné do jisté míry ovlivnit délkou zadaného textu do pole „Data“. Nástroj vytížil spíše útočníkův stroj (viz Graf 10), zátěž na cílovém serveru byla výrazně nižší (viz Graf 9).
Graf 10: Využití CPU na útočníkově stroji při použití nástroje Rocket
Graf 9: Využití CPU na cílovém stroji při použití nástroje Rocket
3.10. Simple DoS Tool Simple DoS Tool je nástroj provádějící útok typu TCP connection flood. Tento nástroj umožňuje nastavit: Adresu cíle Uvádí se buď IP adresa, anebo URL.
33
Port Definuje číslo portu, na kterém poslouchá cílová služba. Socks Jedná se o množství navázaných spojení. Pro maximální efektivitu útoku byla nastavena hodnota „Socks“ na 2000, její další navýšení způsobovalo pád programu. Analýza datového proudu Během útoku jsou postupně vytvářena jednotlivá spojení na server, přičemž je číslo zdrojového portu vybráno náhodně z intervalu <49157; 65534>. Zdrojové porty jsou poté inkrementovány o 1, až do dosažení maxima (65534). Poté se pokračuje od hodnoty 49157. Nejprve je navázáno spojení (SYN, SYN + ACK, ACK). Po něm útočný nástroj neodesílá očekávaný HTTP GET, ale spojení rovnou ukončuje paketem s příznakem FIN. Analýza výkonu a paketového provozu na síti Nástroj s nastavenými maximálními parametry značně vytížil CPU serveru (viz Graf 12) a zároveň jako jediný z testovaných nástrojů způsobil mírný nárůst ve využití RAM (viz Graf 11), a to jak na straně útočníka, tak na straně serveru. Množství navázaných spojení odpovídalo hodnotě uvedené v poli „Socks“ a bylo po celou dobu útoku téměř konstantní.
Graf 12::Využití CPU na serveru při nastavení maximálních hodnot v nástroji Simple DoS Tool
Graf 11: Využití RAM na serveru při nastavení maximálních hodnot v nástroji Simple DoS Tool
34
3.11. SYN Flood DoS Jak už napovídá název, jedná se o nástroj provádějící útok typu SYN flood s podvrhnutou zdrojovou IP adresou. Tento nástroj umožňuje nastavit: Adresu cíle Uvádí se buď IP adresa, anebo URL. Port Definuje číslo portu, na němž poslouchá cílová služba. Protože tento nástroj neumožňuje žádné další úpravy vlastností útoku, byla měření s nastavenými výchozími, maximálními a fixními parametry stejná.
Analýza datového proudu Při zahájení útoku začíná tento nástroj vysílat směrem k serveru TCP SYN pakety s podvrženou a náhodně zvolenou zdrojovou IP adresou (viz Obrázek 8). Jako zdrojový port je použita náhodná hodnota, která se opakuje přesně pro 116 SYN paketů. Poté je hodnota zdrojového portu opět obměněna a použita pro dalších 116 SYN paketů.
Obrázek 8: Část datového toku vygenerovaného programem SYN Flood DoS
Protože útočník místo své zdrojové IP adresy uvádí náhodnou adresu, způsobuje tak, že server odpovídá na tuto náhodnou adresu patřící stanici, která ale neočekává navázání spojení se zmíněným serverem. Tato stanice nemá potřebu odpovědět, a proto se server žádné odpovědi nedočká (ACK paketu). Analýza výkonu a paketového provozu na síti Množství navázaných spojení bylo z podstaty tohoto typu útoku nulové. Během spuštění nástroje došlo k výraznému vytížení útočníkova CPU, avšak to bylo na serveru téměř beze změn. Naměřené hodnoty nasvědčují tomu, že lze tento typ útoku 35
považovat již za překonaný, nástroj způsobuje větší škodu spíše útočníkovi samotnému.
3.12. UDP flooder 2.0 Nástroj UDP flooder patří do skupiny DoS útoků provádějících záplavu UDP pakety. Tento nástroj umožňuje nastavit: IP/hostname Uvádí se buď IP adresa, nebo URL cílového serveru. Port Udává číslo portu, na kterém poslouchá cílová služba. Maximální doba útoku v sekundách Umožňuje zadat dobu útoku. Neomezenou hodnotu je možné určit zadáním řetězce „[infinite]“. Maximální počet odeslaných paketů Umožňuje omezit útok pomocí množství odeslaných paketů. Neomezenou hodnotu je možné určit zadáním řetězce „[infinite]“. Rychost Definuje množství odeslaných paketů za sekundu Data Určuje obsah datové části paketu. Zde je možné zvolit náhodná data o určité velikosti, vepsat vlastní text, či načíst data ze souboru. Při nastavování maximálních hodnot útoku byla navýšena rychlost útoku (250 paketů za sekundu) a vybrána náhodná data pro vkládání do datové části paketu o velikosti až 10000 bajtů. Analýza datového proudu Při útoku jsou postupně na server odesílány UDP pakety, přičemž číslo zdrojového portu je po celou dobu útoku stejné. Toto chování může proto napomáhat při detekci útoku provedeném tímto nástrojem. Analýza výkonu a paketového provozu na síti V případě, že je při nastavování nástroje zvolena v sekci data volba vlastního textu či dat ze souboru, generuje tento nástroj souvislý datový proud (viz Graf 13). Pravidel36
né špičky v tomto grafu jsou způsobeny ARP dotazy, které s útokem nesouvisí. Tento nástroj je dobře detekovatelný právě podle neměnného datového proudu. Toto však neplatí pro případ, kdy útočník při nastavování nástroje v sekci data zvolí možnost náhodných dat, protože poté je velikost datového proudu různá. Tento nástroj jako jediný výrazným způsobem vytížil RAM na serveru (viz Graf 14). To se mu podařilo při nastavení maximálních hodnot útoku, a to díky velké datové části paketů, které musely být během přenosu fragmentovány.
Graf 13: Datový proud generovaný nástrojem UDP flooder
Graf 14: Vytižení RAM na serveru
37
3.13. Další nástroje pro DoS útok Protože je množství použitelných nástrojů pro DoS útok poměrné velké, bylo po konzultaci s vedoucím diplomové práce vybráno pouze několik nástrojů. Při jejich volbě hrála hlavní roli rozšířenost, obecná obliba, ale i možnost demonstrace různých druhů útoku. Zde jsou uvedeny další nalezené nástroje určené k provedení různých typů DoS útoku a použitelné v OS Windows:
BlackOut
BunkerBuster
CrazyPing v1.1
D.NET DDoSeR
DarkShell
GB DDoSeR v3
Hart4Flooder
Host Booter v5.7
Longcat
Malevolent DDoSeR
MP-DDoser v 1.3
Panther2
ProDoS
PyRAEP
Rok/i/ts
Silent-DDoSer
Try2ddos
UDP Unicorn
Warbot
Zero'z server attack
38
4. Srovnání nástrojů pro DoS útok Tato kapitola je zaměřena na srovnání používaných nástrojů pro DoS útok.
4.1. Nástroje pro DoS útoky Následující tabulka obsahuje přehled nástrojů a typy útoků, které je jimi možné provést. U nástrojů, které nebyly testovány, byl typ útoku určen na základě zběžného testu či dohledaných informací. Na tyto informace je problematické se odkazovat, neboť jejich dostupnost na webu je v řádu několika dní. TCP connection flood BlackOut BunkerBuster CrazyPing v1.1 D.NET DDoSeR DarkShell Donut HTTP flooder DoSHTTP GB DDoSeR v3 GoodBye Hart4Flooder Host Booter v5.7 Janidos LOIC Longcat Malevolent DDoSeR MP-DDoser v 1.3 Panther2 ProDoS PyRAEP QSlowloris Rocket Rok/i/ts Silent-DDoSer Simple DoS tool SYN flood Try2ddos UDP flood UDP Unicorn Warbot Zero'z server attack
P P P P P P
HTTP GET flood
SYN flood
P P P P P P
P P
P
P
P
P
P
P
P
P
P
P
P
P
P P
P
P P P P P
P
P
P
P P P
P P
Slowloris
P
P P P P
P
UDP flood ICMP flood
P P
P
P
P P P
Tabulka 1: Nástroje pro DoS útok a typy útoků jimi realizovatelné
39
4.2. Vlastnosti Při práci s testovanými nástroji, jejich počátečním nastavováním a prvotním uvedením do stavu, kdy by s nimi bylo možné provést útok, bylo možné pozorovat následující vlastnosti: Dostupnost Nejznámější a nejpoužívanější nástroje lze celkem bez obtíží najít a stáhnout z internetu (LOIC). Méně používané nástroje a aplikace pro DoS útok (Good Bye) vyžadují delší dobu strávenou hledáním, či přímou žádost vznesenou na odborných či tímto směrem zaměřených fórech. Obecně ale platí, že tyto nástroje jsou poměrně jednoduše dostupné. Dokumentace Přestože je řada nástrojů dlouhodobě používaná a existuje pro ně velké množství návodů, rad a postupů, jedná se především o informace zaměřené na samotné provedení útoku. Podrobné popisy práce programů, jejich vlastnosti, či zdrojový kód pro nástroje spustitelné v OS Windows však chybí. Jednoduchost, přehlednost, grafická nevzhlednost Nástroje pro provedení různých typů DoS útoků jsou zpravidla graficky nevzhledné, avšak přehledné a velice jednoduché na ovládání, práci s nimi zvládne i nezkušený uživatel. I v případě, kdy byl nástroj lokalizován do neznámého jazyka pro uživatele, bylo ovládání zcela intuitivní a útok bylo možné provést i bez znalosti použitého jazyka. Rychlé a přímé spuštění Převážná většina těchto nástrojů je ve formě spustitelného souboru (Simple DoS tool, Rocket, Janidos), a proto nevyžadují instalaci. Pro malé množství nástrojů je však instalace nezbytná (DoSHTTP). Výjimečná je i možnost ovládání nástroje z příkazové řádky (LOIC, SYN flood). Doba startu nástrojů je minimální. Nemožnost uložení konfigurace Nástroje neumožňují uložení nastavených parametrů. Většina nástrojů je sice velmi jednoduchá na ovládání a provedení útoku, avšak má-li být útok úspěšný a efektivní, má na to správné nastavení parametrů velký vliv. Možnost uložení konfigurace by proto přispěla k efektivnějšímu využívání nástrojů. Detekce antivirem Nástroje pro DoS útok je problematické spouštět na počítači s běžícím antivirovým programem, ten je totiž často detekuje jako nebezpečný a zabraňuje jejich spuštění. 40
Testované nástroje byly prověřeny řadou antivirových programů pomocí hromadného online scanneru VirusTotal dostupného na adrese www.virustotal.com. Výsledky čtyřiceti dvou antivirových programů zobrazuje Graf 15. 42 36
39
38 34 30
27
30 24
19
18 12 6
2
1
2
3
0 Donut DoSHTTP GoodBye Janidos HTTP flooder
LOIC
Qslowloris Rocket
Simple SYN flood UDP flood DoS tool
Graf 15: Množství antivirových programů klasifikujících uvedený nástroj pro DoS útok jako nebezpečný či škodlivý
4.3. Paketový provoz Tato sekce shrnuje a hodnotí provoz na síti vyvolaný útokem při použití testovaných nástrojů. Zdrojem dat pro následující grafy jsou tabulky uvedené v příloze D. Tyto tabulky sumarizují výsledky provedených testů. Pro záplavové nástroje na DoS útok platí, že se během útoku snaží uspět díky tomu, že v co nejkratší době vygenerují a odešlou co nejvyšší počet paketů či množství dat. Jak demonstruje Graf 16, pro takovéto útoky se z hlediska množství paketů jako nejvhodnější jeví nástroj Simple DoS tool. Výchozí
Fixní
Maximální
3000000 2500000 2000000 1500000 1000000 500000 0
Graf 16: Množství přenesených paketů
41
Nástroje, které neumožňovaly žádnou úpravu parametrů útoku (Good Bye, SYN flood) mají z tohoto důvodu při nastavení výchozích, fixních a maximálních hodnot totožné výsledky. Rovněž množství paketů u nástrojů neumožňujících úpravu nastavení (Good Bye, SYN flood) je výrazně nižší. Nástroj DoSHTTP sice disponuje řadou nastavení, avšak naměřené výsledky jsou nízké z důvodu existence omezení u testované zkušební verze. U nástrojů provádějících connection flood útok (Good Bye, LOIC s metodou TCP, Simple DoS tool) se očekává velké množství paketů, neboť jsou použity především pakety pro navázání TCP spojení (SYN, SYN+ACK, ACK), které mají poměrně malou velikost. U nástroje Simple DoS tool se toto chování potvrdilo, kdežto u nástroje Good Bye nikoli. Příčinou je odlišný přístup obou nástrojů k útoku. Zatímco nástroj Simple DoS tool udržuje svoje parametry a vlastnosti po celou dobu útoku téměř stejné, nástroj Good Bye se snaží svůj útok stupňovat a po dosažení svého maxima ustává. Nástroj LOIC s metodou TCP nevytvářel takové množství spojení jako Simple DoS tool, spíše se snažil navázat méně spojení, ale na delší dobu, což mu umožňuje nastavení hodnoty „Timeout“ při úpravě parametrů útoku. Protože množství přenesených dat bylo u nástroje UDP flooder několikanásobně vyšší než u ostatních nástrojů, bylo pro lepší názornost použito v Graf 17, zobrazujícího množství přenesených dat, logaritmické měřítko. Výchozí
Fixní
Maximální
1000000 100000 10000 1000 100 10 1
Graf 17: Množství přenesených dat (v bajtech)
Z Graf 17 je patrné, že pokud je žádoucí navýšit spíše množství přenášených dat, je ideální použít nástroje LOIC s metodou UDP či UDP flooder, avšak s nastavenými maximálními parametry, neboť tyto nástroje docílily tohoto chování zadáním velkého množství dat do datové části UDP paketu. Poměrně velké množství dat bylo rovněž přeneseno při použití nástrojů Donut HTTP flooder, Janidos a LOIC s metodou HTTP, a to z toho důvodu, že tyto nástroje 42
provádějí HTTP GET flood útok, který při každém spojení přenáší HTML data z webového serveru. Protože na testovaném webovém serveru byla dostupná pouze úvodní stránka, která je součástí výchozí instalace IIS 7, byla velikost přenášených dat v každém spojení nízká. U nástrojů, které posílaly syntakticky špatný HTTP GET požadavek (Janidos, LOIC), bylo množství přenášených dat ještě nižší, neboť server odpovídal pouze chybovým hlášením. Použití syntakticky špatných HTTP GET požadavků může napomoci při detekci útoku, neboť množství paketů se stavovým kódem 400 Bad Request skokově vzroste. Ze srovnání předchozích dvou grafů je zřejmé, že průměrná velikost přenášených paketů je nejvyšší pro nástroje UDP flood a LOIC s metodou UDP, což je opět způsobeno zadáním a přenášením velkého množství dat v každém paketu. Dobré výsledky neočekávaně zaznamenal i nástroj Rocket provádějící ICMP flood útok. Těch bylo dosaženo přidáním datové části do ICMP Echo Requests paketů, které v závislosti na délce vloženého textu do přidané části výrazně navýšily svou velikost. Z předchozích dvou grafů je patrné, že u většiny nástrojů závisí množství paketů a dat na nastavených parametrech útoku. Proti výchozímu nastavení může být výsledný efekt až několikanásobně výraznější (UDP flooder, Janidos).
4.4. Výkon Některé nástroje se místo zahlcení linek snaží vytížit zdroje cílového systému. Toto chování zachycuje Tabulka 2. V Tabulka 2 jsou zaznamenané i hodnoty naměřené na útočícím stroji, protože i ty hrají při útoku svou roli. Z důvodu, že převážná většina útočníků nemá na DoS útoky vyhrazený specifický hardware a vede je z běžně používaných počítačů, je proto pro útočníky nežádoucí vytížit svůj stroj do takové míry, že by docházelo k jeho výraznému zpomalení, či dokonce „zasekávání“. Dalším důvodem, kvůli kterému je pro útočníka žádoucí nízké vytížení stroje, je nenápadnost chodu nástroje, neboť v případě jeho spuštění na napadeném a infiltrovaném počítači „nic netušící“ oběti, je potřeba takovýto nástroj dostatečně skrýt a téměř na něj neupozorňovat. Výše uvedené důvody mohou rovněž napomoci při určování typu útočníka a charakteru útoku.
43
Vytížení na straně útočníka (%)
Vytížení na straně serveru (%)
Výchozí
Fixní
Maximální
Výchozí
Fixní
Maximální
Donut HTTP flooder
56
56
73
61
61
75
DoSHTTP
52
52
54
43
43
44
Good Bye
62
62
62
6
6
6
Janidos
53
53
77
22
22
38
HTTP
21
14
22
16
9
13
TCP
64
51
66
3
3
4
UDP
70
72
76
5
6
6
Simple DoS Tool
81
82
86
79
80
81
SYN flood
63
63
63
2
2
2
Rocket
50
50
50
8
8
8
UDP flood
64
63
64
4
3
45
LOIC
Tabulka 2: Průměrné vytížení CPU během testování
Z ohledu vytížení útočníkova stroje dopadl nejlépe LOIC s metodou HTTP, který na rozdíl od ostatních testovaných nástrojů způsoboval jen na první pohled těžko rozpoznatelné navýšení zátěže stroje. Toto chování může být důvodem pro oblibu a používání tohoto nástroje útočníky. Z tabulky lze také usoudit, že vytížení serveru způsobily zejména nástroje Donut HTTP flooder, DoSHTTP, Simple DoS Tool či Janidos, což jsou nástroje, které během útoku generují velké množství paketů (kromě DoSHTTP). Tato úvaha zároveň vedla k prozkoumání vlivu programu Wireshark na zatížení CPU, protože s rostoucím množstvím paketů přenesených během útoku roste i množství paketů zachycených a zpracovaných tímto programem. Přestože se tato úvaha potvrdila, byl rozdíl testů na vytížení CPU prováděných s vypnutým a zapnutým programem Wireshark pouze v řádu jednotek procent z naměřených hodnot, a proto byla tato navýšení zanedbána. Zároveň ale toto chování upozornilo na to, že efekt DoS útoku může mírně narůst i samotným logováním, které navyšuje využití CPU (zpracování logu) či počet diskových operací (zápis logu). Při útocích typu ICMP, SYN a UDP flood nedošlo téměř k žádnému navýšení zátěže. Nástroj LOIC s metodou UDP vytížil CPU serveru mezi pěti a šesti procenty, nástroj Rocket dosáhl vytížení osmi procent a nástroj Rocket velmi nízkých dvou procent. UDP flooder rovněž vytížil CPU serveru jen minimálně, avšak při nastavení
44
maximálních parametrů útoku se mu podařilo dosáhnout 45% zátěže CPU, a to díky velké fragmentaci paketů. Na základě výsledků testování bylo zjištěno, že nástroje nezpůsobují žádné navýšení v množství využití RAM, a to jak na cílovém serveru, tak na stroji útočníka. Výjimkou je nástroj UDP flooder, kterému se toto podařilo díky velké datové části paketů, které tak musely být během přenosu fragmentovány. Nepatrný narůst ve využití RAM způsobil i nástroj Simple DoS Tool, a to využitím velkého paketového provozu.
4.5. Datový proud Jak ukazuje Tabulka 3, nejčastěji se využívaly porty z intervalu <49157, 65534> , tedy porty dynamické a soukromé. Pouze nástroj DoSHTTP využil registrovaných portů, což může napomoci při jeho detekci, neboť se jeho komunikace výrazně liší od té specificky běžící na těchto registrovaných portech. První hodnota portu byla vždy vybrána náhodně, poté se navyšovala o jedna. Při dosažení maxima intervalové hodnoty se pokračovalo počáteční hodnotou. Využívané zdrojové porty
Způsob generování zdrojových portů
TCP
UDP
Donut HTTP flooder
<49157, 65534>
-
inkrementují se
DoSHTTP
<1024, 5000>
-
inkrementují se
Good Bye
<49157, 65534>
-
inkrementují se
Janidos
<49157, 65534>
-
inkrementují se
HTTP
<49157, 65534>
-
inkrementují se
TCP
<49157, 65534>
-
inkrementují se
UDP
-
<49157, 65534>
Simple DoS Tool
<49157, 65534>
-
inkrementují se
SYN flood
<49157, 65534>
-
náhodně, použito pro 116 paketů
Rocket
-
-
-
UDP flood
-
<49157, 65534>
jeden port použit pro všechny pakety
LOIC
inkrementují se, použito pro náhodné množství UDP paketů
Tabulka 3: Rozsah a způsob generování zdrojových portů
45
Účelem některých nástrojů je zahlcení cílového systému velkým množství spojení (connection flood attacks). Toto chování reflektuje Tabulka 4. Počet spojení je možné u většiny nástrojů přímo nastavit (viz Kapitola 3). Přestože nástroj Good Bye dosáhl v tomto srovnání nejvyšší hodnoty, jednalo se pouze o krátkodobé maximum. Nástroje Simple DoS Tool, Donut HTTP flooder či DosHTTP sice takovéhoto maxima nedosáhly, avšak naměřené množství navázaných spojení bylo po celou dobu útoku téměř neměnné. Maximální počet paralelních spojení během útoku výchozí
fixní
maximální
Donut HTTP flooder
100
100
600
DoSHTTP
100
100
150
Good Bye
2952
2952
2952
Janidos
32
65
71
HTTP
462
1527
2384
TCP
10
100
1211
UDP
-
-
-
Simple DoS Tool
300
100
2000
SYN flood
0
0
0
Rocket
-
-
-
UDP flood
-
-
-
LOIC
Tabulka 4: Maximální množství navázaných spojení během útoku
4.6. Dostupnost služeb Test stavu spojení nezaznamenal během všech útoků žádné změny, ztrátovost paketů byla nulová. Odezva serveru byla téměř konstantní, a to i při útocích, jejichž hlavním cílem bylo její zhoršení. Webový server byl po celou dobu všech útoků dostupný. Naměřené hodnoty nasvědčují tomu, že pro Denial of Service útoky je k dosažení nedostupnosti služby nezbytné při dnešních velikostech linek útok distribuovat.
4.7. Použití Na základě výsledků testů je možné o nástrojích pro DoS útok obecně konstatovat, že nejsou všestranně zaměřené, specializují se na konkrétní typ útoku, či vlastnost a 46
ostatní chování je zpravidla nezajímá. Z tohoto důvodu se hodí různé nástroje pro různé útoky. Nástroj Simple DoS tool je vhodné použít pro connection flood útoky, které se snaží zahltit cílový systém obrovským množstvím nově příchozích požadavků na spojení. Zároveň se tento nástroj hodí k vytížení CPU serveru. UDP flooder a LOIC s metodou UDP jsou nástroje, které se vyplatí použít při útocích vyčerpávajících šířku pásma. Nástroj Donut HTTP flooder sice nedosahuje takového množství přenesených dat, jakého je možné vyvolat programy UDP flood a LOIC s metodou UDP, avšak v případě, kdy není možné při snaze o vyčerpání šířky pásma použít UDP pakety, je účinný právě tento nástroj využívající TCP a efektivně provádějící HTTP GET flood útok. Pokud bude cílem útoku dosažení maximálního množství současně navázaných spojení, je pro toto chování nejvhodnější použít nástroj Good Bye. Pro útoky, které potřebují upravovat parametry HTTP, jakými jsou například akceptovaný jazyk, či user agent, je dobré použít nástroj Janidos. Nástroj LOIC s metodou HTTP je vhodné použít v případě, kdy je vyžadováno nízké vytížení útočícího stroje, či nenápadnost jeho běhu. Vzhledem k tomu, že je útok typu TCP SYN flood dobře známý, poměrně podrobně zdokumentovaný a existuje proti němu řada obranných technik, není překvapením, že nástroj SYN flood nedosáhl při srovnávání s ostatními nástroji v žádné charakteristice výrazně lepších hodnot. Nástroj Rocket svědčí o tom, že útoky tohoto typu nejsou při dnešních velikostech linek použitelné, čemuž odpovídá i maximální naměřené množství přenášených dat, které se pohybuje v řádu desítek kilobajtů za sekundu.
47
5. Závěr Cílem této práce byla analýza a srovnání nástrojů provádějících Denial of Service útok, která by napomohla k lepší obraně, detekci či prevenci proti tomu útoku. Uvedeného cíle této práce by nebylo možné dosáhnout bez vytvoření souhrnu znalostí o DoS útocích, který sloužil jako nezbytný informační základ pro další kapitoly. Pro testování nástrojů provádějící DoS útoky bylo nutné nejprve vytvořit metodiku testování. Ta zahrnuje jednotlivé kroky od instalace nástroje po analýzu naměřených dat. Pomocí výše zmíněné metodiky byly realizovány testy jednotlivých nástrojů. Na jejich základě byla provedena analýza datového proudu, výkonu a paketového provozu na síti. Z testů byly rovněž určeny typy DoS útoků, které tyto nástroje provádí, specifické vlastnosti nástrojů, jejich možná nastavení a úpravy parametrů útoku. Důležitou součástí diplomové práce je i obecný přehled nástrojů a typů DoS útoků jimi realizovatelné. Na základě provedené analýzy byly testované nástroje srovnány, a to z hlediska paketového provozu, výkonu, datového proudu a dostupnosti cílových služeb. Testované nástroje byly charakterizovány pozorovanými vlastnostmi a doporučeny pro různé typy útoků.
48
Literatura [1] SPECHT, Stephen M.; LEE, Ruby B. DistributedDenialofService : TaxonomiesofAttacks, Tools, and Countermeasures. In BADER, David A. ; KHOKHAR, Ashfaq A. Proceedingsofthe ISCA 17th International Conference on Parallel and DistributedComputing Systems, September 15-17, 2004, The Canterbury Hotel, San Francisco, California, USA. [s.l.] : [s.n.], 2004. s. 543-550. ISBN 1-880843-52-8. [2] RFC 4732. Internet Denial-of-ServiceConsiderations. [s.l.] : IETF, Prosinec 2006. 38 s. Dostupné z WWW:
. [3] DOULIGERIS, Christos; MITROKOTSA, Aikaterini. DDoS attacks and defense mechanisms: classification and state-of-the-art. ComputerNetworks. 2004, 44, s. 643666. [4] HALLER, Martin. Lupa.cz [online]. 2006 [cit. 2011-07-17]. Seriál Útoky typu DoS. Dostupné z WWW:
. [5] MIRKOVIC, Jelena; DIETRICH, Sven; DITTRICH, David; REIHER, Peter. Internet DenialofService : Attack and Defense Mechanisms. [s.l.] : PrenticeHall PTR, 2004. 400 s. ISBN 0-13-147573-8. [6] PENG, Tao; LECKIE, Christopher; RAMAMOHANARAO, Kotagiri. ProtectionfromDistributedDenialofServiceAttackUsingHistory-based IP Filtering. Proceedingsof IEEE International Conference on Communications. 2003, 1, s. 482--486. [7] KEROMYTIS, Angelos D.; MISRA, Vishal; RUBENSTEIN, Dan. SOS : SecureOverlayServices. In Proceedingsof ACM SIGCOMM. [s.l.] : [s.n.], 2002. s. 61-72. [8] IETF Tools [online]. 2003 [cit. 2011-08-20]. ICMP Traceback Messages. Dostupné z WWW:
. [9] WONG, Tsz-Yeung; WONG, Man-Hon; LUI, Chi-Shing. A PreciseTerminationConditionoftheProbabilisticPacketMarkingAlgorithm. In IEEE Transactions on Dependable and SecureComputing. [s.l.] : [s.n.], 2008. s. 6-21. [10] CHEE, WongOnn; BRENNAN, Tom. H.....t.....t....p....p....o....s....t. In OWASP AppSec DC 2010 [online]. [s.l.] : [s.n.], 2010 [cit. 2011-09-12]. Dostupné z WWW: .
49
[11] Securitytnt [online]. 2007 [cit. 2011-09-17]. DNS AmplificationAttack. Dostupné z WWW: . [12] COLE, Eric. Hackers Beware. FirstEdition. [s.l.] : New Riders Publishing, 2001. 800 s. ISBN 0-7357-1009-0. [13] SCAMBRAY, Joel; MCCLURE, Stuart; KURTZ, George. Hacking bez tajemství. [s.l.] : COMPUTER PRESS, 2003. 612 s. ISBN 80-7226-948-8. [14] SHEVTEKAR, Amey; ANSARI, Nirwan. A Proactive Test BasedDifferentiation : Technique to MitigateLowRate DoS Attacks. In Proceedingsofthe 16th International Conference on Computer Communications and Networks. [s.l.] : [s.n.], 2007. s. 639-644. [15] WARREN, Christina. How Operation Payback Executes Its Attacks. In: Mashable Tech [online]. 9.12.2010 [cit. 2012-03-09]. Dostupné z: http://mashable.com/2010/12/09/how-operation-payback-executes-its-attacks/ [16] MUTTON, Paul. MasterCard attacked by voluntary botnet after WikiLeaks decision. In: Netcraft [online]. 8.12.2010 [cit. 2012-03-09]. Dostupné z: http://news.netcraft.com/archives/2010/12/08/mastercard-attacked-by-voluntarybotnet-after-wikileaks-decision.html [17] Ping Flood. In: Internet Security Systems [online]. [cit. 2012-03-11]. Dostupné z: http://www.iss.net/security_center/advice/Underground/Exploitz/Floods/Ping_Flood /default.htm [18] EDDY, Wesley M. Defenses Against TCP SYN Flooding Attacks. The Internet Protocol Journal [online]. 2006, roč. 9, č. 4 [cit. 2012-03-20]. Dostupné z: http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_94/syn_flooding_attacks.html [19] EDDY, Wesley M. Defenses Against TCP SYN Flooding Attacks. The Internet Protocol Journal [online]. 2006, roč. 9, č. 4 [cit. 2012-03-20]. Obrázek ve formátu JPEG. Dostupné z: http://www.cisco.com/web/about/ac123/ac147/images/ipj/ipj_94/94_syn_fig3_sm.jpg [20] IETF Tools [online]. 2007 [cit. 2012-03-10]. ICMP Traceback Messages. Dostupné z WWW: . [21] Slowloris HTTP DoS. Ha.ckers [online]. © 2001-2012 [cit. 2012-04-21]. Dostupné z: http://ha.ckers.org/slowloris/
50
[22] KRČMÁŘ, Petr. Útok Slowloris aneb plíživé nebezpečí pro web servery. Root.cz[online]. 17. 5. 2011 [cit. 2012-04-21]. Dostupné z: http://www.root.cz/clanky/utok-slowloris-aneb-plizive-nebezpeci-pro-web-servery/ [23] CERT® Advisory CA-1996-01 UDP Port Denial-of-Service Attack. CERT [online]. 8. 2. 1996 [cit. 2012-04-21]. Dostupné z: http://www.cert.org/advisories/CA-199601.html [24] Jaké jsou typy DoS (Denial of Services) útoků. Zive [online]. 5. 7. 2001 [cit. 201204-21]. Dostupné z: http://www.zive.cz/clanky/jake-jsou-typy-dos-denial-of-servicesutoku/sc-3-a-101770/default.asp [25] Denial of Service útoky: reflektivní a zesilující typy. HALLER, Martin. Lupa.cz [online]. 17. 10. 2006 [cit. 2012-04-17]. Obrázek ve formátu GIF. Dostupné z: http://i.iinfo.cz/urs/dns-116039649502504.GIF [26] DoSHTTP 2.5.1: HTTP Flood Denial of Service (DoS) Testing Tool for Windows. Socketsoft [online]. © 2006-2012 [cit. 2012-05-05]. Dostupné z: http://socketsoft.net/products.asp?p=doshttp [27] LOIC (Low Orbit Ion Cannon). VERMA, Deepanker. Infosec institute [online]. 2011 [cit. 2012-05-05]. Dostupné z: http://resources.infosecinstitute.com/loic-dosattacking-tool/ [28] IETF Tools [online]. 1999 [cit. 2012-05-06]. Hypertext Transfer Protocol -HTTP/1.1. Dostupné z WWW: .
51
Příloha A
GUI testovaných nástrojů
Obrázek 9: Donut HTTP flooder 1.4 GUI
Obrázek 10: DosHTTP 2.5.1 GUI
52
Obrázek 11: Good Bye 5.2 GUI
Obrázek 12: Janidos weak edition GUI
53
Obrázek 13: Low Orbit Ion Cannon GUI
Obrázek 14: QSlowloris GUI
Obrázek 15: Rocket
54
Obrázek 16: Simple DoS Tool GUI
Obrázek 17: SYN Flood DoS GUI
Graf 18: UDP Flooder 2.00
55
Příloha B
Skript testující stav spojení # Test stavu spojení: ping-test.ps1 for ($i=1; ; $i++) { Get-Date ping -n 192.168.0.119 sleep 1 }
56
Příloha C
Skript testující dostupnost webového serveru # Test dostupnosti webového serveru: http-test.ps1 for ($i=1; ; $i++) { Get-Date C:\curl.exe --get 192.168.0.119 sleep 5 }
57
Příloha D
Tabulky paketového provozu Celkový Celkový
počet
počet paketů přenesených bajtů
Průměrný Průměrný
Průměrná
počet
počet paketů
velikost
přenesených
za sekundu
paketu
bajtů za sekundu
Donut HTTP flooder
1261629
276837850
3562,1
219,42
781702,32
DoSHTTP
80404
15203636
242,34
189,1
45824
Good Bye
20585
2423763
44,51
118,19
5204,3
Janidos
852531
149757406
2787,04
175,66
489572,42
HTTP
301910
35748129
854,54
190,7
162660,05
TCP
286028
240747244
631
84,32
240747,24
UDP
1113466
82396660
3750,2
74
277565
Simple DoS tool
2410364
137782115
5878,05
57,21
335975,58
SYN flood
18210
1051261
56,9
57,73
3285,9
Rocket
200039
10002394
519,66
50,1
25983,9
UDP flood
342
28418
0,7
83,1
58
LOIC
Tabulka 5: Průměrné hodnoty z naměřených pokusů - nastaveny výchozí hodnoty útoku
Celkový Celkový
počet
počet paketů přenesených bajtů
Průměrný Průměrný
Průměrná
počet
počet paketů
velikost
přenesených
za sekundu
paketu
bajtů za sekundu
Donut HTTP flooder
1261629
276837850
3562,1
219,42
781702,32
DoSHTTP
80404
15203636
242,34
189,1
45824
Good Bye
20585
2423763
44,51
118,19
5204,3
Janidos
852531
149757406
2787,04
175,66
489572,42
HTTP
232054
30249329
540,61
130,35
70741,76
TCP
319217
291633118
64,9
90,82
457669,2
UDP
1430766
91569648
3339
64
213759,5
Simple DoS tool
1255355
71615296
2884,18
57,04
164536,61
SYN flood
18210
1051261
56,9
57,73
3285,9
Rocket
191300
13391005
512,8
70,6
41379,4
UDP flood
30339
1941812
71
64
4548,72
LOIC
Tabulka 6: Průměrné hodnoty z naměřených pokusů - nastaveny fixní hodnoty útoku
58
Celkový Celkový
počet
počet paketů přenesených bajtů
Průměrný Průměrný
Průměrná
počet
počet paketů
velikost
přenesených
za sekundu
paketu
bajtů za sekundu
Donut HTTP flooder
1373963
299074109
4483,72
217,64
975624,86
DoSHTTP
80404
15203636
242,34
189,1
45824
Good Bye
20585
2423763
44,51
118,19
5204,3
Janidos
1309752
216087043
3411,02
166,29
568620,62
HTTP
430084
56275048
853,07
130,84
111622,21
TCP
402105
360286080
65,7
89,6
735276
UDP
2039547
617520000
4150
310
1235040
Simple DoS Tool
2848989
162843034
7810,44
57,15
446430,74
SYN flood
18210
1051261
56,9
57,73
3285,9
Rocket
182714
21374888
506,02
116,98
59197,1
UDP flood
880097
1276191952
2884,64
1450,1
4182901,5
LOIC
Tabulka 7: Průměrné hodnoty z naměřených pokusů - nastaveny maximální hodnoty útoku
59