Zamach na usługę DNS

DNS (Domain Name System) jest usługą szczególnie istotną w Internecie. Podstawę całego systemu stanowi sieć serwerów rozmieszczonych w różnych geograficznie miejscach. Przechowują one informacje o konkretnej nazwie oraz odpowiadającemu jej adresie IP. Większość usług sieciowych nie istnieje bez systemu odwzorowania nazw. DNS jest używany do odwzorowania nazwy domenowej na adres IP lub odwrotnie - adresu IP na nazwę domenową.

DNS (Domain Name System) jest usługą szczególnie istotną w Internecie. Podstawę całego systemu stanowi sieć serwerów rozmieszczonych w różnych geograficznie miejscach. Przechowują one informacje o konkretnej nazwie oraz odpowiadającemu jej adresie IP. Większość usług sieciowych nie istnieje bez systemu odwzorowania nazw. DNS jest używany do odwzorowania nazwy domenowej na adres IP lub odwrotnie - adresu IP na nazwę domenową.

Serwer DNS zapamiętuje informacje o poszczególnych domenach w tekstowych plikach nazywanych plikami stref. Serwer nasłuchuje na porcie 53 UDP - zapytań dotyczących tłumaczenia nazw oraz porcie 53 TCP - żądań dotyczących transferu stref.

Klient DNS uruchamia usługę nazwaną "resolver". Resolver przeprowadza całą operację pertraktacji klienta z serwerem DNS poprzez strukturę nazwaną rekordem. Klient (resolver) posiada niewielki lokalny bufor, w którym przechowuje informacje np. o statycznych wpisach hostów.

W przypadku zapytania o odwzorowanie nazw początkowo są sprawdzane lokalne zasoby, a następnie zapytanie przekazywane jest do zewnętrznego serwera DNS. Jeżeli serwer DNS zostanie odpytany i jednocześnie jest autorytatywny dla określonej domeny (posiada odpowiedź na zapytanie w lokalnej bazie danych), zwróci odpowiedź do klienta. Jeżeli nie jest autorytatywny dla danej domeny, skontaktuje się z serwerem autorytatywnym i przekaże uzyskaną odpowiedź do klienta.

Zamach na usługę DNS

Zasada działania systemu DNS

Gdy klient serwera nazw ns.mnk.pl tworzy zapytanie w celu odwzorowania domeny www.idg.com.pl, stosowana jest następująca sekwencja działania:
  1. Klient kontaktuje się z serwerem DNS wpisanym w konfiguracji (ns.mnk.pl) i prosi o odwzorowanie nazwy www.idg.com.pl . Zapytanie zawiera informację o źródłowym porcie UDP, źródłowym adresie IP i ID transakcji DNS.

  2. Jeżeli serwer ns.mnk.pl nie jest autorytatywny dla domeny www.idg.com.pl, będzie przekazywał zapytania rekursywne. Przy użyciu internetowych serwerów rootDNS skontaktuje się z serwerem nazw obsługującym domenę idg.com.pl i otrzyma odpowiedź na zapytanie.

  3. Prawidłowa odpowiedź zostanie przekazana do klienta i ta informacja będzie zapamiętana przez serwer nazw ns.mnk.pl oraz klienta.
Typowy przebieg operacji DNS przedstawia rys. 1. Serwery DNS są atakowane przy użyciu wielu technik. Przykładowe ataki przedstawiono w tabeli 1. W artykule przedstawiamy najpopularniejsze sposoby ataku, niezależne od użytego serwera. Wynikają one głównie ze specyfiki systemu DNS.

Błędy konfiguracji i oprogramowania

Jednym z podstawowych błędów konfiguracji systemów DNS jest możliwość uzyskania różnych danych dotyczących domen i hostów. Sprawdźmy, jakich informacji dostarczają nam popularne rekordy zawarte w plikach stref (zob. tabela "Rekordy DNS").

Jak łatwo zauważyć w rekordach DNS zawartych jest wiele informacji, które mogą być pomocne dla potencjalnego atakującego. Przykładowo, rekord HINFO podaje interesujące informacje o systemie operacyjnym konkretnego hosta. Rekord WKS wskaże usługi realizowane przez poszczególne hosty.

Niebezpieczną operacją jest możliwość transferu stref przez atakującego. Niezabezpieczone serwery nazw umożliwiają pobranie wszystkich rekordów w strefach. Posiadając takie informacje, atakujący może bez problemu utworzyć całą topologię sieci oraz uzyskać informacje o przeznaczeniu specyficznych maszyn.

Zamach na usługę DNS

Metody ataków na serwery nazw

Wykrywanie wersji oprogramowania jest często używaną techniką, która umożliwia określenie podatności danego serwera oraz wykorzystanie określonych luk. Informacja o wersji nie jest potrzebna administratorowi, więc warto wykorzystać możliwość zmylenia przeciwnika. Wystarczy podmienić informacje o wersji, chociaż nie sprawdza się to w przypadku serwera BIND. Funkcja CHAOS zawarta w tym oprogramowaniu pozwala na bezproblemową identyfikację wersji.

Serwery DNS podobnie jak inne aplikacje są narażone na ataki przepełnienia bufora. Ataki tego typu spotykane są w przypadku popularnego oprogramowania. Najczęściej używanym serwerem DNS jest BIND (Berkeley Internet Name Domain) w wersji BIND 4.x, BIND 8.x i BIND 9.x.

Pomimo popularności nie jest to bezpieczne rozwiązanie w podstawowej konfiguracji. Niezbędne są poprawna i bezpieczna konfiguracja oraz częste analizowanie grup dyskusyjnych dotyczących błędów w oprogramowaniu. Alternatywę może stanowić serwer DJBDNS (http://cr.yp.to/djbdns.html ). Warto wspomnieć, że istnieje nagroda ufundowana przez twórcę oprogramowania, przeznaczona dla pierwszej osoby, która opublikuje lukę w najnowszej wersji DJBDNS. Jeszcze nikt jej nie zdobył.

Ataki zatruwania bufora

Ataki zatruwania bufora wykorzystują słabe metody autoryzacji wzajemnych relacji klient-serwer oraz serwer-serwer w systemie DNS. Klient DNS tylko akceptuje informacje zwracane przez serwer DNS. Wystarczy, że odpowiedź zawiera poprawny port źródłowy, źródłowy adres IP klienta oraz poprawne ID transakcji. Powyższe trzy parametry są jedyną formą uwierzytelnienia używaną do zaakceptowania odpowiedzi serwera nazw. Zwracana informacja - przykładowo o domenie idg.com.pl - jest pamiętana zarówno przez klienta, jak i serwer ns.mnk.pl przez określony przedział czasu TTL (time to live). Jeżeli klient zapyta serwer ns.mnk.pl o odwzorowanie nazwy www.idg.com.pl w czasie obowiązywania TTL, serwer zwróci informację z pamięci podręcznej/bufora.

Zamach na usługę DNS

Rekordy DNS

Metodyka działania przedstawiona poniżej może zostać użyta przez atakującego do umieszczenia fałszywych informacji w pamięci podręcznej serwera ns.mnk.pl.

Pierwszym etapem będzie wysłanie dużej liczby zapytań o www.idg.com.pl z różnymi źródłowymi adresami IP do serwera ns.mnk.pl. Każdemu zapytaniu zostanie przydzielony unikalny ID transakcji i każde zapytanie będzie przetwarzane niezależnie. Serwer ns.mnk.pl będzie przekazywał każde zapytanie do autorytatywnych serwerów nazw. Od tej pory serwer ns.mnk.pl będzie dłużej oczekiwał na odpowiedź od serwera obsługującego domenę idg.com.pl.

Atakujący może wykorzystać czas oczekiwania na odpowiedź, w celu zbombardowania ns.mnk.pl podszywanymi pakietami odpowiedzi. Od tej pory idg.com.pl będzie widziane na serwerze ns.mnk.pl z fałszywymi informacjami. Każda podszyta odpowiedź ma inny ID transakcji. Atakujący ma nadzieję, że uda się trafić prawidłowy ID transakcji. Jeżeli atakującemu powiedzie się, fałszywa informacja zostanie zapamiętana w buforze ns.mnk.pl na czas związany z TTL. Przykład ataku zatruwania bufora przedstawia rys. 2.

Jak atakujący określa niezbędne parametry? ID transakcji w oprogramowaniu BIND zawiera się w zakresie 1-65535. Informacja o źródłowym IP jest łatwa do zdobycia, jeżeli znamy adres domenowy odpytywanego serwera.

Określenie źródłowego portu jest trochę trudniejsze, ale możliwe. Przykładowo, BIND używa tego samego portu źródłowego dla zapytań do danego klienta. Jeżeli atakujący ma dostęp do autorytatywnego serwera nazw dla dowolnej domeny, może wysłać zapytanie o własną nazwę do docelowego serwera i kiedy zwrotny pakiet zapytania wróci, źródłowy port będzie ustalony.


TOP 200