freestone-carryout
freestone-carryout
freestone-carryout
freestone-carryout

Vad är DNS Cache Poisoning?

Det finns en lång historia av attacker riktade mot DNS. I historien finns bland annat DDoS-attacker, attacker direkt mot vissa root-servrar där man använt specialskrivna program för att kunna utföra attacken.

Det som skrivits mest om under den senare tiden är nog "DNS Cache Poisoning"-attacker (DCP). En sådan attack kräver inte speciellt mycket bandbred, snabba CPU:er eller förfinade tekniker för att genomföras.

DCP kan användas genom att en angripare t.ex. injicerar en falsk IP-adress för en Internet-domän (domain.com) i en DNS. Om DNSen kan luras att acceptera IP-adressändringen så ersätts DNS-cachen med den falska adressen. Följaktligen så får alla förfrågningar om domain.com den falska IP-adressen (som kontrolleras av angriparen) som svar.

Så länge som den falska adressen finns i cachen (TTL-värdet för en domän är vanligtvis några timmar) så skickas surfande användare e-postservrar med mera automatiskt till adressen som servas av den infekterade DNSen.

Den här typen av attack kallas vanligen för "Pharming" och skapar flera problem. En användare tror att han/hon har hamnat på rätt webbplats, URLen är riktig, därför är det svårt att avgöra om något misstänkt som pågår.

Andra problem är att om domänen är populär så skickas hundra- eller tusentals användare till den falska webbservern. Detta kan ställa till stora problem om servern innehåller trojaner eller liknande ondsint kod som laddas ner av den intet ont annande användaren.

Ett annat scenario är att injicera en falsk IP-adress för en e-postserver, vilket innebär att t.ex. en organisations e-post skickas via en server som kontrolleras av en angripare.

...hur går det då till för att lura en "caching DNS server" att acceptera en falsk DNS-post?

När en "caching DNS server" får en förfrågan angående en adress för en domän så tittar den först i sin cache för att se om adressen redan är lagrad (detta för att spara tid och kraft), om informationen inte är lagrad så skickas frågan vidare till auktoritativa DNSer för domänen i fråga.

Innan den senaste beryktade publicerade sårbarheten av DNS-systemet, behövde en angripare tävla med en auktoritativa DNSer för att injicera adress-poster. Skicka ett falskt DNS-svar med rätt parametrar satta i DNS-paketet och hoppas att svaret når målet innan det legitima svaret. Detta gav angriparen en väldigt kort tidlucka att lyckas (det är frågan om hundra- / tiondels sekunder)

I och med den senaste sårbarheten kan tidluckan drastiskt utökas genom att skicka förfrågningar för domäner som - angriparen vet - inte existerar (t.ex b1o2n3n559dzzz.domain.com) till "caching"-servern. Detta genererar mängder av frågor från "caching"-servern, vilket i sin tur öppnar för miljontals möjligheter att skicka falska DNS-svar.

I stället för endast en chans att förfalska svaret får användaren massor av chanser (per tidlucka) att sätta rätt parametrar i DNS-svaren.

Att förfalska en DNS-post för b1o2n3n559dzzz.domain.com är vanligtvis inte användbart eftersom (troligen) ingen kommer att skicka förfrågningar för den domänen - det är då det magiska sker i den sista delen av attacken...

I det falska DNS-svaret pekar angriparen "caching"-servern till en falsk DNS-server för domänen som ska angripas. Denna information sparas av "caching"-servern.

På detta sätt kan angriparen kontrollera för den angripna domänen. Alla förfrågningar som gäller domänen skickas till angriparens server, vilket innebär att angriparen har kontroll över alla sub-domäner för domänen: www.a.domain.com, mail.b.domain.com osv. Angriparen har nu ett kontroll över domänen och kan skicka förfrågningar för alla sub-domäner till en server som är under angriparens kontroll.

Hur kan man då skydda sig mot dessa attacker?

Det finns ett antal olika föreslagna metoder som kan användas till exempel:

  • Slumpa fram källportar för DNS-kommunikation (UDP SPR), försvårar för en angripare att gissa rätt parametrar för ett DNS-paket.
  • DNSSEC


För att känna sig någorlunda säker vill man kunna svara på frågor som:

  1. Hur vet jag att det är rätt DNS-server som svarar på förfrågan?
  2. Hur vet jag att DNS-datat inte har blivit förvanskat?

Som det ser ut just nu är svaret på dessa frågor DNSSEC: en standard för autentisering av DNSer och DNS-data genom kryptografiska nycklar samt elektroniska signeturer.

Varför DNSSEC?
  • DNSSEC använder DNS för distribution av kryptografiska nycklar, signaturer och certifikat.
  • DNSSEC minskar risken för manipulation av namnuppslagningar. T.ex. förfalskningar av webbplatser.
  • DNSSEC möjliggör flexibel infrastruktur för distribution av nycklar och certifikat till t.ex. Epost, IPSec, TLS/SSL, VPN, SSH osv.
  • DNSSEC skyddar namnuppslagningar och erbjuder nyckeldistribution.
  • DNSSEC är flexibelt, enkelt, billigt, skalbart, och interoperabelt.

För mer information och länkar kring DNSSEC:
http://www.iis.se/domains/sednssec
http://en.wikipedia.org/wiki/DNSSEC


Förklaringar:
DNS: Domain Name System (Domännamnssystemet)
CACHE: Mellanlagringsminne
DNS CACHE POISONING: Injicering av falsk information i DNS-cache
DNSSEC: Domain Name System Security Extensions
NAT: Network Address Translation (IP-adressöversättning)
UDP SPR: User Datagram Protocoll Source Port Randomization
DDoS: Distributed Denial-Of-Service


0 kommentarer