DDoS Angreb: Fra Teori til Tekniske Vektorer

Næsten alle internetbrugere har oplevet en hjemmeside gå ned under et DDoS-angreb (Distributed Denial of Service). Konceptet – at en enorm flok zombie-maskiner (et Botnet) spammer en server så meget, at den ikke kan behandle legitime kunder – er velkendt.

Men når man kigger under motorhjelmen rent netværksteknisk, opdager man, at ikke to DDoS angreb er ens. Angribere angriber forskellige niveauer i OSI-modellen for at dræbe målet mest effektivt.

I denne artikel kigger vi på de tre overordnede kategorier af DDoS-angreb og dykker teknsisk ned i specifikke angrebsvektorer indeni hver kategori.


Kategori 1: Volumetriske Angreb (Volumetric Attacks)

Dette er den “klassiske” brutale form for DDoS. Målet her er kort og godt at æde alt den tilgængelige båndbredde, som offerets internetforbindelse har. Hvis firmaet har en bredbåndsforbindelse på 10 Gbps ind til datacentret, sender hackeren 40 Gbps. Der bliver med andre ord skabt en enorm trafikprop lige uden for bygningen.

Modsat andre angreb, gør Volumetric attacks ofte brug af Reflection & Amplification (Forstærkning) frem for at sende datapakker direkte fra botnet.

> DNS Amplification Attack (UDP Reflection)

Tænk på amplifikation som et tarveligt prank-call til en restaurant, hvor du (hackeren) bestiller 50 indbagte pizzaer – men oplyser dit offers adresse som leveringssted.

Teknisk Forklaring:

  1. IP Spoofing: Angriberen bygger en UDP-pakke (som ikke kræver forudgående ‘handshake’, hvilket gør det muligt at spoofe). Men som “Afsender-IP” indsætter hackeren målets (offerets) IP-adresse.
  2. Forespørgsel til DNS (Layer 7 protkol over UDP Layer 4): Pakken sendes til en sårbar og offentligt tilgængelig Open DNS server (f.eks. Google’s 8.8.8.8, selvom de fleste nu lukker for dette trick). Den falske pakke anmoder om typen ANY i DNS (eksempelvis “Giv mig ABSOLUT alle records, TXT, MX og A, du overhovedet har for domænet ddos-example.com”). Denne forespørgsel fylder i sig selv kun 60 bytes.
  3. Forstærkningen: DNS-serveren er pligtopfyldende. Den samler det store tunge svar på måske flere hundrede/tusinde bytes – og fordi UDP som sagt ikke tjekker tilstanden, kaster serveren det massive 4000-bytes svar tilbage til Afsenderen.
  4. Offeret modtager en stormflod af gigantiske DNS svar (et forstærkningsforhold typisk x50 eller over), for forespørgsler de aldrig selv har bedt om! Båndbredden knækker sammen.

Anden kendt Amplifikation UDP Vektor: NTP Amplification (Monlist command attack).


Kategori 2: Protokol-angreb (Protocol Attacks)

Hvor det volumetriske angreb lukkede netværkskablet, angriber protokolangrebet infrastrukturens faktiske enheder – brandmurene (firewalls) og load balancerne (Layer 3 & 4). Den æder altså den hardware-processor/RAM (State Table kapacitet) der forsvarer netværket, så routeren tvinges i knæ.

> TCP SYN Flood (Half-Open Attack)

Et klassisk angreb, der udnytter TCP Three-Way Handshake helt ind til benet.

Teknisk Forklaring:

  1. Forståelse af Handshaket: En normal TCP-aftale fungerer ved, at maskine A sender en SYN pakke (Vil du snakke?), server B returnerer SYN-ACK (Ja, jeg lukker et hul i min firewall/RAM op og venter på dig. Værsgo!) og maskine A kvitterer med en endelig ACK(Kvittering, her er min data).
  2. SYN Flooden: Angribermaskinen sender nu tusindvis af dedikerede SYN TCP pakker til målets specifikke åbne web-port (f.eks. Port 443).
  3. Serveren sætter ressourcer af til hver evig eneste anmodning og returnerer SYN-ACK pakker.
  4. “Ghosting”: Men angriberen svarer aldrig tilbage med den sidste ACK. Da Firewallen er designet til at understøtte brugere med langsomme internetforbindelser, holder den porten og RAM-tabellen åben (Half-open state connection) længe, oftest minutter, mens den venter i blinde.
  5. State-tabellen the Firewallen / Loadbalanceren fyldes lynhurtigt 100% op af de falske uåbnede døre, og nye legitime kunders reelle SYN anmodninger bliver blank droslet af, da der ikke er frie “borde” i restauranten mere (Connection Exhaustion).

Kategori 3: Applikations-angreb (Application Layer Attacks)

Disse Layer 7 (Application) angreb er de absolut mest snu, raffinerede og allersværest at stoppe! De er oftest målrettet webserveren direkte (Nginx, IIS, Apache).

Modsat en Layer 4 SYN Flood kræver et Layer 7 angreb blot meget lidt trafik (hvilket sniger sig lige under radaren på gængse IPS-alarmer). Det efterligner legitim menneskelig adfærd til punkt og prikke!

> HTTP Flood (GET / POST)

Her udnyttes skævvridningen mellem den regnekraft det kræver as bede om en ressource, imod for serveren at udregne den.

Teknisk Forklaring: Mange hjemmesider bygger deres sider dynamisk via tunge SQL opslag eller formler i backend-APIer. En bot kalder simpelthen via et regulært, uforfalsket (un-spoofed) TCP handshake selve API’ets database opslag (“Giv mig listen over alle produkter de seneste 3 år” – /api/products?year=last3). Når dette kaldes blot få hundrede gange i minuttet af rigtige maskiner der loader HTML og JavaScript rigtigt (hvis du kigger i Wireshark), skal serverens CPU køre op i 100% og udføre voldsomme SQL-kald i baggrunden, hvilket knuser CPU’en (Resource Exhaustion). Til omverdenen og normale WAF firewalls, ligner angriberne bare helt almindelige besøgende på hjemmesiden uden de store alarm-klokker.

> Slowloris

Dette er angrebet der udødeliggjorde den legendariske hackergruppe Anonymous, dengang de dræbte Mastercards hjemmeside. Slowloris navnet (efter lorisaben) indikerer tempo: langsom.

Teknisk Forklaring: En webserver (især ældre traditionelle thread-based servere såsom Apache) kan kun holde x-antal samtidige HTTP-klient-tråde (f.eks. 150 styk) åbne ad gangen pr worker. Når en klient på nettet beder om et web-dokument, sender browseren en formateret HTTP-header bestående af HTTP tags med et slut-tegn (Tegnet for “Jeg har talt ud, send min hjemmeside tilbage tak” -> To \r\n\r\n carriage returns/linjeskift).

  1. Hackeren etablerer over sin pc de fulde, lad os sige, 150 reelle og lovlige TCP tråde.
  2. Der sendes nu små brudstykker af selve HTTP HTTP-GET Request headeren. Nærmest drybvist: "GET / HTTP/1.1\r\n" … en meget lang pause … derefter "Host: www.bank.dk\r\n" … og det fortsætter…
  3. Angriberen sender bare ALDRIG den afsluttende \r\n\r\n streng.
  4. Webserveren tror at kunden simpelthen sidder på et horibelt ustabilt telefonnettet omme på den anden side af kloden, som sender et bytte af gangen hvert 10. sekundt, og lader generøst venligt “linjen/tråden” holde åben i månedsvis, imens den venter tålmodigt på sluttegnet.
  5. Inden for få sekunder har offer-serveren bundet sine sidste 150 tilgængelige server-workers (“tjenerene i restauranten”) sammen med skumle, tavse slowloris bots, der intet siger, men som serveren ikke tør afbryde. Siden lægges endegyldigt ned.

Selvom servere som Nginx og Cloudflare as a Service stort set har lukket “Slowloris” fejlen by default via timing rules og reverse-proxying, vil logikken bag Layer-7 udtømnings-angreb og udnyttelse af servernes arkitektoniske “Good Will” overleve evigt!

Kilder

> Quiz: Test din viden

1. Hvad æder Volumetriske DDoS-angreb?

2. Hvad spoofes i et DNS Amplification-angreb?

3. Hvad angriber Protokol-angreb frem for netværkskapaciteten?

4. Hvad er DDoS en forkortelse for?