Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Dan Kaminsky a jeho útok na DNS servery

Na nedávné bezpečnostní konferenci Black Hat vystoupil také Dan Kaminsky, který popsal nový způsob útoku na DNS cache, který umožňuje útočníkovi přesměrovat uživatele na cizí server. Česká média zatím o problému příliš neinformují. Jak útok funguje, co může způsobit a především jak se mu můžeme bránit?

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Systém DNS je tu s námi už 25 let a jeho první implementace byla napsána v roce 1983. Patří do stejné skupiny jako například poštovní protokol SMTP. Mají několik společných vlastností: jsou velmi jednoduché, velmi staré, velmi rozšířené a také velmi nezabezpečené.

V době, kdy tyto protokoly vznikaly, se nepředpokládalo, že by jejich použití narostlo do dnešních rozměrů a jejich vývojáři tak příliš neřešili autentizace, zabezpečení, kontrolu podvržených informací a podobně. Přestože byly protokoly i jejich implementace postupem času vylepšovány, ještě dnes se může objevit zcela nový způsob útoku.

Klasické otrávení DNS

Než si popíšeme samotný Kaminského útok, musíme se nejprve věnovat „tradičnímu“ napadení DNS, kterému se anglicky říká „DNS cache poisoning“ neboli otrávení DNS cache. Po úspěšném provedení jsme schopni dlouhodobě přesměrovat uživatele na jiný server, než na který standardně míří původní doména.

Využívá se při tom několika slabých vlastností DNS protokolu a existence takzvaných DNS cache serverů. Ty jsou obvykle umístěny u internetových poskytovatelů a obsahují jen velmi malé množství informací o DNS, které byly získány dřívějšími dotazy uživatelů.

Chceme-li navázat komunikaci s počítačem na konkrétní doméně, kontaktujeme náš DNS server, který je u poskytovatele a dotážeme se na IP adresu stroje, který nás zajímá. Protože DNS cache samotná adresu nezná, zeptá se příslušných DNS v internetu. Nakonec nám odpoví a zjištěnou odpověď si zapamatuje. Příště už na stejný dotaz odpoví přímo.

Útočník, který chce přesměrovat uživatele například ze serveru elektronického bankovnictví na svůj vlastní počítač (na kterém je falešný přihlašovací formulář) může zmíněnou DNS cache otrávit tak, že jí podvrhne falešné informace o DNS záznamech. Ty si cache zapamatuje a pak je předává svým uživatelům, kteří netuší, že dostávají doopravdy zcela jiné IP adresy, než které patří bankovní instituci.

Technicky probíhá komunikace klienta s cache takto:

  1. Klient kontaktuje svou DNS a požádá o přeložení doménového jména. Komunikace probíhá po UDP a dotaz obsahuje: zdrojový port, IP adresu a transakční ID.
  2. Klientova DNS odpověď nezná a proto se rekurzivními dotazy (stejným UDP protokolem) zeptá serverů na internetu.
  3. Odpověď je vrácena klientovi a je uložena jak u klienta, tak i u samotné cache.

Podstatné ovšem je, že ve třetím kroku se kontroluje správnost transakčního ID, což je dodatkový bezpečnostní mechanismus, který zabraňuje jednoduchému podvržení informací. Kromě toho se kontroluje také zmíněný zdrojový port a zdrojová IP adresa odpovědi. Tyto tři informace fungují jako jednoduchá autorizace.

Transakční ID sehrává důležitou roli, jedná se o dvoubajtové číslo a každý požadavek je tak označen jedním ze 65536 možných ID. Pokud se číslo v dotazu a odpovědi neshoduje, považuje žadatel odpověď za podvrženou a zahodí ji.

Útočník tedy musí čekat, až se server začne dotazovat na neznámý záznam a může se pokusit odpověď podvrhnout a doufat při tom, že se trefí do správného ID, portu a dalších údajů.

Tento typ DNS cache útoku je znám už velmi dlouho a vyplývá z principu samotného protokolu a chování DNS. Není považován za příliš velkou hrozbu, protože vzhledem k údajům, které musí útočník zaslat a uhodnout, je velmi nepravděpodobné, že se útok zdaří.

Navíc existuje relativně krátká doba, během které je třeba útok provést. To je doba, během které serveru vyprší údaj TTL, což je hodnota, která udává, jak dlouho může být záznam v cache udržován. Poté musí být znovu načten ze serveru. Zasypávat server falešnými odpověďmi v době, kdy zná správný údaj, je zcela zbytečné.

Varianta Dana Kaminského

Dan Kaminsky odhalil podstatné vylepšení u výše uvedeného útoku tím, že při aplikaci jeho postupu není třeba čekat na vypršení TTL, ale falešný záznam se podaří do DNS cache propašovat v podstatě kdykoliv, kdy je to potřeba.

Používá při tom jiné vlastnosti DNS protokolu: GLUE záznamu a sekcí AUTHORITATIVE a ADDITIONAL. Tyto položky v DNS odpovědi umožňují tazateli přidat další důležité informace jako jsou například údaje o IP adresách DNS serverů, které se starají o konkrétní doménu. DNS server tak může tazateli říci, že odpověď nezná, ale ví o serveru, který ji umí poskytnout.

Bez dodatečných sekcí v odpovědi bychom se ale mohli dostat do situace, kdy se „brejle bez brejlí špatně hledají“. Pokud se například zeptáme kořenového DNS serveru na IP adresu konkrétní domény, ten nám odpoví, že netuší, ale máme se zeptat serveru ns1.example.com. V tu chvíli bychom byli bezradní, protože neznáme IP adresu tohoto serveru, a tak se ho nemůžeme na žádnou IP adresu zeptat (aneb „Jaké má Jirka číslo? Nevím, zavolej mu a zeptej se.“)

Doopravdy by tedy vypadala odpověď serveru asi takto:

;; ANSWER SECTION:
    www.example.com.    120      IN    A    192.168.1.10

;; AUTHORITY SECTION:
    example.com.        86400    IN    NS   ns1.example.com.
    example.com.        86400    IN    NS   ns2.example.com.

;; ADDITIONAL SECTION:
    ns1.example.com.    604800   IN    A    192.168.2.20
    ns2.example.com.    604800   IN    A    192.168.3.30

V AUTHORITY sekci se dozvídáme, které servery se o doménu starají a v ADDITIONAL sekci si pak můžeme přečíst jejich IP adresy. Cesta dál je tedy jasná. Tazatel se dozvěděl (a zapamatoval si), že IP adresa www.example.com je 192.168.1.10.

Kaminsky ovšem přišel na způsob, jak v DNS cache tento záznam kdykoliv změnit, ačkoliv ještě nevypršela jeho platnost. Dejme tomu, že se cache za chvíli zeptá na další adresu: blabla.example.com. Útočník podvrhne následující záznam:

;; ANSWER SECTION:
    blabla.example.com.  120   IN  A    10.10.10.10

;; AUTHORITY SECTION:
    example.com.             86400   IN  NS   www.example.com.

;; ADDITIONAL SECTION:
    www.example.com.        604800   IN  A    10.10.10.20

Všimněte si poslední části. Tou se snažíme DNS cache přesvědčit o tom, že server www.example.com nyní sídlí na nové IP adrese. Pokud se nám to povede, bude si tato cache po 7 dní (604800) sekund tuto informaci držet a bude jí předávat svým uživatelům.

Stále je třeba uhodnout transakční ID, ale už je možné to dělat kdykoliv a navíc dotaz může vyvolat i samotný útočník a tak stačí generovat dotazy dostatečně často (třeba mnohokrát za sekundu) a šance, že se trefíme, je poměrně značná. Výhodou také je, že se můžeme cache ptát na naprosto libovolné (nejlépe neexistující) domény, protože na tvaru dotazu vůbec nezáleží.

Jak se bránit?

Dodavatelé DNS serverů už začali dodávat záplaty, kterými vylepšují své produkty. Kromě transakčního ID je náhodně generován také odchozí port pro DNS požadavky. Většina serverů používá jeden náhodně zvolený port po celou dobu svého běhu. Po aplikaci záplat je každý dotaz vygenerován z jiného portu, kterých může být 65536, stejně jako ID. Počet kombinací nám tedy rázem narůstá na 655362, což jsou více než 4 miliardy možností.

I toto číslo je však konečné a v laboratorních podmínkách už byl proveden úspěšný útok na takto zabezpečený server. Podle autora trval útok 10 hodin.

Jedinou stoprocentní obranou je protokol DNSSEC, jehož podpora bude u nás velmi brzy spuštěna. Tato služba rozšiřuje možnosti DNS a umožňuje záznamy elektronicky podepisovat. Tím zcela zabraňuje jakémukoliv podvržení údajů.

TIB2012

       

Jsem zranitelný?

Existuje několik nástrojů, s jejichž pomocí si můžete ověřit, jak je na tom váš DNS server: DNS Vulnerability Check a DNS Checker.

Anketa

Je vaše DNS zranitelná?

       

Stále existuje řada velkých českých poskytovatelů, kteří záplaty neaplikovali a umožňují tak libovolnému útočníkovi podvrhnout falešné DNS záznamy. Ve světě už se objevily první reálné případy úspěšných útoků.

Odkazy na další informace

Petr Krčmář

Petr Krčmář

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Vystudoval elektroniku se zaměřením na počítačové systémy, nyní se zabývá médii, především těmi elektronickými.

Workshop: Návrh webu a mobilních aplikací

DW - Školení použitelnosti
  • Rychlý a efektivní návrh uživatelských rozhraní.
  • Dokonalý design neexistuje a vždy existuje celé spektrum řešení. Naučte se rychle navrhovat různé varianty designu.
  • Prototypy vám pomůžou i při komunikaci o designu s klienty nebo v rámci firmy.

Detailní informace o workshopu Návrh webu a mobilních aplikací»

Ohodnoťte jako ve škole:
Průměrná známka 2,98

Přehled názorů

RE: Dan Kaminsky a jeho útok na DNS servery
Stevko 12. 8. 2008 05:35
Nový
├ 
RE: Dan Kaminsky a jeho útok na DNS servery
Ondřej Surý 12. 8. 2008 07:57
Nový
└ 
RE: Dan Kaminsky a jeho útok na DNS servery
Karel 12. 8. 2008 13:55
Nový
 
└ 
RE: Dan Kaminsky a jeho útok na DNS servery
Ondřej Surý 12. 8. 2008 14:57
Nový
Obrana
Zdenek 12. 8. 2008 06:58
Nový
├ 
Re: Obrana
anonymní uživatel 12. 8. 2008 08:25
Nový
│
└ 
Re: Obrana
android 12. 8. 2008 08:48
Nový
│
 
└ 
Re: Obrana
Ondřej Surý 12. 8. 2008 14:58
Nový
│
 
 
└ 
Re: Obrana
lowkick 12. 8. 2008 18:04
Nový
│
 
 
 
└ 
Re: Obrana
Ondřej Surý 13. 8. 2008 01:23
Nový
│
 
 
 
 
└ 
Re: Obrana
lowkick 13. 8. 2008 10:00
Nový
│
 
 
 
 
 
└ 
Re: Obrana
Ondřej Surý 13. 8. 2008 10:22
Nový
│
 
 
 
 
 
 
└ 
Re: Obrana
lowkick 13. 8. 2008 11:54
Nový
│
 
 
 
 
 
 
 
└ 
Re: Obrana
JirkaH 13. 8. 2008 12:12
Nový
│
 
 
 
 
 
 
 
 
└ 
Re: Obrana
lowkick 13. 8. 2008 13:03
Nový
│
 
 
 
 
 
 
 
 
 
└ 
Re: Obrana
Ondřej Surý 13. 8. 2008 14:03
Nový
│
 
 
 
 
 
 
 
 
 
 
├ 
Re: Obrana
okokok 13. 8. 2008 14:56
Nový
│
 
 
 
 
 
 
 
 
 
 
│
└ 
Re: Obrana
Ondřej Surý 13. 8. 2008 15:09
Nový
│
 
 
 
 
 
 
 
 
 
 
├ 
Re: Obrana
Filip Jirsák 13. 8. 2008 16:03
Nový
│
 
 
 
 
 
 
 
 
 
 
│
└ 
Re: Obrana
anonymní uživatel 14. 8. 2008 10:59
Nový
│
 
 
 
 
 
 
 
 
 
 
│
 
└ 
Re: Obrana
Filip Jirsák 14. 8. 2008 13:59
Nový
│
 
 
 
 
 
 
 
 
 
 
│
 
 
└ 
Re: Obrana
Jirka P 14. 8. 2008 22:02
Nový
│
 
 
 
 
 
 
 
 
 
 
└ 
Re: Obrana
lowkick 14. 8. 2008 05:49
Nový
│
 
 
 
 
 
 
 
 
 
 
 
├ 
Re: Obrana
Ondřej Surý 14. 8. 2008 09:09
Nový
│
 
 
 
 
 
 
 
 
 
 
 
└ 
Re: Obrana
Heh 18. 8. 2008 22:17
Nový
├ 
Re: Obrana
Ondřej Surý 12. 8. 2008 09:06
Nový
│
└ 
Re: Obrana
Zdenek 12. 8. 2008 10:23
Nový
└ 
Re: Obrana
bredy.jinak.cz 12. 8. 2008 09:24
Nový
 
└ 
Re: Obrana
Ondřej Surý 12. 8. 2008 09:37
Nový
Pravdepodobnost ovplyvnuje este jeden faktor
duri 12. 8. 2008 09:22
Nový
└ 
Re: Pravdepodobnost ovplyvnuje este jeden faktor
Ondřej Surý 12. 8. 2008 09:25
Nový
 
└ 
Re: Pravdepodobnost ovplyvnuje este jeden faktor
anonymní uživatel 13. 8. 2008 02:52
Nový
Není DNS Checker podvržený?
Petr 12. 8. 2008 09:52
Nový
└ 
Re: Není DNS Checker podvržený?
tenis 12. 8. 2008 10:06
Nový
 
└ 
Re: Není DNS Checker podvržený?
petr 12. 8. 2008 10:10
Nový
Zabezpečit spojení?
sk 12. 8. 2008 10:17
Nový
reseni
amores peros 12. 8. 2008 10:23
Nový
├ 
Re: reseni
partizan 12. 8. 2008 11:22
Nový
│
└ 
Re: reseni
Ondřej Surý 12. 8. 2008 12:18
Nový
├ 
Re: reseni
sk 12. 8. 2008 11:31
Nový
│
└ 
Re: reseni
Ondřej Surý 12. 8. 2008 12:21
Nový
│
 
└ 
Re: reseni
sk 12. 8. 2008 12:34
Nový
│
 
 
└ 
Re: reseni
Ondřej Surý 12. 8. 2008 12:48
Nový
└ 
Re: reseni
Ondřej Surý 12. 8. 2008 15:00
Nový
RE: Dan Kaminsky a jeho útok na DNS servery
drak 12. 8. 2008 11:55
Nový
├ 
RE: Dan Kaminsky a jeho útok na DNS servery
anonymní uživatel 12. 8. 2008 11:59
Nový
│
└ 
RE: Dan Kaminsky a jeho útok na DNS servery
Celer 12. 8. 2008 14:22
Nový
│
 
├ 
RE: Dan Kaminsky a jeho útok na DNS servery
Marek Chlup 12. 8. 2008 14:31
Nový
│
 
│
└ 
RE: Dan Kaminsky a jeho útok na DNS servery
Marek Chlup 12. 8. 2008 14:37
Nový
│
 
│
 
├ 
RE: Dan Kaminsky a jeho útok na DNS servery
Celer 12. 8. 2008 14:50
Nový
│
 
│
 
│
└ 
RE: Dan Kaminsky a jeho útok na DNS servery
Drom 12. 8. 2008 16:35
Nový
│
 
│
 
├ 
RE: Dan Kaminsky a jeho útok na DNS servery
qw 12. 8. 2008 16:12
Nový
│
 
│
 
└ 
RE: Dan Kaminsky a jeho útok na DNS servery
JardaP 12. 8. 2008 23:09
Nový
│
 
└ 
RE: Dan Kaminsky a jeho útok na DNS servery
shock 12. 8. 2008 16:17
Nový
│
 
 
└ 
A kruci :-)
Joe 12. 8. 2008 18:35
Nový
└ 
RE: Dan Kaminsky a jeho útok na DNS servery
JardaP 12. 8. 2008 23:06
Nový
TCP?
Yenya 12. 8. 2008 12:52
Nový
├ 
Re: TCP?
Leoš Bitto 12. 8. 2008 13:23
Nový
└ 
Re: TCP?
Ondřej Surý 12. 8. 2008 14:40
Nový
Joe
anonymní uživatel 12. 8. 2008 12:55
Nový
└ 
Re: Joe
Marek Chlup 12. 8. 2008 13:15
Nový
 
└ 
Souhlasím
Joe 12. 8. 2008 13:28
Nový
 
 
├ 
Re: Souhlasím
Marek Chlup 12. 8. 2008 13:59
Nový
 
 
│
└ 
A je to tady, mravni upadek ... :-)
Joe 12. 8. 2008 18:21
Nový
 
 
│
 
└ 
Re: A je to tady, mravni upadek ... :-)
Heron 12. 8. 2008 18:46
Nový
 
 
└ 
Re: Souhlasím
بطر 12. 8. 2008 14:04
Nový
 
 
 
└ 
Re: Souhlasím
Marek Chlup 12. 8. 2008 14:18
Nový
 
 
 
 
└ 
Re: Souhlasím
Petr Krčmář 12. 8. 2008 14:34
Nový
 
 
 
 
 
└ 
Re: Souhlasím
Joe 12. 8. 2008 18:29
Nový
 
 
 
 
 
 
└ 
Re: Souhlasím
TomBA 12. 8. 2008 21:04
Nový
 
 
 
 
 
 
 
└ 
Re: Souhlasím
.. 13. 8. 2008 14:28
Nový
obslehnuty clanek?
Kajik 12. 8. 2008 12:57
Nový
└ 
Re: obslehnuty clanek?
Ondřej Surý 12. 8. 2008 14:51
Nový
zabezpečení nameserveru
Leoš Bitto 12. 8. 2008 13:31
Nový
└ 
Re: zabezpečení nameserveru
Ondřej Surý 12. 8. 2008 14:48
Nový
 
└ 
Re: zabezpečení nameserveru
Leoš Bitto 12. 8. 2008 15:24
Nový
 
 
└ 
Re: zabezpečení nameserveru
Ondřej Surý 12. 8. 2008 15:55
Nový
 
 
 
├ 
Re: zabezpečení nameserveru
Leoš Bitto 12. 8. 2008 16:34
Nový
 
 
 
│
└ 
Re: zabezpečení nameserveru
Ondřej Surý 13. 8. 2008 01:35
Nový
 
 
 
│
 
└ 
Re: zabezpečení nameserveru
Leoš Bitto 13. 8. 2008 03:53
Nový
 
 
 
│
 
 
├ 
Re: zabezpečení nameserveru
pan anonym 13. 8. 2008 09:59
Nový
 
 
 
│
 
 
│
└ 
Re: zabezpečení nameserveru
Leoš Bitto 13. 8. 2008 13:15
Nový
 
 
 
│
 
 
│
 
└ 
Re: zabezpečení nameserveru
pan anonym 13. 8. 2008 15:04
Nový
 
 
 
│
 
 
│
 
 
└ 
Re: zabezpečení nameserveru
Ondřej Surý 13. 8. 2008 15:08
Nový
 
 
 
│
 
 
│
 
 
 
└ 
Re: zabezpečení nameserveru
pan anonym 13. 8. 2008 18:10
Nový
 
 
 
│
 
 
└ 
Re: zabezpečení nameserveru
Ondřej Surý 13. 8. 2008 10:18
Nový
 
 
 
│
 
 
 
└ 
Re: zabezpečení nameserveru
Leoš Bitto 13. 8. 2008 12:13
Nový
 
 
 
│
 
 
 
 
└ 
Re: zabezpečení nameserveru
Ondřej Surý 13. 8. 2008 14:32
Nový
 
 
 
└ 
Re: zabezpečení nameserveru
submarine worm 13. 8. 2008 00:56
Nový
 
 
 
 
└ 
Re: zabezpečení nameserveru
Ondřej Surý 13. 8. 2008 01:19
Nový
No asi dojdeme k původnímu řešení
Mard 12. 8. 2008 14:43
Nový
└ 
Re: No asi dojdeme k původnímu řešení
Petr Krčmář 12. 8. 2008 14:52
Nový
 
└ 
Re: No asi dojdeme k původnímu řešení
Marek Chlup 12. 8. 2008 15:03
Nový
 
 
└ 
Re: No asi dojdeme k původnímu řešení
Ondřej Surý 13. 8. 2008 01:37
Nový
Nym-based security
Petr 12. 8. 2008 17:41
Nový
└ 
Re: Nym-based security
Ondřej Surý 13. 8. 2008 00:32
Nový
 
└ 
Re: Nym-based security
Petr 13. 8. 2008 18:46
Nový
 
 
└ 
Re: Nym-based security
Ondřej Surý 13. 8. 2008 19:07
Nový
 
 
 
└ 
Re: Nym-based security
Petr 14. 8. 2008 18:38
Nový
 
 
 
 
└ 
Re: Nym-based security
Ondřej Surý 14. 8. 2008 19:17
Nový
 
 
 
 
 
└ 
Re: Nym-based security
Petr 15. 8. 2008 19:47
Nový
http://www.doxpara.c om/
JardaP 12. 8. 2008 23:45
Nový
└ 
Re: http://www.doxpara.c om/
Ondřej Surý 13. 8. 2008 01:39
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem