|
1. Základy DDoS útokov DDoS (Distributed Denial of Service) útoky patria medzi najsilnejšie a najťažšie sa bránia, pretože hlavným účelom DDoS útokov je zabrániť určenému cieľu poskytovať bežné služby alebo dokonca zmiznúť z internetu. DDoS možno jednoducho rozdeliť do troch kategórií podľa spôsobu ich iniciovania. Prvá kategória vyhráva silouMasívne dátové pakety sa hrnú zo všetkých kútov internetu, blokujú vstup do IDC, čím znemožňujú rôzne výkonné hardvérové obranné systémy a rýchle a efektívne núdzové procesy. Typickými príkladmi tohto typu útoku sú ICMP Flood a UDP Flood, ktoré sú dnes zriedkavé. Druhá kategória vyhráva vďaka šikovnosti, inteligentné a nepostrehnuteľné, posielanie balíka každých pár minút alebo stačí len balík, môže spôsobiť, že luxusný konfiguračný server už nereaguje. Tento typ útoku sa spúšťa najmä zneužitím zraniteľností v protokoloch alebo softvéri, ako sú útoky Slowloris, hašovacie kolízie a podobne, a vyžaduje špecifické environmentálne zhody. Tretia kategória je zmesou týchto dvochNielenže využíva chyby protokolu a systému, ale má aj veľké množstvo prevádzky, ako sú útoky SYN Flood a DNS Query Flood, ktoré sú v súčasnosti bežnou metódou útoku. Tento článok opíše tieto najbežnejšie a reprezentatívne metódy útoku jednu po druhej a predstaví ich obranné možnosti. 1.1. SYN FloodSYN Flood je jeden z najklasickejších DDoS útokov na internete, prvýkrát sa objavil okolo roku 1999, pričom Yahoo bolo vtedy najznámejšou obeťou. Útoky SYN Flood zneužívajú chyby TCP triple handshake, ktoré môžu spôsobiť, že cieľový server bude nereagujúci a ťažko sledovateľný za malú cenu. Štandardný TCP trojcestný handshake proces je nasledovný: - Klient odošle TCP paket obsahujúci príznak SYN, SYN sa synchronizuje a synchronizačný paket označuje port používaný klientom a počiatočné sériové číslo TCP spojenia.
- Po prijatí SYN paketu od klienta server vráti paket SYN+ACK (t. j. potvrdenie potvrdenia), ktorý signalizuje, že požiadavka klienta bola prijatá, a počiatočné sériové číslo TCP sa automaticky pridá o 1.
- Klient tiež vráti serveru potvrdenie ACK a sériové číslo TCP sa tiež pridá o 1.
Po týchto troch krokoch je TCP spojenie nadviazané. Aby sa dosiahol spoľahlivý prenos, protokol TCP nastavil niektoré mechanizmy spracovania výnimiek počas troch handshakeov. V treťom kroku, ak server nedostane od klienta posledný potvrdenie ACK, server zostane v SYN_RECV stave, pridá IP adresu klienta do čakacej listiny a v druhom kroku znovu odošle paket SYN+ACK. Opätovné zverejnenia sa zvyčajne vykonávajú 3-5 krát a čakacia listina sa vyhlasuje raz v intervaloch približne 30 sekúnd, aby sa všetci klienti mohli znovu vyskúšať. Na druhej strane, po odoslaní paketu SYN+ACK server predpridelí zdroje na uloženie informácií pre nadchádzajúce TCP spojenie, ktoré sa uchovávajú počas čakania na opätovné skúšanie. Dôležitejšie je, že ak sú serverové zdroje obmedzené, SYN_RECV stav, ktorý je možné udržiavať, už po prekročení limitu nebude prijímať nové SYN pakety, teda nové TCP pripojenia budú odmietnuté. SYN Flood používa vyššie uvedené nastavenia TCP protokolu na dosiahnutie účelu útoku. Útočníci maskujú veľké množstvo IP adries, aby mohli posielať SYN pakety na server, a keďže falšované IP adresy sú takmer nemožné existovať, takmer žiadne zariadenie nevráti serveru žiadnu odpoveď. V dôsledku toho server udržiava obrovský čakací zoznam a neustále sa snaží posielať pakety SYN+ACK, čo spotrebúva veľa zdrojov a nedá sa uvoľniť. Dôležitejšie je, že SYN_RECV fronta napadnutého servera je zaplnená škodlivými paketmi, nové SYN požiadavky už nie sú akceptované a legitímni používatelia nemôžu dokončiť tri handsshake na nadviazanie TCP spojení. Inými slovami, server bol spoločnosťou SYN Flood odmietnutý. Ak vás zaujíma SYN Flood, môžete sa pozrieť na http://www.icylife.net/yunshu/show.php?id=367, ktorú som napísal v roku 2006, neskôr som urobil niekoľko zmien, opravil chyby a znížil agresivitu, a používal sa čisto na testovanie. 1.2. Záplava DNS dotazovAko najzákladnejšia a najjadrovejšia služba internetu je DNS prirodzene jedným z dôležitých cieľov DDoS útokov. Zrušenie DNS služby môže nepriamo ohroziť celý biznis spoločnosti alebo sieťovú službu v regióne. Pred časom populárna hackerská skupina Anonymous tiež oznámila, že zaútočí na 13 DNS serverov na globálnom internete, no nakoniec neuspela. UDP útoky sú najjednoduchšou metódou na spustenie masívnej prevádzky a falšovanie náhodných IP IP je ťažké vystopovať. Filtrovanie je však jednoduchšie, pretože väčšina IP neposkytuje UDP služby, takže môžete jednoducho zahodiť UDP prevádzku. Preto sú čisté UDP traffic útoky dnes relatívne zriedkavé a nahrádzajú ich DNS Query Flood útoky vykonávané protokolom UDP. Jednoducho povedané, DDoS útoky spustené na vyšší protokol, tým ťažšie sa proti nemu bráni, pretože čím vyšší protokol, tým viac je obchodný a tým zložitejší je obranný systém. DNS Query Flood je, keď útočník manipuluje s veľkým počtom sockpuppet strojov, aby spustil veľké množstvo požiadaviek na doménové mená na cieľ. Aby sa zabránilo filtrovaniu založenému na ACL, je potrebné zlepšiť náhodnosť paketov. Bežnou praxou je náhodne falšovať zdrojovú IP adresu, náhodne falšovať zdrojový port a ďalšie parametre na vrstve UDP. Na vrstve DNS protokolu sa ID dotazu náhodne sfalšuje spolu s doménovým menom, ktoré sa má vyriešiť. Okrem zabránenia filtrovaniu môžu náhodné falšované domény na vyriešenie tiež znížiť pravdepodobnosť zásahu do DNS cache a spotrebovať čo najviac CPU zdrojov DNS servera. Čo sa týka kódu DNS Query Flood, v júli 2011 som napísal kód na testovanie výkonu servera a odkaz je http://www.icylife.net/yunshu/show.php?id=832. Podobne je tento kód umelo menej agresívny a slúži len na testovanie. 1.3. HTTP FloodSYN Flood a DNS Query Flood, ako je uvedené vyššie, sa v tejto fáze dajú efektívne brániť, a skutočným problémom pre veľkých výrobcov a internetové spoločnosti sú HTTP Flood útoky. HTTP Flood je útok na webovú službu na protokole siedmej vrstvy. Jej veľké škody sa prejavujú najmä v troch aspektoch: pohodlná iniciácia, ťažké filtrovanie a ďalekosiahly dopad. SYN Flood aj DNS Query Flood vyžadujú, aby útočníci ovládali veľké množstvo botov s root oprávneniami. Získanie veľkého množstva root oprávnení vyžaduje čas a úsilie a počas útoku sa bábkový stroj pomaly dopĺňa kvôli rýchlej strate zdrojov útočníka v dôsledku abnormálnej prevádzky zistenej administrátorom, čo vedie k výraznému zníženiu intenzity útoku a nemôže sa dlhodobo udržať. HTTP Flood útoky sú odlišné, útočníci nemusia kontrolovať veľké množstvo botov, ale namiesto toho používajú portové skenery na vyhľadávanie anonymných HTTP proxy alebo SOCKS proxy na internete, cez ktoré útočník iniciuje HTTP požiadavky na cieľ útoku. Anonymné proxy sú relatívne bohatým zdrojom a nie je ťažké získať proxy za pár dní, takže útoky sa dajú ľahko iniciovať a môžu trvať dlho. Na druhej strane, HTTP flood útoky sa spúšťajú na HTTP vrstve, ktorá výrazne napodobňuje správanie bežných používateľov pri požiadavkách na webové stránky, čo úzko súvisí s webovým biznisom, čo sťažuje bezpečnostným dodávateľom poskytnúť spoločné riešenie, ktoré neovplyvní používateľský zážitok. Pravidlá, ktoré fungujú dobre na jednom mieste, môžu zmeniť scenáre a viesť k veľkému počtu zabitia z nedbanlivosti. Napokon, HTTP flood útoky môžu spôsobiť vážne reťazové reakcie, ktoré nielen priamo spôsobujú pomalú reakciu napadnutého webového front-endu, ale aj nepriamo útočia na back-end Java a ďalšie logické a databázové služby na obchodnej úrovni, čím zvyšujú ich tlak a dokonca ovplyvňujú servery logového úložiska. Zaujímavé je, že HTTP Flood má tiež historickú prezývku CC útok. CC je skratka pre Challenge Collapsar, čo je DDoS ochranné zariadenie od známej bezpečnostnej spoločnosti v Číne. Podľa súčasnej situácie je stále spochybňované nielen Collapsar, ale aj všetka obranná technika a riziko nebolo zrušené. 1.4. Pomalé útoky spojenímČo sa týka útokov, prvou reakciou je masívna prevádzka a obrovské pakety. Ale existuje útok, ktorý robí pravý opak, známy tým, že je pomalý, takže niektoré ciele útoku sú zabité bez toho, aby vedeli, ako zomrú, čo je útok pomalého pripojenia, najreprezentatívnejší je Slowloris vynájdený rsnakeom. HTTP protokol stanovuje, že HTTP požiadavky končia na \r\n\r\n, čo znamená, že klient dokončil odoslanie a server začal spracovávať. Čo sa stane, ak nikdy nepošlete \r\n\r\n? Slowloris to využíva vo svoj prospech pri DDoS útokoch. Útočník nastaví Connection na Keep-Alive v HTTP hlavičke požiadavky, požiada webový server, aby TCP spojenie nebolo odpojené, a potom pomaly každých pár minút posiela serveru formát kľúč-hodnota, napríklad a:b\r\n, čo spôsobí, že server si myslí, že HTTP hlavička nebola prijatá, a čaká. Ak útočník použije multithreading alebo bábku na to isté, webový kontajner servera sa rýchlo preťaží útočníkom a už nebude prijímať nové požiadavky. Čoskoro sa začali objavovať rôzne varianty Slowloris. Napríklad metóda POST odosiela dáta na webový server, vyplňuje veľkú dĺžku obsahu, ale pomaly bajt po bajte POST skutočný dátový obsah a podobne. Čo sa týka útoku Slowloris, rsnake tiež poskytuje testovací kód, pozri http://ha.ckers.org/slowloris/slowloris.pl. 2. DDoS útok pokročilý2.1. Hybridné útokyVyššie uvedené predstavuje niekoľko základných metód útoku, z ktorých ktorákoľvek môže byť použitá na útok na sieť a dokonca aj na porazenie obrovských webových stránok ako Alibaba, Baidu a Tencent. Ale to nie je všetko, rôzne úrovne útočníkov môžu spustiť úplne odlišné DDoS útoky a ich použitie je to isté. Pokročilí útočníci nikdy nepoužívajú jeden vektor na útok, ale flexibilne ich kombinujú podľa cieľového prostredia. Bežný SYN Flood je ľahko filtrovateľný zariadeniami na čistenie prevádzky pomocou reverznej detekcie, SYN cookies a iných technických prostriedkov, ale ak sú SYN+ACK pakety zmiešané v SYN Flood tak, že každý falšovaný SYN paket má zodpovedajúci falšovaný klientsky potvrdzovací paket, príslušné tu odkazujú na zdrojovú IP adresu, zdrojový port, cieľovú IP, cieľový port, veľkosť TCP okna, TTL a podobne, všetko zodpovedá charakteristikám toho istého hostiteľa a rovnakému TCP Flow. Tlak na výkon detekcie spätného chodu a SYN cookies zariadení na čistenie prietoku sa výrazne zvýši. V skutočnosti majú SYN dátové pakety a rôzne ďalšie bity s príznakmi špeciálne útokové efekty, ktoré tu nie sú predstavené. Existujú aj jedinečné techniky pre DNS Query Flood. V prvom rade možno DNS rozdeliť na bežné DNS a DNS autorizovanej domény, ktoré útočia na bežné DNS, IP adresa musí byť náhodne vytvorená a server vyžaduje rekurzívne rozlíšenie; Avšak pri útoku na DNS autorizovanej domény by falšovaná zdrojová IP adresa nemala byť úplne náhodná, ale mala by byť vopred zozbieraná DNS adresy poskytovateľov internetu po celom svete, aby sa dosiahol maximálny efekt útoku, takže zariadenie na čistenie prevádzky by sa ocitlo v trápnej situácii pridania IP čiernej listiny alebo nepridania IP čiernej listiny. Pridaním tohto bodu sa stane veľký počet zabitia z nedbanlivosti, a ak nepridáte čiernu listinu, každý paket je potrebné spätne preskúmať, čo zvyšuje tlak na výkon. Na druhej strane, ako už bolo spomenuté, na zvýšenie tlaku na čistenie zariadenia je potrebné náhodne vybrať požadované doménové meno bez zásahu do cache, ale treba poznamenať, že doména, ktorú treba vyriešiť, musí mať určitú pravidelnosť falšovania, napríklad falšovanie len určitej časti domény a spevnenie časti, ktorá prerazí bielu listinu nastavenú čistiacim zariadením. Dôvod je jednoduchý – servery Tencentu dokážu rozlíšiť len doménové mená Tencentu a úplne náhodné domény môžu byť priamo vyradené a potrebné ich upevniť. Ale ak je úplne opravený, je ľahké ho priamo zahodiť, takže ho treba sfalšovať. Po druhé, útoky na DNS by sa nemali zameriavať výlučne na UDP porty, ktoré sú tiež štandardnými službami podľa DNS protokolu. V prípade útoku je možné vykonať súčasne útoky UDP aj TCP. Zameranie HTTP Flood je prelomiť cache na frontende a priamo sa dostať k samotnému webovému serveru cez nastavenia poľa v HTTP hlavičke. Okrem toho je HTTP Flood tiež veľmi kritický pri výbere cieľov a bežní útočníci vyberajú stránky, ktoré vyžadujú veľa dátových dotazov, napríklad vyhľadávanie ako cieľ útoku, čo je veľmi správne a môže spotrebovať čo najviac zdrojov servera. Ale tento útok sa dá ľahko identifikovať čistiacim zariadením pomocou identifikácie človeka a stroja, takže ako tento problém vyriešiť? Je to veľmi jednoduché, snažte sa vyberať stránky, ku ktorým majú bežní používatelia prístup aj cez aplikáciu, všeobecne povedané, rôzne webové API. Bežní používatelia a škodlivá prevádzka prichádzajú z aplikácie a rozdiel medzi človekom a strojom je veľmi malý a je ťažké rozlíšiť základnú integráciu. Každé TCP spojenie existuje na strane servera aj samo o sebe, a zároveň musí spotrebovať zdroje na udržanie stavu TCP, takže spojenie nemôže byť udržiavané príliš dlho. Ak sa to podarí vyriešiť, agresivita sa výrazne zvýši, teda Slowloris môže spúšťať útoky bezstavovým spôsobom, zachytiť TCP sériové číslo a potvrdiť udržiavanie TCP spojení na klientovi pomocou sniffingu, pričom jadro systému nemusí venovať pozornosť rôznym zmenám stavov TCP a notebook dokáže generovať až 65 535 TCP spojení. Predchádzajúce popisy sú všetky technické vylepšenia útokov. Na ľudskej strane existujú aj iné možnosti. Ak SYN Flood vyšle veľké množstvo paketov a je sprevádzaný pomalými spojeniami Slowloris, koľko ľudí odhalí tajomstvo? Aj keď server vypadne, môžu sa nájsť len SYN útoky, ktoré sa snažia posilniť čistenie TCP vrstiev a ignorujú správanie aplikačnej vrstvy. Všetky druhy útokov môžu spolupracovať, aby dosiahli maximálny efekt. Voľba času útoku je tiež kľúčovým bodom, napríklad pri výbere údržbárskeho personálu počas obeda, keď sú údržbári uviaznutí na ceste po práci alebo keď nie je signál na bezdrôtovej karte v metre, a keď cieľový podnik organizuje veľké podujatie a doprava sa zvýši. Ide o čistý útok, takže nie je poskytnutý žiadny kód ani podrobné vysvetlenie. 2.2. Útoky z P2P sietíPredchádzajúce metódy útokov viac-menej vyžadovali niektoré boty, dokonca aj HTTP Flood vyžaduje vyhľadávanie veľkého počtu anonymných proxy. Ak dôjde k útoku, stačí zadať niekoľko inštrukcií a stroj automaticky príde na jeho vykonanie, čo je ideálne riešenie. Tento útok sa už objavil, a to zo strany P2P sietí. Ako všetci vieme, P2P používateľov a návštevnosť na internete sú mimoriadne veľké. Ak všetky idú na určené miesto na sťahovanie dát a pripojenie tisícov skutočných IP adries, žiadne zariadenie to nemôže podporovať. Vezmime si ako príklad BT download – falšovanie torrentov niektorých populárnych videí a ich zverejňovanie do vyhľadávačov stačí na oklamanie mnohých používateľov a návštevnosti, ale ide len o základný útok. Pokročilé P2P útoky sú priamym falšovaním serverov na správu zdrojov. Napríklad klient Thunder nahrá nájdené zdroje na server správy zdrojov a potom ich pošle ďalším používateľom, ktorí potrebujú stiahnuť tie isté zdroje, aby bol zverejnený odkaz. Prostredníctvom zvrátenia protokolu útočníci sfalšujú veľké množstvo populárnych informácií o zdrojoch a distribuujú ich cez centrum správy zdrojov, ktoré môžu byť okamžite rozšírené po celej P2P sieti. Ešte desivejšie je, že tento útok sa nedá zastaviť ani samotným útočníkom a pokračuje, kým P2P úradník nenájde problém, neaktualizuje server a používateľ sťahovania nereštartuje stiahnutý softvér. 3. ZhrnutieTo je všetko, čo je úvod do DDoS útokov a nechcem ísť ďalej – stačí pochopiť, že toľko obrany stačí. Vo všeobecnosti môžu byť DDoS útoky obratné a elegantné. Krása aplikácie spočíva v jednote mysle. |