Otwarte serwery DNS – najlepszy przyjaciel ataków DDoS

Data publikacji: 28/03/2013, CERT Polska

OpenResolver

DDoS via DNS?

Ataki DoS (denial-of-service) znane są od dawna. Jedynym ich celem jest sparaliżowanie infrastruktury teleinformatycznej ofiary – a co za tym idzie uniemożliwienie świadczenia usługi w sieci. Jedną z najbardziej popularnych form tego ataku jest wersja rozproszona – DDoS (distributed denial-of-service).

Od kilku dni trwa jeden z największych znanych do tej pory ataków DDoS. Jak donoszą media (np. BBC NEWS, The New York Times) wielkość ataku dochodzi do 300 Gbps (gigabitów na sekundę!). Co ciekawe do przeprowadzenia tego ataku zostały użyte otwarte serwery DNS. W jaki sposób?

Dlaczego DNS jest bardzo ważny?

DNS jest usługą, bez której korzystanie z sieci nie było by tak proste jak obecnie. Dostarcza on między innymi mechanizmów, pozwalających na przypisywanie nazw domenowych (np: www.cert.pl) do adresów IP, na których dana usługa jest uruchomiona. Zwalnia to użytkowników z konieczności zapamiętywania adresów serwisów w formie numerycznej. DNS zawiera również wiele informacji, które są wykorzystywane w komunikacji między serwerami – np. jaki serwer jest odpowiedzialny za obsługę poczty dla danej domeny.

Aby móc korzystać z dobrodziejstw oferowanych przez DNS potrzebny jest dostęp do serwera, który potrafi odnaleźć w rozbudowanej strukturze interesującą użytkownika domenę oraz przypisane do niej informacje. Serwery takie nazywane są resolverami. Po otrzymaniu od użytkownika zapytania wykonują one serię określonych operacji aby uzyskać żądaną informację – np. jaki jest adres IP serwera, na którym znajduje się strona www.cert.pl.

Większość serwerów DNS udostępnia swoje usługi wyłącznie użytkownikom konkretnej sieci, np. wewnątrz jednej firmy czy jednego dostawcy usług internetowych. Serwery DNS odpowiadające na zapytania każdemu użytkownikowi Internetu nazywane są open resolverami. Najczęściej sytuacja taka jest wynikiem zaniedbania lub błędu administratora.

OpenResolver

Jak działa atak odbity?

Ataki odbite (ang. reflected) wykorzystują możliwość wygenerowania pakietu IP z podmienionym adresem źródłowym. Normalnie taki pakiet nie ma praktycznego zastosowania, ponieważ po dotarciu do serwera docelowego odpowiedź zostanie wysłana pod sfałszowany adres, a nie do nadawcy. Jak się można domyślać jest to stan pożądany przez osoby planujące atak. Ważnym ograniczeniem ataków z podmienionym adresem źródła jest brak możliwości nawiązania pełnej sesji protokołu TCP ze względu na TCP Handshake. Idealnie natomiast nadają się one do wykorzystania w przypadku bezstanowego protokołu UDP.

Jak działa wzmocniony atak odbity (ang. reflected-amplification)?

Ataki te wykorzystują fakt, iż niektóre usługi sieciowe po wysłaniu stosunkowo małego zapytania generują znacznie większą odpowiedź. Dodatkowo takie usługi powinny umożliwiać komunikację za pomocą protokołów bezstanowych, co umożliwi podmianę adresu źródłowego. Najlepszym przykładem takiej usługi jest wspomniany DNS. Przykładowo: krótkie zapytanie (23 bajty) o rekord „IN ANY wp.pl” wysłane do podatnego serwera OPEN-RESOLVER powoduje wygenerowanie ponad dziesięciokrotnie większej odpowiedzi (261 bajtów) – jak na zrzucie poniżej:

IP SPOOF.IP.12345 > OPEN-RESOLVER.53: (23)
0x0000: 4500 0033 538b 0000 4011 6503 0101 0101 [email protected]`
0x0010: 0808 0808 a58c 0035 001f c25c 25ce 0100 .......5...%...
0x0020: 0001 0000 0000 0000 0277 7002 706c 0000 .........wp.pl..
0x0030: ff00 01 ...
IP OPEN-RESOVLER.53 > SPOOF.IP.12345: (261)
0x0000: 4500 0121 f6ef 0000 2f11 d1b0 0808 0808 E..!..../.......
0x0010: 0101 0101 0035 a58c 010d 3602 25ce 8180 ...`.5....6.%...
0x0020: 0001 0008 0000 0000 0277 7002 706c 0000 .........wp.pl..
0x0030: ff00 01c0 0c00 0600 0100 0005 d400 2c03 ..............,.
0x0040: 6e73 32c0 0c09 646e 736d 6173 7465 7205 ns2...dnsmaster.
0x0050: 7770 2d73 61c0 0f77 fc70 3600 0003 8400 wp-sa..w.p6.....
0x0060: 0002 5800 0151 8000 000e 10c0 0c00 0f00 ..X..Q..........
0x0070: 0100 0005 d400 0800 0503 6d78 35c0 0cc0 ..........mx5...
0x0080: 0c00 0f00 0100 0005 d400 0700 0002 6d78 ..............mx
0x0090: c00c c00c 0001 0001 0000 05d4 0004 d44d ...............M
0x00a0: 6465 c00c 0002 0001 0000 05d4 0002 c023 de.............#
0x00b0: c00c 0002 0001 0000 05d4 000f 036e 7331 .............ns1
0x00c0: 0474 6173 6b03 6764 61c0 0fc0 0c00 0200 .task.gda.......
0x00d0: 0100 0005 d400 0603 6e73 31c0 0cc0 0c00 ........ns1.....
0x00e0: 1000 0100 0005 d400 3837 763d 7370 6631 ........87v=spf1
0x00f0: 2069 7034 3a32 3132 2e37 372e 3936 2e30 .ip4:212.77.96.0
0x0100: 2f31 3920 6970 343a 3139 352e 3230 352e /19.ip4:195.205.
0x0110: 3430 2e32 3030 2f32 3920 6d78 202d 616c 40.200/29.mx.-al
0x0120: 6c

Jedynym ograniczeniem jest maksymalny rozmiar pakietu DNS jaki można przesłać za pomocą protokołu UDP. Maksymalna wartość określona w RFC 1035 wynosi 512 bajtów. Nawet przy tym założeniu wystarczy znaleźć odpowiednią nazwę domenową aby jak w powyższym przykładzie uzyskać ponad dwudziestokrotne wzmocnienie. Pozwala to osobie dysponującej łączem internetowym o przepustowości wychodzącej rzędu 10 Mb/s na przeprowadzenie ataku o wielkości 200 Mb/s. A przecież ataki DDoS nie są wykonywane z jednego łącza.

Zakładając możliwość uzyskania wzmocnienia na poziomie 20x, prosta kalkulacja pozwala otrzymać informację, iż aby wygenerować wspomniany wcześniej ruch rzędu 300 Gbps wystarczy „jedynie” 15 Gbps łącze oraz odpowiednia liczba źle skonfigurowanych serwerów DNS.

Co zrobić z otwartym serwerem DNS?

Jeżeli jesteś właścicielem/administratorem serwera DNS:

    1. Zastanów się jaką funkcję ma spełniać serwer. Czy ma to być lokalny resolver czy też
      być autorytatywnym serwerem utrzymującym konkretne domeny.
    2. Sprawdź czy autorytatywny serwer przypadkiem nie działa również jako open resolver.
    3. Jeśli Twój serwer ma być resolverem, upewnij się że tego chcesz i jest Ci to potrzebne! Istnieje wiele dobrze skonfigurowanych otwartych serwerów DNS (np. Google Public DNS czy openDNS), a każdy szanujący się ISP dostarcza swoim użytkownikom adresy swoich lokalnych resolverów.
    4. Zabezpiecz i skonfiguruj :
      • Czy serwer musi być dostępny publicznie? Jeżeli z założenia z serwera ma korzystać ograniczony zbiór użytkowników, warto ograniczyć dostęp do konkretnych sieci IP
      • Jeżeli ma być dostępny publicznie, skonfiguruj go tak, aby nie został wykorzystany do przeprowadzania opisanego wyżej ataku.

Więcej technicznych informacji na temat otwartych serwerów DNS oraz ich zabezpieczania można znaleźć na stronie http://www.openresolverproject.org/. Znajduje się tam również narzędzie umożliwiające sprawdzenie, czy w danej podsieci IP nie znajduje się serwer DNS typu open resolver.