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.abcAdditional 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.
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.przykladAdditional 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.
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)
[…] 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 […]
Bezpieczeństwo bankowości elektronicznej « IT Security Enthusiast's Blog
24 lutego, 2011 at 16:42