Zapobieganie zwisaniu wpisów DNS i unikanie przejęcia poddomeny

Ten artykuł opisuje powszechne zagrożenie bezpieczeństwa związane z przejęciem subdomeny oraz kroki, które możesz podjąć, aby je złagodzić.

Co to jest przejęcie poddomeny?

Przejęcia subdomen są częstym, ale o dużej skali zagrożenia dla organizacji, które regularnie tworzą i usuwają wiele zasobów. Przejęcie poddomeny może wystąpić, gdy masz rekord DNS wskazujący na wycofany zasób w platformie Azure. Takie rekordy DNS są również znane jako „wiszące rekordy DNS”. Rekordy CNAME są szczególnie narażone na to zagrożenie. Przejęcia domen podrzędnych umożliwiają złośliwym podmiotom przekierowywanie ruchu przeznaczonego dla domeny organizacji do lokacji wykonującej złośliwe działania.

Typowy scenariusz przejęcia poddomeny:

  1. TWORZENIE:

    1. Należy udostępnić zasób platformy Azure przy użyciu w pełni kwalifikowanej nazwy domeny (FQDN) app-contogreat-dev-001.azurewebsites.net.

    2. Rekord CNAME można przypisać w strefie DNS przy użyciu poddomeny greatapp.contoso.com , która kieruje ruch do zasobu platformy Azure.

  2. ANULOWANIE APROWIZACJI:

    1. Zasób platformy Azure jest wycofywany z obsługi lub usuwany, gdy nie jest już potrzebny.

      W tym momencie rekord greatapp.contoso.comCNAME powinien zostać usunięty ze strefy DNS. Jeśli rekord CNAME nie zostanie usunięty, jest anonsowany jako aktywna domena, ale nie kieruje ruchu do aktywnego zasobu platformy Azure. Masz teraz nieaktualny rekord DNS.

    2. Poddomena zwisająca, greatapp.contoso.com, jest teraz podatna na zagrożenia i może zostać przejęta przez przypisanie do innego zasobu subskrypcji platformy Azure.

  3. PRZEJĘCIA:

    1. Korzystając z powszechnie dostępnych metod i narzędzi, aktor zagrożeń odnajduje zwisającą poddomenę.

    2. Zagrożenie polega na tym, że zasób platformy Azure jest aprowizowany z taką samą pełną nazwą domeny (FQDN) jak zasób, który wcześniej kontrolowałeś. W tym przykładzie . app-contogreat-dev-001.azurewebsites.net

    3. Ruch przesyłany do subdomeny greatapp.contoso.com jest teraz kierowany do zasobu złośliwego aktora, który kontroluje treść.

Przejęcie poddomeny z wycofanej witryny internetowej

Ryzyko przejęcia poddomeny

Gdy rekord DNS wskazuje zasób, który nie jest dostępny, rekord powinien zostać usunięty ze strefy DNS. Jeśli nie zostanie usunięty, jest to "osierocony rekord DNS" i stwarza możliwość przejęcia subdomeny.

Porzucone wpisy DNS umożliwiają złośliwym użytkownikom przejęcie kontroli nad skojarzoną nazwą DNS w celu hostowania złośliwej witryny internetowej lub usługi. Złośliwe strony i usługi w poddomenie organizacji mogą spowodować:

  • Utrata kontroli nad treścią subdomeny: Negatywna opinia o niezdolności organizacji do zabezpieczenia treści, szkodzie dla marki i utracie zaufania.

  • Zbieranie ciasteczek od nieświadomych odwiedzających: Często aplikacje internetowe udostępniają ciasteczka sesyjne subdomenom (*.contoso.com). Każda poddomena może uzyskać do nich dostęp. Aktorzy zagrożeń mogą wykorzystać przejęcie subdomeny do stworzenia autentycznie wyglądającej strony, oszukać niczego niepodejrzewających użytkowników i zbierać ich ciasteczka (nawet bezpieczne). Powszechnym błędnym przekonaniem jest przekonanie, że certyfikaty SSL chronią Twoją stronę i pliki cookie użytkowników przed przejęciem. Jednak aktor zagrożenia może użyć porwanej poddomeny, aby ubiegać się o i otrzymać prawidłowy certyfikat SSL. Prawidłowe certyfikaty SSL zapewniają im dostęp do bezpiecznych plików cookie i mogą dodatkowo zwiększyć postrzeganą zasadność złośliwej witryny.

  • Kampanie phishingowe: Złośliwi aktorzy często wykorzystują autentycznie wyglądające subdomeny w kampaniach phishingowych. Ryzyko dotyczy zarówno złośliwych stron internetowych, jak i rekordów MX. Rekordy MX mogłyby umożliwić aktorom zagrożenia otrzymywanie e-maili kierowanych do legalnych subdomen powiązanych z zaufanymi markami.

  • Dalsze ryzyka: Złośliwe strony mogą eskalować do innych klasycznych ataków, takich jak XSS, CSRF, CORS omijanie i inne.

Identyfikowanie zwisających wpisów DNS

Aby zidentyfikować wpisy DNS w organizacji, które mogą być zwisające, użyj narzędzi programu PowerShell hostowanych w usłudze GitHub firmy Microsoft "Get-DanglingDnsRecords".

To narzędzie pomaga wyświetlić listę wszystkich domen z rekordem CNAME skojarzonym z istniejącym zasobem platformy Azure utworzonym w Twoich subskrypcjach lub dzierżawach.

Jeśli nazwy CNAM znajdują się w innych usługach DNS i wskazują zasoby platformy Azure, podaj nazwy CNAM w pliku wejściowym do narzędzia.

Narzędzie obsługuje zasoby platformy Azure wymienione w poniższej tabeli. Narzędzie wyodrębnia lub przyjmuje jako dane wejściowe wszystkie rekordy CNAME dzierżawy.

Usługa Typ Własność FQDN Przykład
Azure Front Door microsoft.network/frontdoors properties.cNazwa abc.azurefd.net
Azure Blob Storage microsoft.storage/storageaccounts properties.primaryEndpoints.blob abc.blob.core.windows.net
Azure CDN microsoft.cdn/profiles/endpoints properties.hostName (nazwa_hosta) abc.azureedge.net
Publiczne adresy IP microsoft.network/publiczne_adresy_IP właściwości.ustawieniaDNS.FQDN abc.EastUs.cloudapp.azure.com
Azure Traffic Manager microsoft.network/trafficmanagerprofiles properties.dnsConfig.fqdn abc.trafficmanager.net
Instancja Kontenera Azure microsoft.kontenerinstancja/grupykontenerów properties.ipAddress.fqdn abc.EastUs.azurecontainer.io
Usługa Azure API Management microsoft.apimanagement/service properties.hostnameKonfiguracje.nazwa_hosta abc.azure-api.net
Azure App Service microsoft.web/sites properties.defaultHostName abc.azurewebsites.net
usługa aplikacja systemu Azure — miejsca microsoft.web/sites/slots properties.defaultHostName abc-def.azurewebsites.net

Wymagania wstępne

Uruchom zapytanie jako użytkownik, który ma:

  • Co najmniej dostęp w roli Reader do subskrypcji platformy Azure.
  • Dostęp do odczytu Azure Resource Graph.

Jeśli jesteś globalnym administratorem dzierżawcy swojej organizacji, postępuj zgodnie z wytycznymi w Elevate access, aby zarządzać wszystkimi subskrypcjami Azure i grupami zarządzającymi, aby uzyskać dostęp do wszystkich subskrypcji organizacji.

Napiwek

Weź pod uwagę limity ograniczania przepustowości i stronicowania w usłudze Azure Resource Graph, jeśli masz rozbudowane środowisko Azure.

Dowiedz się więcej na temat pracy z dużymi zestawami danych zasobów platformy Azure.

Narzędzie używa grupowania subskrypcji w pakietach, aby uniknąć tych ograniczeń.

Uruchamianie skryptu

Więcej informacji o skrypcie PowerShell można znaleźć w Get-DanglingDnsRecords.ps1.

Korygowanie zwisających wpisów DNS

Przejrzyj strefy DNS i zidentyfikuj rekordy CNAME, które są zwisające lub przejęte. Jeśli znajdziesz poddomeny wiszące lub przejęte, usuń podatne poddomeny i ogranicz ryzyko, stosując następujące kroki:

  1. W strefie DNS usuń wszystkie rekordy CNAME wskazujące na FQDN zasobów, które nie są już aktywne.

  2. Aby kierować ruch do zasobów, które kontrolujesz, utwórz kolejne zasoby z nazwami FQDN określonymi w rekordach CNAME osieroconych subdomen.

  3. Przejrzyj kod aplikacji, aby uzyskać odwołania do określonych domen podrzędnych i zaktualizuj wszelkie nieprawidłowe lub nieaktualne odwołania do domen podrzędnych.

  4. Zbadaj, czy doszło do jakiegokolwiek kompromisu i podejmij działania zgodnie z procedurami reagowania na incydenty Twojej organizacji. Wskazówki i najlepsze praktyki dotyczące śledztwa:

    Jeśli logika aplikacji powoduje, że sekrety, takie jak poświadczenia do OAuth, są przesyłane do wiszących subdomen lub jeśli informacje wrażliwe na prywatność są przesyłane do tych subdomen, dane te mogą zostać ujawnione osobom trzecim.

  5. Zrozum, dlaczego rekord CNAME nie został usunięty z Twojej strefy DNS podczas deprowizacji zasobu i podejmij kroki, aby zapewnić odpowiednią aktualizację rekordów DNS podczas deprowizacji zasobów Azure w przyszłości.

Zapobieganie nieważnym wpisom DNS

Spraw, by procesy zapobiegające zawisłym wpisom DNS i wynikającym z tego przejęciu subdomen stały się kluczowym elementem Twojego programu bezpieczeństwa.

Poniższe sekcje opisują funkcje usług Azure, które mogą pomóc w tworzeniu środków zapobiegawczych. Opracuj inne metody zapobiegania temu problemowi poprzez najlepsze praktyki lub standardowe procedury operacyjne organizacji.

Włączanie usługi Microsoft Defender dla usługi App Service

Zintegrowana platforma ochrony obciążeń w chmurze (CWPP) firmy Microsoft Defender dla Chmury oferuje szereg planów ochrony zasobów i obciążeń platformy Azure, rozwiązań hybrydowych i wielochmurowych.

Plan Microsoft Defender for App Service obejmuje wykrywanie wiszących rekordów DNS. Po włączeniu tego planu otrzymujesz alerty bezpieczeństwa, jeśli wyłączysz stronę App Service, ale nie usuniesz jej domeny niestandardowej z rejestratora DNS.

Zabezpieczenie DNS Microsoft Defender dla Chmury jest dostępne niezależnie od tego, czy zarządzasz domenami za pomocą Azure DNS, czy zewnętrznego rejestratora domen, i dotyczy App Service zarówno na Windows, jak i Linuksie.

Więcej informacji o tej funkcji i innych korzyściach z tych planów Microsoft Defender można znaleźć w artykule Wprowadzenie do Microsoft Defender dla App Service.

Używanie rekordów aliasu usługi Azure DNS

Rekordy aliasowe Azure DNS mogą zapobiegać wiszącym odwołaniom, łącząc cykl życia rekordu DNS z zasobem Azure. Rozważmy na przykład rekord DNS, który jest kwalifikowany jako rekord aliasu, aby wskazać publiczny adres IP lub profil usługi Traffic Manager. Jeśli usuniesz te zasoby bazowe, rekord aliasu DNS stanie się pustym zestawem rekordów. Rekord aliasu DNS nie odnosi się już do usuniętego zasobu. Rekordy aliasowe mają ograniczenia co do tego, co mogą chronić. Lista jest obecnie ograniczona do:

  • Azure Front Door
  • Profile usługi Traffic Manager
  • Punkty końcowe usługi Azure Content Delivery Network (CDN)
  • Publiczne adresy IP

Pomimo ograniczonej oferty usług, używaj rekordów alias, aby bronić się przed przejęciem subdomen, kiedy tylko to możliwe.

Więcej informacji można znaleźć w Azure DNS alias records capabilities.

Używanie weryfikacji domeny niestandardowej usługi Azure App Service

Gdy tworzysz wpisy DNS dla Azure App Service, utwórz asuid.{subdomain} rekord TXT z identyfikatorem weryfikacji domeny. Gdy taki rekord TXT istnieje, żadna inna subskrypcja Azure nie może zweryfikować niestandardowej domeny ani jej przejąć.

Te rekordy nie uniemożliwiają komuś utworzenia instancji Azure App Service o tej samej nazwie, która znajduje się w Twoim wpisie CNAME. Bez możliwości udowodnienia własności domeny, nieuczciwi aktorzy nie mogą otrzymywać ruchu ani kontrolować treści.

Więcej informacji można znaleźć w artykule Mapuj istniejącą niestandardową nazwę DNS na Azure App Service.

Kompilowanie i automatyzowanie procesów w celu ograniczenia zagrożenia

Programiści i zespoły operacyjne powinni prowadzić procesy oczyszczania, aby uniknąć zagrożenia DNS. Poniższe praktyki pomagają Twojej organizacji uniknąć tego zagrożenia.

  • Tworzenie procedur zapobiegania:

    • Poinformuj deweloperów aplikacji o przekierowywanie adresów za każdym razem, gdy usuwają zasoby.

    • Umieść pozycję "Usuń wpis DNS" na liście wymaganych testów podczas likwidowania usługi.

      • Dodaj blokady usuwania do wszystkich zasobów, które mają niestandardowy wpis DNS. Blokada usuwania służy jako wskaźnik, że mapowanie musi zostać usunięte przed wycofaniem zasobu. Takie miary działają tylko w połączeniu z programami edukacji wewnętrznej.
  • Tworzenie procedur odnajdywania:

    • Regularnie przeglądaj rekordy DNS, aby upewnić się, że wszystkie poddomeny są mapowane na zasoby platformy Azure, które:

      • Istnieją: Przeszukaj strefy DNS pod kątem zasobów wskazujących na poddomeny platformy Azure, takie jak *.azurewebsites.net lub *.cloudapp.azure.com (zobacz listę referencyjną domen platformy Azure).
      • Posiadasz: Potwierdź, że jesteś właścicielem wszystkich zasobów, na które celują twoje subdomeny DNS.
    • Zachowaj katalog usług punktów końcowych w pełni kwalifikowanej nazwy domeny (FQDN) platformy Azure i właścicieli aplikacji. Użyj Azure Resource Graph, portalu Azure lub innego procesu inwentaryzacji zasobów, aby regularnie eksportować informacje o końcowych punktach FQDN dla dostępnych zasobów. Jeśli masz dostęp do wszystkich subskrypcji w swojej dzierżawie, uwzględnij je wszystkie w spisie. Jeśli nie, dokumentuj, które subskrypcje obejmuje zapas.

  • Tworzenie procedur korygowania:

    • Gdy Twój zespół znajdzie nierozwiązane wpisy DNS, sprawdź, czy doszło do jakiegoś naruszenia.
    • Sprawdź, dlaczego adres nie został przekierowany, gdy zasób został zlikwidowany.
    • Usuń rekord DNS, jeśli nie jest już używany lub wskaż go do poprawnego zasobu platformy Azure (FQDN) należącego do organizacji.

Oczyść wskaźniki DNS lub odzyskać DNS

Gdy usuwasz klasyczny zasób usługi chmurowej, Azure zachowuje odpowiadającą nazwę DNS zgodnie z politykami Azure DNS. W okresie rezerwacji tylko subskrypcje należące do dzierżawcy Microsoft Entra subskrypcji, która pierwotnie posiadała nazwę DNS, mogą ją ponownie wykorzystać. Po wygaśnięciu rezerwacji każda subskrypcja Azure może zgłaszać nazwę DNS. Rezerwacje DNS dają czas na uporządkowanie skojarzeń lub wskaźników do nazwy DNS albo na odzyskanie nazwy DNS w Azure. Usuń niechciane wpisy DNS jak najszybciej. Możesz wyprowadzić zarezerwowaną nazwę DNS, dodając nazwę usługi chmurowej do strefy DNS dla tej chmury.

  • Publiczny: cloudapp.net
  • Mooncake: chinacloudapp.cn
  • Fairfax: usgovcloudapp.net
  • BlackForest: azurecloudapp.de

Na przykład hostowana usługa w Public o nazwie test ma nazwę DNS test.cloudapp.net.

Przykład: Subskrypcje A i B są jedynymi subskrypcjami należącymi do dzierżawcy ABMicrosoft Entra. Subskrypcja A zawiera klasyczną usługę chmurową o nazwie test DNS test.cloudapp.net. Gdy usuniesz usługę chmurową, Azure zachowuje nazwę test.cloudapp.netDNS. W okresie rezerwacji tylko subskrypcja A lub subskrypcja B może uzyskiwać nazwę test.cloudapp.net DNS, tworząc klasyczną usługę chmurową o nazwie test. Żadne inne subskrypcje nie mogą się tym pochwalić. Po upływie okresu rezerwacji każda subskrypcja Azure może wykorzystać test.cloudapp.net.

Następne kroki

Aby dowiedzieć się więcej o powiązanych usługach i funkcjach platformy Azure, których można użyć do obrony przed przejęciem poddomeny, zobacz następujące strony.