W
celu zrozumienia jak powstają zawieszone rekordy DNS (ang. dangling DNS records) należy posiadać podstawową widzę na temat działania usługi DNS, która tłumaczy przyjazne dla użytkowników nazwy domen, takie jak nfsec.pl (łatwe do zapamiętania i rozpoznania) na numeryczne adresy IP. Adresy IP dla każdej domeny są przechowywane na autorytatywnych serwerach DNS, które można porównać do książek telefonicznych w internecie. Po wpisaniu adresu strony internetowej w przeglądarce, przeglądarka na początku łączy się z rekurencyjnym serwerem DNS i zadaje pytanie: “Jaki jest adres IP nfsec.pl?”. Rekursywny serwer DNS wysyła zapytanie do serwera autorytatywnego w celu uzyskania odpowiedzi (oczywiście to trochę bardziej skomplikowane).
Domeny i subdomeny (np. stardust.nfsec.pl) mają służyć jako zaufane znaki dla użytkowników kierujące ich do pożądanych zasobów internetowych. W rezultacie aktorzy stanowiący zagrożenie nieustanie próbują wykorzystać DNS do nielegalnych działań online. W szczególności wielu atakujących próbuje przejąć domeny o dobrej reputacji. Do przejmowania domen stosuje się kilka znanych technik, w tym zatruwanie pamięci podręcznej, podkładanie złośliwych klientów DNS i przejęcia kont u rejestratorów domen. Jednak w ostatnich dekadach poczyniono duże wysiłki, aby wzmocnić ekosystem DNS, a wspomniane techniki stały się trudniejsze do osiągnięcia w praktyce. Skoro mechanizmy obronne zostały wzmocnione to gdzie pozostała luka? W dużej mierze najczęściej występującym zagrożeniem w systemach DNS oprócz błędów w konfiguracji są zawieszone rekordy DNS, które można łatwo wykorzystać do przejęcia części domeny.
Zawieszone rekordy DNS odnoszą się do rekordów DNS wskazujących nazwy domen na inne domeny. Gdy docelowa domena zostaje porzucona / usunięta rekord DNS, który na nią wskazywał pozostaje w zawieszeniu i jest teraz “zawieszonym w próżni rekordem DNS” dopóki ktoś niepowołany go nie “odwiesi”. Typy rekordów CNAME są szczególnie narażone na takie zawieszanie. Przykład: firma chcemydrogiechmurki.pl kupiła zasób dyskowy na platformie chmurowej earnplnpayusd.com. W celu nie wprowadzania dezorientacji wśród swoich pracowników przykryła prostym do zapamiętania rekordem CNAME: dysk.chcemydrogiechmurki.pl skomplikowany adres disc-001-chmurki.earnplnpayusd.com:
agresor@darkstar:~$ dig dysk.chemydrogiechmurki.pl ; > DiG 9.18.28-0ubuntu0.22.04.1-Ubuntu > www.nfsec.pl ;; global options: +cmd ;; Got answer: ;; ->>HEADERNiestety po jakimś czasie uznała, iż tańsza będzie konkurencja i w celu bezbolesnej migracji dodała nowy adres backup.chcemydrogiechmurki.pl, który wskazywał na nową platformę. Zasób dyskowy starej usługi chmurowej został anulowany i usunięty po tym, jak został uznany już za niepotrzebny. W tym momencie rekord CNAME dysk.chemydrogiechmurki.pl powinien zostać również usunięty ze strefy DNS firmy. Brak jego usunięcia powoduje, iż przez cały czas anonsowany jest jako aktywny, ale kieruje ruch do nieaktywnej usługi platformy chmurowej. W tym momencie pozostający w zawieszeniu rekord DNS jest podatny na przejęcie przez przypisanie do niego innego zasobu w subskrypcji usługi dyskowej starego dostawcy. Korzystając z powszechnie dostępnych metod i narzędzi, atakujący odnajduje zawieszoną subdomenę o nazwie "dysk". Zakłada nowe konto w earnplnpayusd.com i zakłada ponownie dysk o nazwie "chmurki". Generator nazw usługi widzi, iż taka nazwa jest wolna i jest to pierwszy dysk na tym koncie, więc zwraca nazwę: disc-001-chmurki.earnplnpayusd.com. Ruch wysyłany do subdomeny dysk.chemydrogiechmurki.pl jest teraz kierowany do zasobu złośliwego aktora. jeżeli choćby żadne pliki nie zostaną skopiowane na ten dysk to jego adres może zostać wykorzystany do phishingu i innych ataków socjotechnicznych zmuszających pracowników tej lub innej firmy do tego typu czynności.
Zawieszone rekordy DNS zwykle wynikają z niedostatecznej higieny serwerów DNS, takiej jak brak usuwania lub aktualizacji rekordów DNS. To niedopatrzenie aktualnie stwarza atakującym najwięcej okazji do przekierowania ruchu do obcych usług lub choćby przejęcia kontroli nad domeną w całości. Dlatego ważne jest, aby przy dużej aktywności naszej organizacji w zewnętrznych usługach chmurowych (i nie tylko) przeprowadzać regularne audyty rekordów DNS, aby mieć pewność, iż wskazują one na prawidłowe i aktywne punkty końcowe. Ponadto posiadać zautomatyzowane narzędzie monitorujące, które może wykrywać i ostrzegać o błędnych konfiguracjach DNS lub nieużywanych rekordach. Poniżej znajduje się prosty skrypt w języku Python, który otwiera wybraną strefę DNS (tutaj: db.darkstar.pl), wyszukuje w niej rekordy CNAME i sprawdza czy domena docelowa nie zwraca statusu NXDOMAIN (ang. Non-Existent Domain):
#!/usr/bin/env python3 import dns.zone import dns.resolver from dns.rdataclass import * from dns.rdatatype import * domain = "darkstar.pl" zone_file = "db." + domain try: zone = dns.zone.from_file(zone_file, domain) print(f"Zone {domain} loaded.") for name, node in zone.nodes.items(): rdatasets = node.rdatasets print(f"Checking record: {name}") for rdataset in rdatasets: for rdata in rdataset: if rdataset.rdtype == CNAME: print(f"{name} is CNAME for: {rdata.target}") try: print(f"Checking domain {rdata.target}") target = dns.resolver.resolve(rdata.target, 'A') for rdata in target: print(rdata) except dns.resolver.NXDOMAIN: print("ALERT! Dangling DNS record detected!") except Exception as error: print(error)Strefa, na której będziemy testować nasz skrypt posiada następującą postać:
$TTL 3600 $ORIGIN darkstar.pl. @ IN SOA ns1.darkstar.pl. nsmaster.darkstar.pl. ( 2024201001 ; Serial 14400 ; Refresh 1800 ; Retry 1209600 ; Expire 3600 ) ; Minimum @ IN NS ns1.darkstar.pl. @ IN NS ns2.darkstar.pl. @ IN NS ns3.darkstar.pl. @ IN NS ns4.darkstar.pl. www.darkstar.pl. IN CNAME qazwsx123.pl.Ponieważ na dzień dzisiejszy domena: qazwsx123.pl nie jest zarejestrowana skrypt powinien podnieść alarm.
agresor@darkstar:~# ./dnsmonitor.py Zone darkstar.pl loaded. Checking record: @ Checking record: www www is CNAME for: qazwsx123.pl. Checking domain qazwsx123.pl. ALERT! Dangling DNS record detected!Podsumowując: Prewencja przed zawieszonymi rekordami DNS powinna być kluczowym aspektem strategii cyberbezpieczeństwa firm, które zarządzają dużą ilością wpisów DNS. Organizacje powinny przyjąć proaktywne podejście, łącząc regularne audyty i monitoring, aby zabezpieczyć się przed ryzykiem przejęcia subdomeny.
Więcej informacji: Prevent dangling DNS entries and avoid subdomain takeover, Dangling Domains: Security Threats, Detection and Prevalence, Scanner to identify dangling DNS records and subdomain takeovers