Cyber Security Academy · Lekcja

Spoofing DNS i zatruwanie pamięci podręcznej

Fałszowanie odpowiedzi DNS

Lekcja 2 z 413 kroki

Spoofing DNS i zatruwanie pamięci podręcznej to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Fałszowanie odpowiedzi DNS

Fałszowanie DNS polega na dostarczeniu podrobionej odpowiedzi DNS, aby ofiara rozwiązała nazwę na adres IP kontrolowany przez napastnika. Zatrucie pamięci podręcznej to szczególna odmiana tego ataku, w której podrobiona odpowiedź zostaje zaakceptowana i zapisana przez resolver rekurencyjny, infekując każdego korzystającego z niego klienta.

Celem jest zazwyczaj przekierowanie ruchu: wysyłanie użytkowników do stron phishingowych, miejsc pobierania złośliwego oprogramowania lub serwerów proxy typu man-in-the-middle.

Warunek wyścigu

Gdy resolver wysyła zapytanie, napastnik próbuje wstrzyknąć podrobioną odpowiedź zanim odpowie właściwy serwer autorytatywny. Jeśli fałszerstwo dotrze jako pierwsze i będzie zawierać oczekiwane pola, wygra wyścig i zostanie zapisane w pamięci podręcznej.

Dlatego w ataku i obronie tak duże znaczenie mają opóźnienie, kolejność pakietów oraz wychodzący port resolvera.

Pola, które napastnik musi odgadnąć

Aby podrobiona odpowiedź UDP została zaakceptowana, napastnik musi dopasować:

  • Źródłowy adres IP (serwera autorytatywnego).
  • Port docelowy (wychodzący port resolvera).
  • Najmę zapytania i jego typ.
  • 16-bitowy identyfikator transakcji (TXID).

Bez zabezpieczeń jedyną rzeczywistą tajemnicą pozostaje TXID, co daje szansę około 1 na 65 536 dla każdego pakietu.

Atak Kaminsky’ego

Ujawnienie sprawy przez Dana Kaminsky’ego w 2008 roku pokazało, że zatruwanie pamięci podręcznej jest znacznie łatwiejsze, niż sądzono. Zamiast przeprowadzać jeden wyścig dla każdego rekordu, napastnik odpytuje wiele nieistniejących subdomen (aaa.bank.com, aab.bank.com...) i zalewa resolver podrobionymi odpowiedziami zawierającymi złośliwy rekord NS lub rekord glue dla całej domeny.

Każda próba jest nowym wyścigiem, a brak trafienia nie wiąże się z karą wynikającą z pamięci podręcznej, dzięki czemu napastnik może ponawiać próby aż do trafienia i zatruć całą strefę.

for sub in $(seq 1 10000); do
  dig $sub.bank.com @victim-resolver &
done
# Attacker floods forged NS answers in parallel

Losowanie portu źródłowego

Głównym zabezpieczeniem wprowadzonym po ataku Kaminsky’ego było losowanie portu źródłowego. Zamiast stałego portu wychodzącego resolver wybiera losowy port efemeryczny dla każdego zapytania.

Napastnik musi teraz odgadnąć zarówno TXID (16 bitów), jak i port źródłowy (około 16 bitów), co zwiększa przestrzeń wyszukiwania do około 2^32. Dzięki temu ślepe zatruwanie pamięci podręcznej przez napastnika spoza trasy staje się niepraktyczne, choć nie jest niemożliwe w przypadku implementacji o słabej entropii.

Napastnicy na trasie i spoza trasy

Napastnik spoza trasy nie widzi zapytania i musi ślepo odgadnąć TXID oraz port. Napastnik na trasie (złośliwa sieć Wi-Fi, przejęty router lub dostawca internetu) może bezpośrednio odczytać zapytanie i bez trudu przygotować pasującą odpowiedź.

Fałszowanie na trasie całkowicie omija losowanie portu, dlatego do uzyskania silnych gwarancji potrzebne są szyfrowany transport i walidacja DNSSEC, a nie tylko entropia.

Nieautoryzowany DHCP i przejęcie resolvera

Napastnicy nie zawsze fałszują pakiety. Nieautoryzowany serwer DHCP może przekazać klientom adres złośliwego resolvera, przez co każde zapytanie będzie obsługiwane przez napastnika. Złośliwe oprogramowanie podobnie modyfikuje plik /etc/resolv.conf lub ustawienia routera.

Historyczne zagrożenia, takie jak złośliwe oprogramowanie DNSChanger, przez lata po cichu przekierowywały DNS ofiar na fałszywe serwery. Należy zweryfikować, z których resolverów faktycznie korzystają wszystkie urządzenia.

cat /etc/resolv.conf
# nameserver should match your trusted internal resolver

Weryfikacja bailiwick

Resolvery egzekwują reguły bailiwick: odpowiedź może dostarczać rekordy wyłącznie dla nazw należących do strefy, dla której dany serwer jest autorytatywny. Odpowiedź dla bank.com nie może przemycić rekordu dla unrelated.com.

Ogranicza to wstrzykiwanie w stylu ataku Kaminsky’ego do odpytywanej domeny i zapobiega zanieczyszczeniu niezależnych stref przez jedną zatrutą odpowiedź. Należy sprawdzić, czy resolver stosuje ścisłe filtrowanie bailiwick.

Wykrywanie zatruwania pamięci podręcznej

Oznaki trwającego lub zakończonego powodzeniem zatruwania:

  • Nagły wzrost liczby zapytań dotyczących losowych, nieistniejących subdomen.
  • Zduplikowane odpowiedzi DNS lub odpowiedzi przychodzące w niewłaściwej kolejności dla tego samego TXID.
  • Adresy IP uzyskiwane w wyniku rozwiązywania nazw nagle wskazujące nieoczekiwane numery ASN lub lokalizacje geograficzne.
  • Rozbieżność między odpowiedziami resolvera a zaufanym zapytaniem wykonanym poza pasmem.

Warstwowa ochrona

Nie wystarczy pojedynczy mechanizm. Należy połączyć:

  • Losowanie portu źródłowego i TXID, aby podnieść koszt ataku spoza trasy.
  • Walidację DNSSEC, dzięki której podrobione odpowiedzi nie przejdą kontroli podpisu.
  • DoT/DoH, aby odebrać napastnikom na trasie możliwość obserwacji i modyfikacji.
  • Kodowanie 0x20 (losowe użycie wielkich i małych liter w nazwach zapytań) zapewniające dodatkową entropię.
  • Monitorowanie zalewów NXDOMAIN i anomalii odpowiedzi.

Rzeczywistość operacyjna

W praktyce ślepe zatruwanie pamięci podręcznej przez napastników spoza trasy jest dziś rzadkie w przypadku zaktualizowanych resolverów, ale powraca za pośrednictwem kanałów bocznych, na przykład fragmentacji UDP oraz opartych na ICMP ataków polegających na wnioskowaniu o porcie, takich jak SAD DNS. Należy regularnie aktualizować resolvery i preferować resolvery przeprowadzające walidację oraz korzystające z szyfrowanego transportu.

Warto pamiętać, że najbardziej szkodliwe przejęcie DNS często nie wynika z pomysłowego wyścigu podczas zatruwania pamięci podręcznej, lecz ze skradzionego konta u rejestratora. Należy zabezpieczyć oba elementy.

Szybki test

Proszę sprawdzić znajomość techniki Kaminsky’ego.

Podsumowanie

Spoofing DNS fałszuje odpowiedzi, a zatruwanie pamięci podręcznej utrwala je w resolverze. Akceptacja zależy od zgodności źródłowego adresu IP, portu, nazwy zapytania i TXID. Randomizacja portu źródłowego oraz sprawdzanie zakresu autorytatywności podniosły poprzeczkę atakującym spoza ścieżki transmisji, ale atakujący znajdujący się na tej ścieżce oraz kanały boczne nadal stanowią zagrożenie.

Obrona warstwowa — entropia, walidacja DNSSEC, szyfrowany transport i monitorowanie — jest niezbędna. Następnie przyjrzymy się temu, jak atakujący wykorzystują DNS do przesyłania danych: tunelowaniu i eksfiltracji.

Bezpłatny start

Ucz się Cyber Security Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
76
Lekcje
303

Często zadawane pytania

Czy lekcja „Spoofing DNS i zatruwanie pamięci podręcznej” jest bezpłatna?

Tak — pełny tekst „Spoofing DNS i zatruwanie pamięci podręcznej” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Spoofing DNS i zatruwanie pamięci podręcznej”?

Fałszowanie odpowiedzi DNS Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Spoofing DNS i zatruwanie pamięci podręcznej”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?

Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Jak działa DNS i jakie niesie ryzyko
  2. Spoofing DNS i zatruwanie pamięci podręcznej
  3. Tunelowanie DNS i eksfiltracja
  4. DNSSEC i filtrowanie DNS
← Powrót do Cyber Security Academy