Zatruwanie DNS

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Zatruwanie DNS (ang. cache poisoning) – technika phishingu polegająca na wykonaniu przez atakującego przesłania do serwera DNS fałszywej informacji kojarzącej nazwę domeny z adresem IP. Serwer DNS zapamiętuje ją na pewien czas (do kilku godzin) i zwraca klientom zapamiętany adres IP, czego skutkiem jest przeniesienie na fałszywą stronę.

System nazw domenowych (DNS)[edytuj | edytuj kod]

Information icon.svg Osobny artykuł: Domain Name System.

System nazw domenowych tłumaczy znane człowiekowi, mnemoniczne nazwy stron www (np. pl.wikipedia.org) na odpowiadające im numeryczne adresy IP, które są wykorzystywane w kierowaniu ruchem pakietów między węzłami sieci. Jeśli serwer DNS nie posiada w swojej pamięci żądanego adresu, wysyła zapytanie do innego serwera, co tworzy łańcuch zapytań. W celu zwiększenia wydajności, serwer zapamiętuje (zapisuje w pamięci podręcznej) na pewien czas już raz otrzymane adresy, dzięki czemu po otrzymaniu drugi raz takiego samego zapytania może odpowiedzieć od razu, bez konieczności przekazywania zapytania do innych serwerów.

Gdy serwer DNS otrzyma od innego serwera fałszywą odpowiedź na zapytanie i zapisze ją w pamięci cache, zostaje zatruty. Fałszywa informacja rozprzestrzenia się następnie na wszystkich klientów korzystających z zatrutego serwera. W praktyce oznacza to przekazanie klientowi niepoprawnego adresu IP, który może np. prowadzić do maszyny będącej pod kontrolą atakującego.

Przebieg ataku[edytuj | edytuj kod]

Zazwyczaj komputery podłączone do sieci korzystają z serwerów DNS udostępnianych przez dostawców usług internetowych lub z wewnętrznych serwerów firmowych. Zastosowanie dodatkowych serwerów DNS ma na celu poprawienie szybkości uzyskiwania adresu IP. Dzięki zapisywaniu w pamięci podręcznej wyników już raz wysłanych zapytań, otrzymywanie odpowiedzi zabiera mniej czasu. Zatrucie pojedynczego serwera DNS może oddziaływać zarówno na użytkowników korzystających z tego serwera bezpośrednio jak i pośrednio (przez łańcuch zapytań DNS).

Przeprowadzenie ataku opiera się na wykorzystaniu luki w zabezpieczeniach serwera DNS. Jeśli nie zostało zaimplementowane sprawdzanie wiarygodności źródła odpowiedzi DNS (na przykład korzystając z DNSSEC), serwer zapisze w pamięci spreparowany przez atakującego rekord i udostępni go klientom.

Ta technika może być wykorzystana do przekierowania użytkowników na inną stronę. Na przykład atakujący zmienia mapowanie konkretnej strony na adres kontrolowanego przez siebie serwera i umieszcza na nim złośliwe oprogramowanie, które nieświadomy użytkownik pobiera na swój komputer.

Zapobieganie[edytuj | edytuj kod]

Większości ataków DNS można zapobiec poprzez odpowiednie ustawienia serwera. Należy ograniczyć zaufanie wobec danych przesyłanych przez inne serwery DNS, zwłaszcza te prywatne. Ważne jest też ignorowanie tych spośród odebranych rekordów, które nie są bezpośrednio związane z wysłanym przez nasz serwer zapytaniem. Na przykład, popularny serwer DNS o nazwie BIND w wersjach 9.5.0-P1[1] i nowszych ma zaimplementowaną powyższą kontrolę[2].

Aby znacznie utrudnić przeprowadzenie udanego ataku można również zastosować losowe przyznawanie portów dla zapytań DNS. Sposób ten może być jednak trudny do zaimplementowania, gdyż większość routerów, firewalli, serwerów proxy i innych urządzeń tłumaczących adresy sieciowe korzysta z wcześniej ustalonych numerów portów dla konkretnych usług.

Prawdopodobieństwo ataku można znacznie obniżyć poprzez korzystanie z usług bezpiecznych serwerów DNS (DNSSEC). Serwery te zostały zaimplementowane na skalę całego Internetu w 2010r[3]. Używają one podpisów cyfrowych skojarzonych z zaufanym certyfikatem publicznym. Pozwala to na potwierdzenie ich autentyczności. Należy jednak pamiętać, że samo używanie bezpiecznych serwerów DNS, bez zastosowania kryptografii na poziomie aplikacji, wciąż umożliwia przeprowadzenie ataku zatrucia. Dobrą praktyką jest stosowanie kryptograficznie bezpiecznych liczb losowych do generowania 16-bitowej liczby (ang. nonce) używanej do szyfrowania zapytań i odpowiedzi.

Przypisy

  1. "BIND Security Matrix". ISC Bind. [dostęp 11-05-2011]
  2. "ISC Bind Security". ISC Bind. [dostęp 11-05-2011]
  3. "Root DNSSEC". ICANN/Verisign. [dostęp 05-01-2012]