IT Security Enthusiast's Blog

IT & Computer Security Blog but NOT only…

DNS Cache Poisoning

W nawiązaniu do mojej wcześniejszej publikacji dotyczącej istoty bezpieczeństwa bankowości elektroniczej, postanowiłem (zgodnie z obietnicą) trochę bardziej przybliżyć problem DNS Cache Poisoning-u, czyli zatruwania DNS.

Czym tak naprawdę jest infekcja kryjąca się pod angielskim terminem “DNS Cache Poisoning”? Jest to nic innego jak technika phishingu polegająca na wysłaniu do serwera DNS fałszywego rekordu kojarzącego nazwę domeny z podstawionym przez hackera adresem IP. Dzięki temu zabiegowi serwer DNS zwraca klientom zapamiętany adres IP, czego skutkiem jest przeniesienie na stronę znajdującą się pod wybraną wcześniej przez użytkownika domeną lecz znajdującą się na innym serwerze.

W poniższej przygotowanej przeze mnie prezentacji przedstawiam przebieg infekcji typu DNS Cache Poisoning na przykładzie strony bankowej serwisbankowy.pl:

a) strona WWW prawdziwego banku: serwisbankowy.pl; IP  autorytatywnego serwera: 10.10.10.10
b) spreparowana strona prawdziwego banku znajdująca się na innym serwerze; IP serwera: 22.22.22.22


Techniki wykorzystywane w DNS CP

  • Przekierowanie/zmiana adresu dla określonej domeny w rekordach nameserver-a:

Zapytanie serwera DNS: jaki jest adres dla subdomeny test.domena.przyklad?

test.domena.przyklad IN A

Przykładowa odpowiedź atakującego:

Answer:
(no response)

Authority section:
domena.przyklad 3600 IN NS ns.target.abc

Additional section:
ns.target.abc IN A aa.bb.cc.dd

Podatny na ataki tego typu serwer zaszufladkuje w swoim cache dodatkowy A-rekord (adres IP) dla ns.target.abc w efekcie pozwalając atakującemu na rozwiązywanie zapytań dla całej domeny target.abc.

  • Przekierowanie rekordu name serwera – zmiana na inna docelową domenę: Przykład zapytań i odpowiedzi DNS

Składnia zapytania nie ulega zmienie – czyli jaki jest adres dla subdomeny test.domena.przyklad?

test.domena.przyklad IN A

Tym razem odpowiedź wygląda trochę inaczej niż poprzednio:

Answer:
(no response)

Authority section:
target.abc 3600 IN NS ns.przyklad

Additional section:
ns.domena.przyklad IN A aa.bb.cc.dd

W tej technice serwer podatny na atak, zapisze w swoim cache niepowiązaną informację nt. domeny w odpowiedzi w sekcji Authority dla rekordu target.abc pozwalając atakującemu na rozwiązywanie zapytań dla całej domeny target.abc

Opłacalna zabawa

Kolejnym aspektem DNS CP jest pytanie komu i po co chciałoby się bawić w tego typu zatruwanie DNS-ów?
Analizując ataki na serwery, zatruwanie DNS-ów może mieć następujące skutki:

  • WWW:
    – kradzież danych w trakcie płatności elektronicznych,
    – przejęcie klientów danej instytucji,
    – zmylenie użytkowników poszukujących informacji w sieci,
    – doprowadzenie do infekcji dużej ilości komputerów (spreparowana strona zawierająca szkodliwy kod),
    – skompromitowanie instytucji
  • FTP:
    – przechwycenie danych wysyłanych na serwer przez użytkownika,
    – doprowadzenie do infekcji (umieszczenie zainfekowanego oprogramowania na spreparowanym serwerze)

Jak widać na powyższym przykładzie *korzyści* dla osoby, która ma w/w ambicje mogą być bardzo wymierne w zależności od wybranego celu ataku, a szkody po stronie niczego nie podejrzewającego klienta bardzo bolesne w skutkach.

Rozwiązanie problemu

Dużej liczbie ataków DNS Cache Poisoning można byłoby zapobiec po stronie serwerów DNS poprzez chociażby ograniczoną politykę zaufania wobec informacji przychodzących od innych serwerów DNS oraz ignorowanie każdego rekordu zwrotnego, który nie jest dokładnie relatywny do wysłanego zapytania (ostatnia wersja BIND ang. Berkeley Internet Name Domain, zapewnia już tego typu filtrowanie). Częściowym rozwiązaniem było również wprowadzenie dodatkowych 16 bitów losowości w postaci zmiennego portu źródłowego resolvera z którego wysyłane są zapytania DNS.
Również wdrożenie rozszerzenia systemu DNS –> DNSSEC ang. Domain Name System Security Extensions, które zapewnia resolverom DNS uwierzytelnianie oraz nienaruszalność danych DNS ma kluczowe znaczenie w kwestii bezpieczeństwa. Uwierzytelnianie gwarantuje autentyczność informacji, odbywa się to za pomocą mechanizmu, który umożliwia zweryfikowanie źródła informacji, natomiast usługa nienaruszalności zapewnia integralność komunikacji, umożliwiając stwierdzenie za pomocą weryfikacji czy odebrana informacja jest w takiej postaci, w jakiej została wysłana.

Model TCP/IPWarstwy protokołu OSI

Tego typu ataki mogą być także złagodzone na poziomie czwartej (warstwa transportowa) lub siódmej warstwy (warstwa aplikacji) modelu OSI ang. Open System Interconnection, poprzez weryfikację typu end-to-end po nawiązaniu połączenia.
Typowym przykładem może być wykorzystanie warsty transportowej oraz podpisów cyfrowych. Na przykład poprzez użycie bezpiecznej wersji protokołu HTTP –> HTTPS, użytkownicy są w stanie sprawdzić czy czy dany certyfikat cyfrowy jest ważny i należy do (spodziewanego przez nas) właściciela danej strony (np. firmy lub instytucji bankowej).

Upewnij się czy jesteś bezpieczny

Na koniec kilka linków, które umożliwiają sprawdzenie czy DNS-y z których w tej chwili korzystasz są odpowiednio zabezpieczone przed zatruwaniem DNS. W tym również narzędzie opracowane przez Internet Assigned Numbers Authority (IANA), sprawdzające czy serwery DNS obsługujące określone strony WWW (np. banki) są odpowiednio zabezpieczone przed DNS Cache Poisoning:

Steve Gibson GRC – Narzędzie testowe ISP DNS
Provos DNS Resolver Test
Sprawdź DNS-y dla strony WWW (IANA)


Piotr Pawelec (Creer)

Written by Creer

3 lutego, 2011 @ 15:45

Jedna odpowiedź

Subscribe to comments with RSS.

  1. […] phishingu zaliczyć również możemy technikę nazwaną DNS Poisoning (ang. Domain Name System). Polega ona na tym, że do serwera DNS zostaje wysłane zapytanie w celu […]


Możliwość komentowania jest wyłączona.