|
1. DDoS-hyökkäyksen perusteet DDoS-hyökkäykset (Distributed Denial of Service -hyökkäykset) ovat yksi voimakkaimmista ja vaikeimmista hyökkäyksistä puolustautua, koska niiden pääasiallinen tarkoitus on estää nimettyä kohdetta tarjoamasta normaaleja palveluita tai jopa katoamasta Internetistä. DDoS voidaan yksinkertaisesti jakaa kolmeen kategoriaan sen mukaan, miten ne käynnistetään. Ensimmäinen kategoria voittaa voimallaMassiiviset datapaketit virtaavat internetin joka kolkasta, estäen pääsyn IDC:hen, tehden erilaisista tehokkaista laitteistopuolustusjärjestelmistä sekä nopeista ja tehokkaista hätäprosesseista käyttökelvottomia. Tyypillisiä esimerkkejä tästä hyökkäyksestä ovat ICMP Flood ja UDP Flood, jotka ovat nykyään harvinaisia. Toinen kategoria voittaa älykkyydellä, älykäs ja huomaamaton, lähettää paketin muutaman minuutin välein tai tarvitsee vain paketin, voi saada ylellisen konfiguraatiopalvelimen lakkaamaan vastaamisesta. Tämän tyyppinen hyökkäys käynnistetään pääasiassa hyödyntämällä protokollien tai ohjelmistojen haavoittuvuuksia, kuten Slowloris-hyökkäyksiä, hash-törmäyshyökkäyksiä jne., ja se vaatii tiettyjä ympäristöllisiä sattumia. Kolmas kategoria on näiden kahden yhdistelmäSe ei ainoastaan hyödynnä protokollan ja järjestelmän puutteita, vaan sisältää myös paljon liikennettä, kuten SYN Flood -hyökkäys ja DNS Query Flood -hyökkäys, joka on nykyinen valtavirran hyökkäysmenetelmä. Tässä artikkelissa kuvataan nämä yleisimmät ja edustavimmat hyökkäysmenetelmät yksi kerrallaan ja esitellään niiden puolustusvaihtoehdot. 1.1. SYN FloodSYN Flood on yksi internetin klassisimmista DDoS-hyökkäyksistä, joka ilmestyi ensimmäisen kerran noin vuonna 1999, ja Yahoo oli tuolloin kuuluisin uhri. SYN Flood -hyökkäykset hyödyntävät TCP:n kolmoiskädenpuristusvirheitä, jotka voivat tehdä kohdepalvelimesta epäreagoivan ja vaikeasti jäljitettävän pienellä kustannuksella. Vakio TCP:n kolmisuuntainen kättelyprosessi on seuraava: - Asiakas lähettää TCP-paketin, joka sisältää SYN-lipun, SYN synkronoituu, ja synkronointipaketti ilmaisee asiakkaan käyttämän portin sekä TCP-yhteyden alkuperäisen sarjanumeron.
- Saatuaan SYN-paketin asiakkaalta palvelin palauttaa SYN+ACK (eli kuittausvahvistuksen) paketin, joka osoittaa, että asiakkaan pyyntö hyväksytään, ja TCP:n alkuperäinen sarjanumero lisätään automaattisesti numerolla 1.
- Asiakas palauttaa myös kuittausviestin ACK palvelimelle, ja TCP-sarjanumero lisätään numerolla 1.
Näiden kolmen vaiheen jälkeen TCP-yhteys muodostetaan. Luotettavan siirron saavuttamiseksi TCP-protokolla on ottanut käyttöön poikkeusten käsittelymekanismit kolmen kättelyn aikana. Kolmannessa vaiheessa, jos palvelin ei saa lopullista ACK-kuittauspakettia asiakkaalta, palvelin pysyy SYN_RECV-tilassa, lisää asiakkaan IP-osoitteen odotuslistalle ja lähettää SYN+ACK-paketin uudelleen toisessa vaiheessa. Uudelleenjulkaisut tehdään yleensä 3–5 kertaa, ja jonotuslista tarkistetaan kerran noin 30 sekunnin välein, jotta kaikki asiakkaat kokeillaan uudelleen. Toisaalta, kun palvelin lähettää SYN+ACK-paketin, se varaa resursseja etukäteen tietojen tallentamiseen tulevaa TCP-yhteyttä varten, joka säilytetään uudelleenyrityksen odottaessa. Tärkeämpää on, että jos palvelinresurssit ovat rajalliset, SYN_RECV tila, jota voidaan ylläpitää, ei enää hyväksy uusia SYN-paketteja rajan ylittämisen jälkeen, eli uudet TCP-yhteydet hylätään. SYN Flood käyttää yllä olevia TCP-protokollan asetuksia hyökkäyksen tarkoituksen saavuttamiseksi. Hyökkääjät peittävät suuren määrän IP-osoitteita lähettääkseen SYN-paketteja palvelimelle, ja koska väärennettyjä IP-osoitteita on lähes mahdotonta olla olemassa, lähes mikään laite ei vastaa palvelimelle. Tämän seurauksena palvelin ylläpitää suurta jonotuslistaa ja yrittää lähettää SYN+ACK-paketteja uudelleen, mikä kuluttaa paljon resursseja eikä niitä voi vapauttaa. Tärkeämpää on, että hyökätyn palvelimen SYN_RECV-jono täyttyy haitallisilla paketeilla, eikä uusia SYN-pyyntöjä enää hyväksytä, eikä lailliset käyttäjät voi suorittaa kolmea kättelyä TCP-yhteyksien muodostamiseksi. Toisin sanoen, palvelin evättiin SYN Floodin toimesta. Jos olet kiinnostunut SYN Floodista, voit tutustua http://www.icylife.net/yunshu/show.php?id=367:een, jonka kirjoitin vuonna 2006 ja myöhemmin tein useita muutoksia, korjasin bugeja ja vähensin aggressiivisuutta, ja sitä käytettiin puhtaasti testaukseen. 1.2. DNS-kyselytulvaDNS on Internetin peruspalvelu ja ydinpalvelu, ja se on luonnollisesti yksi DDoS-hyökkäysten tärkeimmistä kohteista. DNS-palvelun kaataminen voi epäsuorasti kaataa koko yrityksen liiketoiminnan tai alueen verkkopalvelun. Jonkin aikaa sitten suosittu hakkeriryhmä Anonymous ilmoitti myös hyökkäävänsä 13 DNS-palvelimelle globaalissa Internetissä, mutta lopulta se ei onnistunut. UDP-hyökkäykset ovat helpoin tapa käynnistää valtava liikenne, ja satunnaisen lähteen IP-väärennösten jäljittäminen on vaikeaa. Suodatus on kuitenkin helpompaa, koska useimmat IP-osoitteet eivät tarjoa UDP-palveluita, joten voit vain hylätä UDP-liikenteen. Siksi puhtaat UDP-liikennehyökkäykset ovat nykyään melko harvinaisia, ja ne korvataan DNS-kyselytulvahyökkäyksillä, joita UDP-protokolla kantaa. Yksinkertaisesti sanottuna, DDoS-hyökkäyksiä käynnistetään korkeammalla protokollalla, sitä vaikeampaa on puolustautua, koska mitä korkeampi protokolla, sitä liiketoimintaan liittyvämpi se on ja sitä monimutkaisempi puolustusjärjestelmä on. DNS-kyselytulva tarkoittaa, että hyökkääjä manipuloi suuren määrän socpuppet-koneita lähettääkseen suuren määrän verkkotunnuksen kyselypyyntöjä kohteelle. ACL-pohjaisen suodatuksen estämiseksi pakettien satunnaisuutta on parannettava. Yleinen käytäntö on satunnaisesti väärentää lähde-IP-osoite, lähdeportti ja muut parametrit UDP-kerroksessa. DNS-protokollakerroksessa kyselyn ID väärennetään satunnaisesti yhdessä ratkaistavan verkkotunnuksen kanssa. Suodatuksen estämisen lisäksi satunnaisesti ratkaistavat väärennetyt verkkotunnukset voivat myös vähentää DNS-välimuistin osumisen todennäköisyyttä ja kuluttaa mahdollisimman paljon DNS-palvelimen prosessorin resursseja. DNS Query Floodin koodista kirjoitin heinäkuussa 2011 koodin palvelimen suorituskyvyn testaamiseen, ja linkki on http://www.icylife.net/yunshu/show.php?id=832. Samoin tämä koodi on keinotekoisesti vähemmän aggressiivinen ja tarkoitettu vain testaukseen. 1.3. HTTP-tulvaEdellä kuvattu SYN Flood ja DNS Query Flood voidaan tehokkaasti torjua tässä vaiheessa, ja todellinen päänsärky suurille valmistajille ja internetyrityksille on HTTP Flood -hyökkäykset. HTTP Flood on hyökkäys seitsemännen kerroksen protokollan verkkopalvelua vastaan. Sen suuri haitta ilmenee pääasiassa kolmessa osa-alueessa: kätevä aloitus, vaikea suodatus ja laaja-alainen vaikutus. Sekä SYN Flood että DNS Query Flood vaativat hyökkääjiä hallitsemaan suurta määrää botteja, joilla on juurioikeudet. Suuren määrän juurioikeuksien kerääminen vie aikaa ja vaivaa, ja hyökkäyksen aikana nukkekone täyttyy hitaasti, koska hyökkääjä menettää nopeasti resurssejaan ylläpitäjän havaitseman poikkeavan liikenteen vuoksi, mikä heikentää merkittävästi hyökkäyksen intensiteettiä eikä sitä voi ylläpitää pitkään. HTTP Flood -hyökkäykset ovat erilaisia: hyökkääjien ei tarvitse hallita suurta määrää botteja, vaan käyttävät porttiskannereita löytääkseen anonyymejä HTTP-proxyjä tai SOCKS-välityspalvelimia Internetistä, joiden kautta hyökkääjä aloittaa HTTP-pyynnöt hyökkäyskohteelle. Anonyymit proxyt ovat suhteellisen monipuolinen resurssi, ja niiden saaminen muutamassa päivässä ei ole vaikeaa, joten hyökkäykset on helppo käynnistää ja ne voivat kestää pitkään. Toisaalta HTTP-tason tulvahyökkäykset käynnistetään HTTP-kerroksessa, mikä jäljittelee voimakkaasti tavallisten käyttäjien verkkosivupyyntökäyttäytymistä, joka liittyy läheisesti verkkosivuston liiketoimintaan, tehden tietoturvatoimittajille vaikeaksi tarjota yhteistä ratkaisua, joka ei vaikuta käyttäjäkokemukseen. Säännöt, jotka toimivat hyvin yhdessä paikassa, skenaarioiden muuttaminen voi johtaa suureen määrään tappoja. Lopuksi HTTP-tulvahyökkäykset voivat aiheuttaa vakavia ketjureaktioita, jotka eivät ainoastaan suoraan hidasta vastausta hyökätyltä web-front-endiltä aiheuttavat, vaan myös epäsuorasti hyökkäävät taustatason Java- ja muihin liiketoimintatason logiikka- ja taustatietokantapalveluihin, lisäten niiden painetta ja jopa vaikuttaen lokitallennuspalvelimiin. Mielenkiintoista kyllä, HTTP Floodilla on myös historiallinen lempinimi nimeltä CC attack. CC on lyhenne sanoista Challenge Collapsar, joka on tunnetun kiinalaisen turvallisuusyrityksen DDoS-suojauslaite. Nykytilanteesta päätellen ei ainoastaan Collapsar, vaan kaikki puolustuslaitteet, haastetaan edelleen, eikä riskiä ole poistettu. 1.4. Hitaat yhteyshyökkäyksetHyökkäyksissä ensimmäinen reaktio on valtava liikenne ja valtavat paketit. Mutta on olemassa hyökkäys, joka tekee päinvastoin, tunnetaan hitaasta, jolloin jotkut hyökkäyskohteet tapetaan tietämättä miten ne kuolevat, eli hidas yhteyshyökkäys, edustavin on Slowloris, jonka käärme keksi. HTTP-protokolla määrää, että HTTP-pyynnöt päättyvät \r\n\r\n, mikä tarkoittaa, että asiakas on lopettanut lähetyksen ja palvelin aloittanut käsittelyn. Mitä tapahtuu, jos et koskaan lähetä \r\n\r\n? Slowloris hyödyntää tätä DDoS-hyökkäyksissään. Hyökkääjä asettaa HTTP-pyynnön otsikossa Yhteyden Keep-Alive, pyytää web-palvelinta pitämään TCP-yhteyden katkaisena, ja lähettää sitten hitaasti avain-arvomuodon palvelimelle muutaman minuutin välein, kuten a:b\r\n, mikä saa palvelimen luulemaan, ettei HTTP-otsikkoa ole vastaanotettu ja odottaa. Jos hyökkääjä käyttää monisäikeistä tai nukkea samaan, palvelimen verkkokontti ylikuormittuu nopeasti hyökkääjän toimesta eikä enää hyväksy uusia pyyntöjä. Pian alkoi ilmestyä erilaisia Slowloris-variantteja. Esimerkiksi POST-menetelmä lähettää dataa Web-palvelimelle, täyttää suuren sisällönpituisen mutta hitaasti tavu kerrallaan POST-todellisen datan sisällön jne. Slowloris-hyökkäyksestä rsnake antaa myös testikoodin, katso http://ha.ckers.org/slowloris/slowloris.pl. 2. DDoS-hyökkäys edistynyt2.1. HybridihyökkäyksetYllä oleva esittelee useita perushyökkäysmenetelmiä, joita voidaan käyttää verkon hyökkäämiseen ja jopa valtavien verkkosivustojen, kuten Alibaban, Baidun ja Tencentin, voittamiseen. Mutta siinä ei ole kaikki, eri tasoiset hyökkääjät voivat tehdä täysin erilaisia DDoS-hyökkäyksiä, ja niiden käyttö on sama asia. Edistyneet hyökkääjät eivät koskaan käytä yhtä yksittäistä hyökkäyssuuntaa, vaan yhdistävät ne joustavasti kohdeympäristön mukaan. Tavallinen SYN Flood on helppo suodattaa pois liikenteenpuhdistuslaitteilla käänteisen tunnistuksen, SYN-evästeiden ja muiden teknisten keinojen avulla, mutta jos SYN+ACK-paketteja sekoitetaan SYN Floodiin, jolloin jokaisella väärennetyllä SYN-paketilla on vastaava väärennetty asiakasvahvistuspaketti, vastaava tässä viittaa lähde-IP-osoitteeseen, lähdeporttiin, kohde-IP:hen, kohdeporttiin, TCP-ikkunan kokoon, TTL:ään jne. ovat kaikki linjassa saman isännän ja saman TCP-virtauksen ominaisuuksien kanssa. Virtauksen puhdistuslaitteiden käänteisen tunnistuksen ja SYN-evästeiden suorituskyvyn paine kasvaa merkittävästi. Itse asiassa SYN-datapaketeilla ja erilaisilla muilla lippubiteillä on erikoishyökkäysefektejä, joita tässä ei esitetä. DNS-kyselytulvalle on myös ainutlaatuisia tekniikoita. Ensinnäkin DNS voidaan jakaa tavalliseen DNS:ään ja valtuutettuun domain-DNS:ään, hyökäten tavalliseen DNS:ään vastaan, IP-osoite täytyy väärentää satunnaisesti ja palvelin vaatii rekursiivista ratkaisua; Kun hyökätään valtuutettuun verkkotunnukseen DNS:ää, väärennetty lähde-IP-osoite ei tulisi olla täysin satunnainen, vaan internet-palveluntarjoajan DNS-osoitteet ympäri maailmaa kerätään etukäteen, jotta hyökkäysvaikutus maksimaalisesti saavutetaan ja liikenteenpuhdistuslaite joutuu noloon tilanteeseen IP-mustan listan lisäämisestä tai IP-mustalistalta puuttumisesta. Sen lisääminen johtaa suureen määrään tappoja, ja jos et lisää mustaa listaa, jokainen paketti täytyy tarkistaa käänteisesti, mikä lisää suorituskykypainetta. Toisaalta, kuten aiemmin mainittiin, laitteen puhdistamisen paineen lisäämiseksi on tarpeen satunnaistaa pyydetty verkkotunnus ilman, että välimuistiin osutaan, mutta on huomattava, että ratkaistavalla verkkotunnuksella on oltava tietty säännöllisyys väärennöksessä, kuten väärentämällä vain tietty osa verkkotunnuksesta ja vahvistamalla osa, jotta puhdistuslaitteen asettama valkoinen lista voidaan rikkoa. Syynä on yksinkertainen: Tencentin palvelimet voivat ratkaista vain Tencentin verkkotunnukset, ja täysin satunnaiset verkkotunnukset voidaan suoraan hylätä ja ne täytyy vahvistaa. Mutta jos se on täysin korjattu, se on helppo hylätä suoraan, joten se täytyy väärentä. Toiseksi, hyökkäykset DNS:ään eivät saisi keskittyä pelkästään UDP-portteihin, jotka ovat myös DNS-protokollan mukaisia vakiopalveluita. Hyökkäyksen sattuessa sekä UDP- että TCP-hyökkäykset voidaan toteuttaa samanaikaisesti. HTTP Floodin tavoitteena on murtautua frontendin välimuistin läpi ja päästä suoraan Web-palvelimelle HTTP-otsikon kenttäasetusten kautta. Lisäksi HTTP Flood on myös erittäin tärkeä kohteiden valinnassa, ja tavalliset hyökkääjät valitsevat hyökkäyskohteeksi sivut, jotka vaativat paljon datakyselyjä, kuten haun, mikä on hyvin oikein ja voi kuluttaa mahdollisimman paljon palvelimen resursseja. Mutta tämä hyökkäys on helppo tunnistaa puhdistuslaitteilla ihmisen ja koneen tunnistuksen avulla, joten miten tämä ongelma ratkaistaan? Se on hyvin yksinkertaista, yritä valita sivuja, joihin tavalliset käyttäjät pääsevät myös APP:n kautta, yleisesti ottaen eri verkkorajapintojen kautta. Tavalliset käyttäjät ja haitallinen liikenne tulevat SOVELLUKSESTA, ja ihmisen ja koneen ero on hyvin pieni, ja perusintegraation erottaminen on vaikeaa. Jokainen TCP-yhteys on olemassa palvelinpuolella ja itsessään, ja sen täytyy myös kuluttaa resursseja ylläpitääkseen TCP-tilaa, joten yhteyttä ei voi ylläpitää liikaa. Jos tämä saadaan ratkaistua, aggressiivisuus kasvaa huomattavasti, eli Slowloris voi käynnistää hyökkäyksiä tilattomalla tavalla, kaapata TCP-sarjanumeron ja varmistaa TCP-yhteyksien ylläpidon asiakkaassa nuuskimalla, eikä järjestelmäytimen tarvitse kiinnittää huomiota TCP:n erilaisiin tilamuutoksiin, ja kannettava voi tuottaa jopa 65 535 TCP-yhteyttä. Aiemmat kuvaukset ovat kaikki teknisiä hyökkäysparannuksia. Ihmisten puolella on muitakin keinoja. Jos SYN Flood lähettää suuren määrän paketteja ja siihen liittyy Slowlorisin hitaita yhteyksiä, kuinka moni löytää salaisuuden? Vaikka palvelin kaatuisi, saattavat löytyä vain SYN-hyökkäyksiä, jotka yrittävät vahvistaa TCP-kerroksen puhdistusta ja sivuuttaa sovelluskerroksen käytöksen. Kaikenlaiset hyökkäykset voivat toimia yhdessä maksimaalisen vaikutuksen saavuttamiseksi. Hyökkäysajan valinta on myös avainasemassa, kuten huoltohenkilöstön valinta lounaalla, kun huoltohenkilöstö on jumissa tiellä töistä päästyään tai kun metrossa ei ole signaalia langattomalla verkkokortilla, ja kun kohdeyritys järjestää laajamittaisen tapahtuman ja liikenne kasvaa. Tämä on puhdas hyökkäys, joten koodia tai syvällistä selitystä ei anneta. 2.2. Hyökkäykset P2P-verkoistaAiemmat hyökkäysmenetelmät vaativat enemmän tai vähemmän joitakin botteja, jopa HTTP Flood vaatii suuren määrän anonyymejä välityspalvelinten etsimistä. Jos hyökkäys tapahtuu, sinun tarvitsee vain antaa joitakin käskyjä, ja kone tulee automaattisesti suorittamaan sen, mikä on täydellinen ratkaisu. Tämä hyökkäys on jo ilmestynyt, ja se tulee P2P-verkoista. Kuten kaikki tiedämme, P2P-käyttäjät ja internetin liikenne ovat erittäin suuri määrä. Jos kaikki menevät määrättyyn paikkaan lataamaan dataa ja yhdistämään tuhansia oikeita IP-osoitteita, mikään laite ei pysty tukemaan sitä. Otetaan esimerkiksi BT-lataus: suosittujen videoiden väärentäminen ja niiden julkaiseminen hakukoneille riittää huijaamaan monia käyttäjiä ja liikennettä, mutta tämä on vain perushyökkäys. Kehittyneet P2P-hyökkäykset ovat suoraa resurssienhallintapalvelimien väärentämistä. Esimerkiksi Thunder-asiakas lataa löytämänsä resurssit resurssienhallintapalvelimelle ja ohjaa ne muille käyttäjille, joiden täytyy ladata samat resurssit, jotta linkki julkaistaan. Protokollan kääntämisen kautta hyökkääjät väärentävät suuren määrän suosittua resurssitietoa ja jakavat sen resurssienhallintakeskuksen kautta, joka voidaan välittömästi levittää koko P2P-verkkoon. Vielä pelottavampaa on, että hyökkäystä ei voida pysäyttää, edes hyökkääjän itsensä toimesta, ja hyökkäys jatkuu, kunnes P2P-viranomainen löytää ongelman, päivittää palvelimen ja lataaja käynnistää ladatun ohjelmiston uudelleen. 3. YhteenvetoSiinä kaikki DDoS-hyökkäysten johdannossa, enkä halua mennä pidemmälle—riittää ymmärtää, että niin paljon puolustusta riittää. Yleisesti ottaen DDoS-hyökkäykset voivat olla ketteriä ja sulavia. Soveltamisen kauneus piilee mielen yhtenäisyydessä. |