|
1. DDoS atakos pagrindai DDoS (Distributed Denial of Service) atakos yra viena galingiausių ir sunkiausiai apsiginamų atakų, nes pagrindinis DDoS atakų tikslas yra užkirsti kelią nurodytam taikiniui teikti įprastas paslaugas ar net išnykti iš interneto. DDoS galima tiesiog suskirstyti į tris kategorijas pagal jų inicijavimo būdą. Pirmoji kategorija laimi jėgaDidžiuliai duomenų paketai plūsta iš visų interneto kampelių, blokuodami įėjimą į IDC, todėl įvairios galingos aparatinės gynybos sistemos ir greiti bei efektyvūs avariniai procesai tampa nenaudingi. Tipiški tokio tipo atakų pavyzdžiai yra ICMP Flood ir UDP Flood, kurie dabar yra neįprasti. Antroji kategorija laimi sumanumu, protingas ir nepastebimas, siunčiant siuntą kas kelias minutes ar net reikia tik paketo, prabangus konfigūracijos serveris gali nebereaguoti. Šio tipo ataka daugiausia pradedama išnaudojant protokolų ar programinės įrangos pažeidžiamumą, pvz., "Slowloris" atakas, maišos susidūrimo atakas ir kt., ir reikalauja specifinių aplinkos sutapimų. Trečioji kategorija yra pirmiau minėtų dviejų mišinysJis ne tik pasinaudoja protokolo ir sistemos defektais, bet ir turi daug srauto, pvz., SYN Flood ataka ir DNS Query Flood ataka, kuri yra dabartinis pagrindinis atakos metodas. Šiame straipsnyje po vieną bus aprašyti šie labiausiai paplitę ir reprezentatyvūs atakos metodai ir pristatytos jų gynybos galimybės. 1.1. SYN potvynis"SYN Flood" yra viena klasikinių DDoS atakų internete, pirmą kartą pasirodžiusi apie 1999 m., o garsiausia to meto auka buvo "Yahoo". SYN Flood atakos išnaudoja TCP trigubą rankos paspaudimo trūkumus, dėl kurių tikslinis serveris gali nereaguoti ir jį sunku atsekti už nedidelę kainą. Standartinis TCP trijų krypčių rankos paspaudimo procesas yra toks: - Klientas siunčia TCP paketą, kuriame yra SYN vėliavėlė, SYN sinchronizuojamas, o sinchronizavimo paketas nurodo kliento naudojamą prievadą ir pradinį TCP ryšio serijos numerį.
- Gavęs SYN paketą iš kliento, serveris grąžins SYN+ACK (t. y. patvirtinimo patvirtinimo) paketą, nurodydamas, kad kliento užklausa priimta, o TCP pradinis serijos numeris automatiškai pridedamas 1.
- Klientas taip pat grąžina patvirtinimo pranešimą ACK į serverį, o TCP serijos numeris taip pat pridedamas 1.
Atlikus šiuos tris veiksmus, užmezgamas TCP ryšys. Siekiant patikimo perdavimo, TCP protokolas sukūrė keletą išimčių tvarkymo mechanizmų trijų rankų paspaudimų metu. Trečiajame žingsnyje, jei serveris negauna galutinio ACK patvirtinimo paketo iš kliento, serveris liks SYN_RECV būsenoje, įtrauks kliento IP adresą į laukiančiųjų sąrašą ir iš naujo išsiųs SYN+ACK paketą antrame žingsnyje. Pakartotiniai įrašai paprastai atliekami 3-5 kartus, o laukiančiųjų sąrašas apklausiamas vieną kartą maždaug kas 30 sekundžių, kad būtų galima pakartotinai bandyti visus klientus. Kita vertus, serveriui išsiuntus SYN+ACK paketą, jis iš anksto paskirsto išteklius būsimo TCP ryšio informacijai saugoti, kuri išsaugoma laukiant pakartotinio bandymo. Dar svarbiau, kad jei serverio ištekliai yra riboti, SYN_RECV būsena, kurią galima išlaikyti, nebepriims naujų SYN paketų viršijus ribą, tai yra, nauji TCP ryšiai bus atmesti. SYN Flood naudoja aukščiau pateiktus TCP protokolo nustatymus, kad pasiektų atakos tikslą. Užpuolikai užmaskuoja daugybę IP adresų, kad siųstų SYN paketus į serverį, o kadangi suklastotų IP adresų beveik neįmanoma egzistuoti, beveik nė vienas įrenginys negrąžins jokio atsakymo į serverį. Dėl to serveris palaiko didžiulį laukiančiųjų sąrašą ir nuolat bando siųsti SYN+ACK paketus, kurie sunaudoja daug išteklių ir negali būti išleisti. Dar svarbiau, kad užpulto serverio SYN_RECV eilė užpildyta kenkėjiškais paketais, o naujos SYN užklausos nebepriimamos, o teisėti vartotojai negali atlikti trijų rankų paspaudimų, kad užmegztų TCP ryšius. Kitaip tariant, SYN Flood atsisakė serverio paslaugų. Jei jus domina SYN Flood, galite pažvelgti į http://www.icylife.net/yunshu/show.php?id=367, kurį parašiau 2006 m., o vėliau padariau keletą pakeitimų, ištaisiau klaidas ir sumažinau agresyvumą, ir buvo naudojamas tik testavimui. 1.2. DNS užklausos potvynisDNS, kaip pagrindinė ir pagrindinė interneto paslauga, natūraliai yra vienas iš svarbių DDoS atakų taikinių. DNS paslaugos nutraukimas gali netiesiogiai sužlugdyti visą įmonės verslą arba tinklo paslaugą regione. Prieš kurį laiką populiari įsilaužėlių grupė "Anonymous" taip pat paskelbė, kad užpuls 13 DNS serverių pasauliniame internete, tačiau galiausiai tai nepavyko. UDP atakos yra lengviausias atakos būdas inicijuoti didžiulį srautą, o atsitiktinio šaltinio IP klastojimą sunku atsekti. Tačiau filtravimas yra lengvesnis, nes dauguma IP neteikia UDP paslaugų, todėl galite tiesiog atsisakyti UDP srauto. Todėl grynos UDP srauto atakos dabar yra gana retos ir jas pakeičia DNS užklausų potvynio atakos, kurias vykdo UDP protokolas. Paprasčiau tariant, DDoS atakos pradėtos kuo aukštesnis protokolas, tuo sunkiau nuo jo apsiginti, nes kuo aukštesnis protokolas, tuo jis labiau susijęs su verslu ir tuo sudėtingesnė gynybos sistema. DNS užklausų potvynis yra tada, kai užpuolikas manipuliuoja daugybe sockpuppet mašinų, kad paleistų daug domeno vardo užklausų į taikinį. Norint išvengti ACL pagrįsto filtravimo, reikia pagerinti paketų atsitiktinumą. Įprasta praktika yra atsitiktinai suklastoti šaltinio IP adresą, atsitiktinai suklastoti šaltinio prievadą ir kitus parametrus UDP sluoksnyje. DNS protokolo lygmenyje užklausos ID atsitiktinai suklastotas kartu su domeno vardu, kurį reikia išspręsti. Atsitiktiniai suklastoti domenų vardai ne tik užkerta kelią filtravimui, bet ir gali sumažinti tikimybę patekti į DNS talpyklą ir sunaudoti kuo daugiau DNS serverio procesoriaus išteklių. Kalbant apie DNS užklausos potvynio kodą, 2011 m. liepą parašiau kodą, kad patikrinčiau serverio našumą, ir nuoroda yra http://www.icylife.net/yunshu/show.php?id=832. Panašiai šis kodas yra dirbtinai mažiau agresyvus ir skirtas tik testavimo tikslais. 1.3. HTTP potvynisŠiame etape galima veiksmingai apsiginti nuo aukščiau aprašyto SYN potvynio ir DNS užklausų potvynio, o tikrasis galvos skausmas pagrindiniams gamintojams ir interneto įmonėms yra HTTP potvynio atakos. HTTP potvynis yra ataka prieš žiniatinklio paslaugą septintojo sluoksnio protokole. Didelė jo žala daugiausia pasireiškia trimis aspektais: patogiu inicijavimu, sunkiu filtravimu ir toli siekiančiu poveikiu. Tiek SYN Flood, tiek DNS Query Flood reikalauja, kad užpuolikai valdytų daugybę robotų, turinčių root teises. Norint surinkti daugybę šakninių privilegijų, reikia laiko ir pastangų, o atakos metu lėlių mašina lėtai papildoma, nes užpuolikas greitai praranda išteklius dėl administratoriaus aptikto nenormalaus srauto, todėl žymiai sumažėja atakos intensyvumas ir jo negalima išlaikyti ilgą laiką. HTTP potvynio atakos yra skirtingos, užpuolikams nereikia valdyti daugybės robotų, o naudoti prievadų skaitytuvus, kad internete rastų anoniminius HTTP tarpinius serverius arba SOCKS tarpinius serverius, per kuriuos užpuolikas inicijuoja HTTP užklausas atakos taikiniui. Anoniminiai tarpiniai serveriai yra gana turtingas šaltinis, todėl per kelias dienas gauti tarpinius serverius nėra sunku, todėl atakas lengva inicijuoti ir jos gali trukti ilgą laiką. Kita vertus, HTTP potvynio atakos pradedamos HTTP sluoksnyje, kuris energingai imituoja įprastų vartotojų tinklalapio užklausų elgesį, kuris yra glaudžiai susijęs su svetainės verslu, todėl saugos pardavėjams sunku pateikti bendrą sprendimą, kuris neturi įtakos vartotojo patirčiai. Taisyklės, kurios gerai veikia vienoje vietoje, keičiant scenarijus gali sukelti daug žmogžudysčių. Galiausiai, HTTP potvynio atakos gali sukelti rimtas grandinines reakcijas, ne tik tiesiogiai sukeldamos lėtą užpultos žiniatinklio sąsajos atsaką, bet ir netiesiogiai atakuojant "Java" ir kitas verslo lygmens logikas bei užpakalinių duomenų bazių paslaugas, padidindamos jų spaudimą ir netgi paveikdamos žurnalų saugyklos serverius. Įdomu tai, kad HTTP Flood taip pat turi istorinį slapyvardį, vadinamą CC ataka. CC yra "Challenge Collapsar" santrumpa, kuri yra žinomos Kinijos saugos įmonės DDoS apsaugos įrenginys. Sprendžiant iš dabartinės situacijos, ne tik "Collapsar", bet ir visa aparatinės gynybos įranga vis dar yra iššūkis, o rizika nebuvo panaikinta. 1.4. Lėto ryšio atakosKalbant apie atakas, pirmoji reakcija yra didžiulis srautas ir didžiuliai paketai. Tačiau yra ataka, kuri daro priešingai, žinoma kaip lėta, todėl kai kurie atakos taikiniai nužudomi nežinant, kaip jie miršta, tai yra lėto ryšio ataka, reprezentatyviausia yra "Slowloris", kurią išrado rsnake. HTTP protokolas nurodo, kad HTTP užklausos baigiasi \r\n\r\n, nurodant, kad klientas baigė siųsti ir serveris pradėjo apdoroti. Taigi, kas atsitiks, jei niekada nesiųsite \r\n\r\n? "Slowloris" tai išnaudoja DDoS atakų metu. Užpuolikas HTTP užklausos antraštėje nustato ryšį kaip "Keep-Alive", prašo žiniatinklio serverio neatjungti TCP ryšio ir lėtai siunčia rakto reikšmės formatą į serverį kas kelias minutes, pvz., a:b\r\n, todėl serveris mano, kad HTTP antraštė nebuvo gauta, ir laukia. Jei užpuolikas naudoja kelių gijų arba marionetę, kad padarytų tą patį, serverio žiniatinklio konteineris greitai bus perkrautas užpuoliko ir nebepriims naujų užklausų. Netrukus pradėjo pasirodyti įvairūs Slowloris variantai. Pavyzdžiui, POST metodas pateikia duomenis į žiniatinklio serverį, užpildo didelį turinio ilgį, bet lėtą baitą po baito POST realių duomenų turinį ir kt. Kalbant apie Slowloris ataką, rsnake taip pat pateikia bandomąjį kodą, žr. http://ha.ckers.org/slowloris/slowloris.pl. 2. DDoS ataka išplėstinė2.1. Hibridiniai išpuoliaiAukščiau pateikiami keli pagrindiniai atakos metodai, iš kurių bet kuris gali būti naudojamas atakuoti tinklą ir net nugalėti milžiniškas svetaines, tokias kaip "Alibaba", "Baidu" ir "Tencent". Bet tai dar ne viskas, skirtingo lygio užpuolikai gali pradėti visiškai skirtingas DDoS atakas, o jų naudojimas yra tas pats. Pažengę užpuolikai niekada nenaudoja vieno vektoriaus atakai, bet lanksčiai juos derina pagal taikinio aplinką. Įprastą SYN Flood lengva filtruoti srauto valymo įrenginiais naudojant atvirkštinį aptikimą, SYN slapukus ir kitas technines priemones, tačiau jei SYN+ACK paketai yra sumaišyti SYN Flood, kad kiekvienas suklastotas SYN paketas turėtų atitinkamą suklastotą kliento patvirtinimo paketą, atitinkamas čia nurodo šaltinio IP adresą, šaltinio prievadą, paskirties IP, paskirties prievadą, TCP lango dydį, TTL ir kt. atitinka to paties pagrindinio kompiuterio ir to paties TCP srauto charakteristikas. Spaudimas srauto valymo įrangos atvirkštinio aptikimo ir SYN slapukų veikimui žymiai padidės. Tiesą sakant, SYN duomenų paketai ir įvairūs kiti vėliavėlės bitai turi specialius atakos efektus, kurie čia nepristatomi. Taip pat yra unikalių DNS užklausų potvynio metodų. Visų pirma, DNS galima suskirstyti į įprastą DNS ir įgaliotą domeno DNS, atakuojant įprastą DNS, IP adresas turi būti atsitiktinai suklastotas, o serveriui reikalinga rekursinė skiriamoji geba; Tačiau atakuojant įgaliotąjį domeno DNS, suklastotas šaltinio IP adresas neturėtų būti grynai atsitiktinis, o turėtų būti iš anksto surinkti IPT DNS adresai visame pasaulyje, kad būtų pasiektas maksimalus atakos efektas, kad srauto valymo įrenginys atsidurtų gėdingoje situacijoje pridedant IP juodąjį sąrašą arba nepridedant IP juodojo sąrašo. Jį pridėjus bus daug žmogžudysčių, o jei nepridėsite juodojo sąrašo, kiekvienas paketas turi būti atvirkštinis tyrimas, o tai padidina našumo spaudimą. Kita vertus, kaip minėta anksčiau, norint padidinti įrenginio valymo slėgį, būtina atsitiktinai parinkti prašomą domeno vardą nepataikant į talpyklą, tačiau reikia pažymėti, kad sprendžiamas domeno vardas turi turėti tam tikrą klastojimo reguliarumą, pavyzdžiui, suklastoti tik tam tikrą domeno vardo dalį ir sutvirtinti dalį, kad prasiveržtų pro valymo įrenginio nustatytą baltąjį sąrašą. Priežastis paprasta, "Tencent" serveriai gali išspręsti tik "Tencent" domenų vardus, o visiškai atsitiktiniai domenų vardai gali būti tiesiogiai atmesti ir juos reikia įtvirtinti. Bet jei jis yra visiškai pritvirtintas, jį lengva išmesti tiesiogiai, todėl jį reikia suklastoti. Antra, atakos prieš DNS neturėtų būti sutelktos tik į UDP prievadus, kurie taip pat yra standartinės paslaugos pagal DNS protokolą. Atakos atveju vienu metu gali būti vykdomos ir UDP, ir TCP atakos. "HTTP Flood" pagrindinis dėmesys skiriamas pralaužti priekinėje dalyje esančią talpyklą ir tiesiogiai pasiekti patį žiniatinklio serverį per HTTP antraštės lauko nustatymus. Be to, HTTP potvynis taip pat yra labai svarbus renkantis taikinius, o paprasti užpuolikai pasirinks puslapius, kuriems reikia daug duomenų užklausų, pvz., paiešką, kaip atakos taikinį, kuris yra labai teisingas ir gali sunaudoti kuo daugiau serverio išteklių. Tačiau šią ataką lengva atpažinti valant įrangą pagal žmogaus ir mašinos identifikavimą, tad kaip išspręsti šią problemą? Tai labai paprasta, pabandykite pasirinkti puslapius, kuriuos paprasti vartotojai taip pat pasiekia per APP, paprastai tariant, įvairias žiniatinklio API. Normalūs vartotojai ir kenkėjiškas srautas ateina iš APP, o skirtumas tarp žmogaus ir mašinos yra labai mažas, todėl sunku atskirti pagrindinę integraciją. Kiekvienas TCP ryšys egzistuoja serverio pusėje ir ant savęs, todėl jis taip pat turi sunaudoti išteklius, kad išlaikytų TCP būseną, todėl ryšio negalima palaikyti per daug. Jei tai pavyks išspręsti, agresyvumas labai padidės, tai yra, "Slowloris" gali pradėti atakas be būsenos, užfiksuoti TCP serijos numerį ir patvirtinti TCP ryšių palaikymą kliente uostydamas, o sistemos branduoliui nereikia kreipti dėmesio į įvairius TCP būsenos pokyčius, o nešiojamasis kompiuteris gali generuoti iki 65 535 TCP ryšių. Ankstesni aprašymai yra visi techniniai atakų patobulinimai. Iš žmogaus pusės yra ir kitų priemonių. Jei SYN Flood siunčia daug paketų ir yra lydimas Slowloris lėtų ryšių, kiek žmonių atras paslaptį? Net jei serveris sugenda, gali būti rastos tik SYN atakos, bandant sustiprinti TCP sluoksnio valymą ir ignoruojant programos sluoksnio elgesį. Visų rūšių atakos gali veikti kartu, kad būtų pasiektas maksimalus efektas. Atakos laiko pasirinkimas taip pat yra pagrindinis dalykas, pavyzdžiui, techninės priežiūros personalo pasirinkimas, kai jie pietauja, kai techninės priežiūros personalas yra įstrigęs kelyje po išlipimo iš darbo arba kai nėra signalo belaidžio tinklo plokštėje metro, ir kai tikslinė įmonė rengia didelio masto renginį ir eismo šuoliai. Tai gryna ataka, todėl nepateikiamas kodas ar išsamus paaiškinimas. 2.2. Atakos iš P2P tinklųAnkstesniems atakos metodams daugiau ar mažiau reikia kai kurių robotų, net HTTP Flood reikia ieškoti daugybės anoniminių tarpinių serverių. Jei įvyksta ataka, jums tereikia duoti keletą instrukcijų, o mašina automatiškai pasirodys ją vykdyti, o tai yra puikus sprendimas. Ši ataka jau pasirodė, ir tai yra iš P2P tinklų. Kaip visi žinome, P2P vartotojai ir srautas internete yra labai didelis skaičius. Jei jie visi eina į tam skirtą vietą atsisiųsti duomenų ir prijungti tūkstančius tikrų IP adresų, joks įrenginys negali to palaikyti. Kaip pavyzdį paimkite BT atsisiuntimą, norint apgauti daugelį vartotojų ir srautą, pakanka suklastoti kai kurių populiarių vaizdo įrašų torrentus ir juos paskelbti paieškos sistemose, tačiau tai tik pagrindinė ataka. Išplėstinės P2P atakos yra tiesioginis išteklių valdymo serverių klastojimas. Pavyzdžiui, "Thunder" klientas įkels rastus išteklius į išteklių valdymo serverį ir perduos juos kitiems vartotojams, kuriems reikia atsisiųsti tuos pačius išteklius, kad nuoroda būtų paskelbta. Atšaukdami protokolą, užpuolikai suklastoja didelį kiekį populiarios išteklių informacijos ir paskirsto ją per išteklių valdymo centrą, kuris gali būti akimirksniu paskleistas visame P2P tinkle. Dar baisiau yra tai, kad šios atakos negali sustabdyti net pats užpuolikas, o ataka tęsiasi tol, kol P2P pareigūnas suras problemą ir atnaujina serverį, o atsisiuntimo vartotojas iš naujo paleidžia atsisiųstą programinę įrangą. 3. SantraukaTai viskas, kas yra įvade į DDoS atakas, ir aš nenoriu eiti toliau – pakanka suprasti, kad tiek daug gynybos yra pakankamai. Apskritai DDoS atakos gali būti vikrios ir grakščios. Taikymo grožis slypi proto vienybėje. |