Het zal niemand ontgaan zijn: sinds begin april is het onderwerp DDoS nadrukkelijk in het nieuws geweest. Na ING, Rabobank, ABN Amro en SNS Reaal zijn ook KLM, NS en DigID onderwerp van gesprek geweest na een "cyberaanval".
In de reacties op deze aanvallen zijn op tv en op internet diverse boude uitspraken gedaan met betrekking tot deze aanvallen. Zo zijn er personen die beweren dat een DDoS zoiets is als regen: het kan gebeuren en je doet er niets aan. Wapenen is niet mogelijk en je zult het moeten uitzitten tot het opklaart. Anderen zeggen juist dat een DDoS met alle gemak van de wereld af te slaan is door het plaatsen van een juiste firewall of door gebruik te maken van zogenaamde "DDoS-mitigatiediensten", bijvoorbeeld van VeriSign of Prolexic.
Maar hoe zit het nu echt? Zoals vaker bij controversiële zaken ligt de waarheid in het midden. In dit artikelen proberen wij wat duidelijkheid te geven omtrent de technische kant van een DDoS-aanval en waarom het zo lastig (of juist zo makkelijk) is om een aanval af te slaan.
-------------------------
Analogie
Om een en ander voor de minder technisch ervaren mensen duidelijk te maken, kan een analogie verhelderd werken. In dit artikel zal daarom meermaals het voorbeeld van de Bijenkorf gebruikt worden. Hoewel dit voorbeeld niet altijd een realistische of technisch accurate afspiegeling is van de gebeurtenissen, verstrekt het voldoende informatie voor de beeldvorming.
-------------------------
Algemene beschrijving DDoS
Laten we beginnen met een luchtige introductie. Dus wat is een DDoS nu precies? Voor we dat uitleggen is het belangrijk om te weten wat een DoS is (Dus met maar één ‘D’). DoS staat voor “Denial of Service”, grofweg vertaald dat naar weigering van dienst. Een praktisch voorbeeld van een DoS is constant de computer van iemand anders uitzetten terwijl die persoon daarmee werkt. Je zorgt er namelijk voor dat de computer (tijdelijk) niet gebruikt kan worden. Zo is het ook in de digitale wereld. Iemand doet iets met een website of service waardoor deze niet meer gebruikt kan worden.
Als je dat als één persoon wil doen zoals dat de afgelopen tijd gebeurt is dan gaat je dat niet lukken. Daarom gebruikt men hiervoor een DDoS (Distributed Denial of Service). Oftewel, met heel veel mensen (of systemen) zorgen dat iets of iemand (tijdelijk) niet bereikbaar is. Een DoS-aanval en een DDoS-aanval zijn dus identiek aan elkaar, met het verschil dat bij een DDoS meer aanvallende mensen (of systemen) zijn. De uitwerking is gelijk.
Typen aanvallen
Er is niet zoiets als -een DDoS-aanval-. Dit komt doordat DDoS eigenlijk niet meer betekent dan "weigering van dienst". Het is daarmee dus een verzamelnaam voor allerlei verschillende type aanvallen, die dezelfde uitwerking hebben. Met tweehonderd man de ingang van een bankkantoor bezetten, zodat klanten niet meer naar binnen kunnen, zou je ook kunnen zien als een DDoS-aanval. Maar hoe wordt zo'n digitale DDoS-aanval dan uitgevoerd?
Dat kan op veel manieren. De meest gebruikelijke aanval is gewoon ontzettend veel verkeer versturen naar een server. Die krijgt het vervolgens zo druk met het afhandelen van dat verkeer dat er amper resources vrij blijven om legitieme gebruikers van dienst te zijn. Vaak wordt dit gedaan door mensen (crackers, cybercriminelen, hoe je ze wil noemen) met controle over ontzettend veel systemen (zgn. bots die lid zijn van een botnetwerk). Vaak zijn dit gewoon computers in de huiskamers van mensen welke geïnfecteerd zijn met malware. Omdat gewone huis- tuin- en keukencomputers hiervoor gebruikt worden, gaat dit vaak ook ten koste van de internetaansluiting waar de computer op aangesloten is. Dit is een aanval op de beschikbare bandbreedte van de server.
Een voorbeeld van zo'n type aanval is een ICMP Flood attack. Dit is een van de meest eenvoudige type aanvallen die uitgevoerd kan worden.
-------------------------
Analogie
Wanneer de Bijenkorf in Amsterdam een nieuwe kledinglijn introduceert, waar veel kritiek op is, kan men besluiten om een demonstratie te organiseren. Wanneer men met 500 man buiten voor de ingang gaat staan om te protesteren, is het niet meer mogelijk voor klanten om de Bijenkorf te betreden. De dienstverlening van de Bijenkorf is hiermee effectief onmogelijk gemaakt.
-------------------------
Een andere manier is door (on)bekende fouten in software te misbruiken. Een tijd geleden is er zo’n fout gevonden in verschillende talen welke gebruikt worden om websites mee te maken. Eén enkele computer kon een speciaal geprepareerd bericht sturen naar een server, waardoor deze ontzettend veel rekenkracht kwijt was om een antwoord te verzinnen. Vergelijk het met iemand constant ontzettend moeilijke wiskundige vragen stellen. Zo’n vraag bedenken is makkelijk, het antwoord achterhalen veel moeilijker (en ook vooral tijdrovender). (Source: http://www.securityweek.com/hash-tab...-massive-scale). Dit is vooral een aanval op de beschikbare resources van een server.
Een combinatie van de voorgaande voorbeelden is pas ook gebruikt bij de DDoS-aanval tegen Spamhaus (Source: http://www.spamhaus.org/news/article/695/). Deze aanval misbruikte de manier waarop DNS werkt. Normaal gesproken als iemand naar bijvoorbeeld www.google.nl wil surfen, zal de computer op de achtergrond vragen aan de DNS server welk IP-adres bij het domein www.google.nl hoort. Bij die vraag zit ook een soort van retouradres, waarmee de server weet waar hij het antwoord naartoe moet sturen. Bij deze aanval is dat retouradres aangepast naar het adres van Spamhaus. Vervolgens bleven de aanvallers aan zoveel mogelijk DNS-servers aanvragen doen, die het antwoord vervolgens naar Spamhaus terugstuurde. Omdat een antwoord vaak groter is dan een aanvraag, wordt het effect van de aanval versterkt. Vandaar ook de naam “DNS Amplification Attack”. Dit is een soort combinatie van de vorige twee aanvallen.
Een laatste voorbeeld is om helemaal niks te misbruiken, maar om gewoon de bedoelde functionaliteit van een website heel vaak te gebruiken. Door bijvoorbeeld niet alleen een webpagina 1000x op te vragen, maar ook daadwerkelijk 1000x in te loggen. Hierdoor hoeft de webserver niet alleen 1000x de website te laden, maar ook 1000x een loginpoging verwerken. Bij eerdergenoemde aanvallen, waarbij veel data verstuurd wordt naar het netwerk van een DDoS-slachtoffer, worden vooral de netwerkcomponenten belast. Wanneer echter actief een inlogpoging wordt uitgevoerd, wordt hier dan ook nog eens de achterliggende infrastructuur (databaseservers, etc) belast. Dit heeft dus een grotere impact op de gehele infrastructuur.
Een type aanval waarbij de werking van een systeem (of beter: de werking van het TCP/IP-protocol) wordt misbruik, is een SYN Flood attack. Bij een ICMP Flood attack verstuurt de aanvaller zoveel data als mogelijk naar de systemen van het slachtoffer, om deze te overbelasten. Deze data "betekent" of "doet" verder niets, en zou je kunnen classificeren als ruis. Hoewel de netwerkcomponenten deze ruis wel verwerken, hebben de achterliggende systemen hier over het algemeen weinig last van.
Heel anders is het bij een SYN Flood attack. Één van de kenmerken van het TCP/IP-protocol (het protocol waar ook het internet op is gebaseerd), is dat bij het opzetten van een nieuwe verbinding een zogenaamde "handshake" plaatsvindt. Tijdens deze handshake wordt informatie uitgewisseld tussen de server en de client. Normaliter bestaat deze handshake uit drie stappen:
Stap 1: de client legt verbinding met de server: "Hallo Server, ik ben Bob" (= SYN-pakket).
Stap 2: de server antwoordt en geeft aan klaar te zijn: "Hallo Bob, ik ben Server. Wij kunnen praten!" (= SYN + ACK)
Stap 3: de client bevestigt het contant (= ACK).
Na deze drie stappen kan de daadwerkelijke data-uitwisseling (bijvoorbeeld het bezoeken van een webpagina) plaatsvinden.
Bij een SYN Flood attack wordt niet verdergegaan dan stap 1. In deze situatie leggen duizenden computers tegelijk contact met de server (Hallo Server, Hallo Server, Hallo Server, Hallo Server, etc.). Na dit eerste contant laten zij niets meer van zich horen. De server voert echter wel stap 2 uit en beantwoordt al deze verzoeken. Wanneer de server dit doet, reserveert deze bronnen (in de vorm van verbindingen), die enige tijd gereserveerd blijven voor het geval de client alsnog antwoord geeft. Hierdoor is de server uiteindelijk niet meer in staat op nieuwe verzoeken te accepteren.
-------------------------
Analogie
Stel dat de demonstranten niet meer voor de ingang staan maar toegang hebben gekregen tot de Bijenkorf. Ditmaal is hun tactiek niet om voor de deur te blijven staan maar om de kassières te gaan bevragen. De demonstranten stellen de kassières allerlei (irrelevante) vragen, waardoor zij constant bezig zijn met het opzoeken en bedenken van antwoorden. Doordat de kassières hiermee constant bezig zijn, komen ze er niet aan toe om de reguliere klanten te helpen.
-------------------------
Uiteraard zijn dit niet de enige mogelijkheden, maar wel de meest voorkomende. De reden hiervoor is vaak gewoon “trots”, of "omdat het kan”. Echter kan het ook voorkomen dat men een dienst of website offline wil hebben om er geld aan te verdienen. Denk hierbij aan een instortend aandeel, of zelfs criminelen die na een aanval op een bank massaal mail gaan sturen naar klanten, en ze te vragen in te loggen om "de gegevens te verifiëren". De werkelijke reden achter de recente aanvallen is tot op heden onbekend.
Analogie
Wanneer de Bijenkorf in Amsterdam een nieuwe kledinglijn introduceert, waar veel kritiek op is, kan men besluiten om een demonstratie te organiseren. Wanneer men met 500 man voor de ingang gaat staan om te protesteren, is het niet meer mogelijk voor klanten om de Bijenkort te betreden.
Mogelijke oplossingen en de problemen
Nu je iets meer weet over hoe een DDoS-aanval bijvoorbeeld
Als reactie op de aanvallen worden veel uitspraken gedaan als "tijd voor een betere firewall", of "de beveiliging van de banken is slecht". Zelfs prominenten zoals Europees Commissaris Neelie Kroes hebben zich tot zulke uitspraken laten verleiden. Hoewel er zeker maatregelen te nemen zijn tegen DDoS-aanvallen, zijn deze niet allemaal even effectief. Hieronder zullen we daarom ingaan op enkele (theoretische) beschermingsmethoden en de effectiviteit daarvan.
Het probleem is, dat er niet ontzettend veel dingen zijn die bedrijven hiertegen kunnen doen. Je kan bijvoorbeeld wel een firewall neerzetten tegen aanvallen die alle bandbreedte opslokken, maar die zal toch al het verkeer moeten afhandelen. Ook al is de uitkomst dat het verkeer genegeerd moet worden, zal er eerst een proces doorlopen moeten worden om tot die conclusie te komen. Er zijn ook apparaten speciaal ontwikkeld voor dit soort aanvallen, en deze blijken ook wel redelijk te werken tegen verschillende soorten aanvallen. Het probleem is dan natuurlijk dat er ook voor die hardware een grens ligt aan wat het kan verwerken. Plus dat er geen enkele garantie is dat er over een twee weken geen compleet nieuw soort aanval gebruikt wordt waar het apparaat geen enkele bescherming tegen biedt.
Uiteraard is het wel van belang dat de software die in gebruik is (Webserver, etc) wel up to date is. Dit om misbruik van bekende fouten in software in ieder geval te voorkomen. Al is dat natuurlijk geen garantie tegen geavanceerdere aanvallen die misbruik maken van onbekende kwetsbaarheden.
Helaas zijn dit slechts kleine stappen, en geen gegarandeerde oplossing voor het probleem. En dat blijkt ook wel uit de berichtgeving van de afgelopen dagen.
Blokkeren van aanvallende computers
Eerder in het artikel hebben we de SYN Flood attack uitgelegd. Nu zou je wellicht kunnen denken "waarom weiger je niet de "Hallo Server"-berichten?". Hoewel dit in theorie dé oplossing is voor het probleem, is dat in de praktijk niet mogelijk. Doordat de aanvallers in de meeste gevallen gebruik maken van een botnet met honderduizenden deelnemende bots, zullen er constant nieuwe systemen zijn die een dergelijk verzoek uitvoeren. Hoewel je de systemen die een verzoek al hebben gedaan in theorie kan blokkeren, voorkomt dit niet dat andere systemen nieuwe verzoeken uitvoeren. Wanneer je alle verzoeken zou weigeren, zouden ook legitieme klanten geen toegang meer hebben tot de webserver. Er is op dit moment (in principe) nog geen filtering mogelijk.
Een mogelijke oplossing is om de server de verbinding sneller te laten vergeten (= het verlagen van de time out). Dit heeft echter als gevolg dat legitieme gebruikers met een trage verbinding, de verbinding met de webserver kunnen verliezen. Daarnaast is deze methode niet effectief, als de aanval groot genoeg is.
Meer / betere firewalls
Dedicated anti-DDoS-apparatuur
In de praktijk
De meeste bedrijven bestrijden vuur dan ook gewoon met vuur. Er zijn speciale diensten zoals bijvoorbeeld CloudFare, Amazon en Prolexic. Dit zijn bedrijven met zo ontzettend veel bandbreedte dat het gewoon bijna onmogelijk is dit allemaal op te maken, ook al heb je miljoenen bots onder controle. Een nadeel is dat je als bedrijf dan natuurlijk wel zo’n ander (Vaak Amerikaans) bedrijf wel moet vertrouwen met jouw gevoelige data. En dat is precies het vervelende van dit soort aanvallen, er is niet echt een duidelijke oplossing. Vooral ook omdat er vaak gewoon misbruik gemaakt wordt van de manier waarop iets hóórt te werken.
Dat vat ook eigenlijk de hele problematiek van de genoemde oplossingen samen. Er is geen duidelijke, gegarandeerde oplossing aan te wijzen, behalve een team van getrainde IT-ers die handmatig terug vechten. Zo is er bijvoorbeeld ook een grootschalige DDoS aanval geweest op de hoster TransIP. Echter, door het harde werk van het IT team hebben eindgebruikers hier bijna niks van gemerkt.
Daarom is er nu ook zoveel onenigheid over wie er schuld heeft bij het onbereikbaar zijn van dingen als banken, vliegtuigmaatschappijen etc. Zover zelfs dat mensen als Neelie Kroes de schuld op de banken afschuiven voor het niet hebben van een fatsoenlijke firewall, terwijl dat eigenlijk amper tot geen bescherming biedt tegen een DDoS aanval. Helaas is de conclusie dus ook dat er eigenlijk een groot gebrek is aan een goede aanpak van DDoS aanvallen. Al is het natuurlijk ontzettend belangrijk om te zorgen dat jouw pc niet geïnfecteerd is met allerlei soorten malware, om te voorkomen dat deze in een dergelijke aanval gebruikt kan worden. Of wordt het gewoon tijd voor een speciaal team per bedrijf, om de digitale veiligheid en bereikbaarheid te waarborgen?
Nog meer praktijk
Daarnaast spelen er nog meer factoren mee, die ervoor zorgt dat het inzetten van DDoS-werende middelen er niet automatisch voor zorgen dat de dienstverlening automatisch wordt hersteld.
Zie hiervoor onderstaande afbeelding van ING:
In de normale situatie worden alle klanten toegelaten door de firewall en hebben zij toegang tot de website. Wanneer een aanval plaatsvindt, kan de situatie zich voordoen dat de firewall simpelweg maximale verwerkingscapaciteit bereikt. Reguliere bezoekers zijn hierdoor niet in staat om de website bezoeken.
Er vindt in dit stadium helemaal geen filtering plaats: zo ver komt het verkeer nog niet eens.