« poprzedni punkt | następny punkt » |
DNS jest systemem rozproszonej bazy danych udostępniającym usługę translacji nazw na adresy w sieci IP. Jest to system hierarchiczny. Dane umożliwiające translację nazw na adresy są przechowywane w plikach strefowych na serwerze DNS. Przypomnijmy sobie teraz kilka podstawowych pojęć związanych z DNS:
W komunikacie DNS występuje pole identyfikatora komunikatu TID (Transacttion ID). Miało ono:
Pole identyfikatora ma 16 bitów, zatem można wygenerować 65535 identyfikatorów. W najprostszym przypadku intruz wyśle pakiety zawierające wszystkie możliwe identyfikatory (65535 pakietów). Ponieważ standardowa odpowiedź liczy około 200 bajtów, więc trzeba wysłać w sieć kilkanaście MB. Intruz uzyskuje jednak pewność, że jeden z tych pakietów zostanie uznany za właściwy. Trudność przeprowadzenia ataku polega jedynie na tym aby udało się wysłać dane przed udzieleniem odpowiedzi przez właściwy serwer DNS. Wykorzystuje się w tym celu ataki DoS.
Jeżeli chodzi o pola adresów IP, to oczywiście muszą one wskazywać adres komputera oszukiwanego, oraz adres serwera, pod który podszywa się intruz. Uzyskanie listy adresów serwerów DNS dowolnej domeny jest bardzo łatwe.
Kolejne dane, które musi ustalić atakujący, to port źródłowy i docelowy. Port źródłowy w preparowanym pakiecie, to zawsze 53. Z portem docelowym sytuacja jest trudniejsza, ponieważ teoretycznie komputer atakowany mógł wysłać zapytanie DNS z dowolnego wolnego portu. Praktyka wskazuje jednak, że jest to port 53 lub 1024. Testy wykazują ponadto, że odpowiedzi kierowane na port 53 są zawsze akceptowane, bez względu na to z jakiego portu wysłano zapytanie. Jest to prawdopodobnie błąd implementacji serwera.
Okazuje się ponadto, że można skrócić odpowiedź DNS do około 100 bajtów (z około 200), co znacznie ogranicza globalną ilość i czas wysyłania danych przez intruza.
Co powinien wiedzieć intruz, aby mógł przeprowadzić atak?
W pamięci podręcznej, serwer DNS przechowuje informacje dotyczące ostatnio zrealizowanych mapowań. Czas przechowywania zapisany jest w polu TTL komunikatu DNS. Jeżeli atakujący sam zada pytanie serwerowi i uczestnicząc w przygotowaniu odpowiedzi umieści w komunikacie fałszywe odwzorowanie z dużym TTL, to informacje podstawione przez intruza przez długi okres czasu będą przebywać w pamięci podręcznej serwera DNS. Każdy pytający dostanie sfałszowaną odpowiedź.
Ustawienie właściwego identyfikatora transakcji dla serwerów w Windows jest łatwe, gdyż generuje on identyfikatory przewidywalne (inkrementacja o 1). Dla serwera BIND należy wysłać paczkę pakietów odpowiedzi, gdyż numer transakcji jest losowany.
Scenariusz ataku
Atak na serwer dns1.firma.com ma na celu umieszczenie w jego pamięci podręcznej sfałszowanego zapisu dotyczącego serwera wazny.abc.com. Celem intruza jest aby użytkownik korzystający z serwera DNS dns1.firma.com, chcący połączyć się z serwerem wazny.abc.com uzyskiwał połączenie z serwerem intruz.
Krok 1: Uzyskanie listy serwerów DNS domeny abc.com. Np. poprzez usługę whois.
Krok 2: Zapytanie o dowolny komputer z domeny abc.com. Np. www.abc.com.
Np. nslookup www.abc.com dns1.firma.com
Powoduje to, że serwer dns1.firma.com zapamięta w swojej pamięci podręcznej dane dotyczące serwerów obsługujących domenę abc.com oraz dane komputera www.abc.com.
Krok 3: Atak DoS na serwery DNS domeny abc.com. Celem tego ataku jest uniemożliwienie udzielania odpowiedzi DNS przez te serwery.
Krok 4: Intruz wysyła zapytanie o adres serwera wazny.abc.com:
nslookup wazny.abc.com dns1.firma.com
Krok 5: Intruz zaczyna wysyłać do serwera dns1.firma.com sfałszowane odpowiedzi na pytania dotyczące komputera wazny.abc.com. Adres źródłowy wskazuje na jeden z serwerów DNS domeny abc.com, wartość TTL jest maksymalna z możliwych, jako adres komputera wazny.abc.com ustawiony jest adres komputera intruz. Wysyłanych jest 65535 odpowiedzi, każda z innym identyfikatorem transakcji.
Krok 6: Sprawdzenie, czy sfałszowane odwzorowanie zostało umieszczone w pamięci podręcznej serwera dns1.firma.com
nslookup wazny.abc.com dns1.firma.com
Jako adres serwera wazny.abc.com powinien zostać wyświetlony adres komputera intruz.
Krok 7: Dowolny klient z domeny firma.com wydaje polecenie połączenia z serwerem wazny.abc.com. W rzeczywistości uzyskuje połączenia z komputerem intruz.
Obrona przed atakiem
« poprzedni punkt | następny punkt » |